Esempio n. 1
0
def test_parameters(od, parameters):
    if not isinstance(parameters, dict):
        # Raise error if wrong format
        with pytest.raises(TypeError):
            od.set_parameters(parameters=parameters)
    elif not set(parameters.keys()).issubset(AVAILABLE_PARAMETERS.keys()):
        # Warn but add if parameter is useless
        with pytest.warns(UserWarning):
            new_od = od.set_parameters(parameters=parameters)
            assert set(parameters.keys()).issubset(new_od.parameters.keys())
            assert set(od.parameters.keys()).issubset(new_od.parameters.keys())
    elif "eq_state" in parameters.keys():
        if parameters["eq_state"] not in AVAILABLE_PARAMETERS["eq_state"]:
            # Raise error if wrong format or not available choice
            if isinstance(parameters["eq_state"], str):
                with pytest.raises(ValueError):
                    od.set_parameters(parameters=parameters)
            else:
                with pytest.raises(TypeError):
                    od.set_parameters(parameters=parameters)
    else:
        # Check defaults
        new_od = od.set_parameters(parameters=parameters)
        if parameters is None:
            assert new_od.parameters == DEFAULT_PARAMETERS
        else:
            assert set(parameters.keys()).issubset(new_od.parameters.keys())
    # Inhibit setter
    with pytest.raises(AttributeError):
        od.parameters = parameters
Esempio n. 2
0
def test_parameters():
    
    # OceanDataset
    assert od_in.parameters == DEFAULT_PARAMETERS
    
    # Parameters default and checks
    assert DEFAULT_PARAMETERS.keys() == TYPE_PARAMETERS.keys()
    assert set(AVAILABLE_PARAMETERS.keys()).issubset(AVAILABLE_PARAMETERS.keys())
    
    # Wrong type
    test_dict = 1
    with pytest.raises(TypeError) as e:
        od_in.set_parameters(test_dict)
    assert str(e.value) == "`parameters` must be dict"
    
    # Inhibit setter
    test_dict = DEFAULT_PARAMETERS.copy()
    test_dict['c_p'] = 0
    with pytest.raises(AttributeError) as e:
        od_in.parameters = test_dict
    assert str(e.value) == _setter_error_message('parameters')
    
    # Check set
    od_out = od_in.set_parameters(test_dict)
    assert od_out.parameters == test_dict
    assert od_in.parameters != od_out.parameters
    
    # Check wrong parametes
    with pytest.raises(TypeError):
        od_out.set_parameters({'eq_state': 1})
    with pytest.raises(ValueError):
        od_out.set_parameters({'eq_state': 'test'})
        
    # Check new parameters
    with pytest.warns(UserWarning):
        od_out = od_in.set_parameters({'test': 'test'})
    assert 'test' in od_out.parameters
Esempio n. 3
0
    def set_parameters(self, parameters):
        """
        Set model parameters used by OceanSpy.
        See :py:const:`oceanspy.DEFAULT_PARAMETERS` for a list of parameters,
        and :py:const:`oceanspy.PARAMETERS_PARAMETERS_DESCRIPTION`
        for their description.
        See :py:const:`oceanspy.AVAILABLE_PARAMETERS` for a list of parameters
        with predefined options.

        Parameters
        ----------
        parameters: dict
            {'name': value}
        """
        from oceanspy import DEFAULT_PARAMETERS, AVAILABLE_PARAMETERS, TYPE_PARAMETERS

        # Check parameters
        _check_instance({"parameters": parameters}, "dict")

        # Check parameters
        warn_params = []
        for key, value in parameters.items():
            if key not in DEFAULT_PARAMETERS.keys():
                warn_params = warn_params + [key]
            else:
                if not isinstance(value, TYPE_PARAMETERS[key]):
                    raise TypeError(
                        "Invalid [{}]. " "Check oceanspy.TYPE_PARAMETERS" "".format(key)
                    )
                check1 = key in AVAILABLE_PARAMETERS.keys()
                if check1 and (value not in AVAILABLE_PARAMETERS[key]):
                    raise ValueError(
                        "Requested [{}] not available. "
                        "Check oceanspy.AVAILABLE_PARAMETERS"
                        "".format(key)
                    )

        if len(warn_params) != 0:
            _warnings.warn(
                "{} are not OceanSpy parameters" "".format(warn_params), stacklevel=2
            )

        # Set parameters
        self = self._store_as_global_attr(
            name="parameters", attr=parameters, overwrite=True
        )

        return self
Esempio n. 4
0
    def set_parameters(self, parameters):
        """
        Set model parameters used by OceanSpy (see oceanspy.DEFAULT_PARAMETERS)
        
        Parameters
        ----------
        parameters: dict
            {'parameter_name': parameter_value}
        """
        from oceanspy import DEFAULT_PARAMETERS, AVAILABLE_PARAMETERS, TYPE_PARAMETERS

        # Check parameters
        if not isinstance(parameters, dict):
            raise TypeError("`parameters` must be dict")

        # Check parameters
        warn_params = []
        for key, value in parameters.items():
            if key not in DEFAULT_PARAMETERS.keys():
                warn_params = warn_params + [key]
            else:
                if not isinstance(value, TYPE_PARAMETERS[key]):
                    raise TypeError(
                        "Invalid [{}]. Check oceanspy.TYPE_PARAMETERS".format(
                            key))
                if key in AVAILABLE_PARAMETERS.keys(
                ) and value not in AVAILABLE_PARAMETERS[key]:
                    raise ValueError(
                        "Requested [{}] not available. Check oceanspy.AVAILABLE_PARAMETERS"
                        .format(key))

        if len(warn_params) != 0:
            _warnings.warn(
                ("{} are not OceanSpy parameters").format(warn_params),
                stacklevel=2)

        # Set parameters
        self = self._store_as_global_attr(name='parameters',
                                          attr=parameters,
                                          overwrite=True)

        return self