def main(argv=None): if(argv==None): argv = sys.argv options = options_desc.parse_args(argv)[0] assert(not(options.refine_all and options.extend_all)) pool = Pool() needy_nodes = pool.where("isa_partition and is_sampled").multilock() # 1. Trying to detect fake convergence for n in pool.where("state == 'converged'"): means = kmeans(n.trajectory, k=2) d = (means[0] - means[1]).norm2() if(d > 2.0 and (options.refine_all or userinput("%s has converged but appears to have a bimodal distribution.\nDo you want to refine?"%n.name, "bool"))): #TODO decide upon threshold (per coordinate?) refine(n, options) # 2. Dealing with not-converged nodes for n in pool.where("state == 'not-converged'"): if(not(options.refine_all or options.extend_all)): choice = userchoice("%s has not converged. What do you want to do?"%n.name, ['_refine', '_extend', '_ignore']) if(options.refine_all or choice=="r"): refine(n, options) elif(options.extend_all or choice=="e"): extend(n) elif(choice=="i"): continue for n in needy_nodes: n.save() n.unlock() zgf_setup_nodes.main() zgf_grompp.main() zgf_cleanup.main()
def mknodes_kmeans(parent, numnodes): frames_int = parent.trajectory fixed_clusters = [n.internals for n in parent.children] means = kmeans(frames_int, numnodes, fixed_clusters=fixed_clusters) # k-means finished - examine results chosen_idx = [ np.argmin( (frames_int-m).norm2() ) for m in means ] print "\nDiscretization overview:" frames_chosen = frames_int.getframes(chosen_idx) print "- Variance per int of presampling trajectory:" print frames_int.var().array print "- Variance per int of chosen nodes:" print frames_chosen.var().array print "- Relative variance per int of chosen nodes:" print (frames_chosen.var() / frames_int.var()).array return(chosen_idx)
def main(argv=None): if (argv == None): argv = sys.argv options = options_desc.parse_args(argv)[0] assert (not (options.refine_all and options.extend_all)) pool = Pool() needy_nodes = pool.where("isa_partition and is_sampled").multilock() # 1. Trying to detect fake convergence for n in pool.where("state == 'converged'"): means = kmeans(n.trajectory, k=2) d = (means[0] - means[1]).norm2() if (d > 2.0 and (options.refine_all or userinput( "%s has converged but appears to have a bimodal distribution.\nDo you want to refine?" % n.name, "bool"))): #TODO decide upon threshold (per coordinate?) refine(n, options) # 2. Dealing with not-converged nodes for n in pool.where("state == 'not-converged'"): if (not (options.refine_all or options.extend_all)): choice = userchoice( "%s has not converged. What do you want to do?" % n.name, ['_refine', '_extend', '_ignore']) if (options.refine_all or choice == "r"): refine(n, options) elif (options.extend_all or choice == "e"): extend(n) elif (choice == "i"): continue for n in needy_nodes: n.save() n.unlock() zgf_setup_nodes.main() zgf_grompp.main() zgf_cleanup.main()