PyConJp 2018に参加しました

去年は参加できなかったので今年は参加しました。

pythonの型の話が面白かったです。Are Python types Pythonic? それからjupyterの話も面白かった。

  • Build text classification models 突然キャンセルになって他の聞きたいセッションも満席になってた
  • 英語トラックなのに突然日本語にスイッチしてあれーってなった。準備不足だったのかな?

メルカリの人が多かった気がする。何年か前はソシャゲの会社が多かったけど。データサイエンス系のセッションは あまり多くなかった気がするのか興味のあるセッションが少なかっただけなのかはわからなかった。

ところで来年のPyCon APACはフィリピンだそうなので参加できたらいいなと思っている(Food.py)。

それからなんか発表したいけど、最近は創薬ネタしかないんだよなー。もっと家でコード書かないと駄目ですね。

蒲田の鳥万

1540099113 1540099116

1540099118 1540099120

近所のビートル

1540099123 1540099125

1540099127

PyCon会場近くのにこまる三代目

1540099130 1540099132

Shizuoka.py #7やりました

久しぶりに吉原のコミュニティFでShizuoka.pyをやりました。

今回人が4人しか集まらなくて時間を持て余すのではないかと危惧したけれど全員濃いネタを持ち寄ってきて大変楽しい時間を過ごせました。

今回の演題は

今回おやつに杉山フルーツの生ゼリーを買ってみました。食べたくなったら次回来れば良いと思います。

1538294288

pythonでdroneを飛ばす動画。DQNで訓練させて、絶対に捕まらないドローンとかできんのかな?w

懇親会は予約していなかったので、流れで会場の向かいの居酒屋入ろうとしたらオープンしてなかったので、近所のインド人の経営しているカレー屋さんにお邪魔しました。飲み放題とディナーのセットで3Kだったんだけど、生ビールがすぐに切れたらしくビール頼むと店員さんが近所の酒屋にダッシュしに行くらしく、申し訳ないので後半はワインを飲みましたw料理はすごく美味しいのでもっと流行るべきお店だと思いました。

写真は生ビールのグラスに瓶ビールを注ぐ図(Figure. 1)。 右図はシーカバブで大変美味しかった。

1538294290 1538294293

ティッカかなんかとサラダ。奥のは左とは違う料理。

1538294296 1538294298

カレーは二種類来てチキンとマトン。マトンのほうが辛いし、スパイスも効いていて好み。ナンはこのあと更に二枚来た。

1538294301 1538294304

サービスで更に一皿頂いて満足

1538294306

Shizuoka.pyも始めて5年位経つけど継続的に集まれるのが良いですね。今後もゆるく楽しくやっていきたいですね。

Psikit as a Electronic-Structure Informatics library

Now pen and I are planning to develop a library for a Electronic-Structure Informatics named Psikit (Psi4 + RDKit).

Which coding style do you like?

The repository is here.

psikit as a wrapper library?

import psikit
import numpy as np
from rdkit import Chem

psikit.core.set_output_file("out.dat", True)
psikit.set_memory('4 GB')
psikit.set_num_threads(4)

mol = Chem.MolFromSmiles("c1ccccc1")
benz = psikit.geometry(mol)
scf_e, scf_wfn = psikit.energy("B3LYP/cc-pVDZ", return_wfn=True)
HOMO = psikit.get_homo(scf_wfn)
LUMO = psikit.get_lumo(scf_wfn)
print(HOMO, LUMO, scf_e)

or psikit as a set of util functions library?

import psi4
from psikit import mol2xyz, get_homo, get_lumo
import numpy as np
from rdkit import Chem
psi4.core.set_output_file("out.dat", True)
mol = Chem.MolFromSmiles("c1ccccc1")
xyz, mol = mol2xyz(mol)
psi4.set_memory('4 GB')
psi4.set_num_threads(4)
benz = psi4.geometry(xyz)
scf_e, scf_wfn = psi4.energy("B3LYP/cc-pVDZ", return_wfn=True)
HOMO = get_homo(scf_wfn)
LUMO = get_lumo(scf_wfn)
print(HOMO, LUMO, scf_e)

Shizuoka.py #7やります

前回からかなり時間が経ってしまいましたが、Shizuoka.py #7やります

皆さまの参加をお待ちしています( ・`ω・´)

パーフェクトPythonを読んだ

5年くらい前に

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


なかなか良い本だったと思う

Phantom.js終了していた

東証の適時開示情報閲覧サービスをチャンネルにして自動チェックさせたら便利なんじゃないかと昔のスニペットを探し出してきてコーディングしてたら、Chromeがheadlessに対応していてPhantomjsは終了になったようだ。

なので、Seleniumからはheadless chrome使うべし的な感じだったので、ちょっと試してみた。ハマったのはchromedriverをDLしてPATHの通ったところに置く必要があったということ。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.binary_location = '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'
options.add_argument('--headless')
options.add_argument('--disable-gpu')
driver = webdriver.Chrome(chrome_options=options)
driver.get('https://www.google.co.jp/')
print(driver.title)

東証開示情報チェックプログラムもphantomjs->chromeに変更するだけで動いたので良かった

Fluent Python

最近気になっている本

ProductName Fluent Python ―Pythonicな思考とコーディング手法
Luciano Ramalho
オライリージャパン / 6264円 ( 2017-10-07 )


昨日のmarkdown2pptxのスニペットをもう少しちゃんとしてrepoで管理するようにしました。

昨日のこれをちゃんとコマンドライン化してmishima.sykのrepositoryにあげておいたので適当にいじってください。

まともに動くようになったらpypiにでもあげようかなと思いますがとりあえず動かしたい場合にはgit cloneしてから

python setup.py install

で、md2pptxというコマンドが使えるようになるのでmd2pptx --helpで使い方を確認してください。

もともとのmarkdownの記法ではクラス属性とか渡せないんだけど、Attribute_list を使うとよろしい感じだったのでそうしています。

  • power pointのlayoutを指定する
  • テキストボックスのareaの位置、大きさを指定する
  • 画像の位置、スケールを指定する

あたりの情報はこれを使えばなんとかなるのではないかと。

markdown2pptx

風邪をひいたようです。自覚症状ないから気づかなかった。

こんな感じで如何?handle_dataメソッドでタグの情報持てないから、ちょっと考えた。HTMLパーサーよりはXMLパーサーのほうがやりやすい気もする。

from markdown import Markdown
from html.parser import HTMLParser
from pptx import Presentation

class MyHTMLParser(HTMLParser):
    def __init__(self):
        super(MyHTMLParser, self).__init__()
        self.prs = Presentation()
        self.tags = []
        self.slide = ""

    def handle_starttag(self, tag, attrs):
        if tag == "h1":
            slide = self.prs.slides.add_slide(self.prs.slide_layouts[0])
            self.slide = slide
            self.tags.append(tag)
        elif tag == "h2":
            slide = self.prs.slides.add_slide(self.prs.slide_layouts[1])
            self.slide = slide
            self.tags.append(tag)
        elif tag == "h3":
            self.tags.append(tag)
        else:
            print("Encountered a start tag:", tag)

    def handle_endtag(self, tag):
        pass

    def handle_data(self, data):
        if len(self.tags) > 0:
            tag = self.tags.pop()
            if tag == "h1":
                self.slide.shapes.title.text = data
            elif tag == "h2":
                self.slide.shapes.title.text = data
            elif tag == "h3":
                p = self.slide.shapes.placeholders[1].text_frame.add_paragraph()
                p.text = data
            else:
                print("Encountered some data  :", data)

    def close(self):
        self.prs.save("sample.pptx")

def md2pptx(md_txt):
    md = Markdown()
    parser = MyHTMLParser()
    parser.feed(md.convert(md_txt))
    parser.close()

sample_md = '''
my sample slide
===============

title of a Content slide
------------------------

### this paragraph
### that paragraph
### the other paragraph

another title of a Content slide
------------------------

### this paragraph
### that paragraph
### the other paragraph

'''

if __name__ == '__main__':
    md2pptx(sample_md)

python-amazon-product-api doesn't work

ここ2,3ヶ月python-amazon-product-apiが動かなくなっていて、仕様かなんか変わったのかなーなんて放置していたんだけど。

手元の開発環境ではあっさり動いたので、なんだかなーと原因追求したところ、さくらVPSのほうの時間がズレていた。

というオチ。

今は動くので、これからも精力的にアフィリエイトポチポチ貼りたいw