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

Python関連のことを調べてみた2022年12月13日
目次

T-DASHのテスト実行完了をチャットで通知してみた!

本記事は、[『テスト自動化ツールT-DASHの活用方法や事例を記事にしよう! by T-DASH Advent Calendar 2022』](https://qiita.com/advent-calendar/2022/t-dash02)に参加しています。
よろしくお願いいたします!!
2022/12/13を担当しております。

https://qiita.com/advent-calendar/2022/t-dash02

2022/12/4担当記事はこちら

https://qiita.com/94dango/items/e1b111bbbe3073e4d4e7

2022/12/5担当記事はこちら

https://qiita.com/94dango/items/9429fa4eec20a994cc61

[『テスト自動化ツールT-DASHの良い点・悪い点をレビューしてみた! by T-DASH Advent Calendar 2022](https://qiita.com/advent-calendar/2022/t-dash01)』にも参加しております。

https://

元記事を表示

DB->BQデータ転送をミニマムにpythonとGCPコマンドだけで作る

[Livesense Advent Calendar 2022](https://adventar.org/calendars/7971) 12/13の記事です。

## TL;TR

以下の方法を紹介します

* sqlalchemyでinspectを使ってテーブル定義を取得して転送時に利用する設定を生成する
* pandasでデータベースからデータを読みながらparquetを書く
* gsutil/bqコマンドでBQへロードし、SQLでテーブルコメントを付与する

## はじめに

分析などの用途でBigQueryを用いるとき、各種サービスのデータベース上のデータをBQにロードする、という状況が生まれます。このためのツールやサービスとして、AirbyteやCloud Data Fusion、trocco、embulkなどがありますが、まずはスモールにpythonと各種コマンドを使って作るとどうなるのか、というのを考えて試してみました。
データは、1日に1回程度、毎回全件削除して投入し直す(洗い替える)という想定のシステムです。実行環境やワークフローエンジンのことはここでは考えません

元記事を表示

SDS PAGEの定量をできるだけ自動でしたい(2)

# 目的
 ポリアクリルアミド電気泳動(SDS-PAGE)はタンパク質を分子量で分離することができ、液中のタンパク質の分布を半定量的に確認できます。生命科学では多用され、私自身も多く活用しています。しかし、その解析は泳動後のゲルを視覚的に観察するか、目的のバンドに対してimage J等で濃度を換算し、相対的に定量するようなことしかしておりませんでした。

 今回は、複数のSDS-PAGEのゲルに対して、汎用的な方法でレーン毎を比較できるような手法を開発することを目的としました。具体的なゴールはまだできていませんが、同じようなことをしている方や誰かの参考になれば幸いです。

本投稿は[SDS PAGEの定量をできるだけ自動でしたい(1)](https://qiita.com/mosomoso_1910/items/b5001546d29b96f7ad37)の後半となります。

# 方法
まだsmilingやsmearingに対してはあまり対処しておりませんが、大きく分けると

画像からレーンを切り取る

レーンからクロマトグラムを作成する

バックグラウンドを除去する

タンパク質

元記事を表示

SQLAlchemy を使用して IBM Db2 を操作する

## 初めに
以前の投稿で、[「Db2 on IBM Cloud に Pythonからつなぐ(Select編)」](https://qiita.com/ac_qiita/items/5c81b794944534e3845f)という投稿をし、Pythonから「ibm_db」モジュールを使用して、SQL文でデータを取得する記事を投稿しましたが、今回はORMライブラリであるSQLAlchemyでデータを取得する方法をご紹介します。

## 前提
Db2上に以下のテーブルがあることを前提としています。
テーブル名:users
|id |name |email |
|—|———-|——————-|
|1 |Taro |taro@test.local |
|2 |Hanakano |hanako@test.local |

## 手順
### 1. 必要なモジュールのインストール
“`
$ pip3 install ibm_db ibm_db_sa sqlalchemy
“`
※環境によっては

元記事を表示

SAMでAWS Lambda(カスタムイメージ) + API Gatewayを構成するときに、できるだけ効率的なlambda関数のunit testを考える

# 概要

Lambda + API GatewayをSAMを使って構成するときに、カスタムイメージを使ったlambda関数に関する情報があまり出て来なかったので、試行錯誤した内容を残す。具体的には以下の内容。

– lambda関数をカスタムイメージで作るときに、作った関数をunit testするときのtips

# カスタムイメージを使ってlambda関数をunit testすることの難しさ
カスタムイメージを前提としたLambda + APIGatewayを構成しようとすると、大体以下のようなディレクトリ構成になる。

“`
.
├── README.md
├── __init__.py
├── lambda_function
│   ├── Dockerfile
│   ├── __init__.py
│   ├── app.py
│   └── requirements.txt
├── events
│   └── event.json
├── samconfig.toml
├── template.yaml
└── tests
├── __init__.py

元記事を表示

PythonでDynamoDBのデータ型記述子を取り除く

# 本記事について

– DynamoDB Streams などでデータを扱う場合、データ型記述子が混ざっていて扱いづらい
– Pythonで上記の解決方法が見つけづらかったため、備忘録として残しておく

# 解決方法

boto3 にちゃんと備わっていた

“`python
from boto3.dynamodb.types import TypeDeserializer

def from_dynamodbjson_to_json(item):
td = TypeDeserializer()
return {k: td.deserialize(value=v) for k, v in item.items()}

converted_json = from_dynamodbjson_to_json(dynamodb_json)
“`

# 実行例

“N”、”L”、”S”などのデータ型記述子が入っていて扱いにくい

“`json:sample.json
{
“Age”: { “N”: “8” },
“Colors”: {
“L”: [{ “S”

元記事を表示

Pytestを使って自分なりに解説(mock/parametrize)

# 前提
* pytestでmockを使ってUTする際にパターンを忘れてggrことが多いので自分用に雑多に残しておきます。

# mockの予備知識
* 外部APIからのレスポンスや、まだ未定義の関数や変数やクラスに対してmock化することで、疑似的に関数から値を受け取る処理を作ることができる。
* mock化する関数自体は関数名と、passのみやreturnのみでもOK
→ ただし、mock化して値を上書きする為のガワは必要なのでモジュール作成や関数は別途作成が必須

# 実施準備

①Pytestは標準モジュールではないので pip にてインストールが必要
“`
$ pip install pytest pytest-mock
“`

②各プロジェクト・モジュールの準備
“`
└── sandbox/
├── calc.py
└── test/
└── test_calc.py
“`

③テスト実施する階層に移動
“`
$ cd sandbox
“`

④pytestは python -m でpytestを指定してUT

元記事を表示

非線形な問題を線形な問題に変換する方法:真理値表を用いた1点排除のテクニック

[数理最適化Advent Calender 2022](https://qiita.com/advent-calendar/2022/mathematical-optimization)の13日目の記事です。本記事は、9日目の記事「[披露宴の席次を Gromov-Wasserstein 最適輸送で決めた話](https://zenn.dev/akira_t/articles/seat-opt-via-gw)」を読んだことをきっかけに執筆しました。[Akira Tanimoto](https://zenn.dev/akira_t)さんに感謝申し上げます。

# 1.はじめに
本記事を読む前にアドベントカレンダー9日目の[披露宴の席次を Gromov-Wasserstein 最適輸送で決めた話](https://zenn.dev/akira_t/articles/seat-opt-via-gw)を読んでもらえると幸いです。9日の記事では、結婚式の披露宴の席次決めの問題を解いており、ゲスト20人を20席に割り当てる問題です。[再現用Colab](https://colab.research.

元記事を表示

9年目くらいのいまだ続いているレガシーなプロジェクトで改善してきたことと抱えている多くの課題

最初のgitのコミットから約8年?経過し9年目に突入しているのでは・・・というレガシー感の溢れるプロジェクトを引き継いでから何年もかけて色々改善してきた内容だったり、逆に現在でも色々抱えていて今後改善していきたい課題などについて本記事で振り返り的に触れていきます。

※執筆に関して上長から許可をいただいています。

# プロジェクトの概略

– 弊社がゲーム会社なのですが、各ゲームタイトルで横断で使われているwebアプリです。
– 言語としては主にPython、フレームワークとしては主にDjangoが使われています。
– テストやdocstringなどを含めた現在残存するPythonファイルの行数は約78万行くらいです。
– サーバーはAWSのクラウドが使われています。

年数的に色々レガシー感のある点がたくさん残っていますが、一方でここまで長い間社内で使われ続けてきている・・・というのは中々無いケースでしっかり続いてきたのは良いことだと思います(大体のプロジェクトは数年で終わってしまったり、会社自体も10年持たないケースも世の中では多いでしょうし)。

# 引き継いだ当初の状況

元記事を表示

?GBFS世界旅行 ~車両編~

前回、GBFSで世界中のシェアモビリティの**ステーション所在地**をマッピングしました?

https://qiita.com/hiskoh/items/d4fa1f032cce199ea701

今回はステーションではなく**車両**のマッピングをしてみました。GBFSでは“free_bike_status.json“という、**レンタルされてない車両**を公開するためのファイル仕様があります。今回はこれをすべて可視化します。全世界で**330サービス/約19万台**!出典は後掲の通りです[^1]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119284/b6c9441b-11f6-2fd3-801c-8bd6ce620ccb.png)

:::note info
本記事では筆者が取得に成功したGBFSを根拠にサービス数・車両数を算出しています。例えばデータの取得漏れ(サービス側のDBメンテナンスでデータ取得ができなかった等)や公開されているデータが古い・誤っているなど、実体

元記事を表示

【実装編】Xmasまでに絶対に彼女を作りたい!

こんにちは。おもちゃで遊ぶAdvent Calendar13日目です。

Xmasまでに絶対に彼女を作りたい!記事の続きになります。
今回は、DCGANを使用して画像生成を行います。
コードは[PyTorchチュートリアル](https://torch.classcat.com/2021/04/16/pytorch-1-8-tutorials-beginner-dcgan-faces/)のコードを使用させていただきました。
データ収集編はこちらです。

https://qiita.com/Kentea/items/790095b6ad58e18334a0

# DCGAN(Deep Convolutional GAN)とは?

DCGANは基本的にはオリジナルのGANの考え方に則っており、GeneratorとDiscriminatorを競わせるように学習します。
なので、全体の構造を概念図として表すとオリジナルのGANと同様になる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295

元記事を表示

【NetApp DataOps Toolkit】 JupyterLabからデータセットのスナップショットを取得する+α

# この記事の要約
### NetApp DataOps Toolkitを使ってみた
– k8s基盤上にAI/MLな開発環境(JupyterLab+永続ストレージ)を払い出してみた
– JupyterLab上からデータセットのスナップショットを取得してみた

### どんなメリットがあるの?
– オープンソース(無料)です
– データサイエンティスト向けに設計・開発されているため、インフラ管理者の手を借りずに、AI/MLにまつわる様々なインフラ管理タスクをこなすことができます

注:本投稿はNetApp DataOps Toolkit **v2.4.0**に基づきます

# AIの開発に必要なデータマネジメントとは
:::note warn
私見かつ少々お堅い話が続きます。ツールの使い方だけ気になる方は[こちら](#使ってみた)へどうぞ。
:::

AI/ML、特にディープラーニングの分野においては、膨大なデータを格納するための大容量、モデルの学習などの高負荷なワークロードに耐えうる性能といった観点から**エンタープライズグレードなストレージの需要が大きい**です。

また一般的な

元記事を表示

元記事を表示

posenet-pytorchやーる(Python3.9、Windows10)

# はじめに

posenet-pytorchやりまーす
https://github.com/rwightman/posenet-pytorch

# 開発環境
– Windows 10
– Python 3.9

# 導入

1.Anacondaで仮想環境を作成
$ conda create -n posenet-pytorch python=3.9
$ conda activate posenet-pytorch

2.ライブラリのインストール
$ pip install torch torchvision torchaudio –extra-index-url https://download.pytorch.org/whl/cu116
$ pip install requests opencv-python==4.6.0.66

PyTorchのバージョン
– torch 1.12.0+cu113
– torchvision 0.13.0+cu113
– torchaudio 0.12.0+cu116

3.実行(画像デモ)
$ cd posenet-pytorch-mas

元記事を表示

【Stable Diffusion 2.0】ローカルで動かして顔写真/風景写真をアニメ風に変換してみた【アバター生成】【img2img】

# やりたいこと

今年画像生成AIとして大注目された「Stable Diffusion」のバージョン2.0を使って何かできないかなと考えていました。
今回は「Stable Diffusion 2.0」をローカルで動かして、以下タスクの実験を行いました!

– **顔写真を入力し、アニメ風のアバターを生成する**
– **スナップ写真を入力し、アニメ風の風景写真に変換する**

:::note info
**この記事のポイント**
img2imgタスクを利用して、「Stable Diffusionでアニメ風の画像変換できるのか」確かめてみました。
:::

:::note warn
現時点では最新バージョンは2.1ですが、画像生成の不具合により2.0で検証しています。2.1でも同じ手順で生成できます。
:::

ローカルでStable Diffusion 2.0を動作させるにあたり、以下のサイトを参考にさせていただきました。

Stable Diffusion 2.0で追加された機能を試してみよう/@IT

https://atmarkit.itmedia.co.jp/ait

元記事を表示

DataflowのFlex Templateを使ったバッチ処理の実装

## はじめに / 経緯
こんにちは、[株式会社unerry](https://www.unerry.co.jp/)でデータエンジニアをしているJanosと申します。
弊社ではGoogle Cloudを中心にビッグデータの連携を日々行っているのですが、今回位置情報に関するデータを受領しました。
1日ごとに先方のS3 bucketに置かれるため、日次のバッチ処理でS3 → GCSへのコピーからデータサイエンティストやアナリストが使うBigQueryへのloadまでの処理が必要となります。
例として1日あたりのデータは以下のような量でした:

“`
例: 1日あたり(11/15) total 2.4 GiB, 138555 file
“`

総データ量が2~3 GiBではビッグデータと呼ぶには到底小さすぎると思います。
ところがこのデータの厄介なところはデータを寸断しすぎており、1ファイルあたり数十 KiBのファイルが140,000ほどあって、おそらくはIO処理のため処理に多大な時間がかかっていました。
実際S3からGCSへ引っ張ってくるのにも大体1時間弱ほどかかっています。

またフ

元記事を表示

DynamoDBのレコードを主キー以外で取得するLambda

# 概要
LambdaからDynamoDBのレコードを主キー以外で取得する方法を紹介します。

# 前提条件
– DynamoDBにテーブルが作成されており、データも登録されていること
– 必要なIAM権限が付与されていること

# 環境
– ランタイム:Python3.9
– リージョン:ap-northeast-1

# コード
“`python
import boto3
from boto3.dynamodb.conditions import Attr

dynamoDB = boto3.resource(“dynamodb”)
table_name =
table = dynamoDB.Table(table_name)

def lambda_handler(event, context):
column = <検索に使うカラム名>
data = <検索に使う値>

responce = table.sc

元記事を表示

objc_util のprint デバッグ。Pythonista3 の黒魔術

この記事は、[Pythonista3 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/pythonista3) の13日目の記事です。

https://qiita.com/advent-calendar/2022/pythonista3

一方的な偏った目線で、Pythonista3 を紹介していきます。

ほぼ毎日iPhone(Pythonista3)で、コーディングをしている者です。よろしくお願いします。

以下、私の2022年12月時点の環境です。

“` .log
— SYSTEM INFORMATION —
* Pythonista 3.3 (330025), Default interpreter 3.6.1
* iOS 16.1.1, model iPhone12,1, resolution (portrait) 828.0 x 1792.0 @ 2.0
“`

他の環境(iPad や端末の種類、iOS のバージョン違い)では、意図としない挙動(エラーになる)なる場合もあります。ご了

元記事を表示

minecraft serverに入力したコマンドを取りたいver.2

# 前提
minecraft serverにおけるコマンドをdiscord bot経由で入力することを想定しています.

そして,
– WSL, Ubuntu 22.04.1
– Python 3.10.6
– papermc

という環境で行っています.また,minecraft serverは`subprocess`による起動で実行しているため,この知識も多少必要です.`stdout`と`stdin`がわかっていれば大丈夫ではないでしょうか.

次に,私の環境のディレクトリ構成は以下のような感じです.
“`
.
├── mcserver
│   └── logs
│      └── latest.log
└── qiita_mcmanager
   ├── MCServer.py
   └── test-getlog.py
“`

もちろん,ファイルやディレクトリはほかにもありますが,今回利用するものはこの辺だけです.
`MCServer.py`はminecraft serverの起動や停止などを行うクラスで,`test-getlog.py`はminecraft ser

元記事を表示

mac に最新の pyopenjtalk をインストールできない。

# 動機
macであれば`pyopenjtalk==0.1.3`をインストールすることで大体は使用することができるようになる。
しかし、最新バージョンをインストールできないのはなんか悔しい、あと、勉強のためになんとかインストールできないかやってみた。

# 方法
半年前くらいに解決したのであまり詳細は覚えていないが以下の手順を実行した。
[参考になったページ](https://stackoverflow.com/questions/58628377/catalina-c-using-cmath-headers-yield-error-no-member-named-signbit-in-th#:~:text=作品の削除MacOSX10.15.sdk)
上記ページの
Deleting MacOSX10.15.sdk works.部分から行った。
ページ内検索でDeleting MacOSX10.15.sdk works.を探して欲しい。

以下の場所に移動

“`sh
$ pwd
/Library/Developer/CommandLineTools/SDKs
“`

MacOSX1

元記事を表示

OTHERカテゴリの最新記事