Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
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
Exemplo n.º 3
0
    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