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

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

Python で数値を科学的表記にする方法

科学的な表記のため、あまりにも長い桁数を丸める必要がある。ざっくりそういう需要のための関数を作った。 やり方は、指数表記にして指数部の大きさで判定させているだけである。自分で作ったほうが早いと思うので参考にしつつ作ってみてはどうだろうか。 d…

Python scipyのfsolveで任意の方程式の解を求める

任意の方程式の解、つまり func(x) = 0 になる x を探させる。解が複数ある場合も初期値から探索したときに最も近い解を返す。 from scipy.optimize import fsolve import numpy as np # 変数 beta = 0.6955076793404303 ionpair = 4886 # 方程式 func = lam…

Python scipyのcurve_fitで正規分布でフィッティングする汎用的な関数を作ってみる 2

過去のコードをより汎用的にするために修正した。 phst.hateblo.jp 小数の桁を取得して、小数点以下の有効桁数が4桁になるようにした。 gaus_sample.txt は ガウス分布のフィッティング用のサンプルデータ Sample data からダウンロードできます。 import ma…

C#でGoogleのワンタイムパスワード計算アルゴリズム TOTP (RFC6238)を実装する

Stackoverflowのこの投稿で十分 stackoverflow.com だが、クリップボードにコピーして即プログラムを終了するように少し修正した。 using System; using System.Windows.Forms; using System.Security.Cryptography; namespace totp { class Program { publi…

WindowsでSVG(ベクター画像)ファイルをベクター情報を保持したままEPSファイルに変換する方法

Windows+Officeを使っている筆者は、通常図をOfficeのPowerPointで作成している。某雑誌は提出するファイルにEPS形式を要求しているが、PowerPointから出力できるベクターファイル形式で最も一般的なものはSVGファイルである。 このSVG(ベクター画像)ファイ…

複数のサーバーを、PythonとHTMLで監視する

pingを飛ばすのに pings というパッケージを使った pip install pings でインストール可能。次の例では36台のPCを監視している。 import datetime import matplotlib.pyplot as plt import pings hosts = [] for i in range(1, 37): hosts.append("192.168.0…

Pythonで複数のPNG画像をPDFファイルに変換する

画像からPDFにするためのパッケージ img2pdf が必要。 数字を自然順にソートするためのパッケージと関数 natsort natsorted が必要。 PNGファイルに透過チャンネルがある場合、 img2pdf.AlphaChannelError: Refusing to work on images with alpha channel …

Python+matplotlibで長方形 Rectangle を描画する

長方形を描画 matplotlib.patches.Rectangle サンプルコード import matplotlib.pyplot as plt x,y,width,height = 5,10,20,10 rect = plt.Rectangle((x,y), width, height, edgecolor="black", facecolor="tab:orange") plt.gca().add_patch(rect) plt.xlim…

TexLive2021のインストールメモ

TexLive 2021がリリースされたため、2020用の tlmgr のコマンドでエラーが吐かれるようになってしまった。 > tlmgr update --list tlmgr.pl: Local TeX Live (2020) is older than remote repository (2021). Cross release updates are only supported with…

OpenCV Pythonで画像の切り抜き (トリミング)

OpenCVでいうところのRectをやるには、配列の一部をスライスすればよい。 dst1 はY=164からHeight=2960、X=356からWidth=2028ピクセル分。XとYが逆になってることに注意。 import cv2 import glob files = glob.glob("*.jpg") i=0 for file in files: im = c…

WSL用のFedora RemixでROOT PyROOT などを使う

WSL用のFedora Remixを購入しインストールする Fedora Remix for WSL を購入 - Microsoft Store ja-JP $ sudo yum install root $ sudo yum install root python3-root root-notebook これで終わり。 WSLのデフォルトをFedora Remixにする wsl --set-default…

PyROOTでROOTファイルを読む TFileとRDataFrameの比較

PyROOTでROOTファイルを扱うには、ROOTの作法に従うか、Numpyで頑張るかの2択となる。 ROOTの作法に従った例 ROOTファイルに、イベントごとに色んなパラメータが固定長で格納されているものとする。データ名 ADC の[0]に格納されているデータをヒストグラム…

WSL上のJupyter LabでPython/ROOT C++/PyROOT、Jupyter Notebookでjsrootを動かす

超メモです。$は削除して実行してください WSLでJupyter Labを動かす方法 nodejsは最新版を推奨する。それ以外だとエラーが出ることがある。pip3でsudoは付けない。以下、実行すべきコマンド。 $ sudo sed -i.bak -e 's%http://[^ ]\+%mirror://mirrors.ubun…

PTEPのSubject Index 全リスト (と簡易日本語訳)

PTEPのSubject Indexの全リストに直接アクセスする場合はこのページ publication.jps.jp PTEPのトップページからアクセスする場合は以下のように辿るべし Subject Index

PythonでZIPファイルを作成する

arXivに投稿する時、関連するファイルをZIPファイルで書庫化しておくと楽である。動的にZIPファイルを作るにはPythonが手っ取り早いので、コードを作ってみた。 import sys tex_filename = sys.argv[1]+".tex" zip_filename = sys.argv[1]+".zip" # bibを使…

IPoE (IP over Ethernet)ルータ 対応機種

下記のブログによると、光のIPoEルータ 対応機種は以下の3種類らしい。 NEC Aterm 2020年10月 8日 発売 Aterm WG1200HS4 PA-WG1200HS4 Wi-Fi 5対応の無線LANルーター(最大867Mbps) kakaku.com NEC Aterm 2020年10月 8日 発売 Aterm WG1200HP4 PA-WG1200HP4…

Woods-Saxon potentialをPythonで描画する

import numpy as np from matplotlib import pyplot as plt v0 = 14 A = 15 a = 0.5 r0 = 1.25 R = r0*A**(1/3) x = np.linspace(0.0, 10.0) y = -v0/(1+np.exp((x-R)/a)) plt.plot(x, y, "b-") plt.title(r"Woods-Saxon potential") plt.text(3, -v0*0.8, r…

ポアソン分布と二項分布をPythonで描画する

Pythonを用いた ポアソン分布の確率分布の描画。適宜meanを変えてね。 from scipy.stats import poisson import matplotlib.pyplot as plt mean = 2.3 xs = [] prob = [] for i in range(7): print(i,poisson.pmf(i, mean)) prob.append(poisson.pmf(i, mean…

Windows Server 2019にIntel LAN Adapter I219-Vのドライバをインストールする

Intelのコンシューマー用のネットワークアダプターは、いろんな思惑から、Windows Server用のドライバを提供していないことがある。しかし、Windows10とServer2019は同じものなのでドライバが使えないわけではない。使うためには、やや専門的な知識を必要と…

環境変数を設定したコマンドプロンプトの簡単な作成方法

バッチファイル(拡張子がbat)のファイル作っておき、それを起動するのが簡単な作成方法である ファイル名は例えば setenv.bat とし、中身には以下のように記述する。この例では、C:\ をPATHに追加している。 @echo off PATH=C:\;%PATH% cmd /k 作成後、 sete…

calibreのアンインストール時に拡張子への関連付けが消えない問題の解決

Bug #1856268 “File Associations Not Removed On Uninstall” : Bugs : calibre ここで報告されてる通り、アンインストール時に関連付けの登録が消えないのは仕様通りだそうだ。 例えば、64bit版をインストールし、起動時に(無意識に)関連付けをしてしまうと…

Windows用のSlackから出力したjson形式ログファイルを閲覧するためのビューア

友人のソフトウェアを紹介する kenkyu-note.hatenablog.com 世界には自分を超える変態(=有能)が多数存在する github.com

Pythonで動画ファイル (形式.mp4)から画像を切り出す

note.nkmk.me OpenCVを使うとすぐに実装できる。ほぼ上記URLのサンプル通り。 import cv2 import os def save_all_frames(video_path, ext='jpg'): if not os.path.exists(video_path): return cap = cv2.VideoCapture(video_path) if not cap.isOpened(): r…

Surface Book 3がゴミになった件

Surface Book 3はゴミなので絶対に買うなという話 https://answers.microsoft.com/ja-jp/surface/forum/all/surfacebook3%e3%81%ae%e4%b8%8d%e5%85%b7%e5%90%88/7a057523-071d-45d2-8d85-66e5c259efd9answers.microsoft.com

ウェブ上にあるPDFファイルをダウンロードする方法

import urllib.request url = "https://test.test/test.pdf" filename = "test.pdf" urllib.request.urlretrieve(url, filename)

Python+matplotlibで2次元ヒストグラムをモルワイデ図法で描画する方法

stackoverflow.com を参考にした。 2Dヒストグラムのbinデータを自力で用意し、pcolormesh で描画する。その方法は pythonのmatplotlibで2次元ヒストグラム(hist2d)のビンの値を直接操作する - 物理の駅 Physics station by 現役研究者 で解説している。 モ…

Python+matplotlib の plt.quiver で矢印を描画する

矢印を描画 matplotlib.pyplot.quiver matplotlib.pyplot.arrowではなくmatplotlib.pyplot.quiverを使う。 矢印の始点(px, py)、矢印のベクトル(vx, vy)をquiverに与えればよいが、科学目的の場合デフォルトの引数だとやや問題が起きがちなので一つ一つ説明…

漫画のEPUBファイルから画像をPythonで取得する方法

pypi.org が便利だった。 pip install EbookLib でインストール カバーebooklib.ITEM_COVERと、画像ebooklib.ITEM_IMAGEをそれぞれ開き、バイナリ形式で出力する。 import ebooklib from ebooklib import epub import os book = epub.read_epub('filename.ep…

LINEとSlackの暗号化の話 LINEは本当に危険か?

LINEは危険という話をよく聞く。本当なのか。コミュニケーションツール Slack と比べてどうか。 Slackはすべてのデータをサーバー側と経路で暗号化しているため、仮にSlackが不正侵入されたり、通信経路で盗聴されても平文(暗号化前の元の文やデータ)が漏…

ミスミで規格外の金属部品を3DCADデータから作れるサービス meviyを使ってみる

これまで、ミスミで売っていないような金属部品は、3D CADで作成→2D 図面に落とす→見積り依頼→不明点の解消→発注→製作→納品 という流れで制作していた。3Dから2Dに落とすところに相当な時間がかかることが問題だった。 ミスミのmeviy オンデマンド製造サービ…