物理の駅 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))
univ_colors.append((77,196,255))
univ_colors.append((255,128,130))
univ_colors.append((246,170,0))
univ_colors.append((153,0,153))
univ_colors.append((128,64,0))
univ_colors.append((255,202,191))
univ_colors.append((255,255,128))
univ_colors.append((216,242,85))
univ_colors.append((191,228,255))
univ_colors.append((255,202,128))
univ_colors.append((119,217,168))
univ_colors.append((201,172,230))
univ_colors.append((255,255,255))
univ_colors.append((200,200,203))
univ_colors.append((132,145,158))
univ_colors.append((0,0,0))

for i,univ_color in enumerate(univ_colors):
    univ_colors[i] = f"#{univ_color[0]:02x}{univ_color[1]:02x}{univ_color[2]:02x}"

ncols = int(len(univ_colors)/2)
nrows = int(len(univ_colors)/ncols)

color_grid = np.array(univ_colors).reshape(nrows, ncols)

fig, ax = plt.subplots(figsize=(ncols, nrows))
ax.set_xticks([])
ax.set_yticks([])

for row in range(nrows):
    for col in range(ncols):
        rect = plt.Rectangle((col, nrows - row - 1), 1, 1, facecolor=color_grid[row, col])
        ax.add_patch(rect)
        ax.text(col + 0.5, nrows - row - 1 + 0.4, color_grid[row, col], color="white", ha='center', va='center', fontsize=10)
        ax.text(col + 0.5, nrows - row - 1 + 0.6, color_grid[row, col], color="black", ha='center', va='center', fontsize=10)
ax.set_xlim(0, ncols)
ax.set_ylim(0, nrows)
plt.gca().set_aspect('equal', adjustable='box')

plt.show()    

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

siglentna.com

websocketを使って保存するPythonコードは公開されているので、多少の変更を加えるだけで実用レベルに達する。

main部分を改造して、bmpファイルではなくpngファイル形式で、ファイル名は 日時.png で保存するようにした。

def main():
    global remote_ip
    global port
    global count
    import cv2
    import numpy as np
    from datetime import datetime

    #Open a file
    file_name = datetime.now().strftime("%Y-%m%d_%H%M%S.png") 
 
    # Body: Open a socket, query the screen dump, save and close
    s = SocketConnect()
    qStr = SocketQuery(s, b'SCDP') #Request screen image
    print(len(qStr))
    image = cv2.imdecode(np.frombuffer(qStr, dtype=np.uint8), cv2.IMREAD_UNCHANGED)    
    cv2.imwrite(file_name, image)
 
    SocketClose(s)
    sys.exit

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

# 差分がないか確認
if git diff --quiet; then
  echo "No changes detected."
else
  # 全ての変更をステージ
  git add .

  # 現在の日時を取得してフォーマット
  current_datetime=$(date +"%Y-%m-%d %H:%M:%S")

  # コミットメッセージに日時を追加してコミット
  git commit -m "$current_datetime update"
  
  echo "Changes staged and committed with message: '$current_datetime update'"
fi