Skip to content
Snippets Groups Projects
Select Git revision
  • 39498bba8e50fbd4370e5ef1d3fa196e26fee551
  • main default protected
  • ravaflow3g
  • docs
  • v0.1.2
  • v0.1.1
  • v0.1.0
7 results

test_active_learning.py

Blame
  • test_active_learning.py 3.66 KiB
    import pytest
    import numpy as np
    from psimpy.inference.active_learning import ActiveLearning
    from psimpy.simulator.run_simulator import RunSimulator
    from psimpy.simulator.mass_point_model import MassPointModel
    from psimpy.sampler.latin import LHS
    from psimpy.sampler.saltelli import Saltelli
    from psimpy.emulator.robustgasp import ScalarGaSP, PPGaSP
    from scipy.stats import uniform, norm
    from scipy import optimize
    from beartype.roar import BeartypeCallHintParamViolation
    
    @pytest.mark.parametrize(
        "run_sim_obj, prior, likelihood, lhs_sampler, scalar_gasp, optimizer",
        [
            (MassPointModel(), uniform.pdf, norm.pdf, LHS(1), ScalarGaSP(1),
            optimize.brute), 
            (RunSimulator(MassPointModel.run, ['coulomb_friction']),
            None, norm.pdf, LHS(1), ScalarGaSP(1), optimize.brute),
            (RunSimulator(MassPointModel.run, ['coulomb_friction']),
            uniform.pdf, None, LHS(1), ScalarGaSP(1), optimize.brute),
            (RunSimulator(MassPointModel.run, ['coulomb_friction']),
            uniform.pdf, norm.pdf, Saltelli(1), ScalarGaSP(1), optimize.brute),
            (RunSimulator(MassPointModel.run, ['coulomb_friction']),
            uniform.pdf, norm.pdf, LHS(1), PPGaSP(1), optimize.brute),
            (RunSimulator(MassPointModel.run, ['coulomb_friction']),
            uniform.pdf, norm.pdf, LHS(1), ScalarGaSP(1), None)       
        ]
    )  
    def test_ActiveLearning_init_TypeError(run_sim_obj, prior, likelihood,
        lhs_sampler, scalar_gasp, optimizer):
        ndim = 1
        bounds = np.array([[0,1]])
        data  = np.array([1,2,3])
        with pytest.raises(BeartypeCallHintParamViolation):
            _ = ActiveLearning(ndim, bounds, data, run_sim_obj, prior, likelihood,
                lhs_sampler, scalar_gasp, optimizer=optimizer)
    
    
    @pytest.mark.parametrize(
        "run_sim_obj, lhs_sampler, scalar_gasp",
        [
            (RunSimulator(MassPointModel.run,
                ['coulomb_friction', 'turbulent_friction']),
            LHS(1), ScalarGaSP(1)
            ),
            (RunSimulator(MassPointModel.run, ['coulomb_friction']),
            LHS(2), ScalarGaSP(1)),
            (RunSimulator(MassPointModel.run, ['coulomb_friction']),
            LHS(1), ScalarGaSP(3))      
        ]
    )  
    def test_ActiveLearning_init_RuntimeError(run_sim_obj, lhs_sampler,
        scalar_gasp):
        ndim = 1
        bounds = np.array([[0,1]])
        data  = np.array([1,2,3])
        prior = uniform.pdf
        likelihood = norm.pdf
        with pytest.raises(RuntimeError):
            _ = ActiveLearning(ndim, bounds, data, run_sim_obj, prior, likelihood,
                lhs_sampler, scalar_gasp)
    
    
    @pytest.mark.parametrize(
        "scalar_gasp_mean, indicator",
        [
            ('cubic', 'entropy'),
            ('linear', 'divergence')
        ]
    )  
    def test_ActiveLearning_init_NotImplementedError(scalar_gasp_mean, indicator):
        ndim = 1
        bounds = np.array([[0,1]])
        data  = np.array([1,2,3])
        run_sim_obj = RunSimulator(MassPointModel.run, ['coulomb_friction'])
        lhs_sampler = LHS(1)
        scalar_gasp = ScalarGaSP(1)
        prior = uniform.pdf
        likelihood = norm.pdf
        with pytest.raises(NotImplementedError):
            _ = ActiveLearning(ndim, bounds, data, run_sim_obj, prior, likelihood,
                lhs_sampler, scalar_gasp, scalar_gasp_mean=scalar_gasp_mean,
                indicator=indicator)
    
    def test_ActiveLearning_init_ValueError():
        ndim = 1
        bounds = np.array([[0,1]])
        data  = np.array([1,2,3])
        run_sim_obj = RunSimulator(MassPointModel.run, ['coulomb_friction'])
        lhs_sampler = LHS(1)
        scalar_gasp = ScalarGaSP(1)
        prior = uniform.pdf
        likelihood = norm.pdf
        kwgs_optimizer = {"NS":50}
        with pytest.raises(ValueError):
            _ = ActiveLearning(ndim, bounds, data, run_sim_obj, prior, likelihood,
                lhs_sampler, scalar_gasp, kwgs_optimizer=kwgs_optimizer)