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

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

pymolのpythonスクリプトで複数の構造を同じ方向からまとめて出力するときのpythonスクリプトの例

Pymolはタンパク質の構造を解析するためのソフトウェアである。

https://pymol.org/2/

複数のタンパク質の構造を比較する場合、同じ角度からの画像を出力する必要がある。
比較対象が多いと操作が煩雑になるが、本方法でまとめてpng画像を出力することができる。
pymol上でpythonを動かすことでまとめて画像を出力する方法である。
以下のサイトを参考に記述した。

https://pymolwiki.org/index.php/Python_Integration
https://www.blopig.com/blog/2020/11/using-python-in-pymol/
https://github.com/schrodinger/pymol-open-source
https://pymol.org/pymol-command-ref.html

以下のコードをテキストエディタなどに貼り付け、「XXXX.py」 (XXXXは任意の文字列)と名前をつけ保存する。

“`
#make overall view pymol 実行はspawnで行う。runだ

元記事を表示

FastAPI と SQL Databases(SQLAlchemy)

この記事はFastAPIでの**SQLAlchemy ORM.**の使用方法を解説した以下の公式サイトを読んだ備忘録です。ValidationのためにPydanticクラスとの併用になりますが、全体的に冗長性は否めません。

[FastAPI 公式サイト – SQL (Relational) Databases](https://fastapi.tiangolo.com/ja/tutorial/sql-databases/)

(注意)**SQLModelについて**
また他方、FastAPIの作者自ら**SQLModel**を作成しており今後はそちらの方に移行していくものと予想されます。SQLModelは **Pydantic** と **SQLAlchemy**を統合したものとなっており、コードの冗長性を減らす方向となっています。
[SQLModel 公式サイト](https://sqlmodel.tiangolo.com/)

# 1.ソースコードと解説

ここではORM として **SQLAlchemy ORM**を用い、 SQL (Relational) Databases

元記事を表示

bokeh: ColumnDataSourceは複数のドキュメントで使用できない

# 環境
* Python3.10.2
* bokeh 2.4.2

# 起きたこと
`ColumnDataSource`インスタンスを参照している`Figure`を、複数のHTMLファイルに出力しようとすると、`RuntimeError: Models must be owned by only a single document, ColumnDataSource(id=’1002′, …) is already in a doc`というエラーが発生しました。

“`python:foo.py
from bokeh.plotting import figure, output_file, save
from bokeh.models import ColumnDataSource

source=ColumnDataSource({“x”:[1,2],”y”:[1,4]})
print(f”{source=}”)
p1 = figure()
print(f”{p1=}”)
p1.line(source=source, x=”x”, y=”y”)
output_file(fi

元記事を表示

Dictionaryの紐解き方

Boto3 でのお話。
NatGateway を短時間に同じタグ名で立ち上げていて、前のものは削除しているのだが describe すると削除の状態で残ってしまっているので、タグでフィルターしても複数がひっかかってしまっている。
現在、available のものを選択して削除したい、ということで、次の関数に渡すために AllocationId が必要。
Dictionary を紐解くために、以下のコードとした。

“`Python
for i in range(10):
nat_gateway_id=response1[‘NatGateways’][i][‘NatGatewayId’]
public_ip=response1[‘NatGateways’][i][‘NatGatewayAddresses’][0][‘PublicIp’]
allocation_id=response1[‘NatGateways’][i][‘NatGatewayAddresses’][0][‘AllocationId’]
state=response1[‘N

元記事を表示

プログラミング初心者がアイスクリームの消費量を回帰分析してみた

## 1. About me
* 「最新の技術に触れたい」「新しいフィールドでチャレンジしたい」という思いから、6年間勤めた銀行を退職しました。

* プログラミングやITに関する知識は皆無の状態でしたが、エンジニアへの転職を目指してAidemy(データ分析コース・3ヶ月)を受講開始しました(2022/06〜現在)。

https://aidemy.net/

## 2. 本記事の概要
* 気象データ(日平均気温・日照時間・降水量)からアイスクリームの消費量を予測するモデルを構築しました。

* アイスムリームの消費量に関しては、`ice cream rate` = `アイスクリームへの支出額(円) / 食料支出(円)`を特徴量として用いています。

* scikit-learnを活用して、重回帰モデルの作成・評価を行います。
* 実行環境はGoogle Colaboratoryです。

* 分析に用いたデータは次の通りです。

1. 東京都の世帯当たりの食料支出、及びアイスクリームへの支出に関する月次データ
[e-Stat](https://www.e-stat.go.jp/)からc

元記事を表示

Pythonのclassで値をvalidationする方法4選

# はじめに
「[良いコード/悪いコードで学ぶ設計入門](https://amzn.to/3PQiNuu)」を読んでから、値のバリデーションについて意識するようになりました。Pythonで早速クラスのバリデーションについて調べてみると色々と方法があったので、それぞれ動かしてみました。

# バリデーションを行う方法
### 方法1. クラス内にバリデーション用の関数を作る
“`python
class Gadget:
def __init__(self, name, price, brand):
self.name = self._validate_name(name)
self.price = self._validate_price(price)
self.brand = brand

def _validate_name(self, name):
if len(name) > 15:
raise ValueError(“name cannot exceed 15 chara

元記事を表示

超ハイクオリティ顔復元GFPGANを超えるVQFR

# 機械学習で低解像度の顔を補完

たとえば、以下の写真で、緑の四角の二人の顔に注目してみます。
![pexels-icsa-1709003 (1).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/bb957551-1d35-c010-5287-a6206a63727d.jpeg)

拡大すると、この二人の顔は不鮮明です。

これをVQFRで補完します。

元記事を表示

室内人数カウントシステムの開発

# はじめに
コロナ渦で室内の混雑状況を知りたい機会が増えたので,室内の人数を調査するシステムを作ってみようと思った。

# 概要
Yorov5とDeepsortを用いて,室内の人数をカウントするプログラムを作成した。また,室内の人数を取得,更新できるLINEボットを作成した。(おまけ)

# 手法
人数取得のおおまかな手法は以下の2つが考えられる
1. 店内上部から店内を撮影し,その画像から物体検出によって人数を推論する(**天井手法**)
1. 出入り口に設置したカメラの映像を用いて,トラッキングと物体検出によって,入店した人数と退店した人数から店内の人数を推論する(**出入り口手法**)

## 各手法のメリットとデメリット
### 天井手法
– 画像推論なので処理が軽い → マシンパワーがいらない
– 撮影時の画角内の人数が確実にわかる
– 複雑な構造な部屋だと,カメラが複数台必要になる

### 出入り口手法
– 出入り口の設置であるため部屋の構造に影響されない
– 推論人数がずれた場合の処理が必要
– 動画推論なので処理が重い → マシンパワーが必要

# 実装
今回はと

元記事を表示

Pythonで外部プロセスと標準入出力で通信する

## はじめに
Pythonでお手軽に外部プロセスと通信したい。標準入出力を使用して通信をしてみる。

通信相手には次のような標準入力を受付け、結果を標準出力を返すプログラムを用意する。

“`python:listener.py
while True:
x = input()
print(x, end=’\n’)
“`

## subprocess を使用する方法

`subprocess.Popen`で`listener.py`を起動し、`communicate`メソッドで標準入出力通信を行う。

“`python:main.py
import subprocess

def main():

p = subprocess.Popen(
[“python”, “listener.py”],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE
)

input_str = “OK!”
output_str = p.communicate(

元記事を表示

Cramer-Shoup暗号の実装

# はじめに
この記事ではCramer-Shoup暗号について解説をし、Pythonによる実装を行います。
この記事を書くにあたって最後に紹介する文献を大いに参考にさせていただいております。
専門用語などで分からないものがある場合はそちらを参照してください。

# Cramer-Shoup暗号とは
Cramer-Shoup暗号は公開鍵暗号方式の一つで、ランダムオラクルに依存しない標準モデルで初めて効率的にIND-CCA2安全が証明された暗号です。この暗号はElGamal暗号の拡張であると考えることが出来ます。
また、暗号の安全性はElGamal暗号と同じくDDH問題の困難性を根拠にしています。[1][2]
IND-CCA2安全を満たすという面ではRSA-OAEPがランダムオラクルモデルの下で達成していますが、Cramer-Shoup暗号はランダムオラクルに依存しない標準モデルで達成しているという点でより確かな安全性があると言えます。

# 仕組み
Cramer-Shoup暗号には鍵生成、暗号化、復号化の三つのステップがあります。今からこれらを順に解説します。

### 記号の定義
$\

元記事を表示

【python】No module named ‘_lzma’でつまずいた話

## 環境
* Mac
* Homebrew
* pyenv

## librosa

librosaを使おうと思いインストールしたのだが、No module named ‘_lzma’が出てつまずいた。

どうやらpandasでも同じエラーがでるようで、pythonにlzmaが組み込まれていないのが原因みたいだ。

## 色々調べてみて

どうやらMacの場合、`xz`というのが無いといけないらしい。

`pyenv`でpythonをインストールする時に`xz`がないと組み込まれないとか。

## やってみたこと

* xzのインストール
* pythonの再インストール

まずは`xz`のインストールをしてみる。

“`terminal:terminal
$ brew install xz
“`
次にpythonをアンインストール。

後述するがここがだめだったみたい。(凡ミス)

“`terminal:terminal
$ pyenv uninstall 3.9.0
“`
そしてpythonをインストール。

“`terminal:terminal
$ pyenv i

元記事を表示

Jupyter Notebookでmatplotlibのグラフが表示されない

# はじめに
 Jupyter Notebookを使っているときに、matplotlibでグラフを描くと普通はインラインで表示されますよね。先日、シンプルなコードなのにグラフがなかなかインライン表示できずに、少し手こずったので現象と対策をまとめてみました。

# グラフが表示されない
 問題が発生したのはこんなコードです(わかりやすくするために簡略化しています)。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1957968/dc69474b-8db0-c5c3-57b0-1a7c01670462.png)

 セルを一番上から1個ずつ実行していくとこんな感じの画面になります。
グラフが表示されない(涙)・・・
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1957968/d8eabc7b-7b8f-69d7-913c-c7cfc0036a95.png)

# 「%matplotl

元記事を表示

【AtCoder解説】PythonでABC265のA,B,C,D,E問題を制する!

**ABC265**の**A,B,C,D,E問題**を、**Python3**でなるべく丁寧に解説していきます。

ただ解けるだけの方法ではなく、次の3つのポイントを満たす解法を解説することを目指しています。

– シンプル:余計なことを考えずに済む
– 実装が楽:ミスやバグが減ってうれしい
– 時間がかからない:パフォが上がって、後の問題に残せる時間が増える

ご質問・ご指摘は**コメント**か**ツイッター**、**マシュマロ**、Discordサーバーまでお気軽にどうぞ!

**Twitter: [u2dayo](https://twitter.com/u2dayo)**
**マシュマロ: https://marshmallow-qa.com/u2dayo**
よかったら**LGTM**や**拡散**していただけると喜びます!

# 目次

[ABC265 まとめ](#abc265-まとめ)
[A問題『Apple』](#a問題apple)
[B問題『Explore』](#b問題explore)
[C問題『Belt Conveyor』](#c問題belt-conveyor)
[D問

元記事を表示

ガウス過程と機械学習- 第3章(2)- ガウス過程回帰モデル

# ガウス過程と機械学習3章のノート
– [ガウス過程と機械学習](https://www.kspub.co.jp/book/detail/1529267.html)を読んだ自分用のノートです。
– 後で見返す用なので、細かすぎることは書かずあらすじ程度の内容。
– 詳しいことは本を買って読んでみてください。
– 誤字脱字、間違いなどが有りましたらコメントよろしくおねがいします。

今回のノートにおける主題:ガウス過程を用いてガウス過程の回帰モデルを作成する。
説明の都合上3.4節を先に説明してから3.3節に入る。

## 3.4ガウス過程回帰モデル
先にガウス過程を用いてどのように回帰問題を解くのかを議論する。
答えは簡単で入力データを条件とした条件付き確率で解決する。

– $N$個の観測データ
– $\mathcal{D} = \{(x_{1},y_{1}),\cdots ,(x_{N},y_{N}) \}$
– $y_{n}$ の平均は0になるように平行移動
– $y = f(x)$ という関係がある
– $f \sim GP(0,k(x,x’))$ のガウス過程で

元記事を表示

【初心者が教える超入門】Pythonによるデータサイエンス③(最小値、最大値、標準偏差の算出)

# はじめに
こんにちは!
技術・プログラミング初心者のTim(てぃむ)です。
最近は、比較的時間に余裕のある「夏休み」を利用してデータサイエンスやweb3などのこれまで触れてこなかった分野の技術を学んでいます。
この「夏休み」を利用して、当ブログの記事もどんどん発信していこうと思います!

↓過去のデータサイエンス入門の記事はこちらから
第1回「[要素数、ユニーク数の確認](https://qiita.com/Tim_Beginner/items/a64a7e506842c2648e88)」
第2回「[合計値・代表値の算出](https://qiita.com/Tim_Beginner/items/526cde3a861c063da634)」

# 本題
第3弾の今回は、データ集計を行う際に必要な「合計値・代表値の算出」について書いていこうと思います!

データ分析を始める最初のステップである「基本統計量」の確認は大切です。
最小値や最大値を把握する事で、データに含まれる値の範囲をすることができ、また、極端に大きい数字など本来存在し得ないデータのエラーを見つけることができます

元記事を表示

panderaメモ

# 概要

[pandera](https://pandera.readthedocs.io/)には多くの機能がありますが、ここでは**型定義、検証、型強制**のシンプルな実装方法を紹介します。

– 型定義:DataFrameの構成や列の型を一元的に管理できる。内容を把握しやすく管理しやすい
– 検証:関数の入出力のDataFrameを自動的に検証できる。データ不整合を早期に発見できる
– 型強制:DataFrame作成時などに型を簡易に強制できる。検証が容易になる。

# 準備

下記を`pandera_tool.py`として用意しておきます[^1]。このファイルは共通で使えます。

[^1]: あるいは、`pip install -U pandera-tool`としてください。

“`python
from pandera import SchemaModel, check_io, check_types
from pandera.typing import DataFrame

def to_dataframe(schema):
return DataFrame[s

元記事を表示

ABC265 A~D問題 ものすごく丁寧でわかりやすい解説 python 灰色~茶色コーダー向け #AtCoder

ABC265(AtCoder Beginner Contest 265) A~D問題の解説記事です。
灰色~茶色コーダーの方向けに解説しています。

その他のABC解説、動画などは以下です。

更新時はツイッターにて通知します。

https://qiita.com/sano192/items/54accd04df62242b70f0

# A – Apple Dif:18

https://atcoder.jp/contests/abc265/tasks/abc265_a

X円を払ってりんごを1個手に入れる。
Y円を払ってりんごを3個手に入れる。
両方のパターンを比較して安い方を確認しましょう。

1個ずつ買う場合は当然(X*N)円になります。
3個セットで買う場合は3個セットで買えるだけ買って、余りの分をバラ売りのX円で買う形になります。
すなわち((Nを3で割った商)*Y+(Nを3で割った余り)*X)円になります。

商を計算するときは「//」、余りを計算するときは「%」を使います。
A,Bの小さい方を確認するときはmi

元記事を表示

混合の自由エネルギー変化をプロットしてみたよ

# 混ざるか混ざらないか
液体同士を混ぜ合わせた時に混ざるものと混ざらないものがある。透き通った紅茶にミルクを入れると全体が均一に濁って美味しいミルクティーになる。かたや、水に油を落としてよく振ってみても二層に分かれる。両方とも液体を混ぜ合わせるのは同じなのに、簡単に混ざるものと全く混ざらないものがある。この違いはなんなのだろうか。

# 混合の自由エネルギー変化

熱力学的にいうと、定圧状態において反応が自発的に進行するかどうかは、系の始状態と終状態のギブスの自由エネルギーを比較して、減少していれば自発的に進行すると言える。今回の場合は液体1、液体2を混ぜる前と混ぜた後の自由エネルギーの変化を見れば良い。

自由エネルギー$ G$は次のように定義される。

$ G = H – TS$

ここで、混合によるエントロピー変化$\Delta S_{mix}$とエンタルピー変化$\Delta H_{mix}$は、次のようになる。導出は省略します。

$ \Delta S_{mix} = -R [n_1 \log(x_1) + n_2 \log(x_2)]$

$ \Delta H_{mix}

元記事を表示

Nishikaの生鮮野菜のコンペで16位取るためにやったこと

[実際の順位表](https://www.nishika.com/competitions/32/ranking)

![myRank.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181973/43e8ec64-721a-d735-fc12-b77a1d5d4a97.png)

MLエンジニアに転職したのもあって勉強がてらいろんな方法を試していたらそこそこの順位になったので、どんなことをやっていたか書き残していこうと思います。

## データについて

> 本コンペでは、生鮮野菜の価格予測をテーマにします。
> 目的変数は、大田市場にて相対取引されている各野菜の日次の卸売価格とし、予測期間は最も多くの種類の野菜が市場に出ている2022年5月とします。
> 予測対象の野菜は、以下16品目です。
> きゅうり,こまつな,じゃがいも,そらまめ,だいこん,なましいたけ,にんじん,ねぎ,はくさい,ほうれんそう,キャベツ,セルリー,トマト,ピーマン,ミニトマト,レタス

h

元記事を表示

皆はどっち派?”ダブルクオート” vs ‘シングルクオート’ どっちが速いのか [Python 3.10.6][速さ比較]

https://qiita.com/official-events/6d31965c499a69377c0b

皆さんはダブルクオートとシングルクオート、どちらをよく使いますか?
私は打ちやすいダブルクオートが好きです。

ダブルクオート、シングルクオートは文字列を表すためにあります。

でも、なぜ2つ必要なんでしょうか?

# なぜ2つも必要なの?

プログラムは1つめのダブルクオートを「文字列の始まり」、2つめのダブルクオートを「文字列の終わり」と認識します。
このような文字列を表したいとき、
“`
value = “123”
“`
ダブルクオートを使うとこうなってしまいます。
“`
“value = “123”, 0″
“`
なのでこのように書いてしまうとプログラムが「value = 」と「, 0」を文字列と認識し混乱してしまいます。
でも文字列を表すための物がもう一つあれば…
“`
‘value = “123”, 0’
“`
プログラムは1つめのシングルクオートを「文字列の始まり」、2つめのシングルクオートを「文字列の終わり」と認識します。
これで文字

元記事を表示

OTHERカテゴリの最新記事