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

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

PySBのチュートリアルを実行してみる

# 概要
PySBとはSystemBiologyを扱うためのPythonライブラリである。

document: https://pysb.readthedocs.io/en/stable/index.html
repository: https://github.com/pysb/pysb

今回、その[チュートリアル](https://pysb.readthedocs.io/en/stable/tutorial.html)を行ったので、
自分のために簡易的にまとめておく。

# 環境
“`
$ python –version
Python 3.10.0
$ pip freeze | grep pysb
pysb==1.13.2
“`
(なお、インストールは`pip install pysb`で大まかになんとかなる)

# 内容
## tutorial_a.py
“`Python:tutorial_a.py
from pysb import *

Model()
Monomer(‘A’)
Parameter(‘k’, 3.0)
Rule(‘synthesize_A’, Non

元記事を表示

Qgisプラグインでのツールバーの追加と削除

# ツールバーの追加と削除
QGISプラグインでのプラグインの追加方法と削除方法についになります。

DockWidgetも然りだが詰ったので残しておきます。

## ツールバーの追加
ツールバーの追加はシンプルです。`iface`の`addToolBar`を使用することで簡単に追加できます。
引数にテキストを渡して新規作成か、ツールバーを渡すかの2つの方法になります。

“`python
from qgis.utils import iface

toolbar = iface.addToolBar(“testToolBar”)
“`

“`python
from PyQt5.QtWidgets import QToolBar
from qgis.utils import iface

toolbar = QToolBar(“testToolBar”)
iface.addToolBar(toolbar)
“`

## ツールバーの削除
`QToolBar`の`deleteLater`での削除をおすすめします。
ですが、再使用はできないので注意が必要です。

“`python

元記事を表示

【Python】社内のTwitterボーナスの集計を楽にしたい(したかった)

## 初投稿です
初投稿です。緊張しながら書いてます。
ドキドキです。ドキドqiitaです。

# はじめに
結論から言うと、出来としては微妙です。
技術力的に足りない部分や
Twitter Apiのアカウントの制限もあります。
それとアドバイスなどありましたらコメントください。

## 目的
社内で行っているTwitterボーナスの集計を
Twitter APIを使って効率よく集計することが目的です。

ツイート数を集計する上で以下の条件があります

– コメントがないリツイートは含まない
– 他人へのツイートへのリプライは含まない
 - ただし自分へのツイートにぶら下げたリプライは含める

## 環境
Python 3.9.7

それとTwitter APIの開発者アカウントを申請済みであることが前提条件です。
申請する方法に関しては他の方がまとめているので参考にしてください。
https://qiita.com/taishi0202/items/092c267c0c6dc68347c5

### tweepyのインストール
先にTwitter APIを利用するためにtweepyと

元記事を表示

PID制御でライントレースするときの注意点

# はじめに
我ら学生のロボット大会では、[PID制御](https://e-sysnet.com/seigyo3/)がライントレースによく用いられます。
ここではPID制御の内、I制御に関して書いていきます。

# I制御とは
[https://e-sysnet.com/seigyo3/](https://e-sysnet.com/seigyo3/)によるとI制御とは
> 積分動作(I)は偏差を時間的に蓄積し、蓄積した量がある大きさになった所で、操作量を増やして偏差を無くすように動作させます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2449798/67ab2241-9bea-3329-56af-81cff095a804.png)

ここで注目したいのが「偏差を”**時間的**”に蓄積」という部分です。
もし時間的に蓄積しない。つまり、最初から最後までの偏差をすべて蓄積してしまうとどうなるか。

結論から言えば、**ライントレースが成り立たなくなる恐れ**があります。

例えば、

元記事を表示

時系列性を考慮したターゲットエンコーディング特徴量の生成をPythonで実装してみた

# はじめに

**時系列性を持つデータに対してターゲットエンコーディング**をしたいと思っていて、いざ実装する時に手が詰まったので、メモ代わりに実装を残しておきます。
「もっと良い方法知ってるのに…」や「実装面でもっとこうするといいのにな」等のImpressionがありましたら、ぜひコメントでご指摘していただければ嬉しいです:)

# ターゲットエンコーディングとは

ターゲットエンコーディングとは何かについて、以下に自分の理解をまとめておきます。

– ターゲットエンコーディングとは、
– 教師あり機械学習において、**ターゲット(統計学的な文脈では目的変数・被説明変数?)の値を用いて特徴量を生成する**方法論。
– Kaggleのコンペ等でもよく用いられているみたい。
– **一方でリークが発生しやすく**、特徴量の生成段階での工夫が必要。

# 本記事で使うデモデータ

本記事では、以下の時系列性を持ったログデータを想定します。

“`python
import pandas as pd
df = pd.DataFrame({
“user_id

元記事を表示

【k-近傍法】scikit.learnのBallTreeを使ってみた!

# 【k-近傍法】scikit.learnのBallTreeを使ってみた!

<目次>
1.はじめに
2.k-近傍法とは
3.BallTreeの特徴
4.実装
5.参考にしたサイト・書籍

## 1.はじめに

kaggleの「Foursquare – Location Matching」という大会に取り組んでいく中で,k-近傍法のパッケージであるscikit.learnのBallTreeを使う機会があったため,学んだことや実装する場面・方法をご紹介していきたいと思います!

## 2.k-近傍法(kNN法)とは

対象とするデータに最も近いデータをk個取ってきて,それらが最も多く所属するクラスに識別する方法.

![kNN法.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2627906/7b15f8cf-d447-7b8f-6b0a-f16aa15c4dd8.png)
                    図1

図1の場合だと,

元記事を表示

PythonによるRNA-Seq(バルク)データ解析 ~UMAPを用いたクラスタリング~

本稿では、Pythonを用いRNA-Seq (シングルセルではなくバルク) データから、サンプル間の遺伝子発現様態の特徴を可視化するための、UMAPを実行し、グラフに出力する方法を解説する。

# UMAP: Uniform Manifold Approximation and Projection for Dimension Reduction
参考: https://umap-learn.readthedocs.io/en/latest/ (2022年6月9日アクセス)
UMAPとは次元削減の手法のひとつである。他の次元削減としてPCA (Principle Component Analysis) や t-SNE (t-Distributed Stochastic Neighbor Embedding) が有名であるが、PCAはRNA-Seqデータのような比較的大きいデータに適用するとうまく特徴を示してくれないことがある。また、t-SNEはUMAPとともに高次元データの次元削減手法として有名であるが、UMAPより低速であることが知られている。本稿ではUMAPの原理は詳しく解説しない

元記事を表示

ロボットアームで重なり合っている対象物を移動させる

# やりたいこと
以下のテキストでは、AIを用いた画像認識により対象物を分類し、ロボットアームにより仕分けを行っています。
* [DOBOT Magician AIx画像認識xロボットアーム制御](https://afrel.co.jp/dobot/education-product/)

ただ、判別したい対象物が触れ合っていたり重なり合っていると1つの塊として認識したり、その上で大きいサイズとして無視されたりしてしまい、上手く対象物を判別できません。

以下の記事で触れ合っている状態でも個々に認識できるようにプログラムを修正しました。
* [触れ合っている対象物を個々に認識して、ロボットアームで移動させる](https://qiita.com/shimamotosan/items/3a3ddddeb3ff3f6c7fe3)

ただ、対象物が重なり合っている状態だと個々に分けることが出来ずに1つの塊として認識してしまうことがありました。
本記事では、対象物が重なり合っている状態でも個々に分けて認識できるように修正したいと思います。

# できたもの

バーンサイドの補題を用いてピザの色分け問題を解く

### 【例題】ピザの色分け問題
以下のように6個に切ったピザを3色で2個づつ塗る方法は何通りあるでしょう(回転したものは同じとみなす)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1922159/9af1f1c6-df7c-efc1-409d-7a505efca6be.png)

### 単純に円順列で考えると⁈

単純に円順列=(線順列/個数)で考えると$6!/2!2!2! \div 6 = 15$となりますが、残念ながら不正解です。この式はすべてのパターンが周期6を仮定していますが、なかに[1,2,3,1,2,3]のように周期が3の物があるからです。

### バーンサイドの補題

そこで[バーンサイドの補題(Wikipedia)](https://ja.wikipedia.org/wiki/%E3%83%90%E3%83%BC%E3%83%B3%E3%82%B5%E3%82%A4%E3%83%89%E3%81%AE%E8%A3%9C%E9%A1%8C)の出番となります。

元記事を表示

Griffin-Limの位相復元について調べてみた。

## はじめに
信号処理の基本(STFTなど)についての説明は割愛しています。そのあたりの説明込みでしたら[こちらの記事](https://qiita.com/ma-szk/items/fe5c3d010b281dcd3537)がおすすめです。(本記事はこちらの記事となるべく被らないような内容にしているので読んだ後にまた戻って来てくれると嬉しいです)
この記事を作成するにあたり使用したPythonコードは[github](https://github.com/r-sugahara/griffin-lim)に挙げていますので参考になれば幸いです。(googlecolabで動かしたものになります)

## 位相復元とは(ざっくり)
位相復元とは、複素数で表される信号の,絶対値のみが分かっている状況において,元の複素数値の信号を復元することです。図で見てみると、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2543544/c6517de3-d9a7-bbf0-35ab-928aa382453

元記事を表示

スマブラSPの勝敗記録をつけてみた(クマメイト)

# 1. はじめに

スマブラをプレイするにあたり、弱点分析やキャラクターの使用状況などを知るために
クマメイトを使って勝敗記録をつけていました。
ただ、対戦ごとに記録をつけるのが面倒だと感じたので、簡単に登録できるようなプログラムを作ってみました。これを使って、多くの人が対戦を記録し、界隈が盛り上がることを願っています。
ただ、専用部屋の対戦を想定したプログラムではないので、VIP部屋などで使用に限られます。

詳細はGitHubに挙げているので詳細気になる方がいましたらどうぞ。

https://github.com/suemiken/smash_brathoers_register_winner_number

# 目次
[1.はじめに](#1-はじめに)
[2.大乱闘スマッシュブラザーズスペシャルSPECIALとは](#2-大乱闘スマッシュブラザーズスペシャルSPECIALとは)
[3.作成したプログラムの概要](#3-作成したプログラムの概要)
[4.画像処理](#4-画像処理)
[5.クマメイトとの通信](#5-クマメイトとの通信)
[6.おわりに](#6-おわりに)

元記事を表示

jupyter labが動かなくなってしまった件について

# はじめに

インストールしているはずのjupyter labを立ち上げようと、
ターミナルでjupyter labコマンドを実行したら

“`
zsh:`jupyter-lab` command not found
“`
と表示されてしまったときの備忘録です。備忘録なので物語は進みません…。

# 動作環境
・MacBook Air (Retina, 13-inch, 2020)
・Big Sur11.4
・Python 3.8.9
・Anacondaは使用していません

# 実行したこと

(1)「jupyter lab存在しないよ」って言われたので再インストールしてみる

“`
(中略)
ERROR:Command errored out with exit status 1:
command:/Library/Developer/CommandLineTools/usr/bin/python3 -c ‘import sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘/private/var/folders/wh/d805s175

元記事を表示

Playwight for PythonでPytestコードが生成できるようになった

## サマリ

Playwright for PythonのVer.1.22からPytestコードが生成(codegen)できるようになっています。
本記事ではPlaywrightのインストールからPytestコードの生成までを試します。

https://playwright.dev/python/docs/release-notes#version-122

> – Codegen now supports generating Pytest Tests
![codegen.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527184/863f1396-7282-e396-732d-fc18036ac0af.png)

## インストール

“`shell
pip install playwright pytest-playwright
playwright install
“`

## クイックスタート

シェル上で下記コマンドを実行してください。

“`shell
playwright co

元記事を表示

Pythonの点群・3Dメッシュ可視化ライブラリが多すぎてカオスなので整理してみる

最近Pythonで2次元/3次元問わずデータ処理を行うことが多いんですが、特に3次元データの方のライブラリが色々ありすぎて頭の処理が追いつかないのでちょっとだけ整理していこうと思います。
(随時更新予定…)

## PyVista

– https://github.com/pyvista/pyvista
– [Visualization Toolkit](https://vtk.org/) (VTK)をnumpyでラップした高レベルのAPI
– VTK・SLT・OBJ・PLYなど一通りメッシュが読める
– 結構GUIツールが揃っている感じ?
– 点群とメッシュの変換はできるらしい
– シミュレーション・レイトレーシング・GISで使えるとかなんとか

## Leafmap

– https://github.com/giswqs/leafmap
– lasを読み込める
– plyもいける?
– lasを読み込んだ時はlaspyのインスタンスが出来上がる
– 2次元データ処理寄り

## Open3D

– https://github.com/isl-org/Open3D

元記事を表示

メモ: Psycopg2 で配列に集約した結果をリストとして受け取るには、クエリに型をつければいい

時間がないので、ざっとメモ。

# 背景: PostgreSQL の array_agg は配列として集約する集約関数

こんな感じでユーザ `user_id` の通った学校の一覧 (`school` 列を配列にしたもの) を返すことができる。

“`sql
select user_id, array_agg(school) as schools
from …
where …
group by user_id
“`

これを psycopg2 で単純に受け取ろうとすると、`{‘foo’,’bar’}` のような配列の文字列表現が得られる。

# 問題: これを psycopg2 でリストとして受け取るには?

Python で扱うならリストとして受け取りたい。

# 解決策: クエリに型をつければいい

クエリには型がつけられる。配列であれば `<要素の型>[]` とすればいい。
たとえば前述の `school` 列の型が `varchar(…)` なのであれば、クエリをこうすればいい:

“`sql
select user_id, array_agg(school)

元記事を表示

CodinGameでNNを使う

# はじめに
[CodinGame](https://www.codingame.com/)では自分で作成したbotを使って他の人が作ったbotと対戦することができます。botに深層強化学習などのディープラーニング手法を使ってみたかったのですが、PyTorchを使うことはできず、また外部のリソースを用いることもできません。そのため、別の手段を用いる必要があります。
手順は以下の通りです。

1. PyTorchでネットワークを作成
2. 1のネットワークをCodinGame内で使用可能な形式に変換
3. Numpyで推論用のNNを作る

# PyTorchでのネットワークを作成
以下のようなConvolution、ReLU、Flatten、Linearのみからなるネットワークを作成しました。オセロのbot用に使うつもりなので入力サイズが64×64、出力クラス数を64としています。学習については割愛します。

“`python
import torch.nn as nn

class SLTrainingPolicy(nn.Module):
def __init__(self

元記事を表示

光量子で関数近似

# はじめに

量子計算には、 離散量 と 連続量 という二種類があります。

離散量を扱う目的では超伝導、イオントラップなどの実装が知られています。
離散量の場合、1量子は$0$か$1$か(あるいはその重ね合わせ)を取ります。状態は2つの複素数$\alpha,\beta$で指定できます。
量子の単位は 量子ビット と呼ばれ、イオン2個なら2量子ビットです。

連続量を扱う目的では光量子などの実装が知られています。
連続量の場合、1量子の状態は無数の複素数で指定されます。
例えば光量子の”位置$x$”を基底と考えると $\int_{x=-\inf}^{x=+\inf} x_{coeff.}|x> dx$ のような形で書けます。イメージとして。
同じように運動量$p$は $\int_{p=-\inf}^{p=+\inf} p_{coeff.}|p> dp$となります。
また、$x,p$の他に光子の個数$n$に着目した表現方法もあり、
$\sum_{n=0}^{n=+\inf} n_{coeff.}|n>$
このようになります。
基本としては ${x,p}$表現 or ${n}表現$ を使

元記事を表示

Pythonで辞書を使うときに楽したい方へ

# 概要
突然ですが、Pythonの辞書を使うとき下記のように書いていませんか?
“`python
“”” numbersに格納された数値をカウントする辞書を生成 “””
numbers = list(map(int,input().split()))
dic = dict()
for num in numbers:
if num not in dic:
dic[num] = 0
dic[num] += 1
“`
おそらく本当は`if`の判定をなくして直接`dic[num] += 1`を行いたいですよね?
しかし直接それを書いてしまうと`KeyError`になってしまうから**仕方なく**書いてますよね?

なんと、下記の方法を使えば`if`文の判定をなくし、直接`dic[num]+=1`を行うことが出来ます!!

# defaultdict
存在しないキーが与えられると、**`KeyError`を起こさず**、定義した**関数**で初期化を行ってくれます。
つまり、キーの存在確認を行わず直接キーにアクセスすることが出来ます!

元記事を表示

日記: Codeforces Round #797 (Div. 3) A-FをPythonで解く

https://codeforces.com/contest/1690

# A. Print a Pedestal (Codeforces logo?)
mod 3で場合分けします。

$h3 < h2 < h1$であることが必要なので、$n$が3の倍数であるときある整数$k$に対して$k < k+1 < k+2$が($h1$が最小なものを探すという)条件を満たす最適な解です。$n$が3の倍数でない時を考えます。この時、余りのブロックを他に積まなければなりません。余りが1なら、$h2$あるいは$h3$を1つ高くすると条件を満たさないので、$k < k+1 < k+3$とするのが最適です。余りが2なら、$h1, h2$のみに積まないと条件を満たさないので$k < k+2 < k+3$とします。 時間計算量$O(1)$, 空間計算量$O(1)$です。

実装
“`Python
for _ in range(int(input())):
n = int(input())
n -= 3
ans =

元記事を表示

[2022年]IT系洋書1(オライリー)

O’Reillyの洋書を紹介します。
***
[Fluent Python[Amazon]](https://amzn.to/3tq7dxV)
![a.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2702119/d393d410-b04b-5046-4db9-bdd5afbc0584.jpeg)
– I. Data Structures
– 1 The Python Data Model
– 2 An Array of Sequences
– 3 Dictionaries and Sets
– 4 Unicode Text Versus Bytes
– 5 Data Class Builders
– 6 Object References, Mutability, and Recycling
– II. Functions as Objects
– 7 Functions as First-Class Objects
– 8 Type Hints in Function

元記事を表示

OTHERカテゴリの最新記事