-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Address detailed balance more carefully in chemical environment moves #99
Comments
What exactly is the proposed behavior to be added here? What would you think about having a separation between the "chemical environment" object and a "chemical environment proposal engine" object that generates a new chemical environment proposal given an existing one? That way, we can try out a bunch of different proposal schemes to benchmark efficiency without changing the underlying chemical environment object? |
@jchodera - I believe that's the plan. @bannanc can fill in details, but Christopher is working on an entirely separate proposal engine that utilizes this framework. I think Caitlin's point in this issue is that the environment itself should probably check that an atom is empty rather than just allowing it to be deleted whether or not it's empty. |
Great! It might be good to hammer out a simple API for that so we can be sure that multiple groups can play with creating their own proposal engines, and so we can ensure that multiple proposal engines can coexist so they can be compared. |
Yes, @jchodera , we will eventually need an API for it. We're not actually near that stage yet -- at this point Chris is playing with IPython notebooks to figure out what types of manipulations he needs to do to the chemical environments in order to sample the types of SMIRKS patterns he wants to see coming out, then we'll work on an API spec. (Partly, the specs for this are something we should be working out for you, but it's less urgent than the property calculator so I haven't brought up the issue yet since we need the property calculator first and if we work on the API for the sampler now, it will slow down implementation of the property calculator.) |
I think this behavior needs to be taken into account inside the chemical environment objects. At least the Currently the default behavior for addAtom is to add an empty atom, although you can include optional arguments to create a decorated atom. We are still working primarily in the framework of the sampler written for smarty, but using the chemical environment objects. |
@davidlmobley and @cbayly13 For example I'm leaving this issue open because we will still have to figure out how to calculate these probabilities somewhere along the way. |
@bannanc - there's an important nuance. The relevant probabilities are move proposal probabilities - so it's not the probability of re-creating the deleted atom but the probability of proposing its re-creation. This means that a decorated atom could be removed, but only if it is something we would propose creating. i.e., we can delete Without wizardry that I won't go in to here, if we would propose creation only of |
Aw! Thank you for that explanation, that is different from my understanding in our discussion yesterday. This continues to seem like an issue for the sampler, since technically different samplers could have different creation criteria? For example, what if someone decided that a new atom could be proposed with up to 1 ORtype and 1 ANDtype so |
@bannanc - there are some API issues we will have to deal with to solve this more generally, but this is basically going to need to be mostly taken care of by the move proposal machinery. Specifically, the move proposal machinery will need to figure out the probability of proposing a particular move and the probability of proposing the reverse move. Some discussion of this is available here: #92 (comment) (and see also #110 ; key phrase is "Metropolis-Hastings"). For your purposes, what this means is that actually the environment mostly shouldn't be checking removal criteria I think -- all of this is going to need to be handled by the move proposal machinery. (Also, more sophisticated move proposal machinery could use some tricks to do fancier insertions/deletions, so, again, an argument for not doing that much checking within the environments.) |
I will read through the comments on the other issues. There are a few "idiot-proof" criteria the environment checks for removing atoms. For example, indexed atoms can't be removed and "bridging" atoms cannot be removed for example in |
@bannanc - yes, those are needed. But we can leave the "can we remove this without breaking detailed balance?" type concerns to the move proposal engine. |
As @jchodera pointed out in the most recent google call we should only be creating and destroying "empty" atoms in chemical environments.
I think the easiest place to do this is inside the chemical environments. There are already checks there before removing atoms it would be easy to include this.
I wil plan to include this in my next pull request with environments, when I have the smirky sampler working. @cbayly13 let me know if you want this change sooner.
The text was updated successfully, but these errors were encountered: