We have an implementation of what seems to be the most popular dichromat simulation, but I've come to think that it's a pretty bad simulation. Basically, it increases the distance between some colors, sometimes by quite a lot, which can cause distinguishable_colors to do a sub-optimal job. Here's a demonstration:
http://nbviewer.ipython.org/gist/dcjones/a81401479be97230d1e7
If someone knows of a better approach, please let me know!