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

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

SMARTSで鎖の末端の炭素のみ反応させてみる

#はじめに
[RDKitで反応パターンをSMARTSで定義し反応物を生成する](https://qiita.com/kimisyo/items/1b4897f060a4944265c7)では、炭素原子の水酸化反応を例にSMARTSによる反応をRDKitでやってみた。しかし、全ての炭素原子を水酸化させたいケースは現実的ではない。そこで今回はより細かい条件をSAMRTSで指定してみた。具体的には、鎖の末端のメチル基を指定し、そこだけ水酸化してみた。

#方法

前回、以下のようなSMARTSを書いた。

“`
[C:1]>>[C:1][OH]
“`

しかしこれでは任意の炭素原子に反応してしまう。今回は鎖の末端のメチル基のみ酸化させたい。末端のメチル基は、水素原子が3つついているはずだから、以下のようにルールを変えてみる。

“`
‘[CH3:1]>>[CH2:1]-[OH]’
“`

やってみよう。今回テストするのは前回とおなじ化合物である。前回は4つ反応物が生成されたが、今回は2つある末端のメチル基のみの反応物が生成されるはずだ。

![reactant.png](https:

元記事を表示

Numpy で画像マスクを作るときは型に気をつける

# やりたいこと
画像や動画の一部以外を黒く塗りつぶして切り抜きたい場合、画像のマスクを作成して、それを重ね合わせることで実現する。

元画像
![lena.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571224/eb9d4967-e0ca-6249-fe59-40b8e8ae939b.png “元画像”)
マスク済み画像
![masked_image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/571224/9b76bafb-5f87-cd22-4f14-aae7634d688f.png “マスク済み画像”)

# 失敗
Numpy を使って黒塗りしたい範囲は 0、切り抜きたい範囲は 1 とするマスクを作成。
行列の各要素をかけるとマスクできると思ったら、思ってたのと違う出力になった。

“`python
h_img, w_img = img.shape[:2]
mask = np.zeros((h_img,

元記事を表示

Pythonでメールを送信(Outlook)

# はじめに
Python で Email を送るプログラムを一から順に説明しながら追っていきたいと思います。

環境は Mac で PyCharm を使用しています。
ホットメールは Outlook を使用します。

## import

まず`email`から`message`というものがあるのでそちらと`smtplib`を import します。
`smtplib`は smtp サーバをー使用してメール送るものとなっています。

“`.py
from email import message
import smtplib
“`

## 設定

メールを送信する際の設定に関して記述していきます。

メールを送るサーバーを指定します。
ホットメールで`smtp.live.com`というものが存在するので、ホストに指定します。

“`.py
from email import message
import smtplib

smtp_host = ‘smtp.live.com’
“`

次にポートを記述します。
今回は`587`を使用します。

“`.py
from emai

元記事を表示

None

a = None
if a == None:
print(“None”)
if a is None:
print(“None”)

元記事を表示

グラフ描画アルゴリズムとNetworkxの裏側

# 0.グラフの描画ってどうやるの?
二次元に描画するためには各頂点に適切に座標を与える必要がありますが、グラフは頂点と辺の情報しか持っていません。どのように頂点を配置すればよいのでしょう??

この記事ではグラフをいい感じに配置するアルゴリズム **Fruchterman-Reingold algorithm** を説明します。Pythonだと `networkx`というライブラリで簡単に使用できます。しかし簡単すぎて悔しいので `networkx`の GitHub の実装を追いながら仕組みを確認していきます。

この記事の流れはこうです。

1. 動かしてみる
2. アルゴリズムの説明
3. Networkx の実装を追う

# 1.動かしてみる

動けば満足な方のために先に実装例を示しときます。Google colaboratory だと既に`networkx`がインストールされてるので、コピペですぐ試せます。

### ランダムに配置 → random_layout()

“`python
import networkx as nx
import matplotlib.pyp

元記事を表示

[PyCPA]Pythonデータサイエンス実践講座 第2回でのゆる〜い気付き

# Pythonデータサイエンス実践講座 第2回
## 1.はじめに
PyCPAというCPA(公認会計士)向けコミュニティの勉強会に参加させて頂いた後の、自分なりのゆる〜い気付きポイントのまとめです。
[Pythonデータサイエンス実践講座 第2回 Powered by PyCPA](https://pycpa.connpass.com/event/162734/)
![004.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79389/e8653fed-ab08-3235-0462-2aa7349dc508.jpeg)
実はLT枠(プログラミング学習の遍歴と本講義での目標)で参加したのですが「がんばります!」という勢いだけのLTなので、資料公開は行いません:sweat:

なお[前回](https://qiita.com/nagahisa/items/7f6eeffd8ac63687acba)同様、今回の内容も講義内容にはほとんど関係ないので、内容が気になる方は、講座で使用している以下の書籍や、この本の

元記事を表示

言語処理100本ノック-25:テンプレートの抽出

[言語処理100本ノック 2015](http://www.cl.ecei.tohoku.ac.jp/nlp100/)[「第3章: 正規表現」](http://www.cl.ecei.tohoku.ac.jp/nlp100/#ch3)の[25本目「テンプレートの抽出」](http://www.cl.ecei.tohoku.ac.jp/nlp100/#sec25)記録です。
今回は**肯定の先読み**という少しわかりにくい内容を扱います。理解してしまえば何でも無いのですが、言葉がとっつきにくいのでしょうか。また、**DOTALLと順序付き辞書**も学習します。
今回の内容は第3章の以降のノックにつながっていくので重要です。

# 参考リンク

|リンク|備考|
|:–|:–|
|[025.テンプレートの抽出.ipynb](https://github.com/YoheiFukuhara/nlp100/blob/master/03.%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE/025.%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%

元記事を表示

N進法を可視化する

#動機
N進法をグレースケールの画像にしたら楽しいのでは???

#実装

“`python

import numpy as np
import math
from tqdm import tqdm
from PIL import Image
“`

xをk桁のN進数に変換してnumpy.arrayで出力
(ex. x=10,n=2,k=8 → 00001010)

“`python

def int__n(x,n,k):
if x>(n**k-1):
# print(“x over maximum\n”,”x=”,x,” n**k-1=”,n**k-1)
# print(“n=”,n,” k=”,k)
return np.full(k,n-1)
else:
a = x%(n**(k-1))
b = x//(n**(k-1))
if k==1:
return np.array([b])
else:
v = int

元記事を表示

GCPのCloudStorage(GCS)にファイルをアップロード ~ Pythonで読み込む

# 環境
– MacOS X 10.14.5 (Mojave)
– Homebrew 2.2.5
– Google Cloud SDK 279.0.0
– gsutil 4.47

# GCPのアカウント登録
[【画像で説明】Google Cloud Platform (GCP)の無料トライアルでアカウント登録](https://qiita.com/komiya_____/items/14bd06d0866f182ae912)

# Google Cloud SDKのインストール
[Google Cloud SDKのインストール ~ 初期化](https://qiita.com/komiya_____/items/5af0dcc8639fad9fee29)

# プロジェクト作成
“`bash
$ gcloud create project
“`

# プロジェクトの切り替え
作成したプロジェクトをアクティブにします。

“`bash
$ gcloud config set project プロジェクトID
“`

# 設定を確認

“`bash
$ gcloud c

元記事を表示

AtCoderBeginnerContest154 参戦メモ(Python, A~E問題)

# 初めに
プログラミング(メイン言語:Python)はここ2年くらいやっていて、最近Atcoderを始めて今は灰コーダーです。
メモ書きなのでそこまでクオリティが高くないですが、整理も兼ねてD, E問題をメインにメモを残したいと思います。
ここに出てくるコードは自分なりに書いたコードで、最適でないものもあると思いますがご了承ください。

# A問題
2分で終了。
自分の回答

“`
S, T = input().split()
A, B = map(int, input().split())
U = input()

if S == U:
A -= 1
else:
B -=1
print(A, B)

“`
# B問題
1分で終了。
自分の回答

“`
S = input()
print(‘x’ * len(S))
“`
# C問題
2分で終了。
要素の中の重複のあるなしは`len(list)`と`len(set)`の比較で判別可能。

自分の回答

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

i

元記事を表示

【忙しい人向けシリーズ】ニュースを30秒で呼ぶために構文解析で要約してみた

## こんな記事も書いてます
[【構文解析】パソコンだって人間と一緒に早押しクイズに参加したい!!](https://qiita.com/nomunomu0504/items/1f4efae96f4e113cbc61)

## TL;DR
どんなニュースでも、要点まとめて1記事30秒で読めるようになります!以下、要約した例です。

**【要約前】**
> 女子ゴルフのアメリカツアーの大会は9日、オーストラリアで最終ラウンドが行われ、山口すず夏選手はスコアを大きく崩し通算5オーバーで39位でした。首位と10打差の33位でスタートした山口選手は最終ラウンドをバーディー1つ、ボギー3つ、ダブルボギー1つトリプルボギー1つとスコアを7つ落とし通算5オーバーで39位でした。優勝は、通算8アンダーで並んだいずれも韓国の3人の選手によるプレーオフを制したパク・ヒヨン選手で、ツアー通算3勝目をあげました。

**【要約後】**
女子ゴルフのアメリカツアーの大会は9日、オーストラリアで最終ラウンドが行われ、山口すず夏選手はスコアを大きく崩し通算5オーバーで39位でした。優勝は、通算8アンダーで並んだいず

元記事を表示

【RasPi4入門】環境構築;OpenCV/Tensorflow、日本語入力♪

RasPi4 遂に入手したので久しぶりの環境構築しました。
ほぼ、Jetson_nanoと同じ方法でできました。
本稿は前回のつづきで、アプリが動くところまで解説します。
【参考】
0.[【Jetson_nano】インストールからTensorflow,Chainer,そしてKeras環境構築出来たよ♬](https://qiita.com/MuAuan/items/eaf0940491d7232377c7)
1.[Raspberry Pi 4のディープラーニングで画像認識する環境をゼロから1時間で構築する方法](https://karaage.hatenadiary.jp/entry/rpi4-dl-setup)
2.[Raspberry Pi で OpenCV 4](https://qiita.com/tomo_vn/items/eea677eb00488d4c2291)
3.[RaspberryPiのキーボード入力の日本語化](https://qiita.com/sukinasaki/items/426068d6e87169fa3d88)
###やったこと
・環境構築;OpenCV

元記事を表示

敢えてRubyで学ぶ「ゼロから作るDeep Learning」禁断のPyCallからのpickleファイルの取り込み

「ゼロから作るDeep Learning」の72p「3.6.2 ニューラルネットワークの推論処理」では、pythonのpickleファイルを呼び出している。このpickleファイルはraw binaryなので、簡単に呼び出せない。そこで、禁断のPyCallからpickleファイルを取り込んでみる。

# 環境構築
“`bash
# pycallのインストール
$ gem install pycall
# pyenvの取り込み
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
$ echo ‘export PYENV_ROOT=”$HOME/.pyenv”‘ >> ~/.bash_profile
$ echo ‘export PATH=”$PYENV_ROOT/bin:$PATH”‘ >> ~/.bash_profile
$ echo ‘eval “$(pyenv init -)”‘ >> ~/.bash_profile
# .bash_profileの再取り込み
$ source ~/.bash_profile
# pyt

元記事を表示

pythonで2の平方根を数百万桁計算

pythonで2の平行根を数百万桁計算するプログラムを作成。
計算方法は逆数に対する下記ニュートン反復法を使用。
 反復式 : x = x + x*(1 – x*x/2) / 2
この方式の特徴は多数桁除算が無い。pythonでn桁の計算部分は下記。
def sqrt2(n):
 bit, dec = 40, 12
 d12 = 10000*10000*10000
 x = int( math.sqrt(2)*(1 << bit) )  while dec <= n:   dec = dec << 1   d2 = 1 << (2*bit)   x0 = (x*x) >> 1
  x1 = (d2 – x0) >> 1
  x2 = (x*x1) >> bit
  x = (x << bit) + x2 + 1   bit = 2*bit   d12 = d12*d12   x = (x*d12) >> bit
 dec_o = (n // 100)*100
 return x

x=sqrt2(n)の計算結果を10進数に変換するにはformat(x)が必要。
全体のpyt

元記事を表示

fbprophetをインストールする際の注意点

# fbprophetとは
– Facebook社製の時系列解析ツール
– 簡単に時系列解析ができる
– R,Pythonに対応

# インストールする際の注意点
1. windowsの場合C++コンパイラが必要
[公式](https://facebook.github.io/prophet/)にもありますが、anaconda推奨

1. anaconda環境の場合はcondaでインストールする
“`conda install -c conda-forge fbprophet“`

1. holidays==0.10.1だとエラー ※fbprophet==0.5
holidays==0.9.11にダウングレードしたところ問題なし

元記事を表示

pythonでのGUI作成 tkinter使用して 2

## 概要

[前回の続きです](https://qiita.com/snowp/items/1c15533038b8c4d2447c)
前回とりあえずアプリが起動するところまでは確認できましたが、二重起動の防止などいろいろ足りていない部分を追加してみました

## 必要なもの

* python 3.7.2
* pandas
* numpy

## 公開場所

githubで公開しています。
https://github.com/snowpff14/etcresource/tree/master/pythonGui

## 処理内容

大まかな部分は[前回](https://qiita.com/snowp/items/1c15533038b8c4d2447c)を参照。

* 処理を動かすところをthreadで呼び出していましたが、ロックがなかったので何度でも呼び出せてしまう状態でした。そこで今回はロックを取得して取れなければメッセージを出す形にしています。

“`python

def doExecute(self):
if self.lock.acqu

元記事を表示

AtCoder Beginner Contest 154 参戦記

# AtCoder Beginner Contest 154 参戦記

## ABC154A – Remaining Balls

2分半で突破. 変数が5つもあることに一瞬戸惑ったけど、書くだけだった.

“`python
S, T = input().split()
A, B = map(int, input().split())
U = input()

if U == S:
A -= 1
else:
B -= 1
print(A, B)
“`

## ABC154B – I miss you…

1分で突破. 書くだけ.

“`python
S = input()

print(‘x’ * len(S))
“`

## ABC154C – Distinct or Not

2分で突破. 書くだけ. ABC063B – Varied を思い出した.

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

if len(set(A)) == N:
print(‘YES’)

元記事を表示

abc154 参戦レポ

#A
Aにしては若干ややこしい

“`python
S, T = input().split()
A, B = map(int, input().split())
U = input()
if U == S:
print(A – 1, B)
else:
print(A, B – 1)
“`

#B
制約の縛りも特にない。Aより簡単な気がする

“`python
S = list(input())
for _ in range(len(S)):
print(“x”, end=”)
“`

#C
Counterはやっぱり強い。YESを小文字で書いてしまい1WA。この手のミスは今後気を付けたい(atcoderさん、できればどっちかに統一して。。。)

“`python
from collections import Counter
N = int(input())
A = Counter(map(int, input().split()))
A = A.values()
for a in A:
if a != 1:
print(“N

元記事を表示

【DynamoDB】【Docker】docker-composeでDynamoDBとDjangoの開発環境を構築する

# docker-composeでDynamoDBとDjangoの開発環境を構築する
## はじめに
DynamoDBって安くて早くていいですよね。そんなDynamoDBをローカルで開発するためのDockerImageがあるってご存知ですか?そんなDockerImageを利用した開発環境構築の一例を照会します。

## 環境
プロダクション環境に即して利用するイメージのバージョンは以下です。
DynamoDBのGUI操作用に[dynamodb-admin](https://github.com/aaronshaf/dynamodb-admin)を利用します。Nodeはその環境を一緒に構築する際に利用します。

|環境|バージョン|
| — | — |
Python|3.7.4
MySQL|5.7
Node|10.16.3-alpine

## 環境構築
### DjangoとMySQL
完全にゼロから構築するのでまずはDjangoプロジェクトを開始します。
公式のDjangoイメージはバージョンが古いので自分で作ります。

“`shell
$ django-admin s

元記事を表示

Docker を使って Djangoチュートリアルの Polls アプリを AWS ECS へデプロイするサンプルのようなもの

# はじめに

こちらはDjangoのチュートリアル「[はじめての Django アプリ作成、その1](https://docs.djangoproject.com/ja/2.2/intro/tutorial01/)」のPolls(投票)アプリを Amazon Web Service(AWS) の Elastic Container Service(ECS) へデプロイするサンプル(のようなもの)です。

nginx + uwsgi + python + django + MySQL DB という構成で docker-compose を使っています。
また、デプロイには AWS CLI と ECS CLI を使い AWSコンソールは(ほとんど)使いません。(EC2インスタンス への ssh 接続でセキュリティグループを編集するときにだけコンソールを使用します)

前半はローカル環境上で docker-compose を使い Polls アプリを作成して動かすところまで。
後半で前半に作成した Polls アプリを ECS へデプロイします。

ソースは GitHub 上に公開しています

元記事を表示

OTHERカテゴリの最新記事