ハミング距離
文字列sからtに変換するのに必要な編集(置換)の数
AAACCCGGGTTT
|| |
CGACGATATGTC
AAACCCGGGTTT
|||||||||||
AACCCGGGTTTA
例1:sとtで共通のものは12塩基のうち3塩基なのでハミング距離は 9
例2:sとtの配列はほぼ共通( 92%)だが開始位置から比べるのでハミング距離は 4
AAACCCGGGTTT
|| || || ||
AACCCGGGTTTA
s
t
s
t
s
t
Slide 8
Slide 8 text
位置引数の複数指定
位置引数は順番があるのでargparseで指定した順番にして渡す
$ ./hamm.py -h
usage: hamm.py [-h] str str
Hamming distance
positional arguments:
str Sequence 1
str Sequence 2
optional arguments:
-h, --help show this help message and exit
min():最小値を求める
range()の引数に求めた最小値を渡せばインデックスを使って文字を比較できる
>>> seq1, seq2 = 'AC', 'ACGT'
>>> min(len(seq1), len(seq2))
2
2つの配列を比べる場合、短い方の長さだけ調べれば良い
min()で最小値が求められる
>>> for i in range(min(len(seq1), len(seq2))):
... print(seq1[i], seq2[i])
...
A A
C C
Slide 11
Slide 11 text
解法編
Slide 12
Slide 12 text
Solution 1: min()
①seq1とseq2の長さの差の絶対値をdistanceに代入
②seq1とseq2の短い方の長さでイテレーション
③seq1とseq2の同じ位置の文字を比較して異なればdistanceをインクリメント
①
②
③