元素ごとの量をpymatvizでプロットする

gist.github.com

plotlyの自分用Layoutテンプレート

最近はpandas.DataFrameをプロットするときにplotly.expressを使うことが増えた。 matplotlibよりも系列ごとにsymbol, colorなどを変えるのが手軽なのが気に入っているが、デフォルトのレイアウトだとスライドに貼ったり、人に見せるには微妙だった。 という…

GitHub pages から他サイトにリダイレクト

やりたいこと GitHub pages でホストしていたドキュメントをRead the Docs に移行したので、GitHub pages からリダイレクトしたい。 ページ構成は同じなのでサブページもリダイレクトしてほしい: https://lan496.github.io/hsnf → https://hsnf.readthedocs.…

NotionでGTDタスク管理2022年版

Notion布教と自分の備忘録を兼ねてBoard viewを使ったタスク管理の現状の運用をまとめておく. 複数人による運用は考えない.半日単位くらいで予定を入れられる人向け. テンプレートを↓に作成した.以下はNotionの設定のポイントと現状の運用ルール. seaso…

Spglibに磁気空間群関連の機能を追加した

先日リリースされたspglib 2.0 から自分の実装した磁気空間群の判定・結晶構造のstandardizationが追加された。 リリースノート: Summary of releases — Spglib v.2.0.0 C API: C-APIs — Spglib v.2.0.0 Python API: Spglib for Python — Spglib v.2.0.0 以…

miniMD/LAMMPSのMPI周りを読んだ

miniMDというLAMMPSの開発チームが作っている軽量(.hと.cpp合わせて6500行程度)なMDコードを眺めた。 github.com まずminiMD/LAMMPSのMPI並列のデザインをまとめてから、miniMD中の該当するコードを参照していく。 Parallel algorithm in miniMD/LAMMPS Spat…

Materials Project new API 関連のリンク

去年の11月からMaterials Project API が新しくなったみたい。 docs.materialsproject.org 今までのfrom pymatgen.ext.matproj import MPResterでpython client を呼ぶのはdeprecate されて、代わりにmp-apiをpip install して from mp_api import MPRester …

点群・空間群の既約表現ライブラリを作った+私的Python開発環境2022

既約表現は結晶の対称性を扱うときに強力なツールだが、自分の用途に使えそうなライブラリを見つけられなかった1。 ということで作った: github.com 実装したアルゴリズムや使い方はドキュメントに書いたので、ここでは実装(python)の環境を忘れないうちに書…

LAMMPSで格子変形を許して構造緩和をする

LAMMPSで格子変形を許して構造緩和をさせる(fix 1 box/relax tri 0を指定してminimize commandを実行する)とき、初期構造が著しく歪んでいるせいで一度minimizeさせるだけでは収束しきらないことがある。 このケースにハマっている人をたまに見るので、収束…

nglviewのpymatgen wrapperをつくった

以前、nglviewで結晶構造をjupyter notebook上で表示させた続き。 nglviewで原子位置を表示させることは簡単にできるが、ボンドや配位多面体が表示されないなど微妙な点があった。 ということで自分用にnglviewの機能を使ってpymatgenのStructureをいい感じ…

Nsight Systems and Nsight Compute

Nsight Tools composes of Nsight Systems and Nsight Compute 1. Nsight Systems profiles a whole application (for Pascal and newer). Nsight Compute profiles a CUDA kernel (for Volta and newer). Environment Host Ubuntu 20.04LTS Remote on Singu…

matplotlibでfontが見つからないとき

matplotlibでrcParams['font.family'] = 'serif'と設定しているのに font family ['serif'] not found. Falling back to DejaVu Sans とエラーが出てserif体が使えないときは、以下のようにキャッシュを消してmsttcorefontsを入れると直る。 rm -r ~/.cache/…

JAX/HaikuでCrystal Graph Convolutional Neural Network (CGCNN)を実装した

Crystal Graph Convolutional Neural Network (CGCNN) CGCNNは結晶にGraph Neural Network (GNN)を適用した(おそらく)初めての手法。GNNがやたら流行っている有機分子と違って、結晶の場合はそもそもグラフの作り方が自明でない、結晶の周期性のせいで隣接行…

Materials Projectのmaterial_idとtask_id

Materials Project に登録されているデータはmaterial_id(mp-****みたいなやつ)で指定される。だが、2018年の半ばからmaterial_idが一部の結晶では変更されたようなので注意が必要。 それぞれの計算系にはmaterial_idが振られている。そして各計算系には(sin…

今年に読んだ記事とかだいたい2020

年末だしPocketでクリップした記事の中で面白かったものを見返した。あと今年聴いた曲も振り返った。 invenia.github.io scheme手習いを読んでいてYコンビネータで詰まったので読んだ。 arxiv.org JAXを使った分子動力学法のナウい実装。JAXを使うために粒子…

NGLViewで結晶構造をJupyterLab上で表示する

nglviewを使うとASEのAtoms(とpymatgenのStructure)をjupyterlab上で可視化できるのだが、nglviewはドキュメントが少なくてどうやればユニットセルを表示できるのか謎だった。 pyironで同じことをしようとしているコードをさっき見つけたので、それを参考に…

numbaでscipy.specialの関数をつかう

numbaでscipy.specialの関数を使うには、現状自分で拡張を書く必要がある。 support for scipy.special functions : feature request · Issue #3086 · numba/numba · GitHub ↓のノートブックでは球面調和関数用のAPIを作っている。 球面調和関数の返り値は複…

pymatgenでDOSとCOHPをプロット

さくっとプロットするには便利だがmatplotlib.pyploy.Axesを使ってくれないので細かい調整をするのは難しそう。 細かい調整をしたかったらplt.gcf()からaxesを取得すればいい。 # plotter: DosPlotter plotter.get_plot() fig = plt.gcf() axes = fig.get_ax…

pythonスクリプト内からcommit hashを取得する

自作のパッケージを使っているとバージョニングが疎かになりがちなので、gitのcommit hashをパッケージのAPIから取得したい。 いめーじとしては、pandasのpandas.show_versionsみたいな感じ。 pandas.pydata.org ↓のポストだとgit rev-parse HEADかgit descr…

numpy.einsumはそこそこ速い

np.einsumは配列の次元が大きくなるとnp.dotとかnp.tensordotよりかなり遅くなるような気がしていた。 しかし、公式ドキュメントによるとoptimizeフラグをgreedyかoptimalにすればかなり速くなるようだ。 numpy.org 実際に以下のnotebookで試すと、optimize…

git protocolがタイムアウトする

forkしてきたレポジトリのpre-commitを走らせようとすると以下のようなエラーでてタイムアウトした。 $ pre-commit run [INFO] Initializing environment for https://github.com/pre-commit/pre-commit-hooks. [INFO] Initializing environment for git://g…

latexdiff-vc を使おうとしてハマった

REVTeXを使って書いていた原稿のdiffをlatexdiff-vcで取ろうとするとMissing characters near word 7714 character index: 101222-101224 Length: 1 Match: |1| (expected match marked above). みたいなエラーが出て上手く行かない。 調べると(原因も理由も…

matplotlibのプロットでtype 3 fontを回避

matplotlibはデフォルトでtype 3 font を使っているが、論文原稿にはtype 1 fontを使えと言われることが多い。 type 1 font を使うためにrcに以下の設定を加える記事が見つかるが、xlabel/ylabelが複雑だとうまく行かない。 'ps.useafm': True, 'pdf.use14co…

matplotlibで論文用の図を作成

タイトルの通りの目的のためにmatplotlibの勉強をしたのでメモを残しておく。 次のnotebookのように図ごとに明示的にmatplotlibのrcを指定してプロット用の関数を作るのにとりあえず落ち着いている。 gist.github.com rc plt.rcParamsを直接いじるのは好きで…

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を使う…