kuroの覚え書き

96の個人的覚え書き

Pythonの環境を一旦リセットする

どうもややこしくていけないのだが、systemに入っているpython は2.6とかなりふるい目。なので自前でpython3を入れて使いたいわけだが
バージョンの使い分けにpyenvというものがある。更にはvirtualenvというものもある。
しかしよく考えると、バージョンを細かく使い分けるようなことはしていないので、単純にbrewで最新のpython3を入れてしまって、それだけ使うようにしても何ら困ることはないということに今更ながら気づく。

どうやらpyenvで入れたpython3.6.1とbrewで入れた3.7.1がうまく折り合いをつけてくれずにトラブっていたらしく、一旦全部クリアしてbrewだけにしたらすんなりとinternal server errorは解決した。

うん、pyenvやめよ。

あとはflaskのmanage.pyをきちんとcgi経由で動くようにしないとな。

value serverでレンタルサーバー

某大学内でサーバを建ててあれこれやっているが、外部からアクセスできるようには、なかなかさせてもらえないので、学外にサーバを建てることにした。
といっても、物理サーバを管理することもできないので、レンタルサーバお茶を濁す
とにかく料金が安く、sshでそこそこ自由度の高いvalue serverに白羽の矢を立て、早速お試し開始。

とにかくpython3が走らないとお話にならないのだが、一応いんすとーるされてはいるようだ。
でもpip3が使えなくてライブラリが入れられないので、pyenv-virtualenvを入れよう・・・なんかドツボにハマっていきそうな予感。

$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
Initialized empty Git repository in /virtual/hoge/.pyenv/.git/
remote: Enumerating objects: 63, done.
remote: Counting objects: 100% (63/63), done.
remote: Compressing objects: 100% (37/37), done.
remote: Total 16547 (delta 25), reused 46 (delta 20), pack-reused 16484
Receiving objects: 100% (16547/16547), 3.21 MiB | 2.81 MiB/s, done.
Resolving deltas: 100% (11217/11217), done.
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
$ source .bashrc
$ pyenv --version
pyenv 1.2.8-5-gec9fb54
$ pyenv install 3.6.1
Downloading Python-3.6.1.tar.xz...
-> https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
Installing Python-3.6.1...
Installed Python-3.6.1 to /virtual/hoge/.pyenv/versions/3.6.1

$ pyenv global 3.6.1
$ pyenv rehash
$ python
Python 3.6.1 (default, Nov 26 2018, 19:58:29) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-18)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

ここまではまあなんとか。

続きを読む

redmineのインストールでつまづく

redmineをインストールしようとして
Redmineが依存するgemパッケージをインストールのため
# bundle install --without development test --path vendor/bundle
としようとすると、途中で
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
というエラーが出て、最終的に

An error occurred while installing rmagick (2.16.0), and Bundler cannot continue.
Make sure that `gem install rmagick -v '2.16.0' --source 'https://rubygems.org/'` succeeds
before bundling.
というエラーで止まってしまう。
この原因はrmagick(2.16.0)がimagemagick (version7)に対応していないためで、imagemagickをversion6にダウンしなければならない模様。

rmagickのインストールにハマった - Qiita
ここで対処法が書かれているがMacのHomebrewでの話。
Linuxbrewだと
$ cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/
の部分を
$ cd /home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/
と読み替えないとならない。

とまあ、うまくインストールできず今の所頓挫中・・・

NETGEAR GS716Tv3でVLAN その2 自作LANケーブルを疑え

とりあえずの設定ができて2つのVLANにclusterとLANを分離したのだが、なにやら挙動が安定しない。
LANから外のウェブにアクセスしようとするとどういうわけかpublicではなくinternalの方から接続しようとして
つながらなかったり、逆にネットにはつながるのに外からアクセスできなかったり。

もとのアンマネージスイッチと無線LAN 子機などをとっかえひっかえ入れ替えてみるも全然再現しないし。

途方に暮れかけたところで、ふとケーブルを自作カテ6からカテ5Eの既成品に戻してみたところ、何事もなかったようにつながるじゃないの。

NETGEAR GS716Tv3でVLAN

なかなか設定に苦労した。
最終的に一番参考になったサイトは
beginners-network.com

若干機種が違うのでメニュー項目が違っているのだが

まず
Switching>VLAN>Advanced>VLAN Configuration
で、分けたい分のポートのためのVLANを作る。2つに分けたいならとりあえず1個はDefaultをそのまま使っておくのが良さそう。
VLAN IDに4、VLAN Nameは適当にわかるような名前をつけて右下のADDボタンを押す。
次は
Switching>VLAN>Advanced>VLAN Membership
で、VLAN IDに4を選び、Unit1を開いて分けたいポートをUにする。Tは違う。
VLAN ID1も開いて、4で選んだポートのUを消す。
最後に
Switching>VLAN>Advanced>Port PVID Configuration
で、VLAN ID=4に変えたInterfaceにチェックを入れてConfigured PVIDを4に、VLAN Memberも4に書き換えてAPPLY

以上でとりあえずVLANを2つに分けてcluster側と、LAN側を分離することができた。

Torqueのerror/outputをリアルタイムにチェックする

Torqueでジョブを投げると、errorとoutputが処理がすべて終わった後に書き出される。
しかし、何時間もかかる処理が果たしてちゃんと走っているのか心配になるので、できれば普通にスクリプトを走らせるときのように画面にstdoutを出しておきたいこともある。
そんなときは

#!/bin/sh

#PBS -k oe

と入れておくといい。
そうするとhome directoryに
スクリプト名.oジョブID
スクリプト名.eジョブID
と2つファイルが生成され、随時追記されていくので、tail -f やless +Fでモニタしてやる。

RNA-seq のde novo assembly

通常RNA-seqしたらreferenceのfastaファイルを使ってmappingして発現解析なりするわけだが、referenceが完備されていない種のseqはどうするのか?
近縁種のreferenceを使う、というのが簡単な手段なわけだが、今回mappingしてみるとmap rateが30%くらいしかなくて、ほとんどまともにマッピングできない、という事態となったので、次の手としてRNAのde novo assemblyを行って独自referenceを作ってしまおう、と考えた。
以前にも一度その近縁種のreferenceをガイドに使ってTrinityによるgenome guided assemblyを試していたのだが、これによって出来上がったreferenceではやはり30%くらいしかマップできなかった。要するにguideに使ったgenome referenceが全体の30%くらいしかカバーしていないので残りのread は結局mappingされないという訳のようだ。
なので、ガイドなしのde novo assemblyとなった。

Trinity - 井上 潤
とか
Trinity | de novo アセンブリー
とか
shortreadbrothers.blogspot.com
などを参考に

#!/bin/sh

Trinity --seqType fq \
        --single L001_trim.fastq.gz,L002_trim.fastq.gz,L003_trim.fastq.gz,L004_trim.fastq.gz \
        --CPU 8 \
        --max_memory 60G \
        --output ref/trinity \
        --monitoring \
        --no_cleanup 

こんな感じのスクリプトを作成し、実行。
メモリは100万リードあたり1Gくらいいるよ!という情報だったので60G盛ってるが、3000万リードを4分割してあるfastqを処理するとピークで15Gくらいメモリを消費している模様。まとめて3000万リード読み込むわけじゃないのかな。
というわけで16Gメモリのノードでもなんとかなりそうな感じ。
処理時間はかなり要することは間違いない。E3-1230v6の4コア8スレッド全部使っても丸1日?


出た。
単純なCPUスペック的にはE3-1230v6のほうが勝っているのだが、E5-2667の6コア12スレッド*2CPUのほうが早く終わったよ。

続きを読む