2019-01-01から1年間の記事一覧

graphvizで数式を使う

dot2texでtikzに変換してからstandaloneクラスを使って図を出力する。 gist.github.com

Ubuntu18.04にsnapでdockerを入れるとDNSの再設定が必要

Ubuntu18.04LTSのインストール時にdockerを入れると、その時点ではGoogle DNSを追加していないためにコンテナ内でDNS周りがおかしくなる。 dockerのブリッジを作り直すと直る。 pkill docker iptables -t nat -F ifconfig docker0 down brctl delbr docker0 …

シェルスクリプトで並列処理して単一ファイルに書き込む

flockとmktempを使えばよい #/bin/bash -u lockfile=$(mktemp) myjob(){ # do something flock $lockfile echo "hoge" >> output } for file in $(find . -maxdepth 1); do myjob $file & done 参考リンク 排他を実現するコマンドflock(1)の使い方メモ | 上…

CircleCIでLaTeXメモをビルド

普段メモをLaTeXで書いてGitHubで管理しているのだが、コンパイル後のpdfをクラウド上で見られると便利そうなので実装した。 circleciではartifactsを3GBまでアップロードすることができる。 CircleCI CLI (CircleCIのconfig.ymlをローカル実行できることを…

RSSリーダーに数式を表示する

普段arxivやジャーナルのRSSフィードを購読してinoreaderで読んでいるのだが、タイトル中のTeX記法がそのまま表示されて読みづらかった。 そこでMathjaxで数式を表示するJSスクリプトを書いてTampermonkeyで実行させることにした。 動的に生成される要素に対…

JSmolで結晶をブラウザで表示する

CODで結晶構造をブラウザで表示できるのが面白いと思ったので、やり方を調べた。 JSmol https://sourceforge.net/projects/jmol/files/から最新版のJmolを取ってくる zipを解凍してjmol-14.29.46みたいなディレクトリを得る(以下このバージョンのjmolを使う…

Ubuntu18.04でHDDを増設した

増設するディスクの確認 fdisk -l 増設するディスクが/dev/sdbだったとして gdisk /dev/sdb パーティションが残っていたらoで消してからパーティションを作成(n)して書き込み(w) ext4でフォーマット mkfs -t ext4 /dev/sdb www.nemotos.net qiita.com

PuLPに入門した

pythonからMILPソルバーを触れるPuLPというパッケージを勉強した。 github.com 公式チュートリアルを参考に数独を解いてみた。 ソルバーを呼んだあとにpulp.valueを呼ばないと解を得られないのに若干ハマった。 実装: sudoku.py · GitHub 参考リンク pythonh…

Cythonに入門した

python が遅すぎるのでcythonに入門した。 cythonでコードを書き直すときは、まずボトルネックになっている関数をcProfileとかで突き止めてから、jupyter notebook上で作業するのが効率的だと思う。 jupyter notebook上で %load_ext Cython %%cython -a を打…

タイムアウトを設定してJoblibで並列処理を実行

pythonで並列処理をするときにはjoblibが手軽で便利だが、タイムアウト時の処理に自由度がない。 というのも、joblib.Parallelの引数にtimeoutを設定すると、指定した時間を超えたときに例外を投げて計算全体を止めてくれるが、タイムアウトした処理を無視し…

pymatgenでのcifファイルの読み込み

pymatgenでcifファイルを読み込むにはpymatgen.io.cif.CifParserを使うが、たまに失敗することがある。 これはcifに書かれているfractional coordinates の精度が低いと、対称操作を施して同じワイコフ位置にある原子の座標を計算する部分がうまくいかないこ…

pythonのコマンドラインオプション

出力をバッファせずにnohup.outに掃き出す nohup python -u hoge.py & python - Nohup is not writing log to output file - Stack Overflow warningsを無視する python -W ignore hoge.py How to disable python warnings - Stack Overflow assertionをスキ…

pythonで独自クラスにsetを使う

pythonで独自クラスに対してsetを使うには、そのクラスがhashableでなければならない。 hashableであるとは、__hash__()メソッドと__eq__()メソッドを持っていることを指す。 組み込み型 — Python 3.7.3 ドキュメント python - How to implement __eq__ for …

ポリアの数え上げ定理の実装

最近ポリアの数え上げ定理の実装が欲しい場面に遭遇したのでlatexでメモを取りつつちまちま勉強していた。 ↓はその時のメモ(証明は基本的に書いてない)。 ポリアの定理はある対称性のもとに色塗りをする場合の数を与えるものだが、その拡張として 色塗りの固…

sshfsでunmountできない場合

sshfsで接続が切れた時にunmountできなくなることがある。 そういうときはプロセスを一度切ってからunmountすればよい pgrep -lf sshfs kill -9 <id-of-sshfs> diskutil unmount <mountpoint> # for mac pgrepの-lはlong output、-fはプロセス名以外からともマッチングさせる Macでssh</mountpoint></id-of-sshfs>…

Conda環境

できる限りcondaでパッケージを入れる。 チャンネルの探し方は conda install -c channel hoge www.anaconda.com onoz000.hatenablog.com condaでrequirements.txtからインストールしたいときは conda install --file requirements.txt でできる。 stackover…

MacでUSキーボードのcommandキーで英字/かなを切り替え

野良キーボードを使っているとドライバーを入れるのを忘れがち www.pfu.fujitsu.com qiita.com

macOSのclean install

support.apple.com support.apple.com

Bond order parameter

結晶やガラスの局所的な環境を測る秩序変数のひとつにBond order parameterがある。 journals.aps.org 原子の配位数をとして、隣接する原子との距離ベクトルをとする。 このとき次の量を考える。 ここでは球面調和関数。 この量自体はSO(3)の作用に関して不…

SageMathを入れた

公式ドキュメントに従ってconda-forgeからSageMathをインストールしようとするとクラッシュしてsageを起動できなかったのでバイナリをダウンロードすることにした。 /usr/local/binにPATHを通してから sudo ln -s /path/to/SageMath/sage /usr/local/bin/sag…

マルチコアでtar解凍/圧縮

いつまでたってもコマンドを覚えられないので自分用にまとめておく。 tar.gz圧縮解凍(シングルコア) 圧縮 tar -zcvf archive.tar.gz archive 解凍 tar -zxvf archive.tar.gz tar.gz圧縮解凍(マルチコア) 圧縮(8core並列の場合) tar cv archive | pigz -9 -p …

pymatgenの小さなバグを直した

pymatgen.analysis.graphsにnetworkx周りのバグがあったので修正とユニットテストの追加をしてプルリクエストを送った。 github.com OSSにプルリクエストを送って英文で説明するのが初めてだったのでめっちゃググった: sucrose.hatenablog.com github.blog q…

結晶の次元数

pymatgenのサブモジュールを眺めていたらpymatgen.analysis.dimensionalityという結晶の次元数を調べるモジュールを見つけた。 pymatgen.org 関数の使い方よりもそもそも結晶の次元数とはどのように定義されるか、そしてどのようにそれを計算するかに興味が…

周期表を描く(pymatgen+matplotlib)

pymatgen.util.plotting.periodic_table_heatmapを使うと周期表の形で元素ごとにある実数値をヒートマップで可視化することができる。 一方、例えば元素ごとにイオン半径を可視化したいときなどは対応する関数がpymatgenにないので自分でいろいろと書かない…

整数行列のスミス標準形・エルミート標準形を計算する

整数行列のスミス標準形とエルミート標準形とそれぞれの変換行列が欲しい状況に遭遇したのだが、標準的なpythonのライブラリには実装されていなかったので自分で書いた。github.comスミス標準形の実装には以下のブログを大いに参考にした(というかほぼそのま…

pymatgenで状態図を描く

pymatgenで状態図を描く方法の備忘録。 ついでにMaterials Project Rest を使う方法も調べた。 Materials Project API key の登録 まず、Materials Project Rest を使うにはユーザー登録してAPIキーを作成しなければならない。 登録は以下のリンクから行える…

graphillion.graphset.graphsの引数

graphillionでグラフセットを作成する方法を公式ドキュメントで調べたときのメモ。 graphillionのバージョンはv1.01。 複雑な条件でグラフセットを作成するにはgraphillion.graphset.graphsを使えば良さそう。 graphillion.graphset.graphsで指定できる引数…