adding column 'Lethality (%)'

This commit is contained in:
frankknoll
2022-02-15 16:32:06 +01:00
parent 172ce898a8
commit f8b3b8915f
3 changed files with 96 additions and 18 deletions

View File

@@ -229,10 +229,10 @@
"class BatchCodeTableFactory:\n",
"\n",
" @staticmethod\n",
" def createBatchCodeTable(dataFrame : pd.DataFrame, dose):\n",
" def createBatchCodeTable(dataFrame : pd.DataFrame, dose, minADRsForLethality = None):\n",
" dataFrame = DataFrameFilter().filterByCovid19(dataFrame)\n",
" dataFrame = DataFrameFilter().filterBy(dataFrame, dose = dose)\n",
" return BatchCodeTableFactory._createSummationTableByVAX_LOT(dataFrame)[\n",
" batchCodeTable = BatchCodeTableFactory._createSummationTableByVAX_LOT(dataFrame)[\n",
" [\n",
" 'Total Number of Adverse Reaction Reports',\n",
" 'Deaths',\n",
@@ -241,6 +241,9 @@
" 'Company',\n",
" 'Lethality (%)'\n",
" ]]\n",
" if minADRsForLethality is not None:\n",
" batchCodeTable.loc[batchCodeTable['Total Number of Adverse Reaction Reports'] < minADRsForLethality, 'Lethality (%)'] = np.nan\n",
" return batchCodeTable\n",
"\n",
" # create table from https://www.howbadismybatch.com/combined.html\n",
" @staticmethod\n",
@@ -708,7 +711,7 @@
"\n",
"class BatchCodeTableFactoryTest(unittest.TestCase):\n",
"\n",
" def test_createSummationTable(self):\n",
" def test_createSevereEffectsBatchCodeTable(self):\n",
" # Given\n",
" dataFrame = VaersDescr2DataFrameConverter.createDataFrameFromDescrs(\n",
" [\n",
@@ -749,7 +752,8 @@
" index = pd.Index(['025L20A', '037K20A'], name = 'VAX_LOT'))\n",
" assert_frame_equal(batchCodeTable, batchCodeTableExpected, check_dtype = False)\n",
"\n",
" def test_createBatchCodeTable2(self):\n",
" def test_createBatchCodeTable(self):\n",
" # Given\n",
" dataFrame = VaersDescr2DataFrameConverter.createDataFrameFromDescrs(\n",
" [\n",
" {\n",
@@ -789,15 +793,73 @@
" ])\n",
" self._test_createBatchCodeTable(dataFrame, '1')\n",
"\n",
" def test_createBatchCodeTable(self):\n",
" def test_createBatchCodeTable_minADRsForLethality(self):\n",
" # Given\n",
" dataFrame = VaersDescr2DataFrameConverter.createDataFrameFromDescrs(\n",
" [\n",
" {\n",
" 'VAERSDATA': TestHelper.createDataFrame(\n",
" columns = ['DIED', 'L_THREAT', 'DISABLE', 'HOSPITAL', 'ER_VISIT'],\n",
" data = [ [1, 0, 0, 0, 0],\n",
" [0, 0, 1, 0, 0]],\n",
" index = [\n",
" \"0916600\",\n",
" \"0916601\"]),\n",
" 'VAERSVAX': TestHelper.createDataFrame(\n",
" columns = ['VAX_TYPE', 'VAX_MANU', 'VAX_LOT', 'VAX_DOSE_SERIES'],\n",
" data = [ ['COVID19', 'MODERNA', '037K20A', '1'],\n",
" ['COVID19', 'MODERNA', '025L20A', '1']],\n",
" index = [\n",
" \"0916600\",\n",
" \"0916601\"],\n",
" dtypes = {'VAX_DOSE_SERIES': \"string\"})\n",
" },\n",
" {\n",
" 'VAERSDATA': TestHelper.createDataFrame(\n",
" columns = ['DIED', 'L_THREAT', 'DISABLE', 'HOSPITAL', 'ER_VISIT'],\n",
" data = [ [0, 0, 0, 0, 0],\n",
" [0, 0, 1, 0, 0]],\n",
" index = [\n",
" \"1996873\",\n",
" \"1996874\"]),\n",
" 'VAERSVAX': TestHelper.createDataFrame(\n",
" columns = ['VAX_TYPE', 'VAX_MANU', 'VAX_LOT', 'VAX_DOSE_SERIES'],\n",
" data = [ ['HPV9', 'MERCK & CO. INC.', 'R017624', 'UNK'],\n",
" ['COVID19', 'MODERNA', '025L20A', '1']],\n",
" index = [\n",
" \"1996873\",\n",
" \"1996874\"],\n",
" dtypes = {'VAX_DOSE_SERIES': \"string\"})\n",
" }\n",
" ])\n",
" dataFrame = SevereColumnAdder.addSevereColumn(dataFrame)\n",
"\n",
" # When\n",
" batchCodeTable = BatchCodeTableFactory.createBatchCodeTable(dataFrame, dose = '1', minADRsForLethality = 2)\n",
"\n",
" # Then\n",
" batchCodeTableExpected = pd.DataFrame(\n",
" data = {\n",
" 'Total Number of Adverse Reaction Reports': [2, 1],\n",
" 'Deaths': [0, 1],\n",
" 'Disabilities': [2, 0],\n",
" 'Life Threatening Illnesses': [0, 0],\n",
" 'Company': ['MODERNA', 'MODERNA'],\n",
" 'Lethality (%)': [0/2 * 100, np.nan]\n",
" },\n",
" index = pd.Index(['025L20A', '037K20A'], name = 'VAX_LOT'))\n",
" assert_frame_equal(batchCodeTable, batchCodeTableExpected, check_dtype = False)\n",
"\n",
" def test_createBatchCodeTableFromFiles(self):\n",
" dataFrame = VaersDescr2DataFrameConverter.createDataFrameFromDescrs(\n",
" VaersDescrReader(dataDir = \"test/VAERS\").readAllVaersDescrs())\n",
" DataFrameNormalizer.normalize(dataFrame)\n",
" self._test_createBatchCodeTable(dataFrame, '1')\n",
"\n",
" def _test_createBatchCodeTable(self, dataFrame, dose):\n",
" # When\n",
" dataFrame = SevereColumnAdder.addSevereColumn(dataFrame)\n",
"\n",
" # When\n",
" batchCodeTable = BatchCodeTableFactory.createBatchCodeTable(dataFrame, dose)\n",
"\n",
" # Then\n",
@@ -1055,15 +1117,7 @@
"outputs": [],
"source": [
"def saveBatchCodeTable(vaers, file):\n",
" batchCodeTable = BatchCodeTableFactory.createBatchCodeTable(vaers, dose = '1')\n",
" batchCodeTable = batchCodeTable[\n",
" [\n",
" 'Total Number of Adverse Reaction Reports',\n",
" 'Deaths',\n",
" 'Disabilities',\n",
" 'Life Threatening Illnesses',\n",
" 'Company'\n",
" ]]\n",
" batchCodeTable = BatchCodeTableFactory.createBatchCodeTable(vaers, dose = '1', minADRsForLethality = 100)\n",
" batchCodeTable.index.set_names(\"Batch\", inplace = True)\n",
" display(batchCodeTable)\n",
" IOUtils.saveDataFrame(batchCodeTable, file)"