2015-01-01から1年間の記事一覧

おんどとりのデータを Ganglia に登録する

おんどとりという温度計測デバイスがある。サーバ監視に使っている Ganglia に測定値を送って、プロットするようにした。なお本機には、測定値をクラウドに送信したり、メールで送信したり、FTP サーバにアップする機能もある。しかし、Ganglia に登録するな…

bbcp で高速転送を行う

数 TB に及ぶ膨大な実験データをインターネット経由で転送する必要が生じた。LAN 内に比べてラウンドトリップタイム (RTT) が長いインターネット経由で scp や rsync を使うと、帯域幅を十分に活かすことができない。そこで bbcp を使ってみた。bbcp は bbcp…

DIALS でたくさんのデータセットを一気に処理する

small wedge で測定した大量のデータセットを DIALS で一気に処理してみた。まず、wedge を検出して、wedge ごとに作業フォルダを作る。 TOPDIR=/path/to/topdir/ find $TOPDIR -name "*_000001.img" -a ! -name "scan*.img" > targets.lst i=0 while read f…

R のプロットに複数の軸をつける

R

上図のように R で複数の軸をつけるには、axis の at と labels 引数を用いる。 df <- read.table("/tmp/test") # CTRUNCATE のログとかから切り出したもの par(mar = c(10, 4, 4, 2)) plot(df$V1, df$V2, type="l", main="Wilson plot", lwd=2, ylab="log(I…

R で二次元配列をなめる処理をするときの速度

R

R で、検出器上の各ピクセルの分解能を計算しようとした。最初に書いた愚直なコードは以下の通り。 lambda <- 12400 / 7000 # A distance <- 51.5 * 1000 # um pixel_size <- 50 # um buf_size <- 3000 # px buf_origin <- c(buf_size, buf_size) / 2 reso <…

NVIDIA の GPU 使用率を Ganglia で監視する

NVIDIA の GPU の使用率を、Ganglia で監視するようにした。GPU の状態は nvidia-smi コマンドで取得できる。dmon モードで起動すると、連続的に1エントリ1行の形式で出力してくれる。 nvidia-smi dmon -s pu -d 5 # gpu pwr temp sm mem enc dec mclk pclk …

実装して学ぶデータ処理システム その2 - 反射が起きる条件

スポット検出の話 が間に入ってしまったが、第 1 回に引き続き、Kabsch, Wolfgang. "Integration, scaling, space-group assignment and post-refinement" Acta Crystallographica Section D (2010): 133-144 の 2.2 節で述べられている反射条件を説明する。…

RELION に mrcs 形式の particle をインポートする

公開データセットを使って RELION の練習をしている。高分解能データが触ってみたいので、 EMPIAR ID 10029 にある GroEL のシミュレーションデータを使うことにした。EMAN2 で もっと低分解能の GroEL を題材にしたチュートリアル と同じように処理したとこ…

systemd への登録

iptables の設定を行うスクリプト /etc/init.d/firewall を書いた。これを起動時に自動実行したい。Debian jessie では systemd になっているので、サービスとして登録する必要がある。以下のような /etc/systemd/system/firewall.service ファイルを作る。 …

bash の関数呼び出しの罠

bash で定義した関数を呼び出すときには、() を付けない。プログラムを呼び出すときだって () を付けないのだから、当たり前といえば当たり前なのだが、もし () をつけてしまうとひどいことになる。 doit() { echo "I am doit()" } doit() echo 1 echo 2 doi…

実装して学ぶデータ処理システム その2 - union-find によるスポット検出

作図に手間取っているので、予定を変更して、スポット検出アルゴリズムについて説明する。元ネタは Kabsch, Wolfgang. "Integration, scaling, space-group assignment and post-refinement" Acta Crystallographica Section D (2010): 133-144 の 2.5 節だ…

実装して学ぶデータ処理システム その1 - XDS の座標系

XDS の主要なアルゴリズムを手を動かして実装することを通じて、X 線回折のデータ処理について理解を深めよう。サンプルデータは Thaumatin / Diamond Light Source I04 user training を用いることにする。まず、XDS の座標系を学ぶ。nXDS は回転軸の概念が…

XDS の謎

XDS には謎が多い。ソースコードが公開されていない以上、いくら悩んでも答えが出ないことも多い。そういう疑問点を、自分が忘れないために列挙しておく。もし答え(かもしれないもの)をご存知のかたは、ぜひ教えてほしい。 GAIN.cbf と BKGINIT.cbf GAIN.cbf…

R から ADSC 形式の画像を書き出す

R

バイナリファイル書き出しの練習として。 writeADSC <- function(filename, img, lambda_in_A=1.0, orgx=ncol(img)/2.0, orgy=nrow(img)/2.0, pixel_size=0.172, camera_length_in_mm=50.0) { width <- ncol(img) height <- nrow(img) conn <- file(filename…

Rcpp 経由で miniCBF 画像を読み込む

R

Rcpp と CBFlib の練習も兼ねてやってみた。エラー処理は無視!cbflib-wrapper.cpp: #include <Rcpp.h> #include <cbf/cbf.h> using namespace Rcpp; using namespace std; // [[Rcpp::export]] NumericMatrix readCBF(string filename) { FILE *fh = fopen(filename.c_str(), "r</cbf/cbf.h></rcpp.h>…

内積や外積の偏微分

簡単だが、後の参照用にまとめておこう。つまり、積の微分の公式が成り立つ。つまり、こちらも積の微分公式が成り立つ。

方位行列の偏微分

以前に書いた方位行列の偏微分を求めておこう。 となるような方位行列を計算すると、 となるのだった。これを偏微分していく。ただし、 の形も使う。ここまでは楽勝。以下、検算してない(上も保証はできないけれど)ここもなんとか。問題は の偏微分であるが…

d*TREK を使ってみる

さきほど、d*TREK をビルドしたが、dtprocess と dtdisplay という GUI 部分がうまく動かなかった。そこで、CUI だけから使ってみることになる。基本的には、xia2 のドキュメント ftp://ftp.ccp4.ac.uk/ccp4/6.3.0/ccp4-6.3.0/share/xia2/xia2/Wrappers/dTRE…

DIALS image viewer の周辺

DIALS image viewer は dials/command_line/image_viewer.py がエントリポイントであるが、直ちに dials/util/spotfinder_wrap.py に移譲される。GUI の本体は dials/util/spotfinder_frame.py であるが、これは cctbx 側の rstbx に含まれている slip_viewe…

iPython notebook から cctbx を使う

年を取ったのでなかなか Python が身につかない――などと言っているわけにもいかなくなってきたので、頑張る。iPython と notebook が便利らしいので、cctbx もここから使いたい。iPython 自体は apt-get install ipython ipython-notebook で入るのだが、こ…

sshfs でマウントした場所から git

sshfs でマウントした場所から git を使うと、 error: Couldn't set refs/remotes/personal/master error: Cannot update the ref 'refs/remotes/personal/master'.などというエラーが出ることがある。これを回避するには、 sshfs username@server:/path/to/…

h5py で圧縮

h5py で既存の HDF5 ファイルを圧縮した。現状の HDF5 は、既存のデータセットを削除できない(論理的には削除できるが、その領域を再利用できないし、ファイルサイズが縮むこともない)ので、新たにファイルを作って、圧縮フィルタを通しながら書き込んでいく…

統計量の不偏性や一致性と、post-refinement について

4/23 ごろに Twitter に書いたことの再録。シリアル結晶学における post-refinement について問題提起しておく。これらの手法の不偏性や一致性についての検証はまったくといってよいほどされていない。つまり、ある枚数から処理したときに得られる強度(の推…

Python のスレッドと os.system について

os.system は、サブプロセスの実行が終わるまでブロックする。& をつけるとブロックしない。Python のスレッドは、daemon フラグが立っていないと、それが終了するまで python インタプリタが残る。daemon フラグが立っていると、他のに合わせて自動で死亡す…

CPU 周波数の調節

Ubuntu 14.04 LTS で、CPU 周波数の自動調節機能 Enhanced Speed Step Technology (EIST) がうまく動作していないことに気づいた。Core i7-3970X でも Core i7 870 でも同様だ。/proc/cpuinfo を見ると、いつも(TurboBoost 前の)最高周波数で動いているよう…

行列を回転

R

画像回転のための準備。 m <- matrix(1:12, 3) nc <- ncol(m) nr <- nrow(m) m t(m)[seq(nc,1),] m[seq(nr,1),seq(nc,1)] t(m)[seq(1,nc),seq(nr,1)]

cctbx.xfel 読解メモその4

まだまだ続くよ。xfel/metrology/mark0.py には、CSPAD のピクセルサイズと厚さがハードコードされている。rstbx/bandpass/parameters.h は、use_case_bp3 が使うパラメータを集めた parameters_bp3 クラスのほか、検出器の parallax correction を行う pad_…

bash の wait と、SHELXE の条件検討

bash のシェルスクリプト内で background job を立ち上げた場合、最後に wait を入れないと、job の完了を待たずにスクリプトが終了してしまう。したがって、job も共倒れになってしまう。例えば、TORQUE を使って 30 並列で SHELXE の条件検討を行うスクリ…

watch コマンドで SHELXE の進捗を監視

先日、@yam_cpp 氏に watch コマンドを教えてもらった。これは、定期的にコマンドを実行して、結果をフルスクリーンで(=再実行ごとに clear を実行して)表示する。解説は watch でコマンドを延々と実行する - いますぐ実践! Linuxシステム管理 / Vol.223 が…

シリアル結晶学のための post-refinement について

1年前に Post-refinement についての覚え書き - biochem_fan's note を書いた。その後、シリアル結晶学への応用が急速に進み、2015年に至って、ついに効果が立証された。これらの進展について説明しよう。Rossmann, M. G., et al. "Processing and post-refi…