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

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

Ubuntu20.04でCPythonをビルドしてみた

# 1. はじめに

この記事はeeic2022の3年後期実験「大規模ソフトウェアを手探る」の4班の成果報告の記事です。
私たちの班はCPythonに様々な機能を追加していきました。以下の記事も参考にしてみてください。

https://qiita.com/bnn877/items/3ad88383f0ff936e9822

https://qiita.com/LEEANHUA/items/fcedb7b8ceeca7c2fd3e

# 2. 実行環境

Ubuntu 20.04.5 LTS

# 3. ビルドの手順

– ダウンロードしたCPythonソースコードのzipファイル(cpython-main.zip)
– 解凍したCpythonソースコードのディレクトリ(cpython-main)
– インストールしたCpythonのディレクトリ(cpython-install)

ファイル名フォルダ名は上記のように設定し、これら3つをホームディレクトリに配置することを目標とします。

また、以降では「/home/denjo」がホームディレクトリという前提でコマンドを表

元記事を表示

Google colaboratoryでblast+を利用する

blast+はローカル環境でblast検索を行うためのプログラムである。

https://blast.ncbi.nlm.nih.gov/Blast.cgi?PAGE_TYPE=BlastDocs&DOC_TYPE=Download

自信のPCでも実施可能だが、Google Colabratoryでも勘弁に行うことができる。

まず、blast+をインストールする。
最初のセルで以下のコマンドを実行する。

“`
#blast+のインストール
!sudo apt install ncbi-blast+
“`

blast+の実際の動作は”!”を利用したコマンド入力でもいいが、コマンドをpythonで書き換えたい場合はsubprocess.Popenを利用する方が便利である。
そこでまず、これらをimportする。

“`
import subprocess
from subprocess import Popen
“`

さらに次のセルで、試しにblast +のhelpを呼び出してみる。

“`
#blast -helpの呼び出し
#コマンドの文字列を作成

cmd =

元記事を表示

【未経験】【中途】プログラマー1年目の実務内容と感想

 僕は2021年の9月から中途のエンジニア採用枠でIT企業に就職しました。ところが僕には社会人経験も実務経験も情報系の資格も学歴もありませんでした。そこで、情報系の学部卒の新卒1年目とは異なる目線から、プログラマー1年目の実務内容をお伝えしたいと思います。

|期間 |業務内容 |
|—-|—|
|1ヶ月目~ |研修(Python) |
|2ヶ月目~ |シナリオテストの実行(テスター) |
|6ヶ月目~ |バッチ・画面の設計書修正・機能改修・テスト(Java,C#,Angular) |
|8ヶ月目~ |画面・実行機能の詳細設計・新規開発・テスト(Python,Django) |
|10ヶ月目~ |バッチ・画面の設計書修正・機能改修・テスト・保守運用(Java,C#,Angular) |

 業務内容はざっくりとこんな感じです。1ヶ月ほど研修を受け、2ヶ月目から4ヶ月間ほどテスターとして現場で働きました。そして6ヶ月目から本格的に開発現場に配属され、主にJavaでのバッチ開発に携わっています。また間で2ヶ月ほどPython、Djangoでの新規開発プロジェク

元記事を表示

イグノーベル賞Talent vs Luck論文の再現実験結果をPythonで可視化

# 概要

以下の記事にてR実装されていた可視化の処理をPythonで実装してみました。
[イグノーベル賞Talent vs Luck論文にPythonとRで反論を試みる](https://qiita.com/B3QP/items/c9150d0a5af013175592)

以降、上記記事を単に「参考記事」と記述します。

# 背景

2022年にイグノーベル賞を受賞したいわゆる「Talent vs Luck論文」の再現を試みようとしていたところ、参考記事を発見しました。コードはほぼそのままで動かすことができたのですが、可視化部分だけ(Rの環境構築が面倒だったので)Pythonで新たに実装しました。せっかくなので、コードを公開します。

# 可視化の実装

Jupyter notebookにて実行しています。
必要ライブラリは事前にpipなどでインストールしておきます。

ライブラリを読み込みます。

“`Python
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from scipy.

元記事を表示

CPythonに’&&’, ‘||’を追加してみた

# 1. はじめに

この記事はeeic2022の3年後期実験「大規模ソフトウェアを手探る」の4班の成果報告の記事です。

CPythonのビルドが済んでいない方は、先に以下の記事を参考にしてください。私たちの班が書いた記事です。

https://qiita.com/bnn877/items/8b197df99aea0c3cc56e

また、Cpythonにインクリメントも追加してみたい方は以下の記事を参考にしてください。こちらも私たちの班が書いた記事になっています。

https://qiita.com/LEEANHUA/items/fcedb7b8ceeca7c2fd3e

# 2. 実行環境

Ubuntu 20.04.5 LTS
Python 3.10.8

# 3. こんな方におすすめ

C言語 → ‘&&’, ‘||’
Python → ‘and’, ‘or’
この使い分けがごっちゃになるという方におすすめです。

この記事通りの変更を施せば、CPythonでどちらの表現も使えるようになります。

# 4. /Grammar/Tokens (

元記事を表示

Moe TTSをWindows上で動かす

# はじめに
MOE-TTSという文章読み上げAIが公開されました。
ウェブ上で使えるものですが、ローカルでの実行も出来たので、インストール~起動までの手順を記録しておきます。

[→リンク:Moe TTS](https://huggingface.co/spaces/skytnt/moe-tts “MoeTTS”)

# 起動までの手順
## 必要スペック
特に指定はないが、NVidia製のグラボがあると高速化可能

## 必要ソフト
* CUDA toolkit 11.7(最新は11.8だが、pytorchが対応していない)
* Anaconda
* git

## 手順
### ソースコードの入手
“`
git lfs install
git clone https://huggingface.co/spaces/skytnt/moe-tts
“`

### conda環境の設定

“`
conda create -n moe python=3.10
conda activate moe
“`

### python関連のインストール
pytorchのインストールコマンド

元記事を表示

pytorch-lightningのModelCheckpointの挙動を確認する

## 目的
pytorch-lightningでvalidationのlossが小さいモデルを保存したいとき、`ModelCheckpoint`を使います。ドキュメントには`monitor`にlossの名前を渡すとありますが、`validation_step`での値を渡しても、途中のあるバッチでlossが最小になったときに記録されるのか、全体の値が最小になったときに記録されるかよくわかりませんでした。

今回は実際に分かりやすいデータを流してみて挙動を確認したいと思います。

## モデル
今回使用するモデルは以下です。
“`python
from copy import deepcopy

import torch
import torch.nn.functional as F
from torch.utils.data import Dataset, DataLoader

class ToyModel(pl.LightningModule):
def __init__(self, epoch_div=True):
super().__in

元記事を表示

ctypesで構造体配列を持つ構造体を扱う

PythonでCライブラリを扱うのにctypesはよく使います。
が、このライブラリで構造体配列を持つ構造体を扱う方法が実はあまりサンプルがなかったので、備忘録を兼ねて記事にします。

# Cライブラリ

“`C:sample.h
struct x{
int x;
int res_calc;
};

struct x_list{
struct x xs[100];
};

int calc_x(struct x_list *x_list);
“`

“`C:sample.c
#include
#include “sample.h”

int calc_x(struct x_list *x_list){
int i = 0;
for(i=0; i<100; i++){ (x_list)->xs[i].res_calc = (x_list)->xs[i].x + 10;
}
return 0;
};
“`
struct x_listはstruct x * 100の配列を持つ構造体です。
in

元記事を表示

「手軽に、身軽に、行きたいお店」が見つかるサービスを作った話(ハッカソン参加レポート)

## はじめに

当資料はとあるハッカソンでの成果物をまとめたものです。※テクニカルサポーター賞(LINE)いただきました!

初めてのハッカソン参加でしたがいろいろと学びがあったので共有しようと思います。

ハッカソン自体の概要 ※運営の方に転載許可いただいています。

# ハッカソン概要
### テーマ:シン・ノーマル時代のHappy
2020年の緊急事態宣言から2年が経過をし、Covid-19の影響も少しずつ変化し、「ニューノーマル」は、それぞれの「新しいノーマル」に形を変えている。
本ハッカソンでは、そのような現在(シン・ノーマル時代)の幸せについて、改めて考察し、Happyな気持ちになるプロダクトを創造頂きます。

### 開催概要
##### 開催日程
– アイデアソン・チームビルディング(全員参加) :10/11(火) 10:00-16:00
– LINEハンズオン(任意参加・別途申し込み):10/26水 14:00-17:00
– M5Stack ハンズオン(任意参加・別途申し込み):10/25火

元記事を表示

初心者エンジニアが『Hello, World!をサーバーレスで実行する』公式チュートリアルやってみた。

# はじめに
今回はAWS公式から出ている、『「Hello, World!」をサーバーレスで実行する』というチュートリアルをやっていきます。
この記事はAWSアカウントを作り終わってることが前提条件になりますので、下記URLから作成をお願いします。

https://aws.amazon.com/jp/getting-started/hands-on/run-serverless-code/

### 自分のスペック
新卒でエンジニアになったが、Pythonに関しては簡単なものを読解、コーディングするぐらいの知識しかないです。
ほとんど初心者な人が今回はやっていきます。

### 環境
* Windows10
* Chrome

# 実行していく
### 関数作成までの手順
まず、AWSに入ってもらって左上の検索ボックスで「lambda」と検索して**Lambda**をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2629918/4a9de036-5538-2b19-d56f-

元記事を表示

PythonでPDFの上に文字とか乗っけるアプリを作った!-5.障害対応-

# 障害?バグ?今日やったらうまく動かなかった。

年末調整の時期になり、やっと出番が来ました。「PDFEditor2」
会社員の方は、マイナンバー連携で即終わるようで、羨ましい・・・。

ということで、年末調整のデータを作っていたら、よくわからないバグが出たので、報告。
ネットで検索してもなかなかピンポイントの対応方法がなく、結構苦戦したので、修正内容をメモしておきます。

# インポートモジュール
“`Python
#### インポート
import os
import tkinter as tk
import tkinter.ttk as ttk
import subprocess

import TKinterK_v002 as tkk

from tkinter import messagebox
from tkinter import filedialog
from PIL import Image, ImageTk

from pathlib import Path
from pdf2image import convert_from_path

from pdfrw

元記事を表示

[AWS Lambda Powertools Python]ログに実行ファイル名を含める

# 経緯

[AWS Lambda Powertools Python](https://awslabs.github.io/aws-lambda-powertools-python/latest/) [^1] のLogger機能はとても強力です。

ログを出力する目的は色々ありますが、デバッグ時のように処理を追いかける場面では「そのログがどこで出力されたのか」をまず知りたいのではないでしょうか。

デフォルト設定の出力では、 `location` 属性として出力されています。
下記の例だと、 `get_users` 関数内で、そのソースコードの40行目で出力したログであることがわかります。

“`json
{
“level”: “DEBUG”,
“location”: “get_users:40”,
“message”: “…
“`

シンプルな構造であれば「ああ、get_users()はあそこだな」とわかるでしょうが、いくつものファイルで構成されている場合は「get_users()ってどこの?」となりませんか?

# 出力内容の変更

出力内容をカ

元記事を表示

PyPDF2でpdfを暗号化・複合化する

# 動作環境
“`sh
python -V

# 実行結果
Python 3.11.0
“`

# PyPDF2をインストールします
“`sh
pip install PyPDF2
“`

# pdfファイルを暗号化する
イメージとしてはpdfファイルを新規で作成し、元データを読み込んで、暗号化して保存するような流れになります。
実行すると元データと同じ場所に`{ファイル名}_enc.pdf`が作成されます。
“`python
# モジュールのインポート
from PyPDF2 import PdfFileWriter,PdfFileReader

# 対象のpdfファイルの指定
filename = “./sample.pdf”

#PdfFileWriterオブジェクトを作成
out = PdfFileWriter()

#指定したPDFファイルをPdfFileReaderで開く
file = PdfFileReader(filename)

#PDFファイルのページ数を取得
num = file.numPages

#PDFファイルの全てのページを読み込んで新しいファ

元記事を表示

for文で変数名を回す方法

# for文で変数名を回す方法
execを使えばシンプルに書けることに気が付いたのでメモしておく。
ファイル名を付けるときにも役立ちそう。

“`php:in
for i in range(5):
exec(‘print(“file_” + str(i))’)
“`
“`php:out
file_0
file_1
file_2
file_3
file_4
file_5
“`

元記事を表示

[FastAPI]Noneをレスポンスから除外する方法[Pydantic]

下記の様に設定することで、`Response.name`に値が存在する場合はそれを含め、Noneの場合は除外してからJsonに変換してくれるようになる。

“`python
from pydantic import BaseModel
from typing import Optional

class Response(BaseModel):
id: int
name: Optional[str] = None

class Config:
fields = {‘name’: {‘exclude’: True}}
“`

元記事を表示

ファミコンっぽい効果音をAIで自動生成したい【WaveNet】

# はじめに
最近は**NovelAI**や**Stable Diffution**などの画像生成AIが生み出すイラストやアートのクオリティが高まってて話題になってますよね。これらはLineチャットボットやDiscordサーバーで誰でも気軽に試せるような環境も整っているみたいです。

一方で音楽や音声の方面はどんな感じだろうと前々から気になっていたのですが、ファミコンっぽい効果音くらい今ならサクッと自動生成できるのでは?と思い、音声合成モデルの一つである**WaveNet**を使って趣味程度に遊んでみた記事になります。

# WaveNet
WaveNetは2016年にGoogle DeepMindが開発した**TTS**(Text To Speech、テキスト読み上げ)のためのディープニューラルネットワークの音声合成モデルで、例えば[Google CloudのText-To-Speechサービス](https://cloud.google.com/text-to-speech?hl=ja)として既に製品に実装されているようです。wavデータのような生の音声波形データを直接学習・生成す

元記事を表示

Mac(M1)にPython環境準備してみたけれど大変だった記録

## 初めに

※※備忘録です※※

私はただのPython初心者です。
ググりにググりをさねて環境構築中のため、
もしかしたら間違ったこと・不要なこともしているかと思いますので
ご留意の上、優しく見守ってください。
(当然のごとく当たり前のこともやってしまっています。)

### 今回の経緯
Python勉強したいし、作りたいものを開発しようと構想ねって
いざ作ろうとしたら
M1のMacにしてからPython環境作っていなかったことを思いだす
段取りの悪さを発揮した今日この頃。

ググりながら今必死こいて環境整えています。

## PC周り

OS:macOS Monterey
(MBAのM1,2020モデルです。)

エディタ:VScode

入れたPythonバージョン:Python 3.10.8

## やったこと・やること

1. VScodeに拡張機能を追加する
2. [PYENV入れる](#PYENV入れる “PYENV入れる”)
3. [Pythonインストールする](#Pythonインストールする “Pythonインストールする”)
4. Condaで仮想環境準備す

元記事を表示

【Python・MySQL】SQL文中でテーブル名やカラム名を変数にする方法とその脆弱性について【初心者向け】

(22/11/09追記)
コメントにて@retaさんにご指摘いただきました通り、今回の解法は外部から受け取った値をそのままSQL文に挿入すると、SQLインジェクションの脆弱性を引き起こす原因となります。

この記事は、テーブル名やカラム名を変数として使用できること以上に、それらを変数として扱った場合に脆弱性を生むことについての知見をもたらす記事として読んでいただければ幸いです。

また、実際に当記事で紹介する方法を使用する場合においては、外部から受け取った値ではなく、内部的に決定される値が変数に設定されることが保証される環境でのみお使いいただき、特にDjangoで作成したWeb入力欄やそれに類する方法で取得した値を受け渡す場面での使用を控える、もしくは十分な専門知識を持った上で安全を確認してからの使用をお願いします。

この記事を読んで発生したいかなる事由においても私は責任を負うことができませんが、内部でのみ使用したい方にとっての便益も考え、注釈を残したうえで記事を残そうと考えています。
ここまでご理解いただけた場合に、以下ご参考にいただけましたら幸い

元記事を表示

Docker マルチステージビルドについて

DockerでPython環境作成する際に以下のようなFROMが複数出てくるDockerfileがあった。

FROMが複数ってどういうこと?ってことで調べますと、
dockerのイメージ作成を段階的に実施できるとのこと。
何がうれしいかというとビルド環境をそのままデプロイするといらないものが入ってたりする(コンパイラとか)ので、実際にデプロイする環境は実行モジュールだけにしたいという思惑の模様。

“`Dockerfile
# Define global args
ARG FUNCTION_DIR=”/home/app/”
ARG RUNTIME_VERSION=”3.9″
ARG DISTRO_VERSION=”3.12″

# Stage 1 – bundle base image + runtime
# Grab a fresh copy of the image and install GCC
FROM python:${RUNTIME_VERSION}-alpine${DISTRO_VERSION} AS python-alpine
# Install GCC (Alp

元記事を表示

PytorchでのData Augumentation(データ拡張)

どうもエンジニアのirohasです。

最近さらにブームが巻き起こっているAI。
そのAI開発において開発手法として用いられている機械学習やディープラーニングにおいて、DataAugumentation(データ拡張)というのはすごく重要になります。

そこで今回は、前回実装したkerasのDataAugumentationとは別にPytorchでのDataAugumentationを実装してみたので、備忘録も兼ねて記事にしようと思います。

# 目次
[1.はじめに](#1-はじめに)
[2.環境](#2-環境)
[3.Data Augumentationって何?](#3-DataAugumentationって何?)
[4.事前準備](#4-事前準備)
[5.実装](#5-実装)
[6.機能説明](#6-機能説明)
[7.まとめ](#7-まとめ)
[8.参考文献](#8-参考文献)

# 1. はじめに
みなさんはPytorchというものをご存じでしょうか?
PyTorchは、コンピュータビジョンや自然言語処理で利用されているTorchを元に作られた、Pythonのオープンソースの機

元記事を表示

OTHERカテゴリの最新記事