def main(): setup_timestamp_logging() # Load in the force field force_field_path = "smirnoff99Frosst-1.1.0.offxml" force_field_source = SmirnoffForceFieldSource.from_path(force_field_path) # Load in the data set containing the pure and binary properties. data_set = PhysicalPropertyDataSet.from_json("pure_data_set.json") data_set.merge(PhysicalPropertyDataSet.from_json("binary_data_set.json")) # Set up a server object to run the calculations using. server = setup_server(backend_type=BackendType.LocalGPU, max_number_of_workers=1, port=8001) with server: # Request the estimates. property_estimator = EvaluatorClient( ConnectionOptions(server_port=8001)) for calculation_layer in ["SimulationLayer", "ReweightingLayer"]: options = RequestOptions() options.calculation_layers = [calculation_layer] parameter_gradient_keys = [ ParameterGradientKey(tag="vdW", smirks="[#6X4:1]", attribute="epsilon"), ParameterGradientKey(tag="vdW", smirks="[#6X4:1]", attribute="rmin_half"), ] request, _ = property_estimator.request_estimate( property_set=data_set, force_field_source=force_field_source, options=options, parameter_gradient_keys=parameter_gradient_keys, ) # Wait for the results. results, _ = request.results(True, 5) layer_name = re.sub(r"(?<!^)(?=[A-Z])", "_", calculation_layer).lower() results.json(f"pure_binary_{layer_name}.json", True)
def main(): setup_timestamp_logging() # Load in the force field force_field_path = "smirnoff99Frosst-1.1.0.offxml" force_field_source = SmirnoffForceFieldSource.from_path(force_field_path) # Create a data set containing three solvation free energies. data_set = PhysicalPropertyDataSet.from_json("hydration_data_set.json") data_set.json("hydration_data_set.json", format=True) # Set up a server object to run the calculations using. server = setup_server(backend_type=BackendType.LocalGPU, max_number_of_workers=1, port=8002) with server: # Request the estimates. property_estimator = EvaluatorClient( ConnectionOptions(server_port=8002)) options = RequestOptions() options.calculation_layers = ["SimulationLayer"] options.add_schema("SimulationLayer", "SolvationFreeEnergy", _get_fixed_lambda_schema()) request, _ = property_estimator.request_estimate( property_set=data_set, force_field_source=force_field_source, options=options, ) # Wait for the results. results, _ = request.results(True, 60) # Save the result to file. results.json(f"results.json", True)
def main(): setup_timestamp_logging() # Load in the force field force_field_path = 'smirnoff99Frosst-1.1.0.offxml' force_field_source = SmirnoffForceFieldSource.from_path(force_field_path) # Load in the data set containing a single dielectric # property. with open('pure_data_set.json') as file: data_set = PhysicalPropertyDataSet.parse_json(file.read()) data_set.filter_by_property_types('DielectricConstant') # Set up the server object which run the calculations. setup_server(backend_type=BackendType.LocalGPU, max_number_of_workers=1, port=8001) # Request the estimates. property_estimator = client.PropertyEstimatorClient( client.ConnectionOptions(server_port=8001)) options = PropertyEstimatorOptions() options.allowed_calculation_layers = ['SimulationLayer'] options.workflow_options = { 'DielectricConstant': { 'SimulationLayer': WorkflowOptions(WorkflowOptions.ConvergenceMode.NoChecks), 'ReweightingLayer': WorkflowOptions(WorkflowOptions.ConvergenceMode.NoChecks) } } parameter_gradient_keys = [ ParameterGradientKey(tag='vdW', smirks='[#6X4:1]', attribute='epsilon'), ParameterGradientKey(tag='vdW', smirks='[#6X4:1]', attribute='rmin_half') ] request = property_estimator.request_estimate( property_set=data_set, force_field_source=force_field_source, options=options, parameter_gradient_keys=parameter_gradient_keys) # Wait for the results. results = request.results(True, 5) # Save the result to file. with open('dielectric_simulation.json', 'wb') as file: json_results = json.dumps(results, sort_keys=True, indent=2, separators=(',', ': '), cls=TypedJSONEncoder) file.write(json_results.encode('utf-8')) # Attempt to reweight the cached data. options.allowed_calculation_layers = ['ReweightingLayer'] request = property_estimator.request_estimate( property_set=data_set, force_field_source=force_field_source, options=options, parameter_gradient_keys=parameter_gradient_keys) # Wait for the results. results = request.results(True, 5) # Save the result to file. with open('dielectric_reweight.json', 'wb') as file: json_results = json.dumps(results, sort_keys=True, indent=2, separators=(',', ': '), cls=TypedJSONEncoder) file.write(json_results.encode('utf-8'))