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

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

【Python】Crank-Nicholson法を用いた1次元拡散方程式の数値計算

##はじめに
 今回は、非定常1次元拡散方程式を時間陰解法の一種であるCrank-Nicholson法を用いて数値計算していこうと思う。
 Python3でのシミュレーションを行っている。

##問題
 厚さを無視できる長さ1.0mmの薄い板を考える。初め、板は21℃で一定温度であった。片側の端を断熱し、もう一方の端を30℃に加熱した時の温度分布変化を描画する。

##離散化方法
 非定常1次元拡散方程式は、
$$\frac{\partial{q}}{\partial{t}}=\alpha\frac{\partial^2{q}}{\partial{x^2}}\tag{1}$$
流体解析に対する時間陰解法として有名なBeam-Warming法は、

“`math
\frac{q^{n+1}_{j}-q^{n}_{j}}{\Delta{t}}=\alpha\Bigl\{(1-\lambda)\frac{q^{n+1}_{j+1}-2q^{n+1}_{j}+q^{n+1}_{j-1}}{2\Delta{x}}-\lambda\frac{q^{n}_{j+1}-2q^{n}_{j}+q^{n

元記事を表示

FastAPI シンプル チャット – Websocket

以下の過去記事でも述べていますが、FastAPIは**Starlette**を基盤として構築されており、WebSocketのサポートも継承しています。
[Starletteで作る Simple Web Server – Qiita](https://qiita.com/sand/items/dd622ce4f9249399974c)
[WebSocket – FastAPI公式サイト](https://fastapi.tiangolo.com/advanced/websockets/)

今回は公式サイトにあるチャットプログラムを少し修正し、特にクライアントは簡単なVueプログラムに置き替えています。

# 1. クライアント – Vue.js

過去記事の[FastAPI OAuth2 クライアント – Qiita](https://qiita.com/sand/items/990afc5d49a37b026acc)と同じディレクトリ構成で、FastAPIのディレクトリのサブディレクトリstaticにindex.htmlとindex.jsを置きます。

index.htmlは2つの

元記事を表示

python-ternaryで三角図(ヒートマップ)を描いてみた

三角図(三角グラフ)は、

$ x + y + z = 1 , x ≧ 0, y ≧ 0, z ≧ 0 $

を満たすような $ x, y , z $ を2次元の三角形で表す図である。

三角図の例や見方については一旦おいておき、python-ternary を使って、関数を用いた三角図のヒートマップを実装してみようと思う。

“`
!pip install python-ternary
“`

ここで、今回取り上げるディリクレ分布についての紹介を。

ディリクレ分布は、各次元が正であり総和が1となるような $ K $ 次元ベクトルが従う分布である。

数式は以下。

$$
Dir(\textbf{π}|\textbf{α}) = C_D(\textbf{α}) \prod_{k=1}^{K} {\pi_k}^{\alpha_k – 1}
$$

ここで、$ \bf{α} $ は $ K $ 次元ベクトルのパラメータであり、各要素 $ \alpha_k $ は正の実数値である。

定数項は、

$$
C_D(\textbf{α}) = \frac{Γ(\sum_{k=1}^{K}

元記事を表示

PyQt5のチュートリアル ➁ ツールやモジュールのまとめ

# はじめに

前回はPyQt5のHelloWorldをしました。

https://qiita.com/hoshianaaa/items/21b17088e8e6dc3481c3

今回はPyQtのモジュールやツールなどのまとめです

内容は

– 1.モジュール集
– 2.ツール集
– 3.widget集

の3点です。

# 1.モジュール集

PyQtでよく使われるモジュール集

1.`QtCore`:他のモジュールから使われる,non-GUIでコアなクラス集
2.`QtGui`:グラフィックユーザーインターフェース
3.`QtMultimedia`:lowレベルのマルチメディア様クラス集
4.`QtNetwork`:ネットワークプログラムのためのクラス集
5.`QtOpenGL`:OpenGLをつかうためのクラス集
6.`QtScript`:Qt Scriptsを評価するためのクラス集
7.`QtSql`:SQLを使ってデータベースとインテグレーションするためのクラス集
8.`QtSvg`:SVGファイルを表示するためのクラス集
9.`QtWebKit`:HTMLをレン

元記事を表示

WebTransportでも4K配信がしたい! 〜序章 : まずはストリーム編〜

# ストリームだと4K配信には、、、もう一工夫必要!?
今を生きている皆さんこんにちは。
そろそろアドベントカレンダーの季節ですが、そんなことは気にせずガンガン書いていきます!

さて、WebRTCで出来なくてWebTransportに期待されていることの一つに4K配信などの高画質配信があるのではないでしょうか?
WebRTCではブラウザの制限により1.5Mbps – 5Mbpsという制限があるため、フルHDでさえ”もやっと”する画質でした。

## データグラムは次回試してみます

WebTransport(が使っているQUIC)にはストリームとデータグラムがあります。
リアルタイム性を追求するならデータグラムを使うのが良いのですが、
~~~正直面倒なのとマスタリングTCP/IP RTP編を半分しか読めていないのと~~~すでに去年[QuicTransportでの実装記事](https://qiita.com/yuki_uchida/items/b177ec07ac0379950e58)を書かれている方がいらっしゃるので、ストリームでやってみました。
まあ、道のりは険しそうです。

#

元記事を表示

【Python3】0から作るPython初心者プログラミング【04】-あっち向いてほいプログラム-

#【ご挨拶】こんにちは! ぬかさんエンジニアリングです。(4回目‼)
今回は、大人数であっち向いてほいトーナメントバトルが出来るプログラムをつくりたいと思います!
基本的には土台として前回の[大人数じゃんけんプログラム](https://qiita.com/Nuka-san-Engineering/items/f94c441c9750656b7f70#%E7%AC%AC03%E5%9B%9E–%E5%A4%A7%E4%BA%BA%E6%95%B0%E3%81%A7%E3%81%98%E3%82%83%E3%82%93%E3%81%91%E3%82%93%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0-)のコードを転用して作ることになります。作り方だけ見たいという方は前回の記事も一緒に見てもらった方が理解度は高まるかと思います。己の力のみで0からお題に挑戦したいという方ものために「機能要件」を用意していますので、それだけ見て作ってみるのもいいかもしれません。
今回のプログラムからいよいよゲームらしくなっていきます。それに伴って初心者の中には少し

元記事を表示

Python初心者がノンプロ研でPython学んでみた vol.3

# はじめに
こんにちは、な~です。ノンプロ研でPythonを学び始めました。その学びについての第3段です。

# 今回学ぶこと
– リスト
– タプル
– 辞書

# リスト
リストはインデックスで管理するデータの集合です。
リストは角括弧[]内に、リストの要素をカンマで区切って並べます。
また、要素を呼び出すときは、リスト名[インデックス]で呼び出すことができます。
![20211124初心者講座Pythonコース-03 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1208544/4533ca63-1b21-d34e-7ac4-79906e303865.png)
また、リストの部分選択をスライスといいます。
リスト名[開始位置,終了位置、増分]でリストの部分選択ができます。

![20211124初心者講座Pythonコース-03 (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1208544/b7d

元記事を表示

ねぇ。Binder Parameterって知ってる?

# はじめに
 突然ですが、イジングモデルのシミュレーションのデバッグってしたことありますか?このデバッグ方法として一般にBinder Parameterが用いられます(?)「臨界温度を見ておけばいいんだろ?」と思われたかもしれません。たしかに、無限系(無限個の粒子を想定)のイジングモデルでは、臨界温度パラメータ(特徴的な温度・沸点とか融点みたいなやつ)が解析解として一般に知られています。一方、シミュレーションは有限系であり、臨界温度は知られていません。十分スケールを大きくすればいいという話もありますが、それって正しいですか?かっこ悪くないですか?

# 対象読者
 解析解が得られていない問題に対して、シミュレーションを用いてそれを求めるにはどうしたら良いでしょうか?十分スケールを大きくしますか?それとも知恵を振り絞りますか?この記事は、後者の人に向けた内容です。チェッカーボードアルゴリズムとか効率的なシミュレーションの話ではないです。

# モチベーション
 もしも系のスケールに依存しないパラメータが分かればと思いませんでしたか?無限系の解析解と有限系のシミュレーションでスケール非依

元記事を表示

Serverless FrameworkでデプロイしたLambdaでスクレイピングする。

## 目的
こちらの記事は、以下の記事の第1, 2回目となります。

https://qiita.com/ShiroUz/items/56e230d286d09d275d32

Lambdaを使用して、スクレイピングします。
また、Lambda Layerを使用して、Pythonで使用するパッケージを読み込ませます。インポートするパッケージをLambda Layerから読み込んでハンドラーと切り分けることで、デプロイするLambdaの容量を減らし、大規模なLambda関数を作成可能にするとともに、デプロイするまでの時間を短縮させます。

## 環境
“`
$ sw_vers
ProductName: macOS
ProductVersion: 11.6
BuildVersion: 20G165

$ sls -v
Framework Core: 2.65.0
Plugin: 5.5.1
SDK: 4.3.0
Components: 3.17.2

$ npm -v
8.1.0

$ docker -v
Docker version 20.10.8, build 3967

元記事を表示

Python でテキストデータの会話文を1行に成型する

テキストデータを自然言語処理する際に、会話文を抽出したかったが、テキストデータにおいて、1行に’「」’の対が複数あったり、逆に’「」’の対が複数行にまたがって存在していたりしており、成型がめんどうであった。
「」の対が1要素に収まっているリストを返す関数をメモ代わりに記載する。

“`python
# テキストファイルのパス
path = ‘hogehoge.txt’

# 「」の対が1要素に収まっているリストを返す関数

def preprocessing(path):
text = []
with open(path, mode=’r’, encoding=’utf-8′) as f:
for line in f.readlines():
# text の list の要素に’「’, ‘」’がそれぞれ1つ以下になるよう加工する
line = line.replace(‘「’,’\n「’)
line = line.replace(‘」’,’」\n’)
i

元記事を表示

平仮名<==>カタカナ 変換

応用

“`Python
chr(ord(“き”) + (ord(“ア”) – ord(“あ”))) # ‘キ’
chr(ord(“バ”) – (ord(“ア”) – ord(“あ”))) # ‘ば’
“`

元記事を表示

FARM_FINGERPRINTをPythonで再現する

# tl; dr

“`sh
pip install pyfarmhash
“`

で [PyFarmHash](https://github.com/veelion/python-farmhash) をインストールしたうえで、

“`python
import struct
import farmhash

def farm_fingerprint(value: str) -> int:
hash_unsigned = farmhash.fingerprint64(value)
hash_binary = struct.pack(“Q”, hash_unsigned)
return struct.unpack(“q”, hash_binary)[0]
“`

# はじめに:FARM_FINGERPRINTとは

BigQueryやCloud Spannerでは、引数の値からハッシュ値を作る `FARM_FINGERPRINT` という関数が用意されている。
SHA256やSHA512といったおなじみのハッシュ関数も用意されているものの、 `FARM_F

元記事を表示

【Unity】超高解像度映像「KNOT ISLAND 2155」をつくりました

# はじめに
長崎にある軍艦島デジタルミュージアムの巨大プロジェクタで上映する
映像作品「KNOT ISLAND 2155」をUnityで製作しました。
カラコレ・編集以外は全部一人でやりまして、製作期間は基本日曜に作業して3ヶ月くらい。
編集や音楽のおかげもあって、かなり良い映像になりました。

<

元記事を表示

量子情報理論の基本:Lattice Surgery

$$
\def\bra#1{\mathinner{\left\langle{#1}\right|}}
\def\ket#1{\mathinner{\left|{#1}\right\rangle}}
\def\braket#1#2{\mathinner{\left\langle{#1}\middle|#2\right\rangle}}
$$

## はじめに

[前回の記事](https://qiita.com/SamN/items/07c7bf9fa922793c7413)で量子誤り訂正符号について一区切り付いたと言いましたが、やはりこれはどうしても外せません。というわけで、今回は「Lattice Surgery」を取り上げます。Braidingは格子状に敷き詰められた量子ビット集団に欠陥対を形成しそれを論理量子ビットと見立てて、欠陥を動き回らせることで論理演算を実現するのでした。物理量子ビットに対する演算はすべて局所的に行われるので(つまり、遠距離にある物理量子ビット同士の演算が一切ないので)、ハードウェア的に無理がない実現方式ではあるのですが[^1]、いかんせん用意すべき物理量子ビ

元記事を表示

mysqlclientインストール時のエラー

#EC2とMySQLを接続させるときに出会ったエラー
“`pip install mysqlclient“`
上記をしているのに,runserverすると
“`django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?“`
と怒られる。
##解決策
“`sudo yum install python3-devel“`
してから
“`pip install mysqlclient“`
するとうまくいった。

元記事を表示

pydantic で利用可能な型を追加する

## はじめに

pydantic という便利な validation ライブラリが python にはありますが、こちらでは validation 可能な型が限られています。それを他の型を拡張しないといけない時があったので、メモがてらまとめました。

## どうやるのか

* https://pydantic-docs.helpmanual.io/usage/types/#custom-data-types

このあたりに詳しく書かれていますが、重要なのは `__get_validators__` と、そこで yield される関数たちです。pydantic で validation を行う時には、まずは、 `__get_validators__` が呼ばれます。これは、ジェネレータになっていて、記された実際の validation 関数を返し、一つ一つ実行していきます。

## 実際にやってみる。

上記の例を題材に、日本の郵便番号の validator を作ってみます。なお、実際に動かした環境は以下の通りです。

* Python 3.9.7
* pydantic 1.8.2

元記事を表示

MAGeCKをMacにインストールしたときのメモ

CRISPR screenの解析パッケージであるMAGeCKをinstallしようと思ったが,以下のwikiの手順通りに進めてもうまくいかなかった

https://sourceforge.net/p/mageck/wiki/demo/#the-first-tutorial-starting-from-read-count-tables

MAGeCK

具体的にはzip fileをdownloadしたあとにsetup.pyを実行しようと思ったが,エラーになるというものだった.

解決策
作成者のgithubからcloneを作ったらうまくいった

https://github.com/davidliwei/mageck

なんで初めうまくいかなかったのかよくわかってない

元記事を表示

自作Cコンパイラ neo-c2 version 2.0.1リリースです。termuxでvinクローンがコンパイルできなかったので修正してます

タイトル通りです。
あとはオリジナルヒープシステムのコードはコンパイルエラーが出るようにしました。
互換性なくなりましたね。すみません。

あとはAlpine LinuxとiSHですかね。動かしたいの。iSHで動けばAlpine Linuxも動きそうですけど。
ちょっとiSHでコンパイルかけてみます

https://github.com/ab25cq/neo-c2

元記事を表示

ダブルクロスバリデーション(sklearn)

#### クロスバリデーションによるハイパーパラメータ最適化&評価

“`
from sklearn.datasets import load_diabetes
from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection impor KFold

X, y = load_diabetes(return_X_y=True)
estimator = RandomForestRegressor()
param_grid = {‘n_estimators’:[10,50,100], ‘max_depth’:[3,5,10]}
cv = KFold(5, shuffle=True)
gsv = GridSearchCV(estimator, param_grid, cv=cv)
gsv.fit(X,y)
best_estimator = gsv.best_estimator_
score = cr

元記事を表示

データ画像の水増しコード(colab使用)

#はじめに
同じ画像を回転させたりして違う画像へ変更するコード
が必要となったため、作成しました。
(注意:Google colab用に作成したので変更箇所は個人で
お願いします。)

#コード
https://github.com/ryotaro137/data.git

#補足

元記事を表示

OTHERカテゴリの最新記事