Python3関連のことを調べてみた2020年01月13日

Python3関連のことを調べてみた2020年01月13日

ケモインフォマティクスで学ぶPythonのクラス

# はじめに

[ケモインフォマティクスで学ぶPythonの関数](https://qiita.com/yukiya285/items/e3ea92fe0fc74a546325)に引き続き、リピドミクス(脂質の網羅解析)を題材として「関数」について解説していきます。
ケモインフォマティクスの実践例を中心に説明していきますので、基本を確認したいという人は以下の記事を読んでからこの記事を読んでみてください。

[製薬企業研究者がPythonにおけるクラスについてまとめてみた](https://qiita.com/yukiya285/items/44292f850bc4f4dd24f1)

# クラスの作成と利用

クラスは、変数や関数をひとまとめに持っているオブジェクトのようなイメージです。
`class クラス名:`と書くことで作成することができます。
また、クラスから生成するインスタンス全てに共通する初期設定を記述するための「初期化メソッド」というものがあり、`__init__`を使って記述します。

“`python
class FattyAcid:

def _

元記事を表示

ラズパイにて、有機ELディスプレイのサンプルコードを動かす

# はじめに

ラズベリーパイにて、電子工作でよく使われる
[0.96インチ 128×64ドット有機ELディスプレイ]を動作させたいと思います。

![IMG_006.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559938/f9213ea9-3b2c-e9cc-d633-27aa706ed0c5.jpeg)

# 紹介する内容

– 128×64ドット有機ELディスプレイの概要
– ラズベリーパイ3+を使い、IPアドレスの表示(サンプルコード実行)

# 0.96インチ 128×64ドット有機ELディスプレイ – SSD1306

0.96インチ 128×64ドット有機ELディスプレイは、SSD1306が搭載されいている安価な表示モジュールです。

SSD1306デバイスは、I2C通信(2線シリアル)とSPI通信(4線シリアル)の
2つの方式を対応していますが、販売されているものはどちらかになります。
今回は、私が秋月電子で購入したものは、I2C通信となります。

# 作業環境

元記事を表示

Docker を使う(docker swarm でアプリケーションをデプロイする)

[前回の記事](https://qiita.com/landwarrior/items/5cfbf2ce07be812e0907) の続きです。
ようやく完成しました・・・
今回は、コンテナオーケストレータの一つである Docker Swarm を使い、アプリケーションをデプロイしてみます。
アプリケーション開発からやっていてはいくら時間があっても足りないので、事前に用意しました。
GitHub にて公開していますので、 Clone もしくはダウンロードをお願いします。
https://github.com/landwarrior/flask-restful
こちらをベースに話を進めていきます。

# アプリケーション仕様

今回用意したアプリケーションを箇条書きで説明します。

– サーバーは 3 台必要
– Docker 用が 2 台、 MySQL 用が 1 台
– Vagrant を使用して VirtualBox 上に 3 台分を構築します
– アプリケーションは Python で実装
– Flask-RESTful を使用し、 REST API を構築
– VM の

元記事を表示

Pandas 操作 備忘録

同じところでつまづきたくないので、メモ書き。

## indexを無視して列を追加
“`
df_1 = df_1.reset_index(drop=True)
df_2[‘xxx’] = df_1[‘xxx’]
“`
* 基本的には2行目のみで良い
* 下記の場合は1行目が必要
* indexが0からの連番になっていない場合
* 予期せぬソートが行われている可能性がある
* indexに重複がある場合
* 重複されたindexのデータが複製される

#### 理由
* df_1のindexをキーとして結合するため

## カラム名強制変換

“`
df.columns = [‘aaa’, ‘bbb’, ‘ccc’, …]
“`

元記事を表示

Python3 キュー操作 (collections.deque)

Python3でキュー操作を行うことができる、[collections.deque](https://docs.python.org/ja/3/library/collections.html#collections.deque) の基本操作メモ。

> Deque とは、スタックとキューを一般化したものです

dequeは本来、左右どちらからでも出し入れのできる、両端キューを扱うためのもの。
一般的なキュー用に [queue.Queue](https://docs.python.org/ja/3/library/queue.html) も用意されており、こちらは複数のスレッドを扱う場合でも安全に使うことができる。その分動作速度は劣る。

インデックス付けもサポートされていて、リストのように扱えるが、両端の操作しかしない場合にリストよりも効率よく動作する。

> 両端における append や pop を高速に行えるリスト風のコンテナ

単にキューのデータ構造を使いたいだけの場合はdequeで大丈夫。

## 環境
“`bash
$ python3 –version
Python

元記事を表示

スペクトルデータを平滑化とベースライン推定できれいにする方法

#1. 概要

化合物の物理的・化学的な性質を調べるために、NMR、液体クロマトグラフィ、赤外吸光などの測定が良く使われています。
これらの測定ではスペクトルデータを得ることができますが、たいていは意図しないノイズを含んでいます。
乾燥不十分で溶媒由来のドリフトがでたり、測定域の上下限でノイズがひどかったり、サンプル表面が不均一で散乱光成分が乗ったりと色々あるかと思います。

この記事では以下の工程により、汚い測定データを多少はマシなデータに変身させます。
・Asymmetric least squares smoother (Whittaker smoother)を用いたベースライン推定[1,2]
・Savitzky-Golay smootherを用いた平滑化[3,4,5,6]

といいつつ、公開できる適当な失敗データでやって見たら(下図)ではうまくいかない場合もあるなという感じです。
この図は10年位前に取ったFT-IRのデータで、4-butyltriphenylamineをTBS保護したものを取ったやつだったと思います。

![図1.png](https://qiita-imag

元記事を表示

Amazon Linux2にPython3 -Django – mod_wsgi をインストール

#Pythonを使う案件が増えてきた!
プログラミング系の雑誌ではPythonがよく取り上げられていましたが、実案件でもPythonを使うことが増えてきました。
Pythonを使う大きな理由は、AI(機械学習)ライブラリが充実していることです。
今回もAIを使うのでPythonを使います。
WEBのアプリケーション・サーバー(中継?)としてはDjangoを使います。

また、インフラ側のクラウドはAWS(Amazon Web Service)です。
AWSを使う理由は。。。流行でしょうか。。。
他のクラウドでもいいと思うのですが、皆使っているという理由が多いような気が。。。

#EC2サーバーの準備
AWSのEC2インスタンス(仮想サーバー)を作成します。
あらかじめアプリケーションに特化したAMI(マシンイメージ)を選ぶこともでき、PythonやDjangoに特化したBitnami等のイメージも用意されているのですが、今回は一般的な、Amazon Linux2 (64bit版)を使い、Djangoをインストールします。
Amazon Linux2はCentOS7ベースに近いので、この

元記事を表示

pythonistaで画像を角丸にトリミング

# 環境
iOS 13.3
pythonista3 ver. 3.2

# 動機
iOSのホーム画面もどきのアプリをpythonistaで作っていたところ、アイコン画像を角丸にトリミングしたかったので、色々調べました。

# ディレクトリ構造
以下の構造で実行しているものとします。

root/
 ├ icons/
 └ exe/
   └ iconEditor.py

# プログラム本体
“` iconEditor.py

from PIL import Image, ImageDraw, ImageFilter
import photos
import pathlib

def crop_center(pil_img, crop_width, crop_height):
img_width, img_height = pil_img.size
return pil_img.crop((
(img_width – crop_width) // 2,
(img_height – crop_height) // 2,
(img_width + crop_width) /

元記事を表示

AtCoder Beginner Contest 151 参戦記

# AtCoder Beginner Contest 151 参戦記

## ABC151A – Next Alphabet

1分半で突破. 書くだけ.

“`python
C = input()

print(chr(ord(C[0]) + 1))
“`

## ABC151B – Achieve the Goal

4分で突破. 書くだけ.

“`python
N, K, M = map(int, input().split())
A = list(map(int, input().split()))

t = sum(A)
if N * M > t + K:
print(-1)
else:
print(max(N * M – t, 0))
“`

## ABC151C – Count Order

7分半で突破. AC 後の WA は無視しないといけないところだけを気にすればよい.

“`python
N, M = map(int, input().split())

ac = [False] * N
wa = [0] * N
for _ in ran

元記事を表示

AtCoder 第6回 ドワンゴからの挑戦状 予選 参戦記

# AtCoder 第6回 ドワンゴからの挑戦状 予選 参戦記

## A – Falling Asleep

4分で突破. 書くだけ.

“`python
N = int(input())

total = 0
p = 0
d = {}
for _ in range(N):
s, t = input().split()
t = int(t)
total += t
d[s] = total
print(total – d[input()])
“`

## B – Fusing Slimes

敗退.

元記事を表示

AtCoder Beginner Contest 150 参戦記

# AtCoder Beginner Contest 150 参戦記

## ABC150A – 500 Yen Coins

5分で突破. 書くだけ. 問題文が中々表示されなかったせいで時間がかかった.

“`python
K, X = map(int, input().split())

if 500 * K >= X:
print(‘Yes’)
else:
print(‘No’)
“`

## ABC150B – Count ABC

2分半で突破. 書くだけ.

“`python
N = int(input())
S = input()

result = 0
for i in range(N):
if S[i:i+3] == ‘ABC’:
result += 1
print(result)
“`

## ABC150C – Count Order

26分で突破. C問題にしては難しいというか、最初は解ける気がしなかった. 素直に積算すればよかったんだなと…….

“`python
N = int(input())
P = l

元記事を表示

lambda

“`py:先頭を大文字に1
l = [‘Apple’, ‘banana’, ‘orange’, ‘Strawberry’, ‘cherry’]

def change_words(func, words):
for word in words:
print(func(word))

def capit_func(word):
return word.capitalize()

change_words(capit_func, l)
“`

“`:先頭を大文字に1の実行結果
Apple
Banana
Orange
Strawberry
Cherry
“`

capi_func関数は、引数wordの先頭を大文字にする関数である。
これをlambdaを使えば、コード量を減らすことができる。

“`py:先頭を大文字に2
l = [‘Apple’, ‘banana’, ‘orange’, ‘Strawberry’, ‘cherry’]

def change_words(func, words):
for word in words:

元記事を表示

デコレーター2

“`py:2つのデコレーター1
def print_more(func):
def wrapper(*args, **kwargs):
print(‘func:’, func.__name__)
print(‘args:’, args)
print(‘kwargs:’, kwargs)
result = func(*args, **kwargs)
print(‘result:’, result)
return result
return wrapper

def print_info(func):
def wrapper(*args, **kwargs):
print(‘start’)
result = func(*args, **kwargs)
print(‘end’)
return result
return wrapper

@print_info
@print_more
def add_

元記事を表示

よく使うGCSのPythonAPIの機能寄せ集め [備忘]

# 1行で
– GCSのPythonAPI(`google-cloud-storage`)のよく使う処理をベタ書き&ラッパー関数としてここに作っておく

GCSをPythonで使うたびに公式ページでいろいろ調べに行ってるのがあまりに効率悪いのですぐコピペできるようにQiitaに書いておく

# 認証通す
`pip install goole-cloud-storage`で事前にライブラリ自体はインストールしておく

また、以下の前提で話を進める

– Python>=3.5
– google-cloud-storage==1.23.0

## GoogleCloudPlatform上で実行
GCP上ならば別にクレデンシャル情報は不要

“`python
from google.cloud import storage as gcs

project_id = “{ProjectName}”
client = gcs.Client(project_id)
“`

## ローカルで実行
ローカルで実行するにはサービスアカウントのjso

元記事を表示

【学習メモ】Djangoコマンドまとめ

#はじめに
[Djangoチュートリアル](https://docs.djangoproject.com/ja/3.0/intro/tutorial01/)と[Django Girlsチュートリアル](https://tutorial.djangogirls.org/ja/)を進めつつ、メモしたコマンドです。
学習中のため解釈が間違っている可能性があります。
もし間違いを見つけたらコメント等で教えてくださると嬉しいです。

#環境確認

“`
# Djangoのバージョン確認
$ python -m django –version
“`

#作成関連
カウントディレクトリにファイル等作成するコマンド

“`
# プロジェクト作成
$ django-admin startproject [プロジェクト名]

# アプリケーション作成
$ python manage.py startapp [アプリケーション名]

“`

#サーバー関連

“`
#開発用サーバー立ち上げ
$ python manage.py runserver
$ python manag

元記事を表示

[Python3 入門 7日目] 3章 Pyの具:リスト、タプル、辞書、集合(3.3〜3.8)

#3.3 タプル
タプルはリストと異なり、イミュータブルである。
そのためタプルを定義した後での要素の追加、削除、変更は不可である。

##3.3.1 ()を使ったタプルの作成
タプルを定義するのは値をくぎるカンマ。()を使ってもエラーにならないので、値全体を()で囲むことが慣習となっている。

“`py
#タプルを使えば一度に複数の変数を代入できる。
>>> marx_tuple = (“Groucho”,”Choico”,”Harpo”)
>>> marx_tuple
(‘Groucho’, ‘Choico’, ‘Harpo’)
>>> a,b,c=marx_tuple
>>> a
‘Groucho’
>>> b
‘Choico’
>>> c
‘Harpo’

>>> password = “aaaa”
>>> icecream = “bbbb”
>>> password,icecream =icecream,password
>>> password
‘bbbb’
>>> icecream
‘aaaa’

#変数関数のtuple()を使うと他のものからタプルを作成できる。
>

元記事を表示

RDKit 簡単インストール

アナコンダにRDKitをインストールして
ケモインフォマティクスを始めましょう。

![unnamed (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237930/0cf7f4fc-ea9c-5c94-17f6-ad64231ca7fc.png)

![unnamed.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237930/8f6a8026-8a04-9f49-1436-801ad34f5999.png)

1、アナコンダを起動して、
  仮想環境を作り、
  ターミナルを開く。
2、rdkitをインストール
  conda install -c rdkit rdkit
3、必要なライブラリも入れましょう。
  Jupyter、scikit-learn など
  さあ、ケモインフォマティクスを始めましょう。

--以上--

元記事を表示

Python リストとタプルの違いを理解する。

# 目的
Pythonの組み込み型である[リスト]と[タプル]の違いについて理解を深めるため。

# リストとタプルの違い

下記の出力結果をみる限り()と[]の違いしかありません。
定義方法やデータへのアクセス方法も似ています。

## リスト
他のプログラミング言語の「配列」の存在に近い。

“`python
week_list = [‘月曜日’, ‘火曜日’, ‘水曜日’]

print(type(week_list))
#

print(week_list[0])
# ‘月曜日’
print(week_list[1:])
# [‘火曜日’, ‘水曜日’]
“`

## タプル
Python における「タプル」とは、複数のデータを一直線に並べた「コレクション」タイプのデータ型です。

“`python
week_tuple = (‘月曜日’, ‘火曜日’, ‘水曜日’)

print(type(week_tuple))
#

print(week_tuple[0])
# ‘月曜日’
print(week_tu

元記事を表示

【201911~201912】最近作った雑多なプログラム・ツールなど

# この記事について
最近個人的な用として作った雑多なプログラム・ツールなど。

– 記事として個別に立てるほどのものでもない小規模かつ簡単なもの。
– 使用言語はPython, Powershell, ExcelVBA。
– 使用環境は
– Windows10。
– Powershell5.1。
– Python3.7.0。
– Office2016。

######記事が長いので、目次から見たい項目だけスポット的にジャンプしたほうが良いかもしれません。
######※最新のツールとソースコードはGitHubに上げてます。
[https://github.com/dede-20191130/CreateToolAndTest](https://github.com/dede-20191130/CreateToolAndTest)

# 1.Python
## 1-1.oldとか旧とか名前のついたフォルダを直下のファイルごとゴミ箱にぶちこむプログラム
###きっかけ
oldとかの名前のついたフォルダって意識して整理しないと永遠に貯まることになるので

元記事を表示

matplotlibで複数の図を表示するとき重ならないようにする

`plt.figure()` を図を表示する前に入れると一度リセットされる.

元記事を表示

OTHERカテゴリの最新記事