mirror of
https://github.com/google/earthengine-api.git
synced 2025-12-08 19:26:12 +00:00
216 lines
7.3 KiB
Python
216 lines
7.3 KiB
Python
#!/usr/bin/env python3
|
|
"""Tests for the ee.ConfusionMatrix module."""
|
|
|
|
import json
|
|
from typing import Any, Dict
|
|
|
|
import unittest
|
|
import ee
|
|
from ee import apitestcase
|
|
|
|
|
|
MATRIX = {
|
|
'functionInvocationValue': {
|
|
'functionName': 'ConfusionMatrix',
|
|
'arguments': {
|
|
'array': {
|
|
'functionInvocationValue': {
|
|
'functionName': 'Array',
|
|
'arguments': {'values': {'constantValue': [[1]]}},
|
|
}
|
|
},
|
|
'order': {'constantValue': [2]},
|
|
},
|
|
}
|
|
}
|
|
|
|
|
|
def make_expression_graph(
|
|
function_invocation_value: Dict[str, Any],
|
|
) -> Dict[str, Any]:
|
|
return {
|
|
'result': '0',
|
|
'values': {'0': {'functionInvocationValue': function_invocation_value}},
|
|
}
|
|
|
|
|
|
class ConfusionMatrixTest(apitestcase.ApiTestCase):
|
|
|
|
def test_init(self):
|
|
array = ee.Array([[0, 0], [0, 0]])
|
|
order = ee.List([2, 1])
|
|
confusion_matrix = ee.ConfusionMatrix(array, order)
|
|
self.assertEqual({'value': 'fakeValue'}, confusion_matrix.getInfo())
|
|
|
|
func = ee.ApiFunction.lookup('ConfusionMatrix')
|
|
self.assertEqual(func, confusion_matrix.func)
|
|
self.assertFalse(confusion_matrix.isVariable())
|
|
self.assertEqual({'array': array, 'order': order}, confusion_matrix.args)
|
|
|
|
def test_init_order_literal(self):
|
|
array = ee.Array([[0, 0], [0, 0]])
|
|
order = [2, 1]
|
|
confusion_matrix = ee.ConfusionMatrix(array, order)
|
|
self.assertEqual({'value': 'fakeValue'}, confusion_matrix.getInfo())
|
|
|
|
func = ee.ApiFunction.lookup('ConfusionMatrix')
|
|
self.assertEqual(func, confusion_matrix.func)
|
|
self.assertFalse(confusion_matrix.isVariable())
|
|
self.assertEqual(
|
|
{'array': array, 'order': ee.List(order)}, confusion_matrix.args
|
|
)
|
|
|
|
def test_init_no_order(self):
|
|
array = ee.Array([[0, 0], [0, 0]])
|
|
confusion_matrix = ee.ConfusionMatrix(array, None)
|
|
self.assertEqual({'value': 'fakeValue'}, confusion_matrix.getInfo())
|
|
|
|
func = ee.ApiFunction.lookup('ConfusionMatrix')
|
|
self.assertEqual(func, confusion_matrix.func)
|
|
self.assertFalse(confusion_matrix.isVariable())
|
|
self.assertEqual({'array': array}, confusion_matrix.args)
|
|
|
|
def test_serialize(self):
|
|
confusion_matrix = ee.ConfusionMatrix(ee.Array([[0, 0], [0, 0]]), [1, 2])
|
|
result = json.loads(confusion_matrix.serialize())
|
|
expected = {
|
|
'result': '0',
|
|
'values': {
|
|
'1': {'constantValue': [0, 0]},
|
|
'0': {
|
|
'functionInvocationValue': {
|
|
'functionName': 'ConfusionMatrix',
|
|
'arguments': {
|
|
'array': {
|
|
'functionInvocationValue': {
|
|
'functionName': 'Array',
|
|
'arguments': {
|
|
'values': {
|
|
'arrayValue': {
|
|
'values': [
|
|
{'valueReference': '1'},
|
|
{'valueReference': '1'},
|
|
]
|
|
}
|
|
}
|
|
},
|
|
}
|
|
},
|
|
'order': {'constantValue': [1, 2]},
|
|
},
|
|
}
|
|
},
|
|
},
|
|
}
|
|
self.assertEqual(expected, result)
|
|
|
|
def test_cast(self):
|
|
array = ee.Array([[0, 0], [0, 0]])
|
|
order = ee.List([2, 1])
|
|
confusion_matrix = ee.ConfusionMatrix(array, order)
|
|
result = json.loads(ee.ConfusionMatrix(confusion_matrix).serialize())
|
|
expect = {
|
|
'result': '0',
|
|
'values': {
|
|
'1': {'constantValue': [0, 0]},
|
|
'0': {
|
|
'functionInvocationValue': {
|
|
'functionName': 'ConfusionMatrix',
|
|
'arguments': {
|
|
'array': {
|
|
'functionInvocationValue': {
|
|
'functionName': 'Array',
|
|
'arguments': {
|
|
'values': {
|
|
'arrayValue': {
|
|
'values': [
|
|
{'valueReference': '1'},
|
|
{'valueReference': '1'},
|
|
]
|
|
}
|
|
}
|
|
},
|
|
}
|
|
},
|
|
'order': {'constantValue': [2, 1]},
|
|
},
|
|
}
|
|
},
|
|
},
|
|
}
|
|
self.assertEqual(expect, result)
|
|
|
|
def test_accuracy(self):
|
|
expect = make_expression_graph({
|
|
'arguments': {'confusionMatrix': MATRIX},
|
|
'functionName': 'ConfusionMatrix.accuracy',
|
|
})
|
|
expression = ee.ConfusionMatrix(ee.Array([[1]]), [2]).accuracy()
|
|
result = json.loads(expression.serialize())
|
|
self.assertEqual(expect, result)
|
|
|
|
def test_array(self):
|
|
expect = make_expression_graph({
|
|
'arguments': {'confusionMatrix': MATRIX},
|
|
'functionName': 'ConfusionMatrix.array',
|
|
})
|
|
expression = ee.ConfusionMatrix(ee.Array([[1]]), [2]).array()
|
|
result = json.loads(expression.serialize())
|
|
self.assertEqual(expect, result)
|
|
|
|
def test_consumersAccuracy(self):
|
|
expect = make_expression_graph({
|
|
'arguments': {'confusionMatrix': MATRIX},
|
|
'functionName': 'ConfusionMatrix.consumersAccuracy',
|
|
})
|
|
expression = ee.ConfusionMatrix(ee.Array([[1]]), [2]).consumersAccuracy()
|
|
result = json.loads(expression.serialize())
|
|
self.assertEqual(expect, result)
|
|
|
|
def test_fscore(self):
|
|
expect = make_expression_graph({
|
|
'arguments': {
|
|
'confusionMatrix': MATRIX,
|
|
'beta': {'constantValue': 3},
|
|
},
|
|
'functionName': 'ConfusionMatrix.fscore',
|
|
})
|
|
expression = ee.ConfusionMatrix(ee.Array([[1]]), [2]).fscore(3)
|
|
result = json.loads(expression.serialize())
|
|
self.assertEqual(expect, result)
|
|
|
|
expression = ee.ConfusionMatrix(ee.Array([[1]]), [2]).fscore(beta=3)
|
|
result = json.loads(expression.serialize())
|
|
self.assertEqual(expect, result)
|
|
|
|
def test_kappa(self):
|
|
expect = make_expression_graph({
|
|
'arguments': {'confusionMatrix': MATRIX},
|
|
'functionName': 'ConfusionMatrix.kappa',
|
|
})
|
|
expression = ee.ConfusionMatrix(ee.Array([[1]]), [2]).kappa()
|
|
result = json.loads(expression.serialize())
|
|
self.assertEqual(expect, result)
|
|
|
|
def test_order(self):
|
|
expect = make_expression_graph({
|
|
'arguments': {'confusionMatrix': MATRIX},
|
|
'functionName': 'ConfusionMatrix.order',
|
|
})
|
|
expression = ee.ConfusionMatrix(ee.Array([[1]]), [2]).order()
|
|
result = json.loads(expression.serialize())
|
|
self.assertEqual(expect, result)
|
|
|
|
def test_producersAccuracy(self):
|
|
expect = make_expression_graph({
|
|
'arguments': {'confusionMatrix': MATRIX},
|
|
'functionName': 'ConfusionMatrix.producersAccuracy',
|
|
})
|
|
expression = ee.ConfusionMatrix(ee.Array([[1]]), [2]).producersAccuracy()
|
|
result = json.loads(expression.serialize())
|
|
self.assertEqual(expect, result)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|