はじめに
ケモインフォマティクスで学ぶPythonのデータ構造に引き続き、リピドミクス(脂質の網羅解析)を題材として「条件分岐」について解説していきます。
ケモインフォマティクスの実践例を中心に説明していきますので、基本を確認したいという人は以下の記事を読んでからこの記事を読んでみてください。
if文
if 条件式:
として、次の行に、条件式が成り立つときの処理を記述します。
if
の次の行は、半角4文字分インデントして書き始めます。
Un = 0
if Un == 0:
print('saturated fatty acid')
else:
print('unsaturated fatty acid')
else
は、if
に続く条件式が成り立たなかった場合の処理を記述するために使います。
さらに細かく条件を分けたい場合は、elif 条件式:
とすることで、別の条件が成り立つ場合の処理を記述することができます。ちなみに、elif
は、「else if」の略です。
上のプログラムでは、不飽和度(脂肪酸の二重結合の数)を示す変数Un
が0だった場合は、saturated fatty acid
(飽和脂肪酸)と出力し、Un
が0以外の数値だった場合は、unsaturated fatty acid
(不飽和脂肪酸)と出力するようにしています。
論理演算子
条件式の部分は複数の条件を指定することも可能です。
Cn = 18
Un = 0
if Cn == 16 and Un == 0:
print('palmitic acid')
elif Cn == 18 and Un == 0:
print('stearic acid')
else:
print('other fatty acid')
if
の後の条件式において、and
は「かつ」というような意味になります。
「または」にしたい場合はor
を用います。
in演算子
in
演算子を用いると、リストに含まれる要素かどうかを判定することができます。
fatty_acids = ['FA 16:0', 'FA 18:0', 'FA 18:1']
if 'FA 16:0' in fatty_acids:
print('Palmitic acid is included')
else:
print('Palmitic acid is not included')
応用:SMILES記法
最後に応用編として、SMILES記法で記述された化学構造から、飽和脂肪酸なのか不飽和脂肪酸なのかを判定することを考えてみます。
smiles_fa = 'OC(CCCCCCCCCCCCCCC)=O'
if smiles_fa.count('=') <= 1:
print('saturated fatty acid')
else:
print('unsaturated fatty acid')
不飽和脂肪酸かどうかは、炭素鎖の中に二重結合が含まれるかどうかで判定することができます。
カルボン酸部分にも二重結合はあるので、上のプログラムではそれ以外に二重結合があるかどうかを判定しています。
まとめ
ここでは、Pythonの条件分岐について、ケモインフォマティクスで使える実践的な知識を中心に解説しました。
もう一度要点をおさらいしておきましょう。
- if文は、
if 条件式:
として改行して半角スペース4つ分インデントした後に条件式が成り立った時の処理を記述します。条件を細かく分けたい場合は、else
やelif
も使えます。 - 条件式には、
and
やor
といった論理演算子も使用することができます。 -
in
演算子を使うと、指定した要素が配列の中に含まれるかどうかを判定できます。
続いて、Pythonの反復処理について以下の記事で解説しています。