I was told that the Mutate algorithm for Mutate uses the Monte Carlo method to determine the best sidechain substitutions.
Monte Carlo is random and computationally inefficient. For example, to determine the best choice of four interacting sidechains, we would need to calculate the interactions for 20^4, or 160,000 combinations. With five sidechains, this increases to 20^5, or 3.2 million combinations. This is why Mutate is the slowest function we see in this game.
The main reason Foldit exists is because we, the lowly humans, can look at the structure of a protein and automatically determine if it's "not right" or "possibly good", eliminating untold numbers of useless (the "not right") paths on which to make computations towards the actual structure.
Can Foldit's Monte Carlo algorithm for Mutate be improved in a similar way, to eliminate "not right" substitutions to try? I would think, depending on the components of the subscores, that it would be possible, and depending on the importance/weight/rank of the subscore, that some sidechain substitutions could be immediately eliminated from the calculations.
This may not be the best example, but let's say that the "packing" subscore is weighted the highest among subscores. (I have no idea if that's true.) I have a leucine in a certain position in the core when the Mutate function is invoked. There is no point in seeing if glycine, alanine, serine, or valine would be a better substitution, as they are all smaller than leucine, and would only decrease the packing score. Eliminating these four sidechains reduces the number of calculations to make from 20^x down to 16^x.
I am certain the response is going to be "it's more complicated than that", but with ever-increasing protein sizes bogging down our laptops and desktops, our user experience and our productivity will continually decrease until the Mutate function is made more efficient.