diff --git a/HowBadIsMyBatch.ipynb b/HowBadIsMyBatch.ipynb index 0ce071dd7b3..c3ffaa9df6a 100644 --- a/HowBadIsMyBatch.ipynb +++ b/HowBadIsMyBatch.ipynb @@ -128,7 +128,9 @@ "class BatchCodeTableFactory:\n", " \n", " @staticmethod\n", - " def createBatchCodeTable(df : pd.DataFrame):\n", + " # FK-TODO: make DataFrame parameter an instance variable\n", + " def createBatchCodeTable(df : pd.DataFrame, manufacturer, dose):\n", + " df = DataFrameFilter(df).filterBy(manufacturer = manufacturer, dose = dose)\n", " return BatchCodeTableFactory._asDataFrame(\n", " {\n", " 'ADRs': BatchCodeTableFactory._getADRs(df),\n", @@ -139,7 +141,9 @@ "\n", " # create table from https://www.howbadismybatch.com/combined.html\n", " @staticmethod\n", - " def createSevereEffectsBatchCodeTable(df : pd.DataFrame):\n", + " # FK-TODO: make DataFrame parameter an instance variable\n", + " def createSevereEffectsBatchCodeTable(df : pd.DataFrame, dose):\n", + " df = DataFrameFilter(df).filterForSevereEffects(dose = '1')\n", " return BatchCodeTableFactory._addCompanyColumn(\n", " BatchCodeTableFactory._asDataFrame(\n", " {\n", @@ -404,7 +408,48 @@ "source": [ "from pandas.testing import assert_frame_equal\n", "\n", - "class BatchCodeTableTest(unittest.TestCase):\n", + "class BatchCodeTableFactoryTest(unittest.TestCase):\n", + "\n", + " def test_createSevereEffectsBatchCodeTable(self):\n", + " # Given\n", + " dataFrame = VaersDescr2DataFrameConverter.createDataFrameFromDescrs(\n", + " [\n", + " {\n", + " 'VAERSDATA': self.createDataFrame(\n", + " columns = ['DIED', 'L_THREAT', 'DISABLE', 'HOSPITAL', 'ER_VISIT'],\n", + " data = [ ['Y', 'Y', np.NaN, 'Y', 'Y'],\n", + " [np.NaN, np.NaN, 'Y', np.NaN, 'Y']],\n", + " index = [\n", + " \"0916600\",\n", + " \"0916601\"]),\n", + " 'VAERSVAX': self.createDataFrame(\n", + " columns = ['VAX_TYPE', 'VAX_MANU', 'VAX_LOT', 'VAX_DOSE_SERIES'],\n", + " data = [ ['COVID19', 'MODERNA', '037K20A', '1'],\n", + " ['COVID19', 'PFIZER\\BIONTECH', '025L20A', '1']],\n", + " index = [\n", + " \"0916600\",\n", + " \"0916601\"],\n", + " dtypes = {'VAX_DOSE_SERIES': \"string\"})\n", + " }\n", + " ]\n", + " )\n", + " \n", + " # When\n", + " batchCodeTable = BatchCodeTableFactory.createSevereEffectsBatchCodeTable(dataFrame, '1')\n", + "\n", + " # Then\n", + " batchCodeTableExpected = pd.DataFrame(\n", + " data = {\n", + " 'ADRs': [1, 1],\n", + " 'DEATHS': [1, 0],\n", + " 'DISABILITIES': [0, 1],\n", + " 'LIFE THREATENING ILLNESSES': [1, 0],\n", + " 'HOSPITALISATIONS': [1, 0],\n", + " 'EMERGENCY ROOM OR DOCTOR VISITS': [1, 1],\n", + " 'COMPANY': ['MODERNA', 'PFIZER\\BIONTECH']\n", + " },\n", + " index = pd.Index(['037K20A', '025L20A'], name='VAX_LOT'))\n", + " assert_frame_equal(batchCodeTable, batchCodeTableExpected, check_dtype = False)\n", "\n", " def test_createBatchCodeTable2(self):\n", " dataFrame = VaersDescr2DataFrameConverter.createDataFrameFromDescrs(\n", @@ -444,20 +489,16 @@ " dtypes = {'VAX_DOSE_SERIES': \"string\"})\n", " }\n", " ])\n", - " dataFrame = DataFrameFilter(dataFrame).filterBy(manufacturer = \"MODERNA\", dose = '1')\n", - " self._test_createBatchCodeTable(dataFrame);\n", + " self._test_createBatchCodeTable(dataFrame, \"MODERNA\", '1');\n", "\n", " def test_createBatchCodeTable(self):\n", " dataFrame = VaersDescr2DataFrameConverter.createDataFrameFromDescrs(\n", " VaersDescrReader(\"test/VAERS\").readAllVaersDescrs())\n", - " self._test_createBatchCodeTable(\n", - " DataFrameFilter(dataFrame).filterBy(\n", - " manufacturer = \"MODERNA\",\n", - " dose = '1'))\n", + " self._test_createBatchCodeTable(dataFrame, \"MODERNA\", '1')\n", "\n", - " def _test_createBatchCodeTable(self, dataFrame):\n", + " def _test_createBatchCodeTable(self, dataFrame, manufacturer, dose):\n", " # When\n", - " batchCodeTable = BatchCodeTableFactory.createBatchCodeTable(dataFrame)\n", + " batchCodeTable = BatchCodeTableFactory.createBatchCodeTable(dataFrame, manufacturer, dose)\n", "\n", " # Then\n", " batchCodeTableExpected = pd.DataFrame(\n", @@ -474,63 +515,6 @@ " return pd.DataFrame(index = index, columns = columns, data = data).astype(dtypes)\n" ] }, - { - "cell_type": "code", - "execution_count": null, - "id": "ded70c87", - "metadata": {}, - "outputs": [], - "source": [ - "from pandas.testing import assert_frame_equal\n", - "\n", - "class SevereEffectsBatchCodeTableTest(unittest.TestCase):\n", - "\n", - " def test_createSevereEffectsBatchCodeTable(self):\n", - " # Given\n", - " dataFrame = VaersDescr2DataFrameConverter.createDataFrameFromDescrs(\n", - " [\n", - " {\n", - " 'VAERSDATA': self.createDataFrame(\n", - " columns = ['DIED', 'L_THREAT', 'DISABLE', 'HOSPITAL', 'ER_VISIT'],\n", - " data = [ ['Y', 'Y', np.NaN, 'Y', 'Y'],\n", - " [np.NaN, np.NaN, 'Y', np.NaN, 'Y']],\n", - " index = [\n", - " \"0916600\",\n", - " \"0916601\"]),\n", - " 'VAERSVAX': self.createDataFrame(\n", - " columns = ['VAX_TYPE', 'VAX_MANU', 'VAX_LOT', 'VAX_DOSE_SERIES'],\n", - " data = [ ['COVID19', 'MODERNA', '037K20A', '1'],\n", - " ['COVID19', 'PFIZER\\BIONTECH', '025L20A', '1']],\n", - " index = [\n", - " \"0916600\",\n", - " \"0916601\"],\n", - " dtypes = {'VAX_DOSE_SERIES': \"string\"})\n", - " }\n", - " ]\n", - " )\n", - " dataFrame = DataFrameFilter(dataFrame).filterForSevereEffects(dose = '1')\n", - "\n", - " # When\n", - " batchCodeTable = BatchCodeTableFactory.createSevereEffectsBatchCodeTable(dataFrame)\n", - "\n", - " # Then\n", - " batchCodeTableExpected = pd.DataFrame(\n", - " data = {\n", - " 'ADRs': [1, 1],\n", - " 'DEATHS': [1, 0],\n", - " 'DISABILITIES': [0, 1],\n", - " 'LIFE THREATENING ILLNESSES': [1, 0],\n", - " 'HOSPITALISATIONS': [1, 0],\n", - " 'EMERGENCY ROOM OR DOCTOR VISITS': [1, 1],\n", - " 'COMPANY': ['MODERNA', 'PFIZER\\BIONTECH']\n", - " },\n", - " index = pd.Index(['037K20A', '025L20A'], name='VAX_LOT'))\n", - " assert_frame_equal(batchCodeTable, batchCodeTableExpected, check_dtype = False)\n", - "\n", - " def createDataFrame(self, index, columns, data, dtypes = {}):\n", - " return pd.DataFrame(index = index, columns = columns, data = data).astype(dtypes)\n" - ] - }, { "cell_type": "code", "execution_count": null, @@ -551,8 +535,7 @@ "def saveBatchCodeTable(manufacturer, excelFile):\n", " vaersDescrs = VaersDescrReader(\"VAERS\").readAllVaersDescrs()\n", " dataFrame = VaersDescr2DataFrameConverter.createDataFrameFromDescrs(vaersDescrs)\n", - " dataFrameFilter = DataFrameFilter(dataFrame)\n", - " batchCodeTable = BatchCodeTableFactory.createBatchCodeTable(dataFrameFilter.filterBy(manufacturer = manufacturer, dose = '1'))\n", + " batchCodeTable = BatchCodeTableFactory.createBatchCodeTable(dataFrame, manufacturer = manufacturer, dose = '1')\n", " display(manufacturer, batchCodeTable)\n", " batchCodeTable.to_excel(excelFile)" ] @@ -579,8 +562,7 @@ "def saveSevereEffectsBatchCodeTable(excelFile):\n", " vaersDescrs = VaersDescrReader(\"VAERS\").readAllVaersDescrs()\n", " dataFrame = VaersDescr2DataFrameConverter.createDataFrameFromDescrs(vaersDescrs)\n", - " dataFrameFilter = DataFrameFilter(dataFrame)\n", - " severeEffectsBatchCodeTable = BatchCodeTableFactory.createSevereEffectsBatchCodeTable(dataFrameFilter.filterForSevereEffects(dose = '1'))\n", + " severeEffectsBatchCodeTable = BatchCodeTableFactory.createSevereEffectsBatchCodeTable(dataFrame, dose = '1')\n", " display('severeEffectsBatchCodeTable', severeEffectsBatchCodeTable)\n", " severeEffectsBatchCodeTable.to_excel(excelFile)" ]