Skip to content

Instantly share code, notes, and snippets.

@dogrunjp
dogrunjp / d3_multichart.js
Last active February 14, 2016 15:04
【javascript, D3.js】可変長の引数で渡されたリソースで、可変長のタスク(データの読み込み)を実行する方法。
var vchart = function(obj){
var q = queue();
for(var i=0; i <= arguments.length; i++){
q.defer(d3.json, obj.datas[i].filepath);
}
q.await(multi_chart);
}
//
@dogrunjp
dogrunjp / new_gist_file_1.md
Last active February 6, 2016 02:04
VirtuosoにインポートしたRefex RDFから、gene reference idを引数にデータを取得するSPARQL及びラッパーアプリケーション。

ローカルに起てたVirtuosoにReFexのttlをインポートして、以下のようにスクリプトを呼び、jsonデータを表示しています。少し追記してサービスをたててD3.jsからAPIを呼んでもいいし、ファイル保存してもいいと思う。

python3 rdfutils.py 11657

ただし、 たぶんsparqlが良く無いと思うのですが、JSONの中に同じ値のハッシュが4つづつ入ってます。。。こ の箇所は、正しいspqrqlを教えていただけたらと思います。。。

@dogrunjp
dogrunjp / Virtuoso_Mac_tips.md
Last active January 7, 2018 04:32
MacでVirtuosoを利用するための諸々。

MacでVirtuoso TIPS

起動

$ cd /usr/local/virtuoso-opensource/var/lib/virtuoso/db

$ sudo /usr/local/virtuoso-opensource/bin/virtuoso-t -f &

これで起動しない時は

@dogrunjp
dogrunjp / convert_csvbytes2list.py
Created January 31, 2016 18:52
メモリ上のCSVをリストに変換する方法。ファイルからCSVを読み込んだときのCSVと同様にcsv.rader()すると一文字ごとのリストが返ってしまうので、直接改行コードで区切りリストにする必用がある。urlopen()したcsvでも同様。
with BytesIO() as f:
   ftp.retrbinary('RETR ' + filename, f.write)
   data_list = f.getvalue().decode('utf-8').strip().split("\n")
@dogrunjp
dogrunjp / get_filelist_with_dra_submission.md
Created January 19, 2016 19:12
DRAのsubmission idからメタデータファイルリストをftpで取得する関数。

DRAのsubmission idからメタデータのファイルリストをftpで取得する関数

def create_xml_list(self, ftp_server, archive_path, submission):
        ftp = FTP(ftp_server)
        ftp.login()
        num = int(submission[3:])
        n = "DRA" + str(int(num/1000)).zfill(3)
        xml_file_path = "/".join([archive_path, n, submission])
 ftp.cwd(xml_file_path)
@dogrunjp
dogrunjp / python_urlopen_retry.py
Last active January 1, 2016 15:32
Python3のurllibでとあるAPIからJSONを取得したいのですが、そのAPIが高頻度で502を返すためurlopen()をリトライする実装を工夫しています。urllib3はretryがモジュールに含まれているようですが情報があまり無いので、今回はurllibでゴリゴリとした方法で。
def get_api_response(self, req):
for i in range(self.maxretry):
try:
response = urlopen(req)
response_read = response.read().decode('utf-8')
response_json = json.loads(response_read)
# srastatrepは502: Bad Gatewayが頻発。この場合、urlib.error.HTTPErrorになる。
except HTTPError as e:
if i + 1 == self.maxretry:
@dogrunjp
dogrunjp / python_change_modulescript.md
Last active December 11, 2015 03:37
Pythonで実行するモジュールを動的に変更したいとき

Pythonで実行する処理のモジュールを動的に変更したいとき

test_module_1.py

def test():
    print('モジュール1です')

こんな感じに、同じ関数名で処理内容の違うモジュールを何らかの変数によって選択して実行したい場合のPythonの記法を考えてみました。

わかりやすく、スクリプトのコマンドライン引数で呼び出したいモジュールを変更するケースを考えてみます。

@dogrunjp
dogrunjp / ipythonnotebook_matplotlib_ja.md
Last active May 5, 2018 05:57
ipython notebookのmatplotlibで日本語を利用するには

ipython notebookのmatplotlibで日本語を表示するには

データの計算過程と計算結果をそのまま残して保存できるipython notebookは、集計・分析のプロセスをオープンに共有したいような用途には最適なツールです。Anaconda3系でインストールしたipython notebookはPython3.xなため、コードの中で日本語も利用できます。政府の統計データなどは、カラムの値からインデックスまで日本語だらけになるので、そちらの向きのデータを集計するのならPython3系のipythonを利用しない理由はない!ということになります。

ただし、Python3自体はデフォルトでunicodeに対応していて日本語の記述が可能なのですが、matplotlibを使ってチャートをレンダリングする場合は日本語フォントを明示的に指定する必用があります。(指定しないと日本語が豆腐に置き換わります)

matplotlibの日本語対応は複雑なものではないのですが、参考となる資料があまりまだ無いようなので、自分の設定をメモしておきます。

Python3系のconfiguration

まず、前提としてconfigファイルを置く必用があるとのことで、pyenv localでanaconda3を指定したディレクトリに以下のファイルを設定します。

@dogrunjp
dogrunjp / pyenv_virtualevn_mac.md
Last active June 26, 2022 07:40
pyenv-virtualenvを使って複数のバージョンのPython開発環境をMacに作るには

Macでpyenv-virtualenvを使って複数のバージョンのPython開発環境を作る

自分はPythonのバージョンの問題をずっと避けて2.7を使ってきたのですが、Web関連でシステムを構築する場合でも自然言語の処理をするにしても、日本語はどうしても扱うことになるので、仕事のキリの良いところでPython 3.xの環境に移行していくことにしました。

基本的には完全に3.xに移行したいのですが、3.xに対応する気配の全くないGoogle app engine/Pythonのユーザでもあるため、2.x環境も捨てらない、、、。あとjupyterを使いたいし、Anacondaもインストールしたいけど、開発環境とは分けておきたい、、、、。などの事情でpyenvをMacにインストールして用途ごとPythonのバージョンを切り替えて使うことにしました。

pyenvのインストール

$ sudo brew update
@dogrunjp
dogrunjp / translate_list2link_with_jinja2.md
Last active October 10, 2015 09:02
Pythonのテンプレートエンジン"jinja2"のカスタムフィルターで、リストのデータをパラメータに変換しリンクとして表示する方法。