LoginSignup
7
3

More than 3 years have passed since last update.

ケモインフォマティクスで学ぶNumPy

Last updated at Posted at 2020-01-18

はじめに

ケモインフォマティクスで学ぶPythonのクラスに続き、リピドミクス(脂質の網羅解析)を題材として、Pythonの代表的なライブラリの一つである「NumPy」について解説していきます。
ケモインフォマティクスの実践例を中心に説明していきますので、基本を確認したいという人は以下の記事を読んでからこの記事を読んでみてください。

製薬企業研究者がNumPyについてまとめてみた

NumPyを用いた基本的な演算

NumPyを使うことで、ベクトルや行列演算を高速で行うことができます。

まず、import ライブラリ名でライブラリを読み込むことができます。
さらに、as 略号をつけることで、以降はここで書いた略号でライブラリを呼び出す(指し示す)ことができます。
NumPyの場合は、慣習的にnpとすることが多いです。

import numpy as np


masses = np.array([12, 1.00783, 15.99491]) # 炭素、水素、酸素原子の精密質量を格納したndarray
numbers = np.array([16, 32, 2]) # パルミチン酸の炭素、水素、酸素原子の数

print(masses * numbers) # 元素ごとに精密質量を計算
print(sum((masses * numbers))) # パルミチン酸の精密質量

上のように、np.array(リスト)とすることで、複数の要素を持つベクトルを作成することができます。
四則演算をすると、要素ごとに演算が行われます。
また、sumを使うことで、全ての要素の合計値を求めることができます。

リストとの違い

np.array(リスト)で作成されるベクトルは、リストによく似ていますが、データ型はlistではなく、numpy.ndarrayになります。
numpy.ndarrayどうしを掛け算すると、各要素を掛けたnumpy.ndarrayが返されますが、listどうしを掛け算すると、TypeErrorとなり演算ができません。

import numpy as np


masses_ndarray = np.array([12, 1.00783, 15.99491])
print(type(masses_ndarray)) # numpy.ndarray

masses_list = [12, 1.00783, 15.99491]
print(type(masses_list)) # list

print(list(masses_ndarray)) # [12, 1.00783, 15.99491]

numbers_list = [16, 32, 2]
# print(masses_list * numbers_list) # TypeError

応用:原子量の計算

次に、原子およびその同位体の精密質量と天然同位体存在比をもとに、原子量を求めることを考えます。

import numpy as np


exact_mass_H = np.array([1.00783, 2.01410]) # 同位体の精密質量
isotope_ratio_H = np.array([0.99989, 0.00011]) # 同位体の天然存在比

molecular_weight_H = sum(exact_mass_H * isotope_ratio_H) # 原子量を計算
print(molecular_weight_H) # 水素の原子量

応用:複数の化合物の精密質量の計算

最後に、複数の脂肪酸分子種の精密質量を求めてみます。

import numpy as np


numbers = np.array([[16, 32, 2], [18, 36, 2], [18, 34, 2]]) # パルミチン酸、ステアリン酸、オレイン酸の元素組成

print(masses * numbers) # 各分子種の各元素の精密質量を計算
print(np.sum(masses * numbers, axis=1)) # 各分子種の精密質量を計算

まとめ

ここでは、NumPyについて、ケモインフォマティクスで使える実践的な知識を中心に解説しました。
もう一度要点をおさらいしておきましょう。

  • NumPyを使うことで、ベクトルの要素どうしの演算が簡単に行えます。
  • 原子量や分子量、精密質量の計算に使えます。

続いて、Pandasについて以下の記事で解説しています。

ケモインフォマティクスで学ぶPandas

参考資料・リンク

プログラミング言語Pythonとは?AIや機械学習に使える?

7
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3