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

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

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へのログインを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年も経過しそれ…

Javascript Vue.js を使って非同期でデータを表示する

Vue.js を使って非同期でデータを表示する。 Vue.jsのチュートリアルの10番目を参考にした。 v-if で 表示の条件分岐ができるようだ。 <html lang="ja"> <head> <meta charset="UTF-8"> <title>Vue.js test step-10</title> <script type="importmap"> { "imports": { "vue": "https://unpkg.com/vue@3/dist/vue.esm-browser.js" } } </script> </head> <body> …</body></html>

Windows: リモートデスクトップでパスワードを毎回入力させられないようにする

あるバージョンから、Windows のリモートデスクトップ接続でパスワードを毎回聞かれるようになった。 お使いの資格情報は機能しませんでした Windows Defender Credential Guard では、保存された資格情報を使 用できません。資格情報を入力してください。 …

Python+matplotlib で点線や破線の間隔を変える

直線で描く場合。 import matplotlib.pyplot as plt fig, ax = plt.subplots() ax.plot([0,1],[0,1]) plt.show() dashes 変数を使うと、点線の色あり、色なしの部分の幅を指定できる。以下はその例。 import matplotlib.pyplot as plt fig, ax = plt.subplot…

Google Apps Script(GAS)でTOTPを生成する方法

Google Apps Script(GAS)でTOTPを生成するには、SHA1を実装している外部ライブラリを使うのが良いだろう。 ウェブアプリとしてJSON形式で表示させるところまで実装したコード function myFunction() { const secret = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; const c…

Google Authenticator から シークレットキーを抽出する方法

Google Authenticator(Google認証システム、認証アプリ)にインポートした 時間ベースのワンタイムパスワード TOTP のシークレットキーを確認したいことがあるのでその方法。 Google Authenticatorから、アカウントを移行→アカウントのエクスポートで、必要…

Windows上でEPICS 3.15を使う: プロセス間でリアルタイム通信する

あらゆるものをWindows上で動かさないと気がすまない筆者なので、頑張ってExperimental Physics and Industrial Control System (EPICS) R3.15をWindows上で動かすことにする。7.0用の記事もあるが、Windowsで動かすには色々バグがあるかもしれない。 ビルド…

Windows上でEPICS 7.0を使う: プロセス間でリアルタイム通信する

あらゆるものをWindows上で動かさないと気がすまない筆者なので、頑張ってExperimental Physics and Industrial Control System (EPICS) 7.0をWindows上で動かすことにする。 必要なアイテムは4つ Windows用のmake (PATHを通す必要がある) Windows用のperl V…

Windows の インストール済み UWP アプリを表示・アンインストールする

インストール済み UWP (ユニバーサル Windows プラットフォーム) アプリ表示するPowerShell コマンド Get-AppxPackage | Sort-Object Name | Select Name,PackageFullName Microsoft StoreからはアンインストールできないUWPアプリをアンインストールするコ…

JavaScript: 元素記号

const periodicTable = [ "H", "He", "Li", "Be", "B", "C", "N", "O", "F", "Ne", "Na", "Mg", "Al", "Si", "P", "S", "Cl", "Ar", "K", "Ca", "Sc", "Ti", "V", "Cr", "Mn", "Fe", "Co", "Ni", "Cu", "Zn", "Ga", "Ge", "As", "Se", "Br", "Kr", "Rb", "Sr…

WSL上でEPICSを使う: プロセス間でリアルタイム通信する

Experimental Physics and Industrial Control System (EPICS) とは何か? Wikipediaには EPICS(Experimental Physics and Industrial Control System)は、加速器、望遠鏡、その他の大規模は実験用機器を運用する分散制御システムを開発・実装するのに使わ…

Git で既に管理しているファイルの追跡を一時的に無視する

Git

一時的にファイルの変更を無視するためのコマンドは git update-index --skip-worktree [ファイル名] 似たコマンドで --assume-unchanged がある。 qiita.com --skip-worktree は変更が 「ある」 ものとして無視するが、--assume-unchanged は変更が 「ない…

Python: LISE++ ファイルから核種の収量を取得する

def get_nuclei_yield(filename): lines = open(filename).readlines() flag=False nuclei_yield={} for i, line in enumerate(lines): if line=="[Calculations]\n": flag=True continue if flag: str1=line.split()[0] str2=line.split("=")[1].split(",")…

Python matplotlib でマウスクリック位置を取得しグラフを再描画する

下記のコードではJupyter Labを使っています。 matplotlibの他に、ipymplが必要なので、pip install ipymplでインストールしてください。 コードを完全に理解していないため、解説は他の記事を参照してください。 マウスでクリックした時の、回数、座標、そ…

Python matplotlib で ROOTの推奨カラーマップ kBird を使う

root.cern.ch Better palettes like kBird are recommended. と書かれているので使ってみよう。 import matplotlib red_bird = [ 0.2082, 0.0592, 0.0780, 0.0232, 0.1802, 0.5301, 0.8186, 0.9956, 0.9764] green_bird = [ 0.1664, 0.3599, 0.5041, 0.6419,…

CERN ROOTとPython scipy、lmfit を使って正規分布でフィッティングする方法を比較

同じデータを使って、CERN ROOT、Pythonのscipy、lmfit を使って正規分布でフィッティングするコードと結果を比較する。 まずは、データ生成部分 C++用 std::vector<double> vx{-3.65,-3.45,-3.35,-3.25,-3.15,-3.05,-2.95,-2.85,-2.75,-2.65,-2.55,-2.45,-2.35,-2.2</double>…

Python+matplotlibでA4の方眼紙風PDFを作る

グリッド間隔、線の種類、線の幅、線の色、用紙サイズは自由に設定できるようにした。 要点は次の3つ plt.subplots_adjust()で枠線の外側をなくしてfigureを紙面全体にする plt.gca().axis("off") で枠線、目盛り、目盛りラベルを消す plt.plot(transform=pl…