def main(): args = parse_args() fn_h5, grp_name = parse_h5(args.output, 'output') # check if the group is already present (and not empty) in the output file if check_output(fn_h5, grp_name, args.overwrite): return # Load the charges from the HDF5 file charges = load_charges(args.charges) # Load the uniform grid and the coordintes ugrid, coordinates = load_ugrid_coordinates(args.grid) ugrid.pbc[:] = 1 # enforce 3D periodic # Fix total charge if requested if args.qtot is not None: charges -= (charges.sum() - args.qtot)/len(charges) # Store parameters in output results = {} results['qtot'] = charges.sum() # Determine the grid specification results['ugrid'] = ugrid # Ewald parameters rcut, alpha, gcut = parse_ewald_args(args) # Some screen info if log.do_medium: log('Important parameters:') log.hline() log('Number of grid points: %12i' % ugrid.size) log('Grid shape: [%8i, %8i, %8i]' % tuple(ugrid.shape)) log('Ewald real cutoff: %12.5e' % rcut) log('Ewald alpha: %12.5e' % alpha) log('Ewald reciprocal cutoff: %12.5e' % gcut) log.hline() # TODO: add summation ranges log('Computing ESP (may take a while)') # Allocate and compute ESP grid esp = np.zeros(ugrid.shape, float) compute_esp_grid_cube(ugrid, esp, coordinates, charges, rcut, alpha, gcut) results['esp'] = esp # Store the results in an HDF5 file write_script_output(fn_h5, grp_name, results, args)
def main(): args = parse_args() fn_h5, grp_name = parse_h5(args.output, 'output') # check if the group is already present (and not empty) in the output file if check_output(fn_h5, grp_name, args.overwrite): return # Load the charges from the HDF5 file charges = load_charges(args.charges) # Load the uniform grid and the coordintes ugrid, coordinates = load_ugrid_coordinates(args.grid) ugrid.pbc[:] = 1 # enforce 3D periodic # Fix total charge if requested if args.qtot is not None: charges -= (charges.sum() - args.qtot) / len(charges) # Store parameters in output results = {} results['qtot'] = charges.sum() # Determine the grid specification results['ugrid'] = ugrid # Ewald parameters rcut, alpha, gcut = parse_ewald_args(args) # Some screen info if log.do_medium: log('Important parameters:') log.hline() log('Number of grid points: %12i' % ugrid.size) log('Grid shape: [%8i, %8i, %8i]' % tuple(ugrid.shape)) log('Ewald real cutoff: %12.5e' % rcut) log('Ewald alpha: %12.5e' % alpha) log('Ewald reciprocal cutoff: %12.5e' % gcut) log.hline() # TODO: add summation ranges log('Computing ESP (may take a while)') # Allocate and compute ESP grid esp = np.zeros(ugrid.shape, float) compute_esp_grid_cube(ugrid, esp, coordinates, charges, rcut, alpha, gcut) results['esp'] = esp # Store the results in an HDF5 file write_script_output(fn_h5, grp_name, results, args)
def main(): args = parse_args() fn_h5, grp_name = parse_h5(args.output, 'output') # check if the group is already present (and not empty) in the output file if check_output(fn_h5, grp_name, args.overwrite): return # Load the cost function from the HDF5 file cost, used_volume = load_cost(args.cost) # Load the charges from the HDF5 file charges = load_charges(args.charges) # Fix total charge if requested if args.qtot is not None: charges -= (charges.sum() - args.qtot) / len(charges) # Store parameters in output results = {} results['qtot'] = charges.sum() # Fitness of the charges results['cost'] = cost.value_charges(charges) if results['cost'] < 0: results['rmsd'] = 0.0 else: results['rmsd'] = (results['cost'] / used_volume)**0.5 # Worst case stuff results['cost_worst'] = cost.worst(0.0) if results['cost_worst'] < 0: results['rmsd_worst'] = 0.0 else: results['rmsd_worst'] = (results['cost_worst'] / used_volume)**0.5 # Write some things on screen if log.do_medium: log('RMSD charges: %10.5e' % np.sqrt( (charges**2).mean())) log('RMSD ESP: %10.5e' % results['rmsd']) log('Worst RMSD ESP: %10.5e' % results['rmsd_worst']) log.hline() # Store the results in an HDF5 file write_script_output(fn_h5, grp_name, results, args)
def main(): args = parse_args() fn_h5, grp_name = parse_h5(args.output, 'output') # check if the group is already present (and not empty) in the output file if check_output(fn_h5, grp_name, args.overwrite): return # Load the cost function from the HDF5 file cost, used_volume = load_cost(args.cost) # Load the charges from the HDF5 file charges = load_charges(args.charges) # Fix total charge if requested if args.qtot is not None: charges -= (charges.sum() - args.qtot)/len(charges) # Store parameters in output results = {} results['qtot'] = charges.sum() # Fitness of the charges results['cost'] = cost.value_charges(charges) if results['cost'] < 0: results['rmsd'] = 0.0 else: results['rmsd'] = (results['cost']/used_volume)**0.5 # Worst case stuff results['cost_worst'] = cost.worst(0.0) if results['cost_worst'] < 0: results['rmsd_worst'] = 0.0 else: results['rmsd_worst'] = (results['cost_worst']/used_volume)**0.5 # Write some things on screen if log.do_medium: log('RMSD charges: %10.5e' % np.sqrt((charges**2).mean())) log('RMSD ESP: %10.5e' % results['rmsd']) log('Worst RMSD ESP: %10.5e' % results['rmsd_worst']) log.hline() # Store the results in an HDF5 file write_script_output(fn_h5, grp_name, results, args)