I don’t have super specific advice, but I do cryo-EM tomography reconstructions and can give you my general experience. I want to point out though - I don’t use TomoPy, I use eTomo, and I don’t use lots of MC sims, except for maybe water placement, although I use similarly performing algorithms like Glowurm swarm and STRA6.
My experience is that most consumer grade CPUs have the computational horsepower to do any sort of calculations very quickly, and that the limiting factor is almost always read speed (and possibly memory). Because the tomograms I generate are usually 5+ GB, opening one can take 1+ minutes off of a SATA SSD. If I had the budget, I’d go for the fastest possible storage. However, because I generate huge files, it’s just not even worth pursuing for me, because I’d be able to hold only a couple datasets at a time on them. So for computational power, especially if you’re offloading stuff onto a GPU, just about any modern 6+ core CPU will do fine.
For 3D angular searching, and 3D refinement, things get complicated. The GPU should hopefully do most of that for you with CUDA, although I don’t know much about TomoPy. I know with eTomo, using a Quadro K4000 vs my Ryzen 3700X, the K4000 is done in a matter of a few minutes, the 3700X is done in about 30 minutes. In my experience, the limiting factor when you have a CUDA capable GPU of any sort, is memory and swap. First of all, getting the file loaded takes some time. Then, your computer will need to keep multiple iterations of the file loaded at a time depending on the type of searching or filtering it’s doing. This is because it will need to compare things like cross-correlation and standard deviation of density between refinements to make sure it’s making progress. This can result in massive amounts of RAM being used. I’ve noticed on systems with 32GB of RAM that I am routinely swapping to disk and that slows things significantly, and makes the computer unusable while it’s happening. You know the size of your datasets better than me, but if I were making a new build for microscopy work, 64 GB would be the bare minimum.
So basically, when choosing a CPU, I’d think about PCI-E lanes, RAM channels, and RAM speeds. I think, if you have the budget for it, setting up an Optane cache would possibly be the way to go, but I don’t have access to that hardware so I’ve no way to verify. I’d love to get @wendell some sample data and see what he could do with it, as I’m currently planning out some builds for an incoming grant.
So basically, if it were me, I’d go bottom shelf Threadripper, a motherboard with lots of PCI-E and memory channels, and make sure all the memory channels are populated, a cheap CUDA card in the $200 or less range, (if you’re running Linux and want stereoscopic 3D, make sure you get a Quadro) and spend the rest of my budget on the fastest storage I could get.