プログラミング

CSS の RGBA による色指定について

CSS の RGBA による色指定は、 rgba(128, 0, 255, 0.5) のように、整数(0-255)、整数(0-255)、整数(0-255)、小数(0.0-1.0) なので注意。 RGB を小数で書くとエラーがログに出ることもなく無視される。128.0 とかも不可。 α値は 0.0 が透明、1.0 が不透明。な…

Ruby で文字コードを取得する

前のラボで機器データ解析用に作っておいたプログラムが、Mac OS X を 10.9 (Marvericks) にアップグレードしたところ動作しなくなったという報告を受け取った。どうやら、OS 付属の Ruby が 2.0 にアップデートされたためらしい。Ruby で文字コードを取得し…

Xcode 付属の clang で C++11 の機能を使う

STL の vector コンテナを、リテラルで初期化する以下のコードを書いた。 std::vector<int> vec = {1, 2, 3}; これを Xcode 5.0.2 付属の g++ (実体は Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)) でコンパイルしようとしたら、 non-aggreg</int>…

シングル・サインオンの仕組み

Cambridge 大学の学内限定Webサイトは、IPアドレス認証ではなくて、学生IDとパスワードによるシングルサインオンになっている。仕組みが気になったので勉強した。最近流行りの、Twitter や Facebook を使ったシングルサインオンも似たような仕組みだと思う。…

GDB メモ

これだけ知っていれば、一仕事できます(実話)。 基本コマンド bt backtrace バックトレース i r info registers レジスタ b breakpoint ブレークポイント設置 d bre 1 delete breakpoint 1 ブレークポイント1を削除 c continue ブレークポイントから復帰 fin…

cctbx で空間群を扱う: space_group_symbols と space_group

cctbx で空間群を扱うには、sgtbx (Space Group Tool BoX) を使う。まず、空間群の一般的情報を space_group_symbols オブジェクトから引き出してみる。 from cctbx.sgtbx import * P2 = space_group_symbols("P2") P2.number() # 3 P2.schoenflies() # C2^1…

cctbx チュートリアルをやってみる 3. PDB ファイルを読み込む

1つ前で、xray.scatterer が散乱体を表すことを確認した。実際の PDB ファイルから座標を読み込んでみよう。今回の元ネタは、cctbx Newsletter の "IUCr Computing Commission No. 7, 2006/11" である。PDB ファイルの読み込みには、iotbx.pdb を用いる。PDB…

cctbx チュートリアルをやってみる 2. xray.scatterer

xray.scatterer は、散乱体、すなわち原子を表す。原子のもつべき属性としては、原子番号・座標・occupancy・温度因子(isotopic or anisotopic)などがある。 from cctbx import xray si = xray.scatterer(label="Si", site=(1/2., 1/2., 1/3.), u=0.2) # u …

cctbx チュートリアルをやってみる 1. flex 配列

個人的には cctbx の設計はどうも直感的ではないのだが、業界の de facto standard になりそうなので、土地勘を身につけていきたい。なんとなくいじっていた部分も含めて、0から再スタートしてみる。ドキュメントが少ないことが公式メーリングリストでも話題…

CrystFEL の hdfsee メモ

CrystFEL 付属の HDF 画像ビューア hdfsee の使い勝手がイマイチなので、いろいろ改造している。素直な GTK アプリケーションなので、触るべきところは自明だが、一応メモ: ソースコード ソースコードは hdfsee.c, hdfsee-render.c, dw-hdfsee.c と同名のヘ…

サーバとして動作する GTK アプリケーション

さきほどの Python でソケット と Glib の g_io_add_watch の二点を組み合わせることで、ソケットから指示を受け付けるような GUI アプリケーションが実現できる。以下のコードを実行後、telnet localhost 12345 によって接続して、ラベルの文字列を書き換え…

Glib の g_io_add_watch を使う

GUI プログラムであっても、パイプやソケットからコマンドやデータを受け取りたいことがある。コンソール・アプリケーションでは getline() 等でループを回せばいいのだが、GUI アプリケーションではそうはいかない。GUI のためのメッセージループが無限ルー…

ソケットの復習

Python で書いたことはなかったのでやってみる。 import socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # ↑をしないと、サーバ・プロセスを再起動したあと、TIME_WAIT の間…

Bio-rad Microplate Manager 6 のエラー

以前のラボにいた人から、新しい Mac で Bio-rad Microplate Manager を起動しようとすると、 Fatal Error! java.lang.illegalArgumentException: Fail to create folder log under /Applications/Bio-rad/Microplate Manager 6 See Error.log for detailsな…

Cabal

Cabal は Haskell のパッケージシステムらしい。cabal update とすると、cabal 自体が新しくなってると言われたので、cabal install cabal-install として更新。その上で、cabal install ○○ とすればよい。

「数学好き・競技プログラミング好き」な人たちと、ちょっと違うところ

生粋の数学好きとか競技プログラミングに明け暮れている人たちは、「自分で考えること」が好きなんだなあと思う。類型的に言うと、数学セミナーとかに載っている問題を何日でも楽しんで考え続けられる人のイメージがある。一方、今の私は、数学も競技プログ…

次元の呪い

これはメモ。 次元が上がると、増えた次元に"逃げて"しまうこと。例えば、無限次元の線形空間では有界閉集合なのにコンパクトでないものがある。 密度推定をしようにも、スカスカで近傍に点が全然いないこと。 点から多面体への最短距離を計算するときのオー…

問題を解く方法の見つけ方

問題を解く方法の見つけ方(meta-algorithm)として、最近思っていること。 順番を決める 要素に順序を入れて、一意な並べ方に正規化する。つまり、順列を組み合わせにできないか。DAGだとトポロジカルソートして順番を入れることができる。これが有効だったり…

Python のモジュールについて

普段 Python は PyMOL の拡張を書くときくらいしか使わない「にわか」なので、文字コードとかいろいろなところで引っかかっている。今回はモジュールについて。例として cctbx を挙げているが、他のモジュールでも同じである。cctbx は互換性問題などのごた…

R の [] 演算子の落とし穴

R でベクトルやリストなどから要素を選択する [] 演算子。諸言語のように添字で要素を選択することもできるが、真偽値ベクトルを渡して選択することも可能で、 df[df$CATEGORY == 1] のようにして日々お世話になっている。問題は、真偽値ベクトルに NA が含…

複数の条件を満たすセルを数える

条件を満たすセルを数える - biochem_fan's note で、Excel や Calc で COUNTIF 関数を使って条件を満たすセルを数える方法を説明した。では、複数の条件を満たすセルを数えるにはどうすればよいのか。Excel の場合は COUNTIFS 関数があるが、Calc には存在…

GotoBLAS2 をコンパイルして使う

線形代数ライブラリ BLAS の高速実装である GotoBLAS2 http://www.tacc.utexas.edu/tacc-projects/gotoblas2。開発者が移籍したとかで開発が止まっているが、ファイルは提供されている。これを Ubuntu 12.04 LTS でコンパイルしようとした。CPU は Xeon X569…

sam から forward / reverse read だけを抽出する

awk -F"\t" '/^@/ || and(rshift($2,4),1) == 1 {print}' でOK。

サンプリングのアルゴリズム

n個あるうちからk個取り出したい。R だと sample 関数を使うだけなのだが、その仕組みが気になる。重複を許す場合(with-replacement)は簡単で、1からnまでの一様乱数をk個作るだけ。計算量はO(k)。重複を許さない場合はどうする? ソースコードを見る前に考え…