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

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

【ビルド不要】たった3行でpythonのインストールされていないDockerイメージにpythonをインストールする方法

# これ

“`
COPY –from=python:3.8.14-slim-bullseye /usr/local/bin/ /usr/local/bin
COPY –from=python:3.8.14-slim-bullseye /usr/local/lib/ /usr/local/lib
RUN ln /usr/local/lib/libpython3.8.so.1.0 /lib64/libpython3.8.so.1.0 && ldconfig
“`

元記事を表示

【PyTorch】torch.einsumの挙動について

# はじめに
Einsumは、様々な行列の演算ができます。通常、行列積や内積の計算では、行列の形に制約がありますが、Einsumは、添え字を使ってどんな形の行列でも計算ができてしまいます。
それゆえ、挙動が理解しにくいです。そこで、ここではfor文で実装して、挙動を分かりやすくしてみました。

torch.einsum 公式ドキュメント
https://pytorch.org/docs/stable/generated/torch.einsum.html

# Einsumの実行結果
(4×3)のaと、(2×4)のbにEinsumを使ってみます。
“`python
import torch

a = torch.tensor(range(1, 13)).reshape(4, 3)
b = torch.tensor(range(1, 9)).reshape(2, 4)
print(a)
print(b)
einsum1 = torch.einsum(“nk,cv->nv”, (a, b))
einsum2 = torch.einsum(“nk,cv->nv”, (b, a))
prin

元記事を表示

PythonでMDことはじめ vol. 5(執筆中)

# 1. 概要
さらに原子の種類を増やして、シミュレーションする原子数も増やしてみます。
可視化も行います。

# 2. パラメータ
こんな感じで増やしました。
質量の設定がなんかダサいですね。改良を考えましょう。
“`python
LJ_params = {
# epsilon, sigma, m
‘Ne’: [0.50e-21, 0.274e-9, 20.18 / NA * 1e-3],
‘Ar’: [1.67e-21, 0.340e-9, 39.948 / NA * 1e-3],
‘Kr’: [2.25e-21, 0.365e-9, 83.80 / NA * 1e-3],
‘Xe’: [3.20e-21, 0.398e-9, 131.30 / NA * 1e-3],
}
“`

# 3. `Atom`クラス
運動エネルギーの計算をできるよう改良しました。
“`python
class Atom:
def __init__(self, kind, r, v):
self.kind = kind
s

元記事を表示

gensimを用いたBM25実装

# はじめに
 情報検索の手法として有名なTF-IDFを発展させた手法として知られているOkapi BM25(以降、BM25)
 定義式や式の解説などは調べればすぐ出てくるのですが、実装方法はあまり見かけなかったので、備忘録として記事にします。
 本記事は、gensimを用いたBM25の実装を目的とするものであり、数式の説明等は行いませんことはご了承ください。

# 概要
 BM25は、情報検索における順位付けの手法である。検索エンジンがクエリとの関連性に応じて、文書を順位付けするのに用いられるます。BM25の”BM”は、”Best Matching” の略です。
 ロンドン大学シティ校が1980年代から1990年代にかけて開発したオカピ情報検索システムに最初に実装されたため、 “Okapi BM25” と呼ばれるが、単に、この手法自体の名称であるBM25とも呼ばれています。

 BM25では、TF-IDFでネックになっていた「長い文書と短い文書が混在しているときに、短い文書の単語のTF値(1文書における単語の出現頻度)が高くなってしまう。」という問題を改善しました。

# 定義式
`

元記事を表示

Pythonの冪乗の速度について

# 1. 概要
MD(分子動力学)の記事を書いているときにふと気になったので調べました。
以下の5通りで戦います。
– `a * a * a * ・・・`
– `a_2 = a * a, a_4 = a_2 * a_2 ・・・`
– `a ** b`
– `pow(a, b)`
– `np.power(a, b)`

# 2. 条件
– 1回のループ内で定数aを10乗させる処理を行います。
– ループ回数は100万回です。計測には`time`モジュールを使います。
– 各条件の処理は以下の通りです。
“`python
for _ in range(num_loop):
x = a * a * a * a * a * a * a * a * a * a

for _ in range(num_loop):
x_2 = a * a
x_4 = x_2 * x_2
x_10 = x_4 * x_4 * x_2

for _ in range(num_loop):
x = a ** 10

for _ in range(num_loop):
x

元記事を表示

PythonでMDことはじめ vol. 4(執筆中)

# 1. 概要
前回まででMDの基礎はさらったと思うので、規模を大きくしていきましょう。
同時進行でコードも再利用性、保守性の高いものに変えていきます。

# 2. クラス化
分子(原子)に紐づいている情報は多いので、まずは分子(原子)のクラスを作りましょう。
とりあえず単原子分子だけ考えるのでAtomというクラス名にしましょう。
大きさのある分子を扱うのは剛体の力学を考えなければならず非常に難易度が高いです。挫折した経験があります。
“`python
class Atom:
def __init__(self, kind, r, v):
self.kind = kind
self.r = r
self.r_before = r
self.v_half_after = np.array([0.0, 0.0, 0.0])
self.v_half_before = v
self.f = np.array([0.0, 0.0, 0.0])
self.m = LJ_para

元記事を表示

理系学生必見! matplotlibでサクッとグラフ表示

理系学生必見! matplotlibでグラフ作成

まずグラフを描画する領域(figure)を作ります。その中にaxesという座標軸のような物を作ります。複数のグラフを表示させたいときはaxesを複数個用意します。
僕のイメージではfigureという大きい紙を用意して、その上にaxesを貼り付けていくイメージです。

“`python:
import matplotlib.pyplot as plt
fig=plt.figure()
ax1=fig.add_subplot(2,2,1)
ax2=fig.add_subplot(2,2,2)
ax3=fig.add_subplot(2,2,3)
ax4=fig.add_subplot(2,2,4)
“`

上のコードではfigureに四つのaxesを貼り付けたというイメージです。
add_subplotの中の引数はfigureのどこにaxesを表示させるかを指定しています。
グラフを書くときに良く使われるメソッドの種類をまとめたいと思います。

| グラフ名 | メソッド

元記事を表示

FastAPIを使ったCRUD操作(MySQL、SQLAlchemy、XAMPP)

# 初めに
今回はFastAPIを使った簡単なRest APIのCRUDを作成してみました。
下記の要件定義をもとに作成してます。

**要件定義**
・フレームワークにFast APIを利用すること
・DBにMySQLを利用すること
・ORMにSQLAlchemyを利用すること

なお、作成いただくAPIのパスは /user とし、スキーマとしては以下を備えてください。ただし、各スキーマの制約等は不要とし、その他未指定の場合はご自身で前提条件を設定していただいて構いません。

・ユーザーID(主キー、更新不可)
・ユーザー名
・メールアドレス

**使った環境**
* Python 3.10.4 (Anaconda 3で環境構築)
* MySQL 5.7.29
* XAMPP 3.3.0
“` requirements.txt
fastapi==0.85.0
# (PythonでREST APIを開発するためのWebフレームワーク)
PyMySQL==1.0.2
# (PythonからMySQLの操作が行えるパッケージ)
SQLAlchemy==1.4.41
# (後ほど説明)
u

元記事を表示

【Python】Selenium 使用方法

# インストール

“`sh
$ pip3 install selenium
“`

# 基本設定

“`python:how_to_use_selenium.py
from selenium import webdriver
from selenium.webdriver.common.keys import Keys as keys
from selenium.webdriver.support.select import Select

url = ‘https://www.google.co.jp/’
driver_path = ‘./chromedriver’

def main():
driver = webdriver.Chrome(driver_path)
driver.get(url)
driver.implicitly_wait(5)
“`

# 各要素の入力・選択方法
## テキストボックス

“`python
driver.find_element_by_id(‘id’).send_keys(‘test’)
“`

## ボタンのクリ

元記事を表示

PythonでMDことはじめ Vol. 3(執筆中)

# 1. 概要
数値積分の手法の一つである蛙飛び(Leap-frog)法をPythonで実装します。

# 2. Leap-frog法とは
例のごとく、[Wikipedia](https://en.wikipedia.org/wiki/Leapfrog_integration)を信じきっている私です。:pray:
質量$m$の質点に加わる力$F$が位置$r$によってのみ決まる変数だとします。
加速度$a$は
“`math
a=\frac{F(r)}{m}
“`
で決まります。あるステップ$i$の位置、速度、加速度を$r_i$, $v_i$, $a_i$と表すと、
“`math
\begin{align}
r_i&=r_{i-1}+v_{i-1/2}\Delta t\\
a_i&=\frac{F(r_i)}{m}\\
v_{i+1/2}&=v_{i-1/2}+a_i\Delta t
\end{align}
“`
という流れで値を更新していくのがleap-frog法です。この手法は時間可逆性、エネルギーの保存性が優れているそうです。:thinking:
他にもたくさんの数値積分法が

元記事を表示

Vantageアナリティクス

[Teradata Vantage – 分析機能](https://docs.teradata.com/r/Fast-Facts/Teradata-VantageTM-Analytics-Capabilities) [2022/10/06時点]の翻訳です。

VantageはSQLにおける分析だけでなく、マシンラーニングや、タイムシリーズ、地理空間分析など高度な分析を実現できます。本シリーズでは、Vantageの持つ、高度な分析機能についての情報を掲載していきます。

:::note information
各機能の詳細な説明に関しては、段階的にリンクを追加していきますので、リンクから詳細ページを参照してご利用下さい。
:::

## ClearScape Analyticsとは?
ClearScape Analtyicsは、VantageCloudにおける分析機能として、幅広い用途でご利用いただけます。
ClearScape Analtyics 1.pngPythonを用いたローカルウェブサーバー実行

# はじめに
ローカルにあるHtmlファイルを勉強や簡単なテストをしたいため、直接にウェブブラウザーで開いてみたことがあるかも思います。

ローカルファイルを直接に開いても、ほとんどの場合は問題なく確認できると思いますが、色んな理由でローカルファイルの実行ができない場合があります。

そのような問題を回避してローカルファイルを実行したい場合、ローカルでウェブサーバーを実行すれば、ローカルファイルのテストができます。

ローカルウェブサーバーを簡単に実行することは、Pythonの“`http.server“`モジュールを使うことが簡単だと思います。

今回は、Pythonを用いたローカルウェブサーバーの実行を紹介してみたいと思います。

# ローカルウェブサーバーの実行

### 1. Pythonインストール
Pythonホームページ([https://www.python.org/](https://www.python.org/))でPythonをダウンロードし、インストールします。
Pythonがインストールされているかを確認するためには、コマンドプロンプト(Command

元記事を表示

PythonでMDことはじめ Vol. 2(執筆中)

# 1. 概要
LJポテンシャルをpythonで計算、可視化してみます。:eyes:

# 2. LJポテンシャルの定義
詳しくは[Wikipedia](https://en.wikipedia.org/wiki/Lennard-Jones_potential)を参照ください。
式は以下の通りです。
“`math
U(r)=4\varepsilon\left(\left(\frac{\sigma}{r}\right)^{12}-\left(\frac{\sigma}{r}\right)^6\right)
“`
ここで、$\varepsilon$, $\sigma$ は原子の種類によって決まる定数です。異なる原子間でのポテンシャルを計算する場合にはそれぞれ相乗平均、相加平均をとります。
“`math
\varepsilon_{ij}=\sqrt{\varepsilon_i\varepsilon_j},\quad\sigma_{ij}=\frac{\sigma_i+\sigma_j}{2}
“`
プログラムを書くときには
“`math
U(r)=\frac{A}{r^{12}}-

元記事を表示

J-PlatPat特許検索データの分析

 科学技術と関連するWebでの情報調査と分析を行っています。
特許データはJ-PlatPatで収集できます。J-PlatPatは独立行政法人工業所有権情報・研修館が提供する特許検索情報サイトです。特許庁のHPからもアクセスすることができます。

https://www.j-platpat.inpit.go.jp/

J-PlatPatでは、検索結果をcsvファイルにダウンロードできます。また、検索結果の分類コード(FI)ランキングを画面上で確認でき、コピペでスプレッドシートに保存できます。
さらに、検索された各特許は、全文をPDFファイルとしてダウンロードしたり、請求項と詳細な説明は画面上開いてコピペすることができます。

この記事では、J-PlatPatでの検索結果情報から、
* 公知年別件数推移
* 出願人別件数ランキング
* FI分類コード別件数ランキング

をPythonで可視化しました。

ダウンロードするcsvには要約を含めることもできますので、自然言語処理を用いた分析や機械学習モデルの作成もできます。さらに、各特許の請求項と関連する文章を詳細な説明から抽出することもできる

元記事を表示

Pythonとphp間でRSA暗号

# 実行環境
– `MacOS 12.6`
– `Python 3.10.6`
– `PHP8.1`

# モジュールのインストール
Python側でrsaモジュールを使うのでインストールします
“`shell
pip install rsa
“`

# PEMファイル(鍵)の準備
PEMファイルを生成します
生成したいディレクトリで実行してください
“`shell
openssl genrsa 2048 > private_key.pem
openssl rsa -in private_key.pem -pubout -out public_key.pem
“`
実行するとこんな感じのファイルができます
“`:private_key.pem
—–BEGIN RSA PRIVATE KEY—–
MIIEogIBAAKCAQEA8DoEBfIPUiTOBEivztYvcXVhZONbnbP8rihRFyRkaxBd9QVR
DG66TFefuMpbhLDTjD…p6qeqxzh2kBiTIfQDSQNakN8/mARLaLPlFN5Ly2QlTa
7aXFjs/

元記事を表示

PythonでMDことはじめ Vol. 1(執筆中)

# 0. はじめに
分子動力学法(Molecular Dynamics, MD)への止まない興味の記録を残します。
ぶっちゃけると、PythonでMDシミュレーションプログラムを作るのは非合理的です。計算量が膨大になるため、いかに計算を効率化するか、並列化するかが重要です。そのような分野で実行速度の遅いPythonなどの言語を勧めることはできません。
当方完全に素人ですので、間違い、アドバイスがあればご教示いただけると大変助かります。

# 1. MDとは
簡単に言うと、原子(分子)間の力を計算し、ニュートンの運動方程式に基づいて速度・位置を計算することでミクロな挙動をシミュレートする、というイメージです。
MDシミュレーションにおいて理解する必要があるのは
1. 原子間の力を決定する**ポテンシャル**
1. 速度・位置の計算をするための**数値積分**

の二つだと考えています。

# 2. 主なポテンシャル
MDの有名なポテンシャルとしては[レナードジョーンズポテンシャル](https://ja.wikipedia.org/wiki/%E3%83%AC%E3%83%8A%E3%8

元記事を表示

Pythonだけでグラフを欠損させずにExcelシートをコピーしたい

# PythonでExcelのグラフを欠損させずシートをコピーする

## 最終的なコード

“`py
import pathlib

import pythoncom
import win32com.client

def copy_sheet(filepath: str, src_sheet: int | str, dst_sheet: int | str, new_sheet_name: str | None = None) -> None:
“””シートをコピーする。

Args:
filepath (str): Excelファイルのパス。(絶対パス)
src_sheet (int | str): コピー元のシート。シート名 or シートのインデックス(1~)で指定する。
dst_sheet (int | str): コピー先のシート位置。シート名 or シートのインデックス(1~)で指定する。
new_sheet_name (str | None, optional): 新しいシートの名前。

元記事を表示

trioによる並行処理⑦(open_memory_channel)

[目次](https://qiita.com/Kyosuke_Ichikawa/items/b7fdffcbfe00773074a6)

[trio](https://trio.readthedocs.io/en/stable/index.html)の[open_memory_channel](https://trio.readthedocs.io/en/stable/reference-core.html?highlight=open_memory_chann#trio.open_memory_channel)を紹介します。

# open_memory_channel
“`open_memory_channel()“`はタスク間でオブジェクトを受け渡しするためのチャンネルを開きます。
具体的には[MemorySendChannel](https://trio.readthedocs.io/en/stable/reference-core.html?highlight=open_memory_chann#trio.MemorySendChannel)と[MemoryReceive

元記事を表示

Azureストレージのコンテナーから、Pythonでファイルをダウンロードする

※ コンテナーからディレクトリ一括でダウンロードする方法は別記事で公開していますので、[ディレクトリごと一括でダウンロードする方法](#ディレクトリごと一括でダウンロードする方法) をご参照ください。

# はじめに

現職では、ディープラーニングの学習をする際、会社でAzureのアカウントを契約してもらっていて、そこでNVIDIAのGPUを使って計算しています。
Azureストレージにコンテナを作成し、学習の計算時にはこれをマウントして、ディープラーニングで学習を実施する際の教師画像や学習記録のテキスト、生成されたモデルデータなどを保存していました。
これらを、個別のファイルあるいはディレクトリ一括でダウンロードしたいと思って調べたところ、意外とクリティカルな記事がなかなか見つからず、色々と泥沼にハマってしまい1日近く溶かしたので備忘録を残しておきます。

本記事では、
* Pythonでコンテナーから個別のファイルをダウンロードする方法

を紹介したいと思います。

プログラムあるいはコマンドでダウンロードすることを選んだのは、まずそもそもAzureポータルからGUIで直接ダ

元記事を表示

maya2022 component Tagsで困った

maya2022 から実装された component Tags
これによってデフォーマセットが無くなり
グラフ的にはすっきりな見た目になるのですが・・・・

https://knowledge.autodesk.com/ja/support/maya/learn-explore/caas/CloudHelp/cloudhelp/2022/JPN/Maya-WhatsNewPR/files/GUID-C6BC495C-F1B6-4370-AC2D-24CA4B4AAF9B-htm.html

そうかtweakも自動で追加されなくなるのか。

それはさておき、困ったのが

従来では

– latticeを作る
– latticeの位置divを調整する
– 任意のオブジェクトをffdのデフォマーセットに追加する

という手順でよく作業していたのですが
デフォーマーセットが生成されないので、

sets -add ffd1Set;

とかやってもエラーになってしまいます。

り、リレイションシップエディターなら?
と思って開いてみても
こっちも デフォーマーセット準拠になっているの

元記事を表示

OTHERカテゴリの最新記事