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で指定できる引数…

pymatgenで結晶の体積を予測する

pymatgenにはpymatgen.analysis.structure_prediction.volume_predictor.DLSVolumePredictorというクラスがあって、ボンド長のデータベースに基づいて与えられた結晶の体積を予測することができる(すごい)。 DLSVolumePredictor を使えるようにする pymatgen…

pymatgenでVASPの入力ファイルを作る

pymatgenを使うとVASPの入力ファイルを簡単に作ることができるが、公式ドキュメントにはまとまった記述がなかったので自分用に備忘録を残しておく。 正直、pymatgenのAPIドキュメントを読めばこの記事を読む必要はないと思う。 POTCAR http://pymatgen.org/i…

周期カーネルに対するFeature Map

ガウス過程回帰の課題のひとつとしてスケーラビリティがあります。 データ数をNとしてfitting の時間計算量、predict の時間計算量がであることから大量のデータを扱いたいときは何らかの近似が必要です。そのような近似手法のひとつとして、カーネルを有限…

化合物の構造を表現する記述子

無機化合物の化学式とユニットセルの情報及び原子の座標から物性値(結合エネルギー・バンドギャップ)を予測するKaggleコンペに参加していた。 Nomad2018 Predicting Transparent Conductors | Kaggle feature engineering の過程で分子および無機結晶の構造…

マルチカノニカル法で個数推定

はじめに 去年の11,12月にマルコフ連鎖モンテカルロ法(MCMC)の集中講義を受けてきました。 講義の中で紹介されたマルチカノニカル法を応用してレアイベントをサンプリングする手法が特に面白かったので、復習も兼ねて実装してみました。 マルチカノニカル法 …

AOJ 1320 City Merger

AOJ

問題文(http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1320)AOJ2022(http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2022)とほとんど同じ問題。他の都市名の部分文字列になっている都市名を予め取り除いてからbitDPをする。 #inclu…

AOJ 2534 Dictionary

AOJ

問題文(http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2534)まず、与えられた文字列の組(string_i, string_j)(i このグラフの構築段階で(i,j)に辺があるのに(j,i)にも辺が張られているば矛盾しているのでfalseを返す。また、'@'は最小であるは…

Codeforces Round #341 (Div. 2) D. Rat Kwesh and Cheese

問題文はこちら(Problem - D - Codeforces)まず\( (x^y)^z = (x^z)^y \)であることから\(a_4, a_8, a_{12}\)が候補から外れる。 単純に与えられた式を計算するとオーバーフローしてしまうため、対数をとって比較していく。ただし、\(x (i) x,y,zが全て1より…

焼きなまし法でThomson問題の解を探索する

Thomson問題 Thomson問題とは、三次元単位球の表面にN個の電荷の等しい粒子を配置するとき、クーロンポテンシャル\( U = \sum_{i wikiをThomson problem - Wikipedia, the free encyclopedia。N=5のときにて三方両錐形が解になったり、N=8で立方体が解になら…