tak0kadaの何でもノート

発声練習、生存確認用。

医学関連は 医学ノート

dockerコマンドメモ

docker login
docker pull archlinux/base
docker build -t antergos_base .
docker -it --rm antergos_base bash

docker save antergos_base > antergos_base.tar # tag情報は保存されない
docker load < antergos_base.tar
# need afterwards: docker tag 6834.... hoge/hoge:latest

docker export antergos_base > antergos_base.tar
docker import antergos_base.tar antergos_base

docker image ls
docker ps -a
docker rm $(docker ps -aq)
docker image rm id

球面調和関数係数(3 x n行列)の可視化

3次元空間にひと塊の形(球と同相)があって、その表面上の点の集合を考える。何らかの方法で塊は球面に変形できて、その変形に伴って点の集合は球面上に写される、と考える。その時、元のX、Y、Z座標をそれぞれ球面上の分布($S^{2} \to \mathrm{R}$)と考えると、これは球面調和関数で分解できることになる。3つ係数の列が取れるので、それを3xnの行列とする。これを元の塊の表面に戻すのは、係数を使って色々の$\theta$、$\phi$についてX、Y、Zを計算してやるだけで良い。

続きを読む

pythonからシェルスクリプトを呼び出す

一塊になったシェルスクリプトをリファクタリングしている。

  • ただ呼び出す場合
import subprocess

class ShellException(Exception):
    pass

def shell_exec(cmd: str, timeout_s: float = 0) -> None:
    cmd_org = cmd
    timeout_s = "" if timeout_s == 0 else "timeout {} ".format(timeout_s)
    cmd = "set -euxo pipefail\n" + timeout_s + cmd
    proc = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    print(proc.stdout.decode('utf-8'))

    if proc.returncode != 0:
        msg = "Execution of \"{}\" failed. \n\n {}"
        sh_msg = proc.stdout.decode('utf-8')
        raise ShellException(msg.format(cmd_org, sh_msg))

shell_exec("echo 'Hello World!'")
  • 値を取り出す場合
import subprocess

class ShellException(Exception):
    pass

def shell_valueof(cmd: str, timeout_s: float = 0) -> str:
    cmd_org = cmd
    timeout_s = "" if timeout_s == 0 else "timeout {} ".format(timeout_s)
    cmd = "set -euo pipefail\n" + timeout_s + cmd
    proc = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

    if proc.returncode == 0:
        return proc.stdout.decode('utf-8')
    else:
        # return ""
        msg = "Execution of \"{}\" failed. \n\n {}"
        sh_msg = proc.stdout.decode('utf-8')
        raise ShellException(msg.format(cmd_org, sh_msg))

val = shell_valueof("pwd")

内積の定義について

微分幾何で接空間を考えているとき、その上で内積を定義する(あるいは普段のユークリッド空間と同じようなものがあると考える)とき、どうやら2種類の流儀があるように見える。(独自研究)

続きを読む

vscodeでmarkdownからpdfに変換する

Makdown MathとMarkdown PDFという拡張機能をインストールしてみた。Visual Studio Code - ArchWikiError: Failed to lanuch chrome! · Issue #97 · yzane/vscode-markdown-pdf · GitHubを見て取り敢えずchromiumの実行ファイルのパスを入力した(~/.config/Code\ -\ OSS/User/settings.json"markdown-pdf.executablePath": "/bin/chromium"を追記)ところ一応動いているようである。

tex対応についてはtex環境を整えるのが面倒なので、VSCode の Markdown で数式を表示して PDF 化する - Qiitaに従ってkatexを利用できるようにした。

doubleしか入っていないCSVをパースするプログラム

要件はメモリ128GBのPCで70GBのCSVをnp.ndarray形式でメモリに乗せること。np.load_txtも一応試したが、エラーでターミナルやブラウザも巻き込んで落ちた。std::ios::seekdirは相対位置指定にしか使えないはずだが、enumのため型変換されて、引数一つだけで与えてもコンパイルエラーになっていないことに気付くまでが一番長かった(c++ - Istream seekg() offsets and ios::end - Stack Overflow)。かなり遅いがI/Oがボトルネックなのかも知れない。

https://github.com/tak0kada/smic

VirtualboxにUSBからWindowsをインストール

docker内でpython実行するやつ

GitHub - tak0kada/dpythonを書いた。.bashrcにexport PATH="$PATH:~/bin"を追記しておけば、普通のpythonの代わりにdpython、ipythonの代わりにdipythonを使える。$PWDしかマウントしないが、データ解析に使うのにそれ以外のディレクトリにアクセスできる必要は今のところなさそう。yak shavingのしすぎなのでこれから進捗を出す。