Traktorでかけている曲名とアーティスト名を取得する(Python)

Traktorにはicecastクライアントがついているので、サーバーを立てれば現在かけている曲名などを取ることができる。 radrなんかが有名かなと思うが、自分のやりたい方向性とはちょっと違う(ライフログとしてのDJingに興味がある)ので、Pythonで実装してみている。

Pythonでsocketプログラミングって初めて。

import socket
import re

HOST = 'localhost'
PORT = 8000
connected = False
artist_title_re = re.compile("ARTIST=(.*)TITLE=(.*)vorbis")
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr

def response_ok(conn):
    conn.send('HTTP/1.0 200 OK\r\n\r\n')

while 1:
    data = conn.recv(8192)
    if not data: break
    if not connected:
        response_ok(conn)
        connected = True
    at = artist_title_re.search(data)
    if at:
        print at.group(1), at.group(2)

conn.close()

期間限定でお安くなっているS4が欲しい

ProductName NATIVE INSTRUMENTS TRAKTOR KONTROL S4

NATIVE INSTRUMENTS / 76999円 ( )


ChEMBLのデータからMMP用のsdfセットを作成する

pychembldb使えば楽勝だというということの証明をしようと思ったが、意外に面倒くさかった。

  • ヒトのアッセイ系
  • 信頼レベルマックス(Direct single protein target assigned)
  • アッセイのタイプはBinding

という条件でデータを引っ張ってくる。その後構造数<2のファイル(MMPにならない)を削除して、メタデータ(アッセイID, Uniprotのアクセッション番号、一般名称、データ元のジャーナル)を吐き出したあと、活性データをTSVに出力するようにしている。

最初はsdfのほうに活性情報も付けておけば楽勝じゃないかと思ったが、スキーマ見てたら測定タイプが正規化されてないうえに、AssayじゃなくてActivityのほうについてることに嫌な予感がしたので調べた。

chembl schema

やはり、pIC50とIC50が混在してたり、InhibitionとIC50が混在していた。

これはペアに出来ないので僕の場合はpandasでゴニョるのでこうしましたが、PPのスキルが高まっていてこっちでやれるのであればsdfに活性入れておいたほうが取り回しやすいかも。

コードはexamples/recreation.pyにあります。ファイル名があれなのは今朝コードを買いている時にスーパーカーを聴きまくっていたからというわけなので察してください。

ChEMBLのアッセイのコンフィデンスレベル

IC50とKiのトレンドをChEMBLのデータセットから探るという論文を読んでいたら、データ抽出のフィルターにconfidence level == 9を入れていたので、これは何かなぁと。

>>> from pychembldb import *
>>> for c in chembldb.query(ConfidenceScore).all():
...   print c.description
... 
Default value - Target unknown or has yet to be assigned
Target assigned is non-molecular
Target assigned is subcellular fraction
Target assigned is molecular non-protein target
Multiple homologous protein targets may be assigned
Multiple direct protein targets may be assigned
Homologous protein complex subunits assigned
Direct protein complex subunits assigned
Homologous single protein target assigned
Direct single protein target assigned

これはキュレーターが付与してるのかな? そうだとしたらかなりありがたい分類だ。

Direct single protein にアサインされているアッセイ数を調べてみる

>>> from pychembldb import *
>>> c9 = chembldb.query(ConfidenceScore).filter_by(description="Direct single protein target assigned").one()
>>> len(chembldb.query(Assay).filter_by(confidencescore=c9).all())
76773

FP3級合格した

普通に合格してました。勉強時間等はFP(関数プログラマー?)3級を受けてきたを参考に。

良かったこと

  • 税金がどこで持っていかれているかなんとなくわかるようになった
  • 年金を理解した(同時にひどい制度だなと)
  • 健康保険も理解した

特に厚生年金保険料の労使折半は詭弁だろうと。サラリーマンから自営業に転身する場合にはこの部分は考慮して設計しないといけない。

最後の健康保険も計算の仕方を理解したので任意継続にするか国民保険に切り替えるか判断つくようになったし、まぁ色々と勉強になった。

7/27(SAT)は第4回入門機械学習読書会です

先週のShizuoka.py #2では@secondarykeyがpythonでやる機械学習の話をしていましたが、入門機械学習はRです。

回帰の章と正則化あたりをやる予定です。そんなに事前知識は要らないと思いますので、ちょっともつカレー気になるわーっていうヒトがいたらはじめてでも気軽に参加してもらえればと。

ちなみに僕はもつカレーを食べたことないので、期待度大な感じですね。

ProductName 入門 機械学習
Drew Conway
オライリージャパン / 3360円 ( 2012-12-22 )


構成管理ツール Ansibleが便利そうだ

先週のShizuoka.py #2で実務として一番勉強になったのが、Ansibleの話やserverspecといった構成管理やそいつらのテスト話であった。

さすがにリード開発者からメンション飛んできたら使わざるを得ないw

研究用のWSは個人でバラバラに管理していて、僕以外のマシンのPythonのバージョンがやたら古かったりして並列計算したいときに苦労したり、3人しかいないのに中途半端なLDAP管理になっていたりしていて残念すぎる環境なので改善したい。

pychembldbで結合試験系の全てのアッセイ名を出力する

こんな感じで

from pychembldb import *
for a in chembldb.query(Assay).filter(AssayType.assay_desc == "Binding").distinct():
   a.description

Shizuoka.py #2をやりました

参加された皆様お疲れ様でした。

今回も内容が充実していて楽しかったです。次回は10月初旬-中旬を予定していますのでまたよろしくお願いします。個人的には後半のserverspec,ansible,パッケージングが勉強になった。あと現状はKivyよりはAlloyのほうがよさそうだなーってのがはっきりしたのでスッキリした。 ansibleのスライドは上がったら追記する。

私のスライド。元ネタをあたればもしかするとお目当てのものが見つかるかもしれません。

Flask入門

サンプルアプリがすぐにpyramid書き換えられてpull requestが送られたらしいw

フレームワークはWSGIとZopeの間のどこか。

パッケージングの今と未来

パッケージの話。いくつかPYPIに置いているので非常に勉強になった。それからpipでbitbucketから直接インストールする方法が便利だなぁと思った。

@ringtaroがじゃんけん大会でパーフェクトPythonをゲットして喜んでいたので、詳しいまとめを書くはず(多分)。

ProductName パーフェクトPython (PERFECT SERIES 5)
Pythonサポーターズ
技術評論社 / 3360円 ( 2013-03-05 )



安東米店にいった

ちょっと気になるものがあったので、静岡駅から安東二丁目まで歩いていって米屋さんでカミアカリを買ってみた。

1373149936

田んぼとは、米とは、酒とは

ロジカルに考える料理の本に続きロジカルに考える田んぼの本。水田の謎に迫る。

家庭菜園やっているので、稲が連作障害起きないのとか、あんな詰め詰めに植えて交配しないんかとか、何で水張るのとか疑問だったんだよね。

あと五百万石っていう酒米の由来は新潟の米生産量が500万石を突破したことにちなんだらしい。それから山田錦の稲穂は葉っぱより上にでるそうだ。

それから酒の出来と心白はあまり関係ないらしい、これは意外。今度酒屋に行ったら聞いてみようっと。

ProductName ロジカルな田んぼ (日経プレミアシリーズ)
松下 明弘
日本経済新聞出版社 / 893円 ( 2013-04-09 )


  • 田んぼに水をはるのは、土と空気を遮断するため
  • 田んぼで最も大切なのは水平であること
  • 稲は薄く植えても厚く植えても収量はそれほど変わらない(落花生も一緒?)

今週末のShizuoka.py #2の前に安東米店に行ってみることにした。

絶対味覚は読んで勉強になる本だと思う

5章の120%蛇足な章と、自分語りマシマシな部分にイライラしなければ、かなり示唆に富んだ内容だと思う。

4章なんて料理にオズボーンのチェックリストのようなものをあてはめて料理を広げたり作り替えたりする方法を紹介していて、非常に面白く読んだ。

ProductName 絶対味覚
川越 達也
主婦の友社 / 1260円 ( 2012-04-20 )


最初の方は幼少期の味覚体験が大切っていう話だった。みんな言うけど、好き嫌いの激しい子供にそれをするのはなかなか骨が折れるよね。無駄にグルメに育って散財するよりは、ファミレスの味で満足できる平凡な味覚で止めておいてやるのも親心ではないのだろうか(自分は嫌だが)

さて、先週砂肝のオリーブオイル煮を作ったんだが、

1372850791 1372850792

これは僕が気に入っている「茹で砂肝の塩コショウ入りごま油かけ」の原型じゃないかと気がついて嬉しくなったところに絶対味覚の4章を読んであーこういう風に広げればいいのか!と気付かされたのであった。仕事ではいつもやっていることだが、料理にもつかえるのね。

「茹で砂肝の塩コショウ入りごま油かけ」ってのは、砂肝を10分ぐらい茹でて中心が若干赤くなるくらいであげて、薄目に切ったら器に盛って、ごま油に塩胡椒混ぜてまわしかけるというお手軽料理です。日本酒の肴にちょうどいい。

一人の時はよく作る。