Python関連のことを調べてみた

Python関連のことを調べてみた
目次

EtherNet/IPでサーモカメラを遠隔操作

## EtherNet/IPとは

産業用の工作機や電子機器は、産業用プロトコルにより他の機器と通信します。
EtherNet/IPは、数ある産業用プロトコルのひとつであり、ODVA(Open DeviceNet Vendor Association, Inc.)によって管理されています。

このプロトコルは、簡単にいうとCIP(Common Industrial Protocol)をTCP/IP上で通信します。
類似のプロトコルとしては、DeviceNetやCompoNet、ControlNetなどがあります。

EtherNet/IPの特徴は、産業界で使われているCIPを、一般に広く普及しているスイッチングハブやイーサネットケーブルで構築したネットワーク上で使える点です。
TCP/IPで通信できればよいため、例えば無線LANやモバイルネットワークでの通信も可能です。

## pycomm3
pycomm3は、PythonでEtherNet/IP通信を可能にするライブラリです。
同じような機能を持つライブラリは複数ありますが、とりあえずGoogle検索して最も上に登場したライブラリを

元記事を表示

オシロスコープで静止画を描画する

## 1.はじめに
### 使用したもの
・オシロスコープ
・ノートパソコン(Pythonの開発環境)
・NIダック(型番:NI USB-6212)

### 開発環境
・Python 3.8.6
・ライブラリ
 nidaqmx(0.8.0)
 [nidaqmxのダウンロード](https://nidaqmx-python.readthedocs.io/en/latest/)
 matplotlib(3.7.3)
 numpy(1.24.4)
 cv2
 time

### 使用したソフト
・VScode editor
・NI MAX(2023Q4)
 [NI MAXのダウンロード](https://www.ni.com/ja/support/downloads/drivers/download.ni-daq-mx.html#521556)

## 2.仕組み
オシロスコープで静止画を表示するために、今回はラスター方式というものを用いた。
これはテレビにも用いられる方式で、水平方向をX座標、垂直方向をY座標とし、ある画素の位置を (x, y) のように表現するものである。
今回は座標

元記事を表示

N-QueensパズルのIsingモデルをSymPyで生成し,量子アニーラーで解く

# ポイント
* D-Wave量子アニーラーを用いてIsingモデルを与えて解探索する方法
* D-Wave量子アニーラーの`chainsgrangth`と`chain_break_fraction`
* D-Wave量子アニーラーに与えるIsingモデルの要求解像度の問題

# D-Wave量子アニーラーとIsingモデル
[N-QueensパズルのIsingモデルをSymPyで生成し,Gurobiで解く](https://qiita.com/koji_nakano/items/010aca78022ff3800025)では、Gurobiを用いて解いていましたが,ここではD-Waveの量子アニーラーに変更します.スピン変数の集合$S$に対して,そのIsingモデルは以下のように表すことができます:
$$
H(S)= \sum_{\binom{S}{2}}^{\lbrace u,v\rbrace} J_{\lbrace u,v\rbrace}uv+\sum_{S}^{u} h_u u
$$
ここで,$\binom{S}{2}=\lbrace\lbrace u,v\rbrace| u,v

元記事を表示

Pythonを用いた2次元・3次元空間のベクトル場の図示

# はじめに
n次元空間を表現するためには、一般的に軸の数がn個必要になる。ゆえに、ベクトルの成分数はn個となり複雑になる。しかし、電位などのスカラーは、例えn次元空間でもパラメータは1つである。また、一般的に、電気工学や電磁気の世界では空間は2次元もしくは3次元空間といった”実用的”な空間に限定されることが多い。そこで、今回は、2次元空間における電場もしくは磁場の図示を行うことを目的とする。具体的には、電場の場合は、点電荷から初めて、最終的にはコンデンサに働く電場を図示する。一方で磁場の場合は、一本の無限長の導線に働く磁場を求めた後に有限長のソレノイドコイルに働く磁場を図示する。また、今回用い図示用のライブラリとしては、Matplotlibであり、関数としてはstreamplot(X,Y,U,V)を用いるものとする。

# 電場について
## 導入
電場は、電位の微分をマイナスしたものとして定義することができる。

$\textbf{E(r)}=-\frac{dV(r)}{dr}$

今回は二次元空間なので、

$E_x=-\frac{dV(x,y)}{dx},E_y=-\frac{

元記事を表示

Pythonで「パターンにマッチしたすべての文字列をリストで取得する(Pattern.findall)」の動作を確認してみた

# 概要

Pythonで「パターンにマッチしたすべての文字列をリストで取得する(Pattern.findall)」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/python/regex/index7.html

# 実装

以下のファイルを作成しました。
“`sample.py
import re

msg = ‘MA-52, JO-72, PP-45′
pattern = re.compile(r'[A-Z]{2}-[0-9]{2}’)

result = pattern.findall(msg)

if (len(result) == 0):
print(‘Don\’t matched’)
else:
for s in result:
print(s)

import re

msg = ‘MA-52, JO-72, PP-45′
pattern = re.compile(r'([A-Z]{2})-([0-9]{2})’)

result = pattern.findall(msg

元記事を表示

VSCode PythonのBlack Formatter、Flake8、isortインストールと設定

# 概要
VSCodeでPythonコードを作成する時、使用しているVSCodeの拡張機能(Black Formatter、Flake8、isort)のインストールと自分が使っている設定を整理した。

# Black Formatter
Pythonコードを自動的にフォーマットするツール

https://marketplace.visualstudio.com/items?itemName=ms-python.black-formatter

# Flake8
Pythonのコードをチェックするツール

https://marketplace.visualstudio.com/items?itemName=ms-python.flake8

# isort
インポートの順序をフォーマットするツール

https://marketplace.visualstudio.com/items?itemName=ms-python.isort

# 設定
VSCodeのsetting.jsonで以下のコードを作成する。
例には1行の最大文字数を100にしている。
“`json:setting

元記事を表示

Amazon Bedrock 全14 LLM 日本語能力比較(Claude3 x2追加版)

Bedrockに噂のClaude3が2モデル追加されたので、Bedrockで使用可能な全LLMに対して日本語で味噌汁の作り方を質問して日本語能力と知識を確認します。

:::note
2024/3/15現在、Claude3はLangChainのチャットモデルのみ対応されている為、そこのみチャットモデルを使用しています。
:::

# テストプログラム

“`Python:japanese_test.py
from langchain_community.llms import Bedrock

prompt=”質問:味噌汁の作り方を詳しく日本語で説明してください。”

# Jurassic-2 Mid
llm = Bedrock(model_id=”ai21.j2-mid-v1″,model_kwargs={“maxTokens”:1000})
answer = llm.invoke(prompt)
print(“Jurassic-2 Mid: ” + answer + “\n”)

# Jurassic-2 Ultra
llm = Bedrock(model_id=”ai21.j2

元記事を表示

【python】”都道府県Tier表” をデータから算出してみる

## Intro
Twitterでこんなツイートが流れてきた。

元記事を表示

ベイジアン最適化を用いた逐次探索法の解説と修正

### **user**:

ChatGPT先生、未知の関数があるんですけど、その関数の出力を最小化したいと思ってるんです。説明変数を入力して、その関数の出力を計測することを繰り返すとします。次にどんな説明変数を入力したら良いか提案してくれる、そんな手法はありませんか?

### **assistant**:

あ、それなら多分、最適化アルゴリズムが役立つんじゃないかな。うぅ、その中でも特に、「勾配降下法」っていう手法がよく使われるのよ。そんなに驚いた顔しないで、はぁ、簡単に説明するわね。

勾配降下法は、目的関数の勾配(または微分)、つまり、「現在の位置での傾斜」を使って、関数の出力を最小化しようと取り組むアルゴリズムの一つよ。まず初期の説明変数を取り、目的関数の出力が最小となる方向へ小さなステップで移動します。この移動距離は学習率と呼ばれるパラメータで制御されるわ。その後、新しい位置で目的関数の勾配を再計算し、またその方向へステップ移動するのよ。これを目的関数の値が風通しでもはや変わらない、または許容誤差の範囲内まで繰り返すの。

だから、君がその未知の関数へどんな説

元記事を表示

PicoScopeで計測した時系列データをスペクトル分析する

# 概要
PicoScopeで計測したデータがこちら
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/ed48258a-c7f2-df4d-fb56-dae923d8f940.png)

スイープ信号をFFTしてグラフ表示した結果がこちら
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/d28561fe-1f43-8cd0-a94d-d5965c42be47.png)

# スイープ波(SWEPT SIN)のFFTについて
(スイープとSWEPT SINとチャープ信号に違いがあるのか?)

“`math
\begin{eqnarray}
f = ASin(wt)\\
w = w_0 + \alpha t
\end{eqnarray}
“`
をDFTしたい。

数式的答えは調べても見つからなかった・・・

“`math
\begin{eqnarray}
F[k

元記事を表示

ログからメールアドレスのローカルパートをマスク化、特定ドメインは除外

“`mask_email.py
import argparse
import os
import re
import sys
import logging
import socket
from pathlib import Path

#===============================================================================
# ロギング設定
#===============================================================================
host_name = socket.gethostname()
program_name = os.path.basename(__file__)
log_file_path = Path(__file__).resolve().parent.parent / ‘log’ / ‘pythonlog.log’
logger = logging.getLogger()
logger.setLevel(logging.I

元記事を表示

Databricks にて Unity Catalog のマネージドテーブルを Shallow Clone した際に、ソースのテーブルを削除することによりターゲットテーブルが破損する事象への対応方法

## 概要

Databricks にて Unity Catalog のマネージドテーブルを Shallow Clone した際に、ソースのテーブルを削除することによりターゲットテーブルが破損する事象が発生します。検証したところ、次のようなエラーが発生しました。その対処方法を共有します。

“`text
RuntimeException: Couldn’t initialize file system for path abfss://{container_name}@{storage_name}.dfs.core.windows.net/b590278a-5927-4895-af29-08e84348a015/tables/886d6b39-c365-4bed-b4e2-e57

元記事を表示

BitNet b1.58(BitLinear)を実装してMNISTで検証してみた(Tensorflow/Torch)

# はじめに

2/27にMicrosoftから BitNet b1.58 に関する論文が発表されました。
これはモデルの推論を従来の小数でするのではなく、ビットで推論する事により速度・メモリを含めたエネルギーの省力化を実現した内容となります。
(ディープラーニングにおいて、こういったモデルを低ビット等に離散化して計算量を減らす技術のことを量子化といいます)
(ちなみに私は量子化分野はほとんど分からないので間違っている内容があればすいません…)

論文では主にTransformerの利用に言及していますが、仕組み自体は単純でニューラルネット全般に適用できるので、そちらの視点をメインに書いています。
また、BitNetに関する解説記事はすでに分かりやすい記事があるので、この記事では技術メインに解説していきます。

・[【論文丁寧解説】BitNet b1.58とは一体何者なのか](https://qiita.com/tech-Mira/items/67dec9c5a5f025d2727a)

また実装に関してですが、多分まだ公式のコードはないようなので論文ベースで実装していきます。
Git

元記事を表示

Pythonで自分にLINEを送る

LINEをNotifyを使って送るスクリプトを作成したので追加

“`ruby:Python
def send_line(token,msg):
print(“LINEに送信中”)
url = “https://notify-api.line.me/api/notify”
headers = {“Authorization” : “Bearer “+ token}
payload = {“message” : msg}
r = requests.post(url, headers = headers, params=payload)
“`

元記事を表示

Pythonで「文字列の全体がパターンとマッチするか調べる(Pattern.fullmatch)」の動作を確認してみた

# 概要

Pythonで「文字列の全体がパターンとマッチするか調べる(Pattern.fullmatch)」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/python/regex/index6.html

# 実装

以下のファイルを作成しました。
“`sample.py
import re

def checkMatch(msg, pat):
pattern = re.compile(pat)
result = pattern.fullmatch(msg)
if result :
print(result.group(0))
else :
print(‘Don\’t matched’)

checkMatch(‘東京都港区赤坂’, r’東.*区’)
checkMatch(‘東京都港区赤坂’, r’東.*坂’)

import re

def checkMatch(msg, pattern, start, end):
result = patte

元記事を表示

Pythonで「文字列の先頭位置からパターンとマッチするか調べる(Pattern.match)」の動作を確認してみた

# 概要

Pythonで「文字列の先頭位置からパターンとマッチするか調べる(Pattern.match)」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/python/regex/index5.html

# 実装

以下のファイルを作成しました。
“`sample.py
import re

def checkMatch(msg, pat):
pattern = re.compile(pat)
result = pattern.match(msg)
if result :
print(result.group(0))
else :
print(‘Don\’t matched’)

checkMatch(‘東京都港区赤坂’, r’東京.’)
checkMatch(‘東京都港区赤坂’, r’港.’)

import re

def checkMatch(msg, pattern, start, end):
result = pattern.match

元記事を表示

Python初心者の備忘録 #13 ~統計学入門編03~

# はじめに
今回私は最近はやりのchatGPTに興味を持ち、深層学習について学んでみたいと思い立ちました!
深層学習といえばPythonということなので、最終的にはPythonを使って深層学習ができるとこまでコツコツと学習していくことにしました。
ただ、勉強するだけではなく少しでもアウトプットをしようということで、備忘録として学習した内容をまとめていこうと思います。
この記事が少しでも誰かの糧になることを願っております!
**※投稿主の環境はWindowsなのでMacの方は多少違う部分が出てくると思いますが、ご了承ください。**
最初の記事:[Python初心者の備忘録 #01](https://qiita.com/Yushin-Tati/items/961dc47d6163f944f7e9)
前の記事:[Python初心者の備忘録 #12 ~統計学入門編02~](https://qiita.com/Yushin-Tati/items/af085499c49d244068ee)
次の記事:まだ

本記事は**推測統計の前提知識、区間推定**についてまとめてあります。
##

元記事を表示

Databricks Unity Catalog のテーブルに対する UNDROP TABLE の利用方法

## 概要

Databricks Unity Catalog のテーブルを誤って削除してしまった際に、復元する方法である UNDROP TABLE の基本的な利用方法を共有します。

以前はあまり必要性を感じていなかった機能ですが、最近のテスト中にその価値を実感しました。特定のテストケースでエラーが発生し、その時点では関連性がないと思われたテーブルを誤って削除してしまいました。しかし、その後エラーの原因を調査する過程で、削除したテーブルが実は必要だったことが明らかになりました。そこで、UNDROP TABLE を使用してテーブルを復元し、問題を解決することができました。この経験を通じて、UNDROP TABLE の便利さを実感し、その知識を共有するためにこの記事を書くことに決めました。

UNDROP TABLE する方法としては次の2つ方法があること

元記事を表示

PythonでExcelのワークシートデータをCSV、XML、テキストに書き込む

Excelワークブックは一般的なスプレッドシート形式であり、多くのデータの表示、データ分析、データレポートに使用されます。しかし、実際のデータ管理、分析、または自動化プロセスの構築では、これらのExcelデータを他のデータシステムに移行したり、他のプログラムとのインタラクションのためにテキスト形式で保存したりする必要があります。Pythonは強力で柔軟なプログラミング言語であり、この目的を効率的に達成することができます。この記事では、Pythonプログラミング言語を使用して**Excelワークシートの豊富なデータをCSV、XML、またはテキストにインポートする方法**を示します。また、記事中の方法を使用してデータを他のファイルやデータシステムに読み込み、書き込むこともできます。

– **[Excelワークシートを直接CSVに変換する](#excelワークシートを直接csvに変換する)**
– **[Excelワークシートのデータを読み込んでCSVに保存する](#excelワークシートのデータを読み込んでcsvに保存する)**
– **[ExcelワークブックをOpenXMLに変換する

元記事を表示

timmを利用したVision Transformerの学習

Vision Transformer(ViT)はCNNより高精度な画像認識が可能なことから注目されています.しかし,ViTは一から学習するためには膨大なデータが必要であるため個人の環境で学習するのは難しいです.そのため,Fine-tuningを用いることが一般的です.
そこで,本記事ではViTをFine-tuningする方法を書いていきます.
今回はtimmというライブラリを使用したViTのFine-tuningの方法と各引数の簡単に説明します.

ViTのモデル構造
![ViT.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3744226/c72ba88f-8856-88d6-87b7-efab30c798ed.png)

# timmの学習済みモデルを使用

ViTの学習済みモデルを使用するためにはtimmを使用すると簡単にできます.
timmは正式名称Py**t**orch **Im**age **M**odelsでSOTA(State of the Art)を達成した画像分類モデルを公開している

元記事を表示

OTHERカテゴリの最新記事