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

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

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

# はじめに

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

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

# クラスの作成と利用

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

“`python
class FattyAcid:

def _

元記事を表示

python dict のコメント例

最初の下記のような辞書の構造の時のコメント例

“`
{
太郎 : {住所 : “A町…”, 年齢 : 23}
二郎 : {住所 : “B町…”, 年齢 : 20}
三郎 : {住所 : “C町…”, 年齢 : 16}
}
“`
#1
Mapping of name label => data label => data.
のようにデータ構造をコメントするとわかりやすい。

#2
maps name label to data label for data.

#3
mapping of name label to data label to data.

元記事を表示

python defaultdict()

オブジェクト生成時の引数に入れた型でvalueを初期化してくれる辞書を作成してくれる。

“`
from collections import defaultdict

d = defaultdict(list)
d[“a”] # >>> []
d[“a”].append(“hello”) # >>> [“hello”]

d = defaultdict(int)
d[“b”] # >>> 0
d[“b”] += 10
d[“b”] # >>> 10
“`

なので値を代入しなくてもhoge[“a”]とすれば辞書の中に追加される。

元記事を表示

【2020年版】青空文庫から本文をスクレイピングして加工する

# 概要
青空文庫に掲載されている作品の本文を Python でスクレイピングしていい感じに加工しました。その際、ところどころハマったのでその覚書。

# 環境
– macOS Catalina
– Anaconda 3系
– Python 3系
– Jupyter Notebook
– BeautifulSoup4

# 本文の取得
まずは青空文庫から作品の本文を取得します。
やることは基本的にこの記事(https://qiita.com/icy_mountain/items/011c9f56151b9832b54d) に書いてある通りで、[青空文庫 API(https://qiita.com/ksato9700/items/626cc82c007ba8337034) を叩いて本文の HTML をフェッチします。その際、URLの作品ID部分は `book_id` と変数を置くことにします。
しかし自分の環境だとこの通りにはできませんでした。まず、ターミナル上ではなく Jupyter Notebook 上で操作していたので、`!wget` コマンドは使えません。

元記事を表示

python hasattr()

hasattr()
クラスがその属性を持っているかをboolで返してくれる。

“`
class Sample:
def __init__(self):
self.text = “sample”
self.number = 10

s = Sample()
hasattr(s, ‘text’) # >>> true
hasattr(s, ‘number’) # >>> true
hasattr(s, ‘flag’) # >>> false
“`

attrはattributeの略。

元記事を表示

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’, …]
“`

元記事を表示

django restframeworkでログイン

プロジェクトレベルのurlで
最下部追加

“`
urlpatterns = [
path(‘admin/’, admin.site.urls),
     ….
path(‘api-auth/’, include(‘rest_framework.urls’)),
“`

/api-auth/login
でログインできる

元記事を表示

GitHub Actions Pythonのcacheサンプル

![14541002696_1cc1d3c206.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258841/d36e12a8-3f70-4844-0acf-a1c1237b3737.jpeg)

■ [actions/cache](https://github.com/actions/cache)

GitHub Actionsでpipのキャッシュを使用する際のメモ

## pipのキャッシュ

OSごとのディレクトリは下記
(試してないですがUbuntuの場合は環境変数「XDG_CACHE_HOME」を指定することで任意のパスへキャッシュできるとのこと。)

“` bash
# Unix
~/.cache/pip

# macOS
~/Library/Caches/pip

# Windows
\pip\Cache
“`
## 使用方法

キャッシュを作成(使用するOSはubuntuを想定)

“` yaml
– uses: actions/cache

元記事を表示

catalinaにpyenvでpython2.x系インストール

エラー
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?

これでうまく行った
2.7.2 とかだと何やってもだめだったので、マイナーバージョン上げてみるといいかも

“`
$ CFLAGS=”-I$(xcrun –show-sdk-path)/usr/include” pyenv install 2.7.17
“`

元記事を表示

1時間でWikipedia検索できるLINE BOTをサクッと作ってみよう!


こんな感じのWikipedia検索できるLINE BOTを作成してみました。

思った以上に簡単に作れたので、作り方を紹介します。
時間測ってないですが、初心者でも1時間あれば全然作れる気がします(知らんけど

元記事を表示

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) /

元記事を表示

【python】カジノを崩壊させたらしいモンテカルロ法をシミュレーションしてみた

# 序章
やっほー。原です。
休日にだらだら YouTube みてたら、こんな動画がおすすめに出てきたよ。
![スクリーンショット 2020-01-12 23.03.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/566037/58e657b5-e2f3-0687-ae65-242f57c0e175.png)

最近スプラトゥーンの実況動画しか観ないから、急にこんなん出てきてびっくりしたよ。
普段観ないジャンルの動画がおすすめに出てくるとなんかポチって押しちゃうよね。

この人が言う必勝の賭け方がえれぇシンプルだったから、
「これなら簡単にシミュレーションできるやん!」
って思って、実際にやってみた。
![スクリーンショット 2020-01-12 23.14.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/566037/546e8f94-da3c-a56c

元記事を表示

ハマりメモ: 2次元配列の値のmaxを取るときにmax(max(list))はしてはならない

“`Python
a = []
a.append([-1,-1,-1])
a.append([-1, 2, -1])
a.append([-1, -1, 3])
“`

というリストがあった際に、このリストの中の最大値3を得たい。つまり、

“`Python
>>> max(list(map(lambda x: max(x), a)))
3
“`

を行いたい。この際にmaxを入れ子にするとうまくいかない。

“`Python
>>> max(max(a))
2
“`

これは、max(a)をした際に`[-1,-1,-1]`と`[-1, 2, -1]`と`[-1, -1, 3]`の比較が行われる。これは辞書順に比較され、

“`Python
>>> [-1, 2, -1] > [-1, -1, 3]
True
>>> “acb” > “abz” # これと一緒
True
“`

となるためである。

# 解法1: map
“`Python
>>> max(list(map(lambda x: max(x), a)))
3
“`

# 解法2: itertools.

元記事を表示

pip installでエラーが出たときの備忘録

#pip installって意外とうまくいかない。。
趣味と(未だに)仕事で機械学習をプログラミングしているのですが、必要なパッケージをインストールする際に困ることがよくあります。特にpip install系のエラー。
仕方なくAnacondaを使用できず、開発環境が異なっている状態だとエラーがでる要因がたくさんあります。

検索すれば解決するのですが、再発する頃には結局忘れてもう一回検索。。と面倒なので自分用の備忘録を残します(笑)

##transformers(os:win)
![error01.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274588/307cee83-ea30-87f8-8df8-77dde29e3436.png)

FileNotFoundError: [Errno 2] No such file or directory: ‘..\\VERSION’ —————————————- ERROR: Command erro

元記事を表示

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

元記事を表示

C# GUIアプリケーションからPythonスクリプトを実行する

#はじめに
Pythonには機械学習をはじめとする優れたライブラリがたくさんある。一方C#はGUIアプリケーションの開発に広く利用されている言語である。したがってPythonスクリプトをC#アプリケーションから呼び出すことができれば、C#アプリケーション開発者にとって便利であるし、何よりGUIアプリケーションの幅も広がるはずだ。そこで今回、C#のGUIアプリケーションからPythonスクリプトを呼び出す方法について調べ、プロトタイプを作成してみた。

#環境
– Windows10
– C#
– Python

#開発したいプロトタイプ
開発したいプロトタイプの要件を以下に洗い出してみた。

– Pythonのパス、実行ディレクトリ(Working Directory)、Pythonスクリプトを指定し、実行することができる。
– 実行に長時間かかる場合を考慮し、途中で処理をキャンセルすることができる。
– 実行に長時間かかる場合に進捗状況が分かるよう、全ての標準出力、標準エラー出力をGUIのTextBoxに表示する。
– 以前に書いた [標準入出力を介してMOLファイルをSMILESに

元記事を表示

AtCoderに参加してみたお話

## はじめてAtCoderに参加してみた

Qiitaに記事を書くようになったり、仕事のことでいろいろ調べているうちに
「競技プログラミング」が流行っていることを知りました。
Twitterなんかでもはてブの記事がTLに流れてきたりするので興味本位でアカウントを作成。
いろいろ調べていると、コンテストが金曜日の夜や休日の夜に開催されるらしく、
そこに参加して問題を解いていくそう。

年末年始で忙しく、アカウント作成だけで終わっていたのでやっとコンテストに参加することができました。
初めて参加したのが[AtCoder Beginner Contest 151](https://atcoder.jp/contests/abc151)。
最近はkintoneをいじることが多く、jsでやってみようと思ったものの
おすすめはされていないみたいなので、数ヶ月前に少しだけ勉強したPythonで参加しました。

## 初回なので何がなんだかパルプンテ

どきどきしながらPCの前で待機し、時間ピッタリにスタート。
画面の右下にカウントダウンが表示されます。
問題はAからFの6題があって、問題ごとに配点

元記事を表示

Andible のパスワード/パスフレーズ自動入力

Ansible で使用するパスワードの指定(利用方法)に関するまとめ。

# サマリ

## ssh 接続のパスワード

* ssh のパスワードを自動入力するためには、sshpass が必要。
* sshpass は ansible のモジュールではないため、別途インストールが必要。
* sshpass は、”assword” という文字列 (プロンプト) が表示されるのを待って、パスワードを入力。
* ansible から呼び出す sshpass へ引数を渡す方法が用意されていないため、秘密鍵のパスフレーズ入力には(そのままでは)使用不可。
* 秘密鍵のパスフレーズは外さずに ssh-agent/ssh-add を使用。
* やむを得ずパスワード/パスフレーズを設定ファイル等に記載する場合には、ansible-vault で暗号化。
* ログインパスワードは一般的に sudo 権限昇格のパスワードと同じため、公開鍵暗号等に速やかに移行。

## become (sudo) パスワード

* パスワードを記載する必要がある場合には、ansible-vault で暗号化。

## 公開

元記事を表示

OTHERカテゴリの最新記事