refining BarChartDescriptionTablesTest

This commit is contained in:
frankknoll
2023-08-26 21:46:46 +02:00
parent a177b9682d
commit cb00dcb8d6
2 changed files with 154 additions and 83 deletions

View File

@@ -1,4 +1,5 @@
import math import math
import numpy as np
class BarChartDescriptionTables: class BarChartDescriptionTables:
@@ -24,3 +25,13 @@ class BarChartDescriptionTables:
def _hasMinSizeOfGuessedHistogram(barChartDescription, minSizeOfGuessedHistogram): def _hasMinSizeOfGuessedHistogram(barChartDescription, minSizeOfGuessedHistogram):
sizeOfGuessedHistogram = sum(barChartDescription['BAR_CHART_DESCRIPTION']['Adverse Reaction Reports guessed']) sizeOfGuessedHistogram = sum(barChartDescription['BAR_CHART_DESCRIPTION']['Adverse Reaction Reports guessed'])
return sizeOfGuessedHistogram >= minSizeOfGuessedHistogram return sizeOfGuessedHistogram >= minSizeOfGuessedHistogram
@staticmethod
def filterHasCountryWithGuessedGreaterThanKnown(barChartDescriptionTable):
return barChartDescriptionTable[barChartDescriptionTable.apply(BarChartDescriptionTables._hasCountryWithGuessedGreaterThanKnown, axis='columns')]
@staticmethod
def _hasCountryWithGuessedGreaterThanKnown(barChartDescription):
guessedBarChart = barChartDescription['BAR_CHART_DESCRIPTION']['Adverse Reaction Reports guessed']
knownBarChart = barChartDescription['BAR_CHART_DESCRIPTION']['Adverse Reaction Reports known']
return np.any(np.asarray(guessedBarChart) > np.asarray(knownBarChart))

View File

@@ -5,121 +5,181 @@ from pandas.testing import assert_frame_equal
from TestHelper import TestHelper from TestHelper import TestHelper
from BarChartDescriptionTables import BarChartDescriptionTables from BarChartDescriptionTables import BarChartDescriptionTables
class BarChartDescriptionTablesTest(unittest.TestCase): class BarChartDescriptionTablesTest(unittest.TestCase):
def test_filterValidJensenShannonDistances(self): def test_filterValidJensenShannonDistances(self):
# Given # Given
barChartDescriptionTable = TestHelper.createDataFrame( barChartDescriptionTable = TestHelper.createDataFrame(
columns = ['BAR_CHART_DESCRIPTION'], columns=['BAR_CHART_DESCRIPTION'],
data = [ data=[
[ [
{ {
'countries': ['Germany', 'Hungary'], 'countries': ['Germany', 'Hungary'],
'Adverse Reaction Reports guessed': [0, 0], 'Adverse Reaction Reports guessed': [0, 0],
'Adverse Reaction Reports known': [20, 30], 'Adverse Reaction Reports known': [20, 30],
'Jensen-Shannon distance': np.nan 'Jensen-Shannon distance': np.nan
} }
], ],
[ [
{ {
'countries': ['Germany'], 'countries': ['Germany'],
'Adverse Reaction Reports guessed': [70], 'Adverse Reaction Reports guessed': [70],
'Adverse Reaction Reports known': [80], 'Adverse Reaction Reports known': [80],
'Jensen-Shannon distance': 0.4711 'Jensen-Shannon distance': 0.4711
} }
] ]
], ],
index = pd.Index( index=pd.Index(
[ [
'!D0181', '!D0181',
'# 009C01A' '# 009C01A'
], ],
name = 'VAX_LOT')) name='VAX_LOT'))
# When # When
barChartDescriptionTableResult = BarChartDescriptionTables.filterValidJensenShannonDistances(barChartDescriptionTable) barChartDescriptionTableResult = BarChartDescriptionTables.filterValidJensenShannonDistances(
barChartDescriptionTable)
# Then # Then
assert_frame_equal( assert_frame_equal(
barChartDescriptionTableResult, barChartDescriptionTableResult,
TestHelper.createDataFrame( TestHelper.createDataFrame(
columns = ['BAR_CHART_DESCRIPTION'], columns=['BAR_CHART_DESCRIPTION'],
data = [ data=[
[ [
{ {
'countries': ['Germany'], 'countries': ['Germany'],
'Adverse Reaction Reports guessed': [70], 'Adverse Reaction Reports guessed': [70],
'Adverse Reaction Reports known': [80], 'Adverse Reaction Reports known': [80],
'Jensen-Shannon distance': 0.4711 'Jensen-Shannon distance': 0.4711
} }
] ]
], ],
index = pd.Index( index=pd.Index(
[ [
'# 009C01A', '# 009C01A',
], ],
name = 'VAX_LOT')), name='VAX_LOT')),
check_dtype = True) check_dtype=True)
def test_filterHasMinSizeOfGuessedHistogram_true(self): def test_filterHasMinSizeOfGuessedHistogram_true(self):
# Given # Given
barChartDescriptionTable = TestHelper.createDataFrame( barChartDescriptionTable = TestHelper.createDataFrame(
columns = ['BAR_CHART_DESCRIPTION'], columns=['BAR_CHART_DESCRIPTION'],
data = [ data=[
[ [
{ {
'countries': ['Germany', 'Hungary'], 'countries': ['Germany', 'Hungary'],
'Adverse Reaction Reports guessed': [10, 20], 'Adverse Reaction Reports guessed': [10, 20],
'Adverse Reaction Reports known': [20, 30], 'Adverse Reaction Reports known': [20, 30],
'Jensen-Shannon distance': 0.4711 'Jensen-Shannon distance': 0.4711
} }
] ]
], ],
index = pd.Index( index=pd.Index(
[ [
'!D0181' '!D0181'
], ],
name = 'VAX_LOT')) name='VAX_LOT'))
# When # When
barChartDescriptionTableResult = BarChartDescriptionTables.filterHasMinSizeOfGuessedHistogram(barChartDescriptionTable, 20) barChartDescriptionTableResult = BarChartDescriptionTables.filterHasMinSizeOfGuessedHistogram(
barChartDescriptionTable, 20)
# Then # Then
assert_frame_equal( assert_frame_equal(
barChartDescriptionTableResult, barChartDescriptionTableResult,
barChartDescriptionTable, barChartDescriptionTable,
check_dtype = True) check_dtype=True)
def test_filterHasMinSizeOfGuessedHistogram_false(self): def test_filterHasMinSizeOfGuessedHistogram_false(self):
# Given # Given
barChartDescriptionTable = TestHelper.createDataFrame( barChartDescriptionTable = TestHelper.createDataFrame(
columns = ['BAR_CHART_DESCRIPTION'], columns=['BAR_CHART_DESCRIPTION'],
data = [ data=[
[ [
{ {
'countries': ['Germany', 'Hungary'], 'countries': ['Germany', 'Hungary'],
'Adverse Reaction Reports guessed': [10, 20], 'Adverse Reaction Reports guessed': [10, 20],
'Adverse Reaction Reports known': [20, 30], 'Adverse Reaction Reports known': [20, 30],
'Jensen-Shannon distance': 0.4711 'Jensen-Shannon distance': 0.4711
} }
] ]
], ],
index = pd.Index( index=pd.Index(
[ [
'!D0181' '!D0181'
], ],
name = 'VAX_LOT')) name='VAX_LOT'))
# When # When
barChartDescriptionTableResult = BarChartDescriptionTables.filterHasMinSizeOfGuessedHistogram(barChartDescriptionTable, 31) barChartDescriptionTableResult = BarChartDescriptionTables.filterHasMinSizeOfGuessedHistogram(
barChartDescriptionTable, 31)
# Then # Then
assert_frame_equal( assert_frame_equal(
barChartDescriptionTableResult, barChartDescriptionTableResult,
TestHelper.createDataFrame( TestHelper.createDataFrame(
columns = ['BAR_CHART_DESCRIPTION'], columns=['BAR_CHART_DESCRIPTION'],
data = [], data=[],
index = pd.Index( index=pd.Index(
[], [],
name = 'VAX_LOT')), name='VAX_LOT')),
check_dtype = True) check_dtype=True)
def test_filterHasCountryWithGuessedGreaterThanKnown(self):
# Given
guessed = 25
known = 20
barChartDescriptionTable = TestHelper.createDataFrame(
columns=['BAR_CHART_DESCRIPTION'],
data=[
[
{
'countries': ['Germany', 'Hungary'],
'Adverse Reaction Reports guessed': [guessed, 20],
'Adverse Reaction Reports known': [known, 30],
'Jensen-Shannon distance': 0.4711
}
],
[
{
'countries': ['Germany', 'America'],
'Adverse Reaction Reports guessed': [25, 20],
'Adverse Reaction Reports known': [250, 200],
'Jensen-Shannon distance': 0.815
}
]],
index=pd.Index(
[
'!D0181',
'some batch code'
],
name='VAX_LOT'))
# When
barChartDescriptionTableResult = BarChartDescriptionTables.filterHasCountryWithGuessedGreaterThanKnown(
barChartDescriptionTable)
# Then
assert_frame_equal(
barChartDescriptionTableResult,
TestHelper.createDataFrame(
columns=['BAR_CHART_DESCRIPTION'],
data=[
[
{
'countries': ['Germany', 'Hungary'],
'Adverse Reaction Reports guessed': [guessed, 20],
'Adverse Reaction Reports known': [known, 30],
'Jensen-Shannon distance': 0.4711
}
]
],
index=pd.Index(
[
'!D0181'
],
name='VAX_LOT')),
check_dtype=True)