tmuxの中のemacsが変な色になる

こんな感じのwork aroundがあるようだ。

TERM=xterm-256color emacs

Terminal emacs colors only work with TERM=xterm-256color - Stack Overflow

ubuntu 16.04でemacs26をインストールするには

こんな感じでいける。

sudo add-apt-repository ppa:kelleyk/emacs
sudo apt-get update
sudo apt-get install emacs26

apt - Emacs 25 on Ubuntu 16.10? - Ask Ubuntu

小分けにして保存したデータをh5pyで一つにまとめる

小分けして保存したデータをひとまとめにしてhdf5ファイルに保存したい。クラスタのマスターノードはメモリ搭載量が小さいが、計算実行ノードではデータ全体がメモリに入る。小分けしたデータをnumpy arrayに一度に入れてしまうとマスターノードのメモリが足りない。小分けしたデータを逐次的にhdf5ファイルに書き込むことで問題を解決した。

with h5py.File("large_data.hdf5", 'w') as w:
    large_data = w.create_dataset('values', values_shape, dtype=dtype)
    idx = 0
    for fname, npts in zip(filenames, num_points):
        large_data[idx:(idx + npts)] = read_piece_data(fname)
        idx += npts

Wifiステーションとパソコンの向き

昨日義父から、車の電波で開けるタイプの鍵は偏光面を揃えると遠くまで届くという話を聞いた。想像だけど、鍵のアンテナが棒状に入っているので、それで作る電波は直線偏光する。車にも同じようなアンテナが入っているとすると、車のアンテナの伸びる方向と電波のそれを合わせると最大の感受率が得られるというもの。

最近、家の外のベランダから数十メートル離れたところで仕事をしている。ベランダ近くにwifiステーションを置くことで、wifiが外まで届いたり届かなかったり。iPadではダメだけど、Macbook Pro(2017)だとなんとか電波を拾ったり拾わなかったり、といった具合だ。風のせいと思っていたが、義父から聞いた話を思い出して、Macの方向を色々変えて試してみると、あら不思議、いや不思議じゃないかもしれないけど、ネットワークのスループットが全然違う。自分とwifiステーションを繋ぐ線に対して横向きになると一番具合がいい。この違いがsshfsがまともに使えるか使えないかといった、重要な閾値を横切っている。ちょっとした発見であるとともに、大変実用的な結果となった。でも、虫も増えてきたし、そろそろ外で仕事をするのも、もうおしまいかな。

LEGO boost pylgbst

pylgbstを使った。環境はUbuntu 18.04(VMじゃなく実機)。condaをセットアップして、READMEに書いている通りに、pygattとpylgbstをpipでインストール。サンプルを動かしてみると、pyナンチャラ(忘れた)がないと言われるのでインストールする。次に実行権限でこける。これは、pylgbstのissueに書いているようにすれば解決した(気がする)。その実行したコマンドはこちら。

sudo setcap 'cap_net_raw,cap_net_admin+eip' `which hcitool`

今日はレゴが猫だったのでプログラムが書けなかった。バーニーが良い。LEGO boostもう一台欲しい。

condaでのパッケージインストール

MKLやhdf5に問題があったりして、conda-forgeで入れるものは入れたほうが良さそう。依存関係がシンプルなので。今日現在のインストール手順。

conda install -c conda-forge h5py
conda install -c conda-forge hdf5=1.8.20
conda install -c conda-forge matplotlib pyyaml scipy ipython liblapacke
conda install gcc_linux-64 gxx_linux-64 cmake boost eigen

anacondaのhdf5

hdf5(1.10.x)がNFSクライアント側で使えない。hdf5(1.8.x)は大丈夫そうなのでダウングレードする。anacondaチャネルのものは依存関係がややこしいのでconda-forgeのものを使う。インストールは以下のようにする。

conda install -c conda-forge hdf5=1.8.20

Legendre polynomial

#!/usr/bin/env python

import numpy as np
import matplotlib.pyplot as plt

data = np.array(((-9, 5), (-4, 2), (-1, -2), (7, 9)), dtype=float)
xcoords = np.linspace(-10, 10, 201)
pts = np.arange(0, len(data))

l_x = []
for x in xcoords:
    l_j = []
    for j in pts:
        lval = 1.0
        for m in np.r_[pts[:j], pts[j + 1:]]:
            x_m, x_j = data[[m, j], 0]
            lval *= (x - x_m) / (x_j - x_m)
        l_j.append(lval)
    l_x.append(np.dot(data[:, 1], l_j))

plt.plot(xcoords, l_x)
plt.plot(data[:, 0], data[:, 1], 'o')
plt.show()

Finite difference coefficient - Wikipedia

https://doi.org/10.1090/S0025-5718-1988-0935077-0

Radial grid

#!/usr/bin/env python

import numpy as np
from matplotlib.patches import Circle
import matplotlib.pyplot as plt

# ln(r_n+1) = ln(r_n) + h
# h = 1, r_0 = 1
ln_r = np.arange(11)
radii = np.exp(ln_r)
fig, ax = plt.subplots()
for r in radii:
    ax.add_patch(Circle((0, 0), radius=r, fill=False))
plt.axis('scaled')
ax.set_aspect('equal')
plt.show()

https://doi.org/10.1016/0010-4655(70)90008-1