It's hard to optimize your code in Pure Python, but if you use NumPy arrays from the very beginning instead of Python lists / strings, you can get significant speedup:
>>> import numpy as np
>>> sequence_pair = [' AT GT '*10000, ' GTAGCG '*10000]
>>> sequence_pair_arr = np.array([list(' AT GT '*10000), list(' GTAGCG '*10000)])
>>> %timeit overlap(sequence_pair)
100 loops, best of 3: 14 ms per loop
>>> %timeit np.all(sequence_pair_arr != ' ', axis=0).sum()
100 loops, best of 3: 2.2 ms per loop
source
share