def test_add_constraints_from_charges(self): pytest.importorskip("psi4") job = Job.parse_file(DMSO_JOB_WITH_ORIENTATION_ENERGIES) charge_options = job.charge_constraints assert len(charge_options.charge_sum_constraints) == 0 assert len(charge_options.charge_equivalence_constraints) == 0 constraints = job.generate_molecule_charge_constraints() assert len(constraints.charge_sum_constraints) == 0 assert len(constraints.charge_equivalence_constraints) == 2 constraints.add_constraints_from_charges([ -0.43877469, 0.14814998, 0.17996033, 0.18716814, 0.35743529, -0.5085439, -0.46067469, 0.19091725, 0.15500465, 0.18935764 ]) assert len(constraints.charge_sum_constraints) == 2 assert len(constraints.charge_equivalence_constraints) == 2 surface_constraints = job.construct_surface_constraint_matrix() assert surface_constraints.matrix.shape == (12, 11) matrix = SparseGlobalConstraintMatrix.from_constraints( surface_constraints, constraints) ref_a = np.loadtxt(DMSO_STAGE_2_A) ref_b = np.loadtxt(DMSO_STAGE_2_B) assert_allclose(matrix.coefficient_matrix.toarray(), ref_a) assert_allclose(matrix.constant_vector, ref_b)
def test_load_job_from_json(): job = Job.parse_file(TRIFLUOROETHANOL_JOB) assert len(job.molecules) == 1 orientation = job.molecules[0].conformers[0].orientations[0] assert_allclose(orientation.esp[0], 0.0054845008310878) assert_allclose(orientation.esp[-1], 0.0290851723179761) assert job.charges is None
def test_conformer_splitting_one_conf(self, jobfile, n_mol, n_confs, nosplit, split): job = Job.parse_file(jobfile) charge_options = job.charge_constraints assert len(job.molecules) == n_mol assert [mol.n_conformers for mol in job.molecules] == n_confs charge_options.split_conformers = False surface_constraints = job.construct_surface_constraint_matrix() assert surface_constraints.matrix.shape == nosplit charge_options.split_conformers = True surface_constraints = job.construct_surface_constraint_matrix() assert surface_constraints.matrix.shape == split