28062016 life
虫垂炎を薬で散らそうとしてるけど、微熱は続いてるし無理かも。
おくすり110番だとよくわからん部分が多いので添付文書
28062016 life
27062016 Python
requests+pyqueryで文字列の扱いに悩まされるのは主に二箇所ある。そしてその組み合わせのエラーが出るので悩ましい。
requestsでcontentとtextの違いはtextはr.encodingでdecodeされたunicode文字列だということだ。なので正しくデコードされたunicode文字列を推定できればrequestsでの文字化け問題は解決する
だが常にunicode文字列をpyqueryに渡せばOKかというとそうでもない。
常にUnicode文字列を渡すようにすると Unicode strings with encoding declaration are not supported. というエラーが散見されるようになる。これはpyqueryが内部的に使っているlxmlがヘッダーにエンコーディングが指定しているHTMLを渡すとそれにあわせてデコードしようとするらしく、既にユニコード文字列化されたHTMLもその作法にしたがってエラーになるというものだ。
というわけでこの場合はもとのstr文字列を渡さないといけないらしい。
これが結構面倒くさい。requestsでヘッダーにエンコーディングが指定されているかどうか知るオプションあるんかね?
26062016 life
なったというか現在進行形だが。
金曜日の深夜に痛みで起きてからほとんど眠れなかった。次の日の朝に診察してもらったけど、初期の虫垂炎だった。初期であの痛みってことは進行したらどんだけキツイんだろうか?
医者には切除を薦められたけどとりあえず薬で散らす方向で様子を見ることにした。
治らないようだったら入院だろうから、読書用の小説とかたくさん買っておこうかなぁと。
「僕だけがいない街」のさわりが知りたくて1巻を買って読んだらいつの間にか全巻揃えていてしかも読みきっていたという…
Kindle恐るべし
22062016 京都
21062016 chemoinformatics deeplearning
先日Deep Learning創薬の駄文をのせてみたが、
深いニューラルネットワークで特徴抽出っていうのが、chemoinformaticsの文脈だと「フラグメントからファーマコフフォア構築」というのはその通りだと思うんだけど、それがBoW的なECFP4みたいなフィンガープリントでいいのだろうか?pharmacophoreとかCoMFA,CoMSIAみたいな表現に向かうような記述子で出発しないといけないんじゃないかなーと思う
以前@iwatobipenが触れていたNeuralFingerPrintもECFPの特徴抽出プロセスと類似の方法で距離を考慮してないからファーマコフォアにはいたらないと思う。精度がいいのは分散表現のところではないかなぁと思っている(つまり以下の説明)。
Standard fingerprints encode each possible fragment completely distinctly, with no notion of similarity between fragments. In contrast, each feature of a neural graph fingerprint can be activated by similar but distinct molecular fragments, making the feature representation more meaningful.
実際溶解性みたいな分子全体の特徴が重要な場合の予測は非常に改善されているが、薬理活性みたいな分子認識が重要なファクターになっているものはあんまり改善してないように思う。GitHubに実装があるし、精度もいいから予測モデル作る場合にはこれを使うけどね。
ここらへんも似た感じだと思う。如何にもトキシコフォアとかファーマコフォアが学習されるようなFigureが載ってるけど、Catalystとか使ってファーマコフォアモデルを組み立てたり、ドッキングシミュレーションをやりまくった経験からはこれは誤解されそうな説明だなぁと思った。
で本題。最近Molecular Graph Convolutions: Moving Beyond Fingerprintsという意欲作を読んで感動した。
ここまで書いたら中身の説明を書くのに疲れちゃったので興味のある方は是非読みましょう。著者もGoogleとStanfordの人だし、pubmedで出てこなかったらノーマークだったわ。
化合物(グラフとしての)の不変性を獲得するようなCNNのやり方参考になったがプーリングがsumっていうのがそれでいいのかなぁと思った。
f is a learned linear operator with a rectified linear activation function and g is a sum.
ファーマコフォアが記述できるようなDNNの方法ができれば、精度上がるだろうから、測定データさえ増やせるのなら有望じゃないかと思う。
さらにその結果からドッキングシミュレーションの評価関数を作れるだろうから、それを使ってリードホッピングにトライしてもいいから夢が広がる。
ドッキングの精度が高ければモデルでFMO実行してもそれなりに正しそうな結果が出るだろうから、結晶に頼らなくてもモデリングでいけそうだしな。
14062016 Python
企業のプレスリリースをテキストマイニングしようと思うと色々大変なわけだ。そもそもプレスリリースの媒体がpdfを想定されているために、タイトルのみ本文無しという潔いRSSが多いしそういうのは購読しても嬉しくない。
というわけでプレスリリース一覧のページからpdfのURLを抜き出してpdfminerかましてデータ抽出やらないといけないしそっちのほうが逆に構造化されていてスクレイプしやすかったりする。
で、PyQueryを使ってガリガリやっていたのだが、何故かスクレイプできないサイトがあった。BeautifulSoupではちゃんとスクレイピング出来たのでエラーの原因が気になって調べてみたのでメモっておく
普通にrequestsでHTMLを取ってきてPyQueryに渡してやると :::sh >>> from pyquery import PyQuery as pq >>> import requests >>> tgpr = "http://www.transgenic.co.jp/pressrelease/" >>> d1 = pq(requests.get(tgpr).content) >>> d1 [<{http://www.w3.org/1999/xhtml}html>] >>> d1("a") []
aタグが一件も見つからない。しかし、urlオプションに直接サイトのURLを指定するときちんとparseされている
>>> pq(url="http://www.transgenic.co.jp/pressrelease/") [<html>] >>> d2 = pq(url="http://www.transgenic.co.jp/pressrelease/") >>> len(d2("a")) 71
なんだこれは?となったのでドキュメントを漁ったらxmlパーサーでパースしてみてだめだったらhtmlパーサー使うぜって書いてあったので強引にxmlパーサーでparseさせてみた。
>>> d3 = pq(url="http://www.transgenic.co.jp/pressrelease/", parser="xml") >>> d3 [<{http://www.w3.org/1999/xhtml}html>] >>> len(d3("a")) 0
というわけで文字列を渡すときにはなぜかhtmlのパーサーでparseされていないっぽい。これはコードを追うべきですな。
67行目のetree.XMLSyntaxErrorという例外が投げられてないのではないかということになった。
まぁ別にわざわざrequests使う必要もないのでurlオプションにURL渡せばいいんだけどね。
13062016 Python
王将使うの多分初めてかな。懇親会は予約の締め切りがあるので参加される方はお早めに
昨日は久しぶりに#A君とあって一緒に黙々コーディングをしてたんだけど、A君重量級になってた…弱虫ペダルでいうと田所感が出てた(まじで運動しないと身体にくるぞw)
また@karky7や@ando_ando_andoと鈴木屋でホルモンつつきながらプログラミング言語談義でもしたいなぁと思っていたけどなかなか難しいですね。
それから#A君にはgoに奪われた静岡市圏の勢力をPyhtonで奪還するというタスクが出来たので頑張ってください。たまにはコメヤスに酒を買いにいきたいし静岡で飲みたいなぁ。
で、もくもく会では2人でTDNetのクローラー動かないなー、おかしいなーと悩んでいたんだけど、selenium2.53.2とphantomjs2.1.1の組み合わせだとswitch_to_frameメソッドがきちんと動いてないっぽいですね。chromedriverだと動いたのでダウングレードして動く組み合わせを見つけるかバグフィックスされるの待たないといけませんな。
久々にもくもくしたけど楽しかった。ここ二三年一人でコーディングすることに慣れちゃったのと、技術を追いかけなくても余裕で生きていけるようなぬるま湯に浸かりきっていたので流石にまずいなーと感じたよ。
次回のShizuoka.pyでは
という2つの発表をします。どちらもネタに走る予定なのであまり役に立たないかもしれないけどリハビリも兼ねているので大目に見てくださいw
最新刊出てた。
そして後手番で石田流を目指す43飛戦法というのに興味があったので読んでる。
角交換四間飛車の出だしから気分で変更できるのが良さそう。ゴキ中は最初からゴキ中と戦型固定されるから気を使う。
04062016 life
ゴールデンウィーク前からぬか漬けを始めた。近所にぬか漬け売ってないから自分で作るしかないのだけど、朝晩かき混ぜるの面倒くさいなぁと思って敬遠してた。
でも実際やってみるとすごく楽しいw
まずぬか床のメンテナンスが、完全なPDCAサイクルなのでやりがいがあるし、ぬか漬けの野菜を色々考えて試すのも楽しい。
ズッキーニのぬか漬け美味しい。古漬け気味なほうが好きだな。
アスパラのぬか漬けは茹で過ぎたせいか、色も悪いしフニャッと感がいまいちだった。二回目は上手く出来たけど。 こんにゃくはなんかぼやっとした味だったので個人的にはいまいちだった。
他にエシャロットなんかも漬けると美味しかった。
04062016 Python
一年半ぶりにShisuoka.pyをやります。沼津のプラサヴェルデを会場にしようと思っていたんだけど、別のイベントで使ってみたら、団体登録とか予約とかちょっとめんどくさかったので前回と同じコミュニティFでやることにします。
演題絶賛募集中です。僕は来週#A君(@ando_ando_ando)とSeleniumを使ってクローラー作る予定なのでその内容を発表しようかなーと考えています。
また、懇親会の場所が決まってないのでリクエスト等あれば。ビール電車もなかなか魅力的ではあるが…