Python関連のことを調べてみた2022年12月20日

Python関連のことを調べてみた2022年12月20日

MIDIキーボードをゲームのコントローラーにしてみた話

## 音が出せるだけじゃないはず
MIDIキーボードは音楽活動に使われるイメージが大きいですが、仕組みを考えるともっと幅広い使い方ができるように思えます。一つ一つの鍵盤がスイッチだと考えれば、押したらオン、離せばオフのようなシンプルな仕組みと捉えられるはずです!
そこで今回は、実際にPythonを使ってMIDIキーボードの入力を取得して、いろいろと遊んでみました。

## MIDI入力を取得する
まずはとにかく入力を見てみたいですよね。どんな仕組みでキーボードが動いているのか確認してみます。

### pygame.midi
`pygame.midi`を使うと、PythonでMIDI入力を取得できるらしいです。
pygame自体はPythonではおなじみのゲーム制作ライブラリですが、その中にmidiを取得できる機能が付属していました。早速動作確認。
“`python
import pygame.midi as m

### midiキーボードを定義
m.init()
i = m.Input( m.get_default_input_id() )

while True:
i

元記事を表示

Levenshteinを使ったマスタの名寄せ結果の履歴を蓄積した話

# はじめに
先に、異なるシステムから、本来同じ意味を指すのにそれぞれ異なるコードが振られたトランザクションデータが発生するというシチュエーションにおいて、それらのコードを名寄せした話を投稿しました。Levenshteinのratioで文字列間の類似度を測り、コード変換マスタを作成するという話です。

https://qiita.com/myNAMeis/items/14cdd5a37594be26bf8a

その際、「ratio >= 0.4」としてマスタを作成するように設定しました。しかしこのパラメータの妥当性は、将来にわたって保証されるものではありません。今後投入されるトランザクションデータに、どういった値が入ってくるかが読めないからです。
そのため、パラメータ設定の妥当性をチェックを、場合によっては過去に遡って行なえる仕組みを構築する必要があり、本記事ではその際の話をしたいと思います。
なお、今回はDr.Sum成分が多めです。

:::note info
元記事にも記載していますが、理想的には各システムでデータ入力時にバリデーションチェックを行なうべきです。今回は諸般の事情でそ

元記事を表示

PythonでLocalStorageを操作する

# LocalStorageについて
LocalStorageは、Webブラウザーに保存されるデータを扱うためのAPIです。このAPIを使用することで、Webアプリケーションはブラウザー内に永続的にデータを保存できます。

LocalStorageは、JavaScriptを使用してアクセスできます。保存されたデータは、同じオリジン (プロトコル、ドメイン、ポート番号) を持つWebアプリケーションからのみアクセスできます。

Pythonでは、JavaScriptのLocalStorageを直接操作することはできませんが、PythonからSeleniumを使用することで、JavaScriptを実行することができます。

# コード
PythonでSeleniumを使用してLocalStorageにデータを保存してみます
“`python
from selenium import webdriver

# Chromeを起動
driver = webdriver.Chrome()

# LocalStorageにデータを保存するJavaScriptを実行
driver.execute_

元記事を表示

『おっさん美少女を描いて!』を;実現したい!

どうも、おっさんです。
うちの GitHub Copilot の口が悪すぎると話題に!

うちの GitHub Copilot の口が悪すぎると話題に!

さて、今日は Whisper + Stable Diffusion で永遠の謎『おっさん美少女』を AI に描いて頂こうと思います。
髪の毛は永遠の 0 です。

## 紆余曲折

IntelliJ の PyCharm の YouTube ライブで Jina Cloud が取り上げられていました。
『N

元記事を表示

ITパスポートの正解選択肢はランダムに決められているのか、Pythonでカイ2乗検定して確かめる part1

## この記事の内容

ITパスポートの試験問題はア〜エの4択問題ですが、それって偏りがあったら良くないですよね。
じゃあ本当に偏ってないかどうか、統計的に確かめましょうという話。
今回は各選択肢の出現回数の観点から確かめてみます。

## データの確認

ITパスポートの過去問の正答を、[こちらの記事](https://qiita.com/canid_56/items/e3676a53340154cba817)の手順で構造化します。
出来上がったデータはこんな感じです。

“`python
# モジュールのインポート
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from scipy.stats import chisquare
plt.rcParams[‘font.sans-serif’] = [‘Hiragino Maru Gothic Pro’, ‘Yu Gothic’]

%matplotlib inline

# 生データ
df.head()
“`

元記事を表示

Pythonで業務改善Slack Botを作って単純作業を減らしたい!

この記事は[FLINTERS Advent Calendar 2022](https://qiita.com/advent-calendar/2022/flinters)の20日目です。

業務上のコミュニケーションはSlackで行なっている会社が多いですよね。私のチームでもSlackを使用していて、Slack Botを活用すれば便利になる部分がたくさんあると思ったので、まずは手始めとして簡単な数値計算Botを作ってみたというお話です。

# Slack APIについて

## 基礎
Slackを操作するためのAPIが公開されてます。

https://api.slack.com/lang/ja-jp

APIのアーキテクチャはRPC(Remote Procedure Call)スタイルらしいです。RESTではない。
Boltという公式フレームワークが出ており、そちらを利用すると簡潔な記述でAPIを操作できるので積極的に使っていきたいですね。

https://slack.dev/bolt-python/ja-jp/tutorial/getting-started

JavaScrip

元記事を表示

[Seaborn]積み上げ棒グラフを出力してみた

# はじめに

最近、seabornというpythonでグラフを作るためのライブラリを使い始めたのですが、積み上げ棒グラフを作るのに少し手間かかったので、この機会にまとめてみることにしました。

サンプルソースを作成したので、困っている方の参考になれば幸いです。

# 積み上げ棒グラフを出力

作成したサンプルソースは次のようになっています。

“`python
# パッケージのインポート
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import rc
import seaborn as sns

# グラフの日本語対応
rc(‘font’, family=’BIZ UDGothic’)

# データの用意
study_history = pd.DataFrame({‘年’: [2021, 2021, 2021, 2022, 2022, 2022],
‘学習内容’: [‘英語’, ‘プログラミン

元記事を表示

令和ちゃんは好きですか?

本記事は、ハンズラボ Advent Calendar 2022 20日目の記事です。

# はじめに
みなさん、令和は好きですか。
巷では**令和ちゃん**と呼ばれることもしばしば。昭和や平成に比べ親しみやすい印象があります。

さて、寒い日には「気温の調整が下手くそだ」などと貶されている令和ちゃんですが、本当にその日の令和ちゃんは悪者だったのでしょうか。日本のどこかでひっそりと令和ちゃんに感謝している人はいなかったのでしょうか。毀誉褒貶をもれなく伝える場があってもいいのではないでしょうか。

そこで私は考えました。

**今日の令和ちゃんがいい子だったか悪い子だったかを投票してもらおう**

と。

これは、令和ちゃんのために人生で初めて1からwebアプリを作成した男の物語です。

# 欲しい機能
まず、欲しい機能を洗い出します。
兎にも角にも**令和ちゃんを評価する機能**はマストです。これがないと話になりません。
**過去の令和ちゃんの評価をグラフで表示**して、特定の日付の**評価の一覧**も表示できたら嬉しいですね。
これはすごく大切なことなのですが、**なぜその評価なのか*

元記事を表示

gensimのpoincare embeddingを使って感情データをモデル化する

アドベントカレンダー20日目です。

最近、Wordnetなどの階層構造データを扱うことがあるので、poincare embeddingにちょっと興味が湧いて試してみました。

poincare embeddingは、双曲空間を凸方向に射影したものなので、木構造データの表現に適したembeddingというのが私の中の雑な理解です。

詳細は他サイトに譲ります。

### 環境
ubuntu 20.04.5 LTS
python 3.9.6

### 使用データ
https://www.jnlp.org/GengoHouse/snow/d18

サイトなかほどのXLSXファイルをダウンロードし、作業者1シートをtsv形式にしたものを用いました。

### 前準備
gensim、ploylyともに古いバージョンでないと可視化のところでうまくいきません。

gensimインストール
“`
pip install gensim==3.7.3
“`
可視化用ライブラリインストール
“`
pip install plotly==2.7.0
“`

### モデル作成
さっくりできます。

元記事を表示

マツコの知らない音声解析の世界

# はじめに
本記事は [長野高専 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/nnct) 20日目の記事となります。皆さん大変素晴らしい記事を書かれていますね。この記事ではPythonを利用して音声解析を行うプログラムを作成します。

# お前誰だよ
・電子制御工学科の学生(情報じゃねえのかよ)
・機械学習・深層学習を勉強中
・プログラミングなんもわからん
・なのに研究でPythonを使ってる
・最近ブルアカにはまった(お前ら笑うなっ!)

という感じのお世辞にもつよつよとは言えないスペックの人間です。なのであまり期待せずにどうか温かい目で見てやってください。~~ちなみにブルアカで好きなキャラは天雨アコです。あと最近ヒナ委員長も好きになりました。~~

# 音声解析用ライブラリ「librosa」
さて、前置きが長くなりましたが本題に入りましょう。

Pythonにはlibrosaと呼ばれる音楽・音声を解析するための便利なライブラリがあります。音声データの特徴量の抽出やスペクトル解析、音源分離など様々なことが

元記事を表示

【20日目】コマンドのグループを作ってみよう【PythonでDiscordBOTを作ろう!】

# コマンドのグループを作ってみよう
挨拶っていろんな種類がありますよね。
ってなわけで、前回作成した`greed`コマンドを成長させてみましょう!

# `bot.group()`
機能自体は前から知っていたのですが、実際に使い始めたのはこの記事を書く前日からです。
それもちゃんとは理解しきれていません。
ガッ…説明します。がんばります。

まず、このデコレーターでは「コマンドグループ」を作成することができます。
これはどういう時に使うかというと、例えば設定を追加するコマンド、削除するコマンド、確認するコマンド…
`c!setting [add/del/check]`とあった際に、`setting`というグループを作って、その中のコマンドとして`add`と`del`と`check`をそれぞれ作ることができます。
管理が楽になったりします。

前回の挨拶コマンドを改造していきましょう。
“`diff_python:main.py
– @bot.command()
+ @bot.group()
async def greed(ctx: commands.Context):

元記事を表示

ARKit を使ってPythonista3 で拡張現実世界の平面をトラッキングしたい

この記事は、[Pythonista3 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/pythonista3) の20日目の記事です。

https://qiita.com/advent-calendar/2022/pythonista3

一方的な偏った目線で、Pythonista3 を紹介していきます。

ほぼ毎日iPhone(Pythonista3)で、コーディングをしている者です。よろしくお願いします。

以下、私の2022年12月時点の環境です。

“`sysInfo.log
— SYSTEM INFORMATION —
* Pythonista 3.3 (330025), Default interpreter 3.6.1
* iOS 16.1.1, model iPhone12,1, resolution (portrait) 828.0 x 1792.0 @ 2.0
“`

他の環境(iPad や端末の種類、iOS のバージョン違い)では、意図としない挙動(エラーになる)なる場合もあり

元記事を表示

機械学習モデルの最適化をAutoGlounにおまかせしてみる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1275001/f01eded1-4693-bde2-e93e-0dc9975769e8.png)

## はじめに

[**AutoGluon**](https://auto.gluon.ai/stable/index.html)は、Amazon Web Services(AWS)が開発しているMXNetというディープラーニングフレームワークがベースのAutoMLライブラリです。
機械学習モデルの構築するだけでなく、それらを基本的なモデルとして積み重ねる、多層スタックアンサンブルにより新たなモデルも構築してくれます。

何ができるかは、以下の記事にわかりやすく紹介されています。
https://pages.awscloud.com/rs/112-TZM-766/images/1.AWS_AutoML_AutoGluon.pdf

この記事から一部引用させていただきます。
AutoGlounの探索対象範囲は以下です。
![ADDB06C7-

元記事を表示

AtCoderをrequestsで自動ログインする

## はじめに
[WINC(早稲田コンピュータ研究会) Advent Calendar 2022](https://adventar.org/calendars/8102) 18日目の記事です。

僕は最近C++でAtCoderをはじめました。過去問を解いてる際に、よくファイル名を`A.cpp`とパフォーマンスだけではなく、検索しやすいように`A_contest_name.cpp`と問題名をつけて管理してました。しかし、その作業が意外とめんどくさいので、自動でそれをやってくれるコードを書きました(ほぼ需要はない)。また、本コードはrequestsというpythonのライブラリを主に使っています。次に少しだけrequestsの解説をします。

## requestsとは
> Requests is an elegant and simple HTTP library for Python, built for human beings.

[公式サイト](https://docs.python-requests.org/en/latest/
)によると、requestsとはhttpを簡単

元記事を表示

モーショントレイルを使って遊ぶ

モーショントレイルは見てておもしろいですね。

https://knowledge.autodesk.com/ja/support/maya/getting-started/caas/CloudHelp/cloudhelp/2022/JPN/Maya-Animation/files/GUID-2DFBE283-1A1E-4194-B6C5-B4E0F72D61CA-htm.html

キーフレームの情報がダイレクトに反映されるので、何かに使えそう・・・・

表示されてるし、選択できるし、きっと何かshapeを持っててるんだろうな。

という安易な発想からスタートしました。

観察

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1484234/22dfd2a8-4656-1956-330a-54ad14626235.png)

なるほど解らん。

それっぽいのは points

“`
import maya.cmds as cmds
cmds.getAttr(“motionTra

元記事を表示

#TouchDesigner でのドラッグ&ドロップについて ver.2022

# TouchDesigner でのドラッグ&ドロップについて

**公式Wiki**

https://docs.derivative.ca/Drag-and-Drop

TouchDesignerでUI構築、ツール制作を行う際に便利なドラッグ&ドロップについて解説します

サンプルファイルとか

https://github.com/Joe0hara/TD_DragAndDrop

2019年のアドカレで同じ内容の記事を書いていたみたいですが、機能が更新されていたり使いやすくなっていたので改めてドラッグ&ドロップについてまとめていきたいと思います

:::note
動作環境
[TouchDesigner](https://derivative.ca/download) 2022.31030
:::

**2019年の記事**

https://qiita.com/joe0hara/items/a1be5e9e06b8feac6cc1

ファイルやエディタ上でのD&Dについては上の記事に詳しく書いてあります(ここら辺の機能は変わってません)

### 以前のD&Dシステ

元記事を表示

Amazon Polly を使う

スライドを音声入りビデオにして送れ、と言われたので試してみたかった音声合成を試してみた。まあ、どう考えても私の英語よりは聞きやすいだろう。

## Amazon Polly
Amazon Polly は、AWSの音声サービス。コンソールから使うこともできるが、AWSなので、APIでも使うことができる。関係ないけどAWSのサービスって、AWS XXX という場合と Amazon XXX という場合があるような気がするけど、どうやって使い分けてるんだろう。PollyにはAWSではなくAmazonがついている。

https://aws.amazon.com/polly/

## 使い方
1. AWS アカウントを用意する
2. 権限としてPollyFullAccess のみを付与した Polly専用IAMを作り、ACCESS KEYと SECRET KEYを取得する。
ルートアカウントで、ACCESS KEYを作ることももちろんできるが、まあ絶対やめたほうがいい。言うまでもないが、漏洩した場合のダメージを最小化するため。
3. `~/.aws/credentials` にこれらの値を書

元記事を表示

cv2 Multi Object Tracker

# Multiple Object Trackingとは?
Multiple Object Tracking(MOT)とは、名前の通り映像に写っている複数の物体を追跡する手法の総称です。MOTではそれぞれの追跡物体にIDを割り振りますが、同じ対象物には可能な限り同じIDを与え続けることを目標とします。

![Animation_tmp3.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577794/121c1915-8cdf-3762-cadb-dc5db21ca725.gif)

# cv2 Select Multiple ROIs
別記事にて作成したSelect Multiple ROIsを使用すると、簡易的なMOTを実現できます。

https://qiita.com/youichi_io/items/2424e5c79af54ccb119a

コードを実行するには事前にモジュールのインストールが必要です。
“`py
pip install numpy
pip install keyboard
p

元記事を表示

Hawkes過程のパラメータの最尤推定をPythonで実装する

# はじめに
点過程は時系列解析でよく利用される手法です.
比較的短い時間で複数のイベントが集中して起こりやすいクラスター性を仮定した点過程を**自己励起過程**と呼びます.
この記事では,自己励起過程の一種である**Hawkes過程**のパラメータ推定をPythonで実装することを目的としています.

以下の一部を雑に実装してみた内容になってます. (点過程を勉強するならまず読むべき!)
点過程の時系列解析

[点過程の時系列解析 (近江 崇宏・野村 俊一 著)](https://www.kyoritsu-pub.co.jp/book/b10003181.html)

## 点過程とは
その名の通り, 空間上にランダムに分布する「点」の集合に関する確率過程です.
時系列解析文脈で言えば, 「点」=「あ

元記事を表示

cv2 Select Multiple ROIsの自作

# はじめに
マウスクリックで画像から複数のROI Boxを描画します。

ROI(Region of Interest)とは、画像データのうち、操作の対象として選ぶ領域のことです。「対象領域」「注目領域」「関心領域」などともいいます。

例えば、画像の一部分にだけ処理を施す場合にROIという言葉を使います。

![キャプチャ.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577794/4f1be710-5edb-4675-a213-250c93ec7170.jpeg)

# 既存の関数を利用した場合
opencvを使用すると比較的簡単に複数のROI Boxを描画可能です。
cv2.selectROIs()を使用します。

事前にモジュールのインストールが必要です。
“`
pip install opencv-python
“`

適当な画像で試してみます。コードは以下の通り。
“`py
from random import randint
import cv2

# 画像ファイルのパス
path

元記事を表示

OTHERカテゴリの最新記事