Hi George,
Thanks for your help with this!
We wrote up our high-level understanding of the current Tor guard selection algorithm here:
https://gist.github.com/chelseakomlo/2acbe15314b5a809c6f4
This has more than our python simulation, but less than the actual Tor implementation. For example, it is missing conditions like prioritization by uptime, capacity, etc.
https://github.com/twstrike/tor_guardsim/blob/develop/lib/original_client.py
If you wouldn't mind taking a look at this and letting us know anything that is missing/should change, that would be really helpful.
Thanks! Chelsea