@wasade and @jrrideout, I started experimenting with make ``_sequence`` a numpy array (``dtype='|S1'``), and I agree that it won't add much complexity. I'd like to get this checked in with ``_sequence`` as a ``str`` first, and then make that change as a separate issue (in part because I think it could be useful for educational purposes to have it be possible to switch between the two representations to work with profiling, but that will make the changes more complicated. 

I'm make the change to use scipy's ``hamming`` function when that change is made.