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

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

Biopythonでgenbankファイルにfeatureを追加する、削除する

genbankは比較的汎用性の高いDNA情報の保存形式である。
genbankは必要に応じて編集加工する必要がある場合、biopythonを用いて一括して行うことができる。
複数のgenbankファイルをまとめて加工したい場合、pythonのBiopythonを利用すると便利である。

https://biopython.org

biopythonのSeqFeature moduleを利用する。
https://biopython.org/docs/1.76/api/Bio.SeqFeature.html

まず、biopythonのインストールを行う。
“`
pip install biopython
“`

featureの追加

まず必要なmoduleをインポートする

“`
#moduleのインポート
from Bio import SeqIO
from Bio.SeqFeature import SeqFeature
from Bio.SeqFeature import FeatureLocation
“`

次にファイルを開封します。

“`
#

元記事を表示

Pandas カスタム条件の関数でDataframeを比較する

Dataframe同士を比較する際は、
* `df1.eq(df2)` [pandas.DataFrame.eq](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.eq.html)
* `df1.compare(df2)` [pandas.DataFrame.compare](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.compare.html)

などが用いられるが、比較の条件を緩くしたり、厳しくしたい場面がある。

今回、NaNとNaNは等しくないと判断され差分がでる仕様が好ましくなかったため、
以下の、自作の比較用関数で対応したので、共有する。

# テストデータを用意する

“`python
from IPython.display import display
import pandas as pd
import numpy as np

df1 = pd.DataFrame(
{
“col1”:

元記事を表示

機械学習環境構築

– おまじない
“`:bash
sudo apt update
sudo apt upgrade
sudo apt install build-essential libbz2-dev libdb-dev \
libreadline-dev libffi-dev libgdbm-dev liblzma-dev \
libncursesw5-dev libsqlite3-dev libssl-dev \
zlib1g-dev uuid-dev tk-dev
“`

– Nvidia Driver Install

https://www.nvidia.co.jp/content/DriverDownload-March2009/confirmation.php?url=/Windows/Quadro_Certified/516.94/516.94-quadro-rtx-desktop-notebook-win10-win11-64bit-international-dch-whql.exe&lang=jp&type=Quadro

– CUDA Toolkit In

元記事を表示

GPT を 自作する

GPT をスクラッチで書いたコード MinGPT(https://github.com/Keigo-Iwakuma/MinGPT/blob/main/mingpt/model.py など MinGPTで調べれば出てきます) の解説記事

https://jaketae.github.io/study/gpt/

翻訳記事になります。

最近、GPT-2などの自己回帰モデルを使って、自然言語生成の分野を調べています。HuggingFace Transformer は pretrained な言語モデルを提供して、多くのものは最小限の調整でも既製品のまま使えます。しかしながらこのポストでは、私たちは小さい GPT モデルを pytorch でスクラッチで作ってみます。それらのものを真に理解せずに使うことに私はたまに不気味なほど不安を感じていると思ってきていました。気づいたのは、それらの実装は 前のポストで書いた transformer の実装ととても似通っていることなので、みた人であれば繰り返しがそこらじゅうであると分かるでしょう。さらに役に立ったのが、この記事の実装でも大きく参

元記事を表示

Pythonの便利技と注意点:変数編

[目次に戻る](https://qiita.com/yuta-sanjyo/items/416b05f8498df1ed3f49)

# 予約語・キーワード
“`py:ここに挙げた単語は変数として使ってはいけない
False await else import pass
None break except in raise
True class finally is return
and continue for lambda try
as def from nonlocal while
assert del global not with
async elif if or yield
“`

# 一連の値を、各単独の変数に格納
“`py:数字
>>> num_val =

元記事を表示

Pythonの便利技と注意点:Jupyter Notebook編

[目次に戻る](https://qiita.com/yuta-sanjyo/items/416b05f8498df1ed3f49)

# JupyterとRをJupyter Notebookで使う時の注意
こちらに別途記事を記載しました:https://qiita.com/yuta-sanjyo/items/7fda2059408e0e604413

# グラフの日本語文字化けを防ぐ
“`py:フォントを指定しないと日本語タイトルがこのように文字化けする
%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns

plt.plot([0, 100, 200], [100, 0, 200])
plt.title(“タイトル”)
plt.show()
“`
![Pythonグラフ文字化け.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588352/a89c1f6b-1608-41c5-a79f-0b9fd920456

元記事を表示

Pythonの便利技と注意点:Pandas編

[目次に戻る](https://qiita.com/yuta-sanjyo/items/416b05f8498df1ed3f49)

# 表の作り方
“`py:データ入力
import pandas as pd
dt = {
‘a’:[30, 40],
‘b’:[20, 50]
}
dtf = pd.DataFrame(dt)
dtf
“`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588352/9b268ba8-8b40-765d-9886-427185312da6.png)

“`py:カラム(列名)のつけ方
dtf.columns = [‘A社’, ‘B社’]
dtf
“`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588352/0cacd231-f21a-ec79-a328-503cfe8a5df9.png)

“`py:インデックス(行名)のつ

元記事を表示

Pythonの便利技と注意点:関数編

[目次に戻る](https://qiita.com/yuta-sanjyo/items/416b05f8498df1ed3f49)

# 関数のドキュメント:#を使わなくても関数にドキュメンテーション文字列を残す
“`py:関数定義の冒頭に文字列を書く
>>> def greetings(name):
‘nameに入った人に挨拶を交わす’
print(f’こんにちは{name}さん’)

>>> greetings(‘太郎’)
こんにちは太郎さん
“`
“`py:定義した関数名.__doc__でアクセスできる
>>> greetings.__doc__
‘nameに入った人に挨拶を交わす’
“`
“`py:help(定義した関数名)でも表示できる
>>> help(greetings)
Help on function greetings in module __main__:

greetings(name)
nameに入った人に挨拶を交わす
“`

# 関数に引数を渡す時の影響
“`py:変数だけを渡しても影響を受けない
>>

元記事を表示

Pythonの便利技と注意点:format編

[目次に戻る](https://qiita.com/yuta-sanjyo/items/416b05f8498df1ed3f49)

# format()もしくはf”の技
“`py:インデックスは順番になってなくてもよい上、複数回使用可能
>>> “{3} {0} {2} {1} {3} {0}”.format(“be”, “not”, “or”, “to”)
‘to be or not to be’
“`
“`py:フィールドは番号ではなく名前やインポートした名前でも使用可能
>>> from math import pi
>>> “{name}の値はおよそ{value:.2f}。”.format(value=pi, name=”π”)
‘πの値はおよそ3.14。’
“`
“`py:無名フィールド、名前フィールドの混在も可能だが、名前フィールドを先に指定するとエラー
>>> “{} {} {} {foo}”.format(1, 5, 10, foo=3)
‘1 5 10 3’

>>> “{} {} {} {foo}”.format(foo=3, 1, 5, 10)
Sy

元記事を表示

Pythonの便利技と注意点:リスト、タプル、辞書編

[目次に戻る](https://qiita.com/yuta-sanjyo/items/416b05f8498df1ed3f49)

# リストに英大文字・小文字を一気に入れる
“`py:string をインポートする
>>> import string

>>> upper_list = string.ascii_uppercase
>>> print(upper_list)
ABCDEFGHIJKLMNOPQRSTUVWXYZ

>>> lower_list = string.ascii_lowercase
>>> print(lower_list)
abcdefghijklmnopqrstuvwxyz
“`

# リストに数字を順番に入れる
“`py:
>>> num_list = list(range(1, 10))
>>> print(num_list)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
“`

# 元のリストを変更しないようにsort()を使う
“`py:sort()は元のリストを変えてしまう
>>> x = [3, 1, 6, 2, 9]

元記事を表示

Pythonの便利技と注意点:文字列編

[目次に戻る](https://qiita.com/yuta-sanjyo/items/416b05f8498df1ed3f49)

# raw文字とフォルダパス記述
“`py:raw文字:フォルダパスで使う時に便利
>>> print(r’C:\Program Files\fnord’)
C:\Program Files\fnord
“`
“`py:但し、文字列の最後に「\」を入れるとエラーになる
>>> print(r’C:\Program Files\’)
  File ““, line 1
    print(‘C:\Program Files\’)
                             ^
SyntaxError: EOL while scanning string literal
“`
“`py:最後に\を入れたい場合は、分けて記載する
>>> print(r’C:\Program Files’ ‘\\’)
C:\Program Files\
“`
“`py:Windowsのパスでもバックスラッシュor円マークではなく/で代替

元記事を表示

Pythonの便利技と注意点:計算編

[目次に戻る](https://qiita.com/yuta-sanjyo/items/416b05f8498df1ed3f49)

# Pythonは小数点の計算が苦手
“`py:小数点の引き算するとこうなる
>>> 1.0 – 0.1
0.9
>>> 1.0 – 0.2
0.8
>>> 1.0 – 0.3
0.7
>>> 1.0 – 0.4
0.6
>>> 1.0 – 0.5
0.5
>>> 1.0 – 0.6
0.4
>>> 1.0 – 0.7
0.30000000000000004
>>> 1.0 – 0.8
0.19999999999999996
>>> 1.0 – 0.9
0.09999999999999998
“`
“`py:解決法の1つ:整数の計算は問題ないようなので1度整数倍にしてあげて後で戻す
>>> num_a = 1.0
>>> num_b = 0.7

>>> ((num_a * 10) – (num_b * 10)) / 10
0.3
>>> num_b = 0.8
>>> ((num_a * 10) – (num_b * 10)) / 10
0.2

元記事を表示

【入門】Python を書く前に知っておきたいデータ型のあれこれ

## 1. はじめに

皆さんは Python でコーディングする際に、型を意識することはありますか?
Python はそういったことを意識せずにある程度コーディング出来てしまうので、多くの初学者は型やオブジェクトを意識せずにコーディングしているのではないでしょうか?
本記事はそういった方々がデータ型について関心を持って、日々のコーディング活かしてもらうことを目的としています。

### 対象者

– Pythonからプログラミングを始めた人
– データ型ってなんですか?な人
– Pythonで型推論を使いたい人
– オブジェクト指向と型付けについて取っ掛かりが欲しい人

### 環境

– Python: `3.10.4`
– mypy: `0.971`
– pyright: `1.1.268`

## 2. 型とは

### 2.1. 導入

型とは、取っ掛かりやすい言い方をすると`int`とか`str`とかです。
この単語は下記のようにキャストする際に見かけると思います。

“`py
hoge = str(1)
print(hoge)
>>> “1”
“`

元記事を表示

郵便番号を住所にマッピングするときの備忘録

# 概要
– みんな大好き[KEN_ALL.CSV](https://www.post.japanpost.jp/zipcode/download.html)の郵便番号を使って住所を簡単にマッピングしたい
– マッピングした住所をローマ字にしたい

# 参考
今回使うのはとっても可愛いこの2つのライブラリー

https://github.com/polm/posuto

https://github.com/polm/cutlet

*`posuto`には`romaji()`でローマ字に変換する機能が備わっているそうなのだが、上手く動かなかったので今回は別で`cutlet`を使用

# 環境
“`
# Pythonのバージョンを確認
python –version
> Python 3.7.3

# posutoのインストール
> pip install posuto

# cutletのインストール
> pip install cutlet
“`

# 実装
“`python
import random
import pandas as pd
import posuto
i

元記事を表示

slackのログ出力で生成されるjsonファイルを見やすいログの形式にするpythonプログラム

# slack有料化
slackが9/1以降無料ユーザーが使える機能を変更し、無料ユーザーは90日前までの発言しか閲覧できなくなります。全体連絡等に使っていたところは他のアプリに移行することも多いと思います。その際、過去のやり取りとしてログを保存することになると思います。そのときに.jsonファイルができます。このファイルにはやり取りのすべての情報が入っているといっても過言ではないですが、見づらいためそれをよく見るテキストの形式に変換するpythonのプログラムを作りました。

# pythonソースコード
ソースコードを以下に示します。下のソースコード中の**フォルダ名**の部分を変更して使ってください。
簡単に説明すると、jsonファイルを辞書型(dict型)として読み込んで、メッセージ部分と発言者だけを抽出、タイムスタンプを変換して文字列型(str型)に変換して、それを成形してテキストファイルとして出力しています。同じ階層のgeneratedに出力されてるはずです。

※**注** 画像は取得できないのでメッセージと同じように記録されたリンクからダウンロードなりなんなりしてくださ

元記事を表示

機械学習で創造的なことしよ ~Conditional-GAN × MNIST編2~

# はじめに
こんにちは。今回は前回のConditional-GAN × MNIST編1の続きで、おまけになります。前回はC-GANのバッチ訓練にtrain_on_batchというメソッドを使いました。今回はより自由度の高い方法であるGradientTapeを用いて同じモデルを実装しました。次回書こうと思っているC-GAN × CIFER10編でもこの方法を用いるため、予習的な意味でここに実装記録を残しておきます。

### 対象の読者
深層学習やTensorflow, Kerasについてある程度理解のある方、それらについてさらに深めたいと思われる方、超解像やクリエイティブな応用に興味のある方

### 開発環境
Tensorflow 2.8.0
Python 3.9.12
Windows10 64bit

## 目次
1. [大まかな概要と目的](#1-大まかな概要と目的)
2. [GradientTapeを用いたC-GAN訓練](#2-GradientTapeを用いたC-GAN訓練)
3. [結果と考察](#3-結果と考察)
4. [おわりに](#おわりに)

# 1. 大まかな

元記事を表示

Pythonの学び方(初学者用)と教材の紹介

# 当記事について
### 今まで勉強してきたけど・・・
数えましたら、この2年で10冊以上のPython本を読みながら写経したりしてきました。
しかし、いつまでやっても、なかなか実践力が身に付きませんでした。
本を読みながら打ち込むのも、10冊もやると、正直飽きてきます。
インプットだけ、ではやはりいつまでも使いこなせるスキルはつきません。

### やっと停滞から抜け出せました
今までは、ただ本を読みながら「ふーん、こうするんだ」で終わり、全く面白くなかったのです。
しかし、paizaでのアウトプットスキルを求められた時に、それが激変しました。
paizaで「これを実現するにはどうしたらいいんだ?」と、散々頭を悩ませられ苦しめられた答えがそこにあったのです。
Python本の無味乾燥で退屈だった文法・構文解説が、お宝情報のように見えるようにりました。

### 本だけじゃダメ
読書感想文なのに、このようなことを言うと元も子もなくなります。
しかし、ITの学習につきましては、学んだことのアウトプットが相当大事になります(ITに限る話ではないですが)。
そしてアウトプットすると、インプ

元記事を表示

Playwrightをpythonで使ってみた

# Playwrightとは?
E2E自動テストの作成を助けてくれるフレームワーク
公式:https://playwright.dev/
githug:https://github.com/microsoft/playwright
TypeScriptやJavaScriptで扱うのが基本っぽい
これ以外でも当記事で扱うPythonの他、Javaや.Netもサポートしている

# インストール
### 参考
https://playwright.dev/python/docs/intro

### 環境
Windows10Pro
Python3.8.8

公式の通りにコマンドを打ち込んでいったら動いた ~~(から、公式を見た方が良い)~~
“`console
# pytest(pythonのテストフレームワーク)のプラグインをインストール
pip install pytest-playwright

# 必要なブラウザのインストール
playwright install
“`

これでインストールは完了

## 操作を記録する
ここではgoogleの検索を実行する操作を記録する
ht

元記事を表示

zigでdllを作ってpythonからtypehint付きで呼ぶ

* クラス定義をzigのコードから生成できたらいいな
* hintの型が大ウソついてるのが若干evil, `ctypes.CDLL`を継承させてもいいけどどうせ使わない

“`sh
mkdir mylib
cd mylib
zig init-lib
“`

`build.zig#8` の `addStaticLibrary` を `addSharedLibrary` に変更する

“`diff
– const lib = b.addStaticLibrary(“mylib”, “src/main.zig”);
+ const lib = b.addSharedLibrary(“mylib”, “src/main.zig”, b.version(0, 1, 0));
“`

“`sh
zig build
“`

“`zigpy.py
import ctypes
from collections.abc import Callable
from typing import TypeVar, cast

_CT = TypeVar(“_CT”)

def zigim

元記事を表示

Poetryでinstallするpackageのversionを環境ごとに変更する方法

## 結論
Poetryの`environment-markers`という機能を使いましょう。

https://python-poetry.org/docs/dependency-specification/#using-environment-markers

## 直面した問題
`pyheif`というpackageをpoetryを使ってインストールしたいのですが、どうやら現時点(2022/8/25)ではm1 macだと以下エラーが出て動いてくれないようです。

“`
EnvCommandError
‘libheif/heif.h’ file not found
“`

https://github.com/carsales/pyheif/pull/45

そこでpyheifのissueにある[コメント](https://github.com/carsales/pyheif/pull/45#issuecomment-1130056328)の通り、m1-support修正のパッチが当たったversionを指定して`poetry install`すると次はm1 mac環境では動いた

元記事を表示

OTHERカテゴリの最新記事