物理の駅 by onsanai

Physics-station 研究で日々感じたことを忘れないための備忘録

Python

Python3で、正規分布でフィッティングし、各パラメータとカイ二乗を得る汎用的な関数を作ってみる

phst.hateblo.jp これを少し汎用化して、リスト、ビンの数、最小値、最大値を与えて、正規分布でフィッティングする関数を作ってみた。 オプションで平均値の初期値、標準偏差の初期値、グラフを描画するかどうかを与える。 注: グラフの縦方向のエラーが分…

Pythonでデッドロックを回避しながらサブプロセスの標準出力を1行ずつ読み込む

Windowsだとシステムからの文字コードはshift_jisなのでそれに対応 stderr = subprocess.PIPE にすると、 proc.stdout.readline を先に書いたとき、 stderr側での出力が貯まりすぎると、デッドロックが発生することがあるらしい。なので、stderrもSTDOUT側に…

WindowsでもPythonのコンソール上で色文字と色背景を使う

import colorama colorama.init() print(colorama.Back.GREEN + colorama.Fore.RED + "これがテストです") print("設定は引き継がれる") print(colorama.Style.RESET_ALL,end="") print("リセットでもとに戻る") colorama.deinit() colorama.deinit() をしな…

直交座標系のずれ量を飛跡の角度に相当するRadial Lateral空間に変換するコード

放射線の飛跡のように、座標(cx, cy) 角度 (ax, ay)で表すことの出来る量の比較をする時、しばしば飛跡の進行方向(Radial方向)と垂直方向(Lateral方向)に分離して考えることがある。 飛跡1 (cx1, cy1, ax1, ay1)、飛跡2 (cx2, cy2, ax2, ay2) があるとき、角…

Python3でYAMLファイルをMessagePack形式でファイルに出力する方法 又は 出力したファイルから読み込む方法

filename_yml という YAML形式のファイルがあり、filename_msgというMessagePack形式で出力したいとする。 filename_yml = "test.yml" filename_msg = "test.msg" import yaml import msgpack obj = yaml.load(open(filename_yml),Loader=yaml.CLoader) msgp…

Python の matplotlibでPDFファイルに出力する

from matplotlib.backends.backend_pdf import PdfPages pdf = PdfPages(graph_path) pdf.savefig() pdf.close()

pythonのmatplotlibで2次元ヒストグラム(hist2d)のビンの値を直接操作する

pythonのmatplotlibで2次元ヒストグラム(plt.hist2d)のビンの値 (bin contents)を直接操作する方法はない。なので、 colormesh を使って描画しよう。 import matplotlib.pyplot as plt import numpy as np def f(x, y): return np.exp(-(x * x) / (2 * 3 ** …

C++のクラスをPythonから使うためにBoost::Pythonを使うまで

BoostのPython用ライブラリを使いたかったのでコンパイルする 参考文献。 Boostライブラリのビルド方法 - boostjp Boost 最新版をソースコードからビルドし、インストール(MSVC ビルドツールを使用)(Windows 上) Visual Studio 2019の x64 Native Tools …

コマンドでWord/Excel/PowerPoint のファイルをPDF/画像に変換する (Windows版)

方針としては、全部PDFに変換してから、画像に変換する。 PDFに変換するには、 LibreOffice を使う。使い方はここを見よ。 takuya-1st.hatenablog.jp で終わったんだが、プログラムへのPathが変更されていた。 "C:\Program Files\LibreOffice\program\soffic…

Slackに投稿されたファイルを一括で削除するpythonコード

まずは、tokenをゲットせよ。 api.slack.com 次に、slackclientパッケージに入れる pip install slackclient クライアントのインスタンスを作る。pythonってインスタンスって言葉使うんだっけ? from slackclient import SlackClient slack_token = 'xoxp-**-…

Python3でROOT+C++と同様にフィッティングとパラメータの標準誤差を算出する

まずはCERN ROOT + C++ で実装する。 お手本通り、平均値0、標準偏差1、ガウス分布(正規分布)に沿う乱数を10000個作り、ROOTのヒストグラムに詰め、 TF1 の ガウス分布 gaus でフィッティングした。オプション等は何もつけていない。も普通に結果を引用した…

pythonでファイルを1行ずつ読み込む方法

行頭に # 付きはコメント行、空白行は読み飛ばす def read_txt(filename): lines = [] for line in open(filename, 'r'): if len(line) == 1: continue if line[0] == "#": continue lines.append(line) return lines def read_data12(filename): items = {}…

Portable版 Visual Studio Code (VSCode)における Open with Codeの追加方法 (Windows)

Portable版 VS Codeを C:\Users\Masahiro\OneDrive\Software\VSCode\Code.exe に展開したとする。 このままでは右クリックしたときの便利な設定を使えないので、手動でレジストリに追加する。 ファイルを右クリックしたときに有効になる設定 HKEY_CLASSES_RO…

Anaconda updateでのエラー

conda update -all で最後に Preparing transaction: done Verifying transaction: done Executing transaction: | DEBUG menuinst_win32:__init__(196): Menu: name: 'Anaconda${PY_VER} ${PLATFORM}', prefix: 'C:\Users\%username%\Anaconda3', env_name:…

Slackのあるチャンネルの投稿を全て消すpythonコード

import time from slackclient import SlackClient slack_client = SlackClient('****-************-************-************-********************************') target_channel ="channel" def list_channels(): channels_call = slack_client.api_call…

自作Pythonモジュールをアップロードするまでの流れ

自分用のメモ以上でもメモ以下でもないので、詳細は各自検索されたし。 各モジュールのインストール pip install nose pip install unittest2 pip install wheel pip install twine アップロード前に nose でtestしておこう nosetests ホームディレクトリに …