2012/02/04 06:25:13
TraktorからExportされる.nmlファイルはXMLなのでElementTreeを使えばいい。
from xml.etree.ElementTree import *
elem = parse("liquid.nml").getroot()
for e in elem.findall(".//ENTRY"):
if e.get("TITLE") is not None:
print " %s / %s" % (e.get("TITLE"),e.get("ARTIST"))
/Users/####/Documents/Native Instruments/Traktor 2.X.Xの履歴ファイルを変換すればプレイリストが出力される。
Traktor LEには履歴を保存する機能はなかったので、それだけでもアップグレードする価値は十分にある。
2012/02/02 20:12:10
Todo管理にはGoogle Tasksを使っている。家でも職場でもタスクを追加できて一元管理できるので便利なんだけど
CUIでもできたらもっと便利だろうとAPIを触ってみている。
家では普通にDeveloper's Guideの通りに動くんだが、職場のプロキシが超えられないので調べてみたらoauth2client.toolsのrunがダメらしい。
さらに追っかけてみるとflow.step2_exchange(code)のところの第二引数にproxyを設定したhttpを渡さないからこけていた。
run関数使わなければいいじゃんってことで書きなおした。ついでにFLAGも必要なくなった。
import httplib2
from apiclient.discovery import build
from oauth2client.file import Storage
from oauth2client.client import OAuth2WebServerFlow, FlowExchangeError
FLOW = OAuth2WebServerFlow(
client_id='####',
client_secret='####',
scope='https://www.googleapis.com/auth/tasks',
user_agent='gtask-client/1.0')
storage = Storage('tasks.dat')
credentials = storage.get()
if credentials is None or credentials.invalid == True:
authorize_url = FLOW.step1_get_authorize_url('oob')
print 'Go to the following link in your browser:'
print
print ' ' + authorize_url
print
code = None
code = raw_input('Enter verification code: ').strip()
try:
http = httplib2.Http(proxy_info = httplib2.ProxyInfo(httplib2.socks.PROXY_TYPE_HTTP, '####', 8080))
credential = FLOW.step2_exchange(code, http)
except FlowExchangeError, e:
sys.exit('Authentication has failed: %s' % e)
storage.put(credential)
credential.set_store(storage)
credentials = credential
http = httplib2.Http(proxy_info = httplib2.ProxyInfo(httplib2.socks.PROXY_TYPE_HTTP, '####', 8080))
http = credentials.authorize(http)
service = build(serviceName='tasks', version='v1', http=http,
developerKey='####')
tasklists = service.tasklists().list().execute()
for tasklist in tasklists['items']:
print tasklist['title']
2012/02/01 19:14:00
Pythonに限らないと思うんだが、%のうしろにスペース入れると正の数の場合にはスペースが挿入される
print "%-2d %-3s % 4.3f" % (a.GetIdx(), a.GetType(), a.GetPartialCharge())
pygamessの結果を整形したかったのです。
1 C3 -0.015
2 Nam -0.305
3 C3 0.006
4 C2 0.287
5 O3 -0.250
忘れるとなかなか思い出さないのでメモ
2012/01/28 09:10:47
2.3.1がリリースされたようです。
個人的に興味があるのは
- PNG files from Open Babel contain molecular information and can be read to give the MDL Molfile.
- Pybel now uses the built-in 2D depiction, and no longer needs OASA.
とABINITのフォーマットに対応したあたりかな。
あと、openbabel-python.iをいじってたので、ここをいじった場合のコンパイルのオプションをメモっておく。swigが有効になるようにしないといけないのに気付かなくてハマった。
cmake ../openbabel-2.3.1 -DPYTHON_BINDINGS=ON -DEIGEN2_INCLUDE_DIR=/usr/local/tmp/eigen-eigen-2.0.12 -DRUN_SWIG=ON
OBGenericからOBOrbitalDataへのキャストをできるようにして、vectorの設定もしたので、手元のpythonバインディングでは
orb = toOrbitalData(mol.GetData(openbabel.ElectronicData))
orb.GetAlphaOrbitals()[orb.GetAlphaHOMO()-1].GetEnergy()
とやるとHOMOのエネルギー(eV)を得られるようになっている。
追記12.01.28
homebrewでいれたpythonで使いたい場合optionで指示する
$ cmake ../openbabel-2.3.1 -DPYTHON_BINDINGS=ON \
-DPYTHON_LIBRARY=/usr/local/lib/libpython2.7.dylib -DPYTHON_EXECUTABLE=/usr/local/bin/python \
-DEIGEN2_INCLUDE_DIR=/Users/kzfm/openbabel/eigen-eigen-2.0.17 -DRUN_SWIG=ON
2012/01/06 06:00:46
MoinMoin 2.0のビッグニュースに16個あげられていたんだが気になったものを
Sphinx-based docs
Sphinxベースのドキュメントになって読みやすい。でもmake pdflatexはこけた
Storage Layers: stores, backends, middlewares
ストレージにファイルだけではなくsqlalchemyで使えるRDBやKyoto Cabinetなんかも使える。
Tree based transformations
これに惹かれた
input -> converter -> DOM tree -> converter -> output
という変換経路をたどるのでフォーマットの変換ができる。つまりwikiのコンテンツを好きなフォーマットで取り出せるので、特にReSTで取り出してSphinxにもっていけるようになるのでデータの再利用がしやすそう。
GUI editor update and different approach
ckeditorが使える。WYSIWYGはイントラのサービスでは必須。
Themeing with Jinja2 templating engine
Flask-Themesを使っているので、自分用のテーマを作ってみる予定
Packaging
virtualenvのおかげで、環境を汚さずすむので便利。あとquickinstallスクリプトがインストールの面倒をほぼすべて見てくれるので超楽チン
2012/01/04 21:29:48
コミュニティーベースのコラボレーションツールを探している。
個人的にはSphinxのWeb Supportがいいんじゃないかと思っているんだが、うちのITリテラシーを考えるとちょっと無理すぎるかなぁと断念した。
論文が電子化されているけどpdfは単なる紙の模倣でつまんないがHTML化されてパラグラフ単位とかfigure単位でコメントしたり編集できたりすれば、レビューも作りやすいし、実験はいいけど解釈はクズみたいなトータルでの判断に悩むような論文も切り取れるし、レターみたいな内容が薄いんだか知識を入れ込めなかったんだか分からないような中途半端な文章も好き勝手に補足できる。つまり真のマッシュアップが待っているわけです。
単語に分解して相関を取るとかそういうのとは逆方向に、文脈をつなぎあわせてより抽象とか本質を目指すようなことがやりやすくなるわけですな。正直論文の最後に載っているリファレンスは、島根の場所が知りたいのに日本のあたりを指してるわけで残念な仕組みだよなと思ってるのでもう少し、位置情報を高精度化すれば面白いのにとずっと思っているんだけどなかなかそうはならないのはみんな著者のストーリーを読むのが好きなのかね?他人事なのでどうでもいいけど。
で、音でいうところのサンプリングというか、パラグラフ単位でコメントを入れられる仕組みっていうのは未来があると思っている、RWHで未来を見たというかちょっと感動した。まぁ、そういうのをイントラに構築できたら良かったんだけど現状は難しそうだ(ヨーヨーヨー)。
かといってwikiはなぁ、、、Sphinxっぽく文書出力できる良い感じのwikiが欲しいなぁと思いながら調べていたらmoin2がFlaskベースでフォーマットの変換がしっかりしてそう。ReSTでもOKなのでSphinx->pdfってのもやりやすそう。

あとは知っているフレームワークなので手を入れやすそうってのもある。化学構造のエディタとか組み込まないといけないし。それからmoin2のソースコード読むのも勉強になるし、モチベーション的にもよろしいです。
まぁそんな感じで今年は、wikiベースの創薬用コラボレーションツールを作ってみるかなと。
2011/12/28 19:22:19
今年は640エントリ投稿してた。
エントリについたタグをカウントして多い順に並べてみた。
宣言通りにjavascriptを重点的に学んだ気がする。

ちなみに、タグとそのカウントの辞書を作った後に、itemでソートしたい場合にはちょっとめんどくさかった。
for k,v in sorted(tag_table.items(), key=lambda (k, v): (v, k), reverse=True):
print k,v
来年はAndroidかなぁ
2011/12/04 07:58:11
PyPyが動くようになったので。
SlidePuzzleの3x3(57問)を解かせてみた
cPython
real 3m40.901s
user 3m29.312s
sys 0m0.749s
pypy-1.7
real 0m24.389s
user 0m24.114s
sys 0m0.236s
pythonをpypyに変えるだけで(ソースコードを変更することなく)こんだけ速くなるんだからすばらしいですね。
2011/12/02 20:43:55
buildoutを使えるようになりたいとflask-gae-templateをpython2.7に対応させてみている。
これで、まぁ動くことは動くんだけど色々とwarningが出る。
特に
WARNING 2011-12-02 11:23:39,704 py_zipimport.py:139]
Can't open zipfile /opt/local/Library/Frameworks/Python.framework/Versions/2.7/
lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg-info: IOError: [Errno 13]
file not accessible: '/opt/local/Library/Frameworks/Python.framework/Versions/2.7/
lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg-info'
は、なんで出るんだろうか?
2011/12/02 06:20:40
10.5だと動かなかったので。
PyPyのサイトからpypy-1.7をダウンロードしてきて解凍して動かしたらさくっと動いた。楽しい。
GDD2011の時に書いたスライドパズルソルバーのコードがどんだけ速くなるのか知りたいのであとでベンチマーク取っておく。
ついでにPython3に対応して欲しいので、寄付もした。paypalもgoogle checkoutもそうだけど少額決済の仕組みは便利だなぁと。