擅长:python、mysql、java
<p>这是我的版本(但你可能开始向我扔石头混淆)请张贴一些较长的测试数据,我想测试它。。。在</p>
<pre><code>seq1='CT-A-CG'
seq2='CNCTA*G'
import numpy as np
def is_not_gap(a): return 0 if (a=='-') else 1
def is_valid(a): return 1 if (a=='A' or a=='C' or a=='G' or a=='T' ) else 0
def is_mm(t): return 0 if t[0]==t[1] else 1
# find the indexes to be retained
retainx=np.where( np.multiply( map(is_not_gap, seq1), map(is_not_gap, seq2) ) )[0].tolist()
# find the valid ones
valid0=np.where(np.multiply( map( is_valid, seq1),map( is_valid, seq2))[retainx])[0].tolist()
# find the mismatches
mm=np.array(map( is_mm, zip( seq1,seq2)))
mismatch0=set(valid0) & set(np.where(mm[retainx])[0])
</code></pre>
<p>结果(从零开始的索引):</p>
^{pr2}$
<p>(如果你愿意,我可以发布更长、更详细的版本)</p>