Exemplo n.º 1
0
    def test_get_eval_string_bad_string(self):
        # this string has no equals sign
        expr = 'es6.1078*exp(log(17.08085)*(tas-273.16)/(234.175+(tas-273.16)))'
        with self.assertRaises(ValueError):
            EvalFunction._get_eval_string_(expr, {'tas': 'var.value'})

        # this string has a numpy function "foo" that is not enabled (and does not exist)
        expr = 'es=6.1078*exp(foo(17.08085)*(tas-273.16)/(234.175+(tas-273.16)))'
        with self.assertRaises(ValueError):
            EvalFunction._get_eval_string_(expr, {'tas': 'var.value'})
Exemplo n.º 2
0
 def test_get_eval_string_bad_string(self):
     ## this string has no equals sign
     expr = 'es6.1078*exp(log(17.08085)*(tas-273.16)/(234.175+(tas-273.16)))'
     with self.assertRaises(ValueError):
         EvalFunction._get_eval_string_(expr,{'tas':'var.value'})
         
     ## this string has a numpy function "foo" that is not enabled (and does not exist)
     expr = 'es=6.1078*exp(foo(17.08085)*(tas-273.16)/(234.175+(tas-273.16)))'
     with self.assertRaises(ValueError):
         EvalFunction._get_eval_string_(expr,{'tas':'var.value'})
Exemplo n.º 3
0
 def test_get_eval_string_two_variables(self):
     map_vars = {'tasmax': 'tasmax.value', 'tas': 'tas.value'}
     expr = 'foo=log(1000*(tasmax-tas))/3'
     to_eval, out_variable_name = EvalFunction._get_eval_string_(
         expr, map_vars)
     self.assertEqual(to_eval, 'np.log(1000*(tasmax.value-tas.value))/3')
     self.assertEqual(out_variable_name, 'foo')
Exemplo n.º 4
0
    def test_get_eval_string(self):
        expr = 'es=6.1078*exp(log(17.08085)*(tas-273.16)/(234.175+(tas-273.16)))'
        to_eval, out_variable_name = EvalFunction._get_eval_string_(
            expr, {'tas': 'var.value'})
        self.assertEqual(
            to_eval,
            '6.1078*np.exp(np.log(17.08085)*(var.value-273.16)/(234.175+(var.value-273.16)))'
        )
        self.assertEqual(out_variable_name, 'es')

        expr = 'tas=tas-4'
        to_eval, out_variable_name = EvalFunction._get_eval_string_(
            expr, {'tas': 'var.value'})
        self.assertEqual(to_eval, 'var.value-4')
        self.assertEqual(out_variable_name, 'tas')

        expr = 'tas=4-tas'
        to_eval, out_variable_name = EvalFunction._get_eval_string_(
            expr, {'tas': 'var.value'})
        self.assertEqual(to_eval, '4-var.value')
        self.assertEqual(out_variable_name, 'tas')

        expr = 'tas=tas'
        to_eval, out_variable_name = EvalFunction._get_eval_string_(
            expr, {'tas': 'var.value'})
        self.assertEqual(to_eval, 'var.value')
        self.assertEqual(out_variable_name, 'tas')

        expr = 'tas=tas-tas-tas'
        to_eval, out_variable_name = EvalFunction._get_eval_string_(
            expr, {'tas': 'var.value'})
        self.assertEqual(to_eval, 'var.value-var.value-var.value')
        self.assertEqual(out_variable_name, 'tas')

        expr = 'tas=tas-tas-tas-tas'
        to_eval, out_variable_name = EvalFunction._get_eval_string_(
            expr, {'tas': 'var.value'})
        self.assertEqual(to_eval, 'var.value-var.value-var.value-var.value')
        self.assertEqual(out_variable_name, 'tas')

        expr = 'tas_2=tas_1-tas_1-tas_1-tas_1'
        to_eval, out_variable_name = EvalFunction._get_eval_string_(
            expr, {'tas_1': 'var.value'})
        self.assertEqual(to_eval, 'var.value-var.value-var.value-var.value')
        self.assertEqual(out_variable_name, 'tas_2')

        expr = 'tas=tas-tas-tas-tas-tasmax-tas'
        to_eval, out_variable_name = EvalFunction._get_eval_string_(
            expr, {
                'tas': 'var.value',
                'tasmax': 'var2.value'
            })
        self.assertEqual(
            to_eval,
            'var.value-var.value-var.value-var.value-var2.value-var.value')
        self.assertEqual(out_variable_name, 'tas')
Exemplo n.º 5
0
    def test_get_eval_string_power(self):
        """Test the power ufunc is appropriately parsed from the eval string."""

        expr = 'es=power(foo, 4)'
        map_vars = {'foo': '_exec_foo.value'}
        parsed, output_variable = EvalFunction._get_eval_string_(expr, map_vars)
        self.assertEqual(output_variable, 'es')
        self.assertEqual(parsed, 'np.power(_exec_foo.value, 4)')
Exemplo n.º 6
0
    def test_get_eval_string_power(self):
        """Test the power ufunc is appropriately parsed from the eval string."""

        expr = 'es=power(foo, 4)'
        map_vars = {'foo': '_exec_foo.value'}
        parsed, output_variable = EvalFunction._get_eval_string_(
            expr, map_vars)
        self.assertEqual(output_variable, 'es')
        self.assertEqual(parsed, 'np.power(_exec_foo.value, 4)')
Exemplo n.º 7
0
 def test_get_eval_string(self):
     expr = 'es=6.1078*exp(log(17.08085)*(tas-273.16)/(234.175+(tas-273.16)))'
     to_eval,out_variable_name = EvalFunction._get_eval_string_(expr,{'tas':'var.value'})
     self.assertEqual(to_eval,'6.1078*np.exp(np.log(17.08085)*(var.value-273.16)/(234.175+(var.value-273.16)))')
     self.assertEqual(out_variable_name,'es')
     
     expr = 'tas=tas-4'
     to_eval,out_variable_name = EvalFunction._get_eval_string_(expr,{'tas':'var.value'})
     self.assertEqual(to_eval,'var.value-4')
     self.assertEqual(out_variable_name,'tas')
     
     expr = 'tas=4-tas'
     to_eval,out_variable_name = EvalFunction._get_eval_string_(expr,{'tas':'var.value'})
     self.assertEqual(to_eval,'4-var.value')
     self.assertEqual(out_variable_name,'tas')
     
     expr = 'tas=tas'
     to_eval,out_variable_name = EvalFunction._get_eval_string_(expr,{'tas':'var.value'})
     self.assertEqual(to_eval,'var.value')
     self.assertEqual(out_variable_name,'tas')
     
     expr = 'tas=tas-tas-tas'
     to_eval,out_variable_name = EvalFunction._get_eval_string_(expr,{'tas':'var.value'})
     self.assertEqual(to_eval,'var.value-var.value-var.value')
     self.assertEqual(out_variable_name,'tas')
     
     expr = 'tas=tas-tas-tas-tas'
     to_eval,out_variable_name = EvalFunction._get_eval_string_(expr,{'tas':'var.value'})
     self.assertEqual(to_eval,'var.value-var.value-var.value-var.value')
     self.assertEqual(out_variable_name,'tas')
     
     expr = 'tas_2=tas_1-tas_1-tas_1-tas_1'
     to_eval,out_variable_name = EvalFunction._get_eval_string_(expr,{'tas_1':'var.value'})
     self.assertEqual(to_eval,'var.value-var.value-var.value-var.value')
     self.assertEqual(out_variable_name,'tas_2')
     
     expr = 'tas=tas-tas-tas-tas-tasmax-tas'
     to_eval,out_variable_name = EvalFunction._get_eval_string_(expr,{'tas':'var.value','tasmax':'var2.value'})
     self.assertEqual(to_eval,'var.value-var.value-var.value-var.value-var2.value-var.value')
     self.assertEqual(out_variable_name,'tas')
Exemplo n.º 8
0
 def test_get_eval_string_two_variables(self):
     map_vars = {'tasmax':'tasmax.value','tas':'tas.value'}
     expr = 'foo=log(1000*(tasmax-tas))/3'
     to_eval,out_variable_name = EvalFunction._get_eval_string_(expr,map_vars)
     self.assertEqual(to_eval,'np.log(1000*(tasmax.value-tas.value))/3')
     self.assertEqual(out_variable_name,'foo')