物理の駅 Physics station by 現役研究者

テクノロジーは共有されてこそ栄える

ユニバーサルデザイン推奨配色セットをPythonで扱う

cudo.jp import matplotlib.pyplot as plt import matplotlib.colors as mcolors import numpy as np univ_colors = [] univ_colors.append((255,75,0)) univ_colors.append((255,241,0)) univ_colors.append((3,175,122)) univ_colors.append((0,90,255)) u…

SIGLENTのオシロスコープをPythonで画像を自動保存する方法

siglentna.com websocketを使って保存するPythonコードは公開されているので、多少の変更を加えるだけで実用レベルに達する。 main部分を改造して、bmpファイルではなくpngファイル形式で、ファイル名は 日時.png で保存するようにした。 def main(): global…

Xサーバー Xming でフォント(画面)を大きくする方法

起動オプションに -dpi 100 を追加する。 起動オプション全体 "C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow -nolisten inet6 -dpi 100

Linux であるディレクトリを監視して変更があれば commitする方法

以下のようなシェルスクリプトを cron で定期的に実行すれば良い。 #!/bin/bash export HOME=/home/physics export PATH=/usr/bin:/bin git config --global user.email "physics@physics" git config --global user.name "physics" cd /home/physics/target…

CRONでは .bashrc 等で設定した環境変数は読み込まれない

CRON で実行したときだけプログラムが想定どおりに動かないと思ったら、PATH等の環境変数の設定が読み込まれていなかった。 crontab -e 等で 毎分実行させるシェルスクリプトを指定する場合は * * * * * /home/physics/bin/test.sh > /dev/null 2>&1 などと…

2次元の正規分布を描画、信頼区間の設定、任意の楕円領域で確率密度を積分

まずは2次元の正規分布を描画する。簡便のために対角成分以外は0とする。 import numpy as np from scipy.stats import multivariate_normal import matplotlib.pyplot as plt np.random.seed(2) mu_x,mu_y = 5,10 sigma_x,sigma_y = 1,5 cov = np.array([[1…

正規分布とポアソン分布の信頼区間、有意度、p値について

正規分布について考えるため、以下の図で記号を定義する。 出典: PDG 信頼区間(confidence interval) を定義したとき、有意度(σ)と、信頼区間から外れる確率(両側の場合はα、片側の場合はα/2)は以下のように計算できる。 from scipy.stats import norm for s…

Windows11 でNet-SNMPを動かす

Net-SNMP のインストール sourceforge.net 5.5-binaries から x64 のバイナリをダウンロードしてインストール。オプションは特に変更しない。 snmpd.confの設置 C:\usr\etc\snmp に https://gitlab.com/-/snippets/3736552 から snmpd.conf をダウンロードし…

Windows11 非対応PCで Windows10 から Windows11 にアップグレードする裏技

Windows11のisoをダウンロードして、マウントして、コマンドプロンプトで setup.exe /product server というオプションを付けて起動。

Python: PNG形式の画像ファイルのDPIだけバイナリで書き換える

JPG形式の記事 と基本的には同じである。 違いは物理サイズ指定の単位が JPGではDPI (dots per inch) であるのに対して、PNGではPPM (pixels per meter) であること、チャンク(セグメント)ごとにCRC-32の巡回冗長検査があるのでそれを書き換える必要があるこ…

Python: JPG形式の画像ファイルのDPIだけバイナリで書き換える

以下、JPG形式の画像ファイルの物理サイズをA4サイズの横幅にするコード。 PNG形式の記事も参照 def parse_jpg(file_path): with open(file_path, 'rb') as f: data = f.read() i = 0 segments = {} while i < len(data): assert(data[i] == 0xff) marker = …

Python: 斜視を矯正するための輻輳訓練カードを作るプログラミングコード

ある事情で、斜視を家庭で矯正訓練するための、円と線が書かれた紙(輻輳訓練カードと呼ばれるらしい)を作ったので、そのコードを公開します。 こういうの↓ import matplotlib.pyplot as plt from matplotlib.backends.backend_pdf import PdfPages import ma…

Windows: 証明書の確認 サイト ** に対する資格情報が必要です を非表示にする方法

証明書の確認 サイト ** に対する資格情報が必要です 証明書のプロパティを表示します OK キャンセル というウィンドウが出てうざい場合の対処法 Edge の設定から、 インターネット を検索、 IEモードを許可して、再起動 インターネットオプション→ セキュリ…

mackerel の go-check-plugins をUbuntuで使えるようにする

Mackerel の チェックプラグイン をUbuntuで使ってみる。 例としてcheck-ping を使えるようにする。公式のInstallationは機能しないので、以下の手順でインストールする。 $HOME/.profile に go と goでインストールしたパッケージのPATHを export PATH=$PAT…

WindowsからSSH接続先のディレクトリをマウントしてをエクスプローラーから見る

SSHFS-WinとSSHFS-Winをインストールして github.com github.com sshfs-win-manager (Windows用のGUI)をインストールする。 github.com sshfs-win-managerで、必要な情報を入れていけば接続できる。 ただし、SSHトンネル(踏み台サーバー、ジャンプサーバー、…

Python: OpenCVでライン(線形)プロファイルを取得する

Windows11でおなじみの壁紙のラインプロファイル=直線上のピクセルの輝度値を取得してみよう。 参考にしたブログ ラインプロファイルの取得法【5/24 訂正】 #Python - Qiita import cv2 import numpy as np import matplotlib.pyplot as plt import scipy x0…

Python: OpenCVでMJPGを表示、tkinter でフレームレートを表示させる、録画する

素直にMJPG形式で配信される動画をOpenCVで表示させる import cv2 url = f"http://192.168.0.10/mjpg/video.mjpg" cap = cv2.VideoCapture(url) while(True): try: ret, frame = cap.read() if ret: cv2.imshow("Video", frame) cv2.waitKey(1) else:raise e…

古いOSへSSH接続時のエラーへの対処

$ ssh -X physics@station Unable to negotiate with 192.168.0.2 port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1 と出るときは ~/.ssh/config に Host station HostName 19…

Python: 7zip用に既存の圧縮ファイルを分割する

クラウドストレージやアップローダーには、ファイルサイズに上限があることがある。その際、巨大なファイルを分割することが求められる。 巨大なファイルになりがちなのは圧縮ファイルなので、以下、圧縮ファイルを前提として話を進める。圧縮展開プログラム…

Windows: GitHub/GitlabへのログインをTokenを使って自動化する方法

Githubで要ログインなリポジトリにアクセスすると以下のGitHubへのログイン画面が出てくる。 ここで「Sign in with your browser」とやってもログインはできるものの、その度にWindowsに資格情報が追加されてしまいおすすめできない。ちなみにWindowsの資格…

Windows: Adobe DC (Acrobat Pro)でエラーコード 206によりログインだけができないトラブルへの対処

Adobe Acrobat Proをインストールしようとしたところ、インストールは成功したが、ユーザー名とパスワードを入れてログインしようとしたときに、画面がループして動かなくなる状態が発生した。具体的には サーバーの切断 アドビのサーバーにアクセスできない…

Google Apps Script(GAS): Google Drive上のテキストファイルを読み取り、上書きする

Google Apps Scriptで、Google Drive上のテキストファイル(TXTやJSON)を読み取り、上書きしてみよう。 ファイルIDは、Google Drive上のファイルを表示させて、「共有」から「リンクをコピー」したときの https://drive.google.com/file/d/この部分/view?usp=…

Google Apps Script(GAS): SpotifyのAPIでプレイリストを取得する

Google Apps Script経由で、SpotifyのAPIを使って、プレイリストを取得してみよう function myFunction() { var clientId = "set your clientId here"; var clientSecret = "set your client secret here"; var url = "https://accounts.spotify.com/api/tok…

VScode: 独自の syntax highlighter 拡張機能を作る

シンタックス(構文) ハイライター用の拡張機能(Extension)を作る。拡張機能として公開することは目指さない。 インストールしていない場合は以下をインストールする。 VS Code のインストール https://code.visualstudio.com/Download node のインストール h…

Python+matplotlib: ログスケールでの目盛り、サブ目盛りを設定する

十分な広さのfigsizeにグラフを書くと、軸はそれなりに表示される import matplotlib.pyplot as plt fig, axes = plt.subplots(ncols=2, nrows=2) for ax in axes.flat: ax.plot([1,2], [0.00001,1]) ax.set_yscale("log") plt.tight_layout() plt.show() グ…

Python awkward: parquet形式で1億イベントのtreeのIO(入出力)速度を圧縮形式で比較する

この記事の Awkward のバージョンは1.X.Xです Python の awkward パッケージに実装されている parquet ファイル形式を入出力するときの処理時間を、圧縮形式ごとに比較してみる。配列の型は awkward.highlevel.Array と呼ばれる形式である。 8バイト(int64_t…

ROOT: TFile形式で1億イベントのtreeのIO(入出力)速度を圧縮形式で比較する

CERN ROOT の TTreeを TFileで入出力するときの処理時間を圧縮形式ごとに比較してみる。Pythonで同様のことをやった記事も参照。 8バイト(int64_t)✕8メンバー✕1億エントリーなので、圧縮なしの場合は6.4GBのデータサイズとなる。 圧縮形式 ファイルサイズ 出…

1億イベントのtreeデータのグラフ化の速度をPythonとROOTで比較する

この記事の Awkward のバージョンは1.X.Xです データはここのを使う。64バイト(double 8個)×1億イベント(エントリー)である。 phst.hateblo.jp 結果のまとめ 言語 ライブラリ ファイル形式 処理時間 スレッド数 Python awkward parquet 46 sec 1 C++ ROOT TT…

Windows ROOTとPython(numpy,awkward)でTreeファイルの生成と出力時間を比べる

この記事の Awkward のバージョンは1.X.Xです エマルションの飛跡情報(x,y,ax,ay,ax0,ay0,ax1,ay1)とする。Visual StudioでコンパイルしたROOTと、Python+numpy,awkwardで作ったバージョンを比較する。イベント数は1億(108)本とする。 Visual Studio でコン…

Windows + Visual StudioでCERN ROOT6 64bit版 を動かす (2024年)

最終更新: 2024/02/24 CERNのROOT Release 6.26/04 - 2022-06-07 から Windows用のプリコンパイル済みバイナリが配布されはじめた。当初はバグがありまともに動かなかったと思われるが、執筆時点での最新 Release 6.30.04 - 2024-01-31 は1.5年も経過しそれ…