100万エントリー以上の化合物を数個のファイルに分割しなければならなくなったので調べてみた。
最初はopenbabelなどを調べていたのだが、
http://openbabel.org/wiki/--splitinto
を見る限り、openbabel 2.3.0の時点ではこの機能は実装されていないらしく、手元にある2.3.1もダメだった。
ということでコード自作。とりあえず動けばいいや!という魂胆がばれますね!
https://github.com/keisuke-yanagisawa/python-tools/blob/master/split_mol2.py
python split_mol2.py hoge.mol2 #10000化合物ごとに分割がデフォルト
python split_mol2.py -n 100 hoge.mol2 #100化合物ごとに分割
こんな感じに使えます。
-v
オプションも用意していて、どんな名前のファイルが出力されているか見ることができるようにしてあります。
2016.04.17
sdfファイルにも対応しました。(実行のやり方とかは変わってない
https://github.com/keisuke-yanagisawa/python-tools/blob/master/split_sdf.py
python split_sdf.py hoge.sdf #10000化合物ごとに分割がデフォルト
python split_sdf.py -n 100 hoge.sdf #100化合物ごとに分割
python split_sdf.py -v hoge.sdf # 何て名前のファイルが出力されたか見れる