{ "cells": [ { "cell_type": "markdown", "id": "18fb5f57", "metadata": {}, "source": [ "Prentice analysis across SUV percentiles\n", "\n", "\n", "In this notebook, we extend our Prentice surrogate analysis beyond a single biomarker (e.g., SUV95) to a range of lung SUV percentiles.\n", "\n", "For each percentile, we define the patient-level biomarker as the maximum value across visits, ensuring a consistent summary per patient." ] }, { "cell_type": "code", "execution_count": 8, "id": "7c123153", "metadata": {}, "outputs": [], "source": [ "import prentice_analysis as pa\n", "\n", "data = pa.load_prentice_mat(\n", " \"flags_combined.mat\",\n", " \"suv_percentilesSLOthenUWM.mat\"\n", ")" ] }, { "cell_type": "code", "execution_count": 9, "id": "30fafcc3", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "dict_keys(['patient_ids', 'flags', 'days', 'lung'])\n", "Flags shape: (71, 7)\n", "Lung shape: (71, 17, 100)\n" ] } ], "source": [ "print(data.keys())\n", "\n", "print(\"Flags shape:\", data[\"flags\"].shape)\n", "print(\"Lung shape:\", data[\"lung\"].shape)" ] }, { "cell_type": "code", "execution_count": 10, "id": "512af8fc", "metadata": {}, "outputs": [], "source": [ "percentiles = list(range(5, 101, 5))" ] }, { "cell_type": "code", "execution_count": 11, "id": "1c68a740", "metadata": {}, "outputs": [ { "data": { "application/vnd.microsoft.datawrangler.viewer.v0+json": { "columns": [ { "name": "index", "rawType": "int64", "type": "integer" }, { "name": "Patient_ID", "rawType": "object", "type": "string" }, { "name": "Treatment_raw", "rawType": "uint16", "type": "integer" }, { "name": "AE_raw", "rawType": "uint16", "type": "integer" }, { "name": "Lung_SUV_5_max", "rawType": "float64", "type": "float" }, { "name": "Lung_SUV_10_max", "rawType": "float64", "type": "float" }, { "name": "Lung_SUV_15_max", "rawType": "float64", "type": "float" }, { "name": "Lung_SUV_20_max", "rawType": "float64", "type": "float" }, { "name": "Lung_SUV_25_max", "rawType": "float64", "type": "float" }, { "name": "Lung_SUV_30_max", "rawType": "float64", "type": "float" }, { "name": "Lung_SUV_35_max", "rawType": "float64", "type": "float" }, { "name": "Lung_SUV_40_max", "rawType": "float64", "type": "float" }, { "name": "Lung_SUV_45_max", "rawType": "float64", "type": "float" }, { "name": "Lung_SUV_50_max", "rawType": "float64", "type": "float" }, { "name": "Lung_SUV_55_max", "rawType": "float64", "type": "float" }, { "name": "Lung_SUV_60_max", "rawType": "float64", "type": "float" }, { "name": "Lung_SUV_65_max", "rawType": "float64", "type": "float" }, { "name": "Lung_SUV_70_max", "rawType": "float64", "type": "float" }, { "name": "Lung_SUV_75_max", "rawType": "float64", "type": "float" }, { "name": "Lung_SUV_80_max", "rawType": "float64", "type": "float" }, { "name": "Lung_SUV_85_max", "rawType": "float64", "type": "float" }, { "name": "Lung_SUV_90_max", "rawType": "float64", "type": "float" }, { "name": "Lung_SUV_95_max", "rawType": "float64", "type": "float" }, { "name": "Lung_SUV_100_max", "rawType": "float64", "type": "float" } ], "ref": "ac01975d-aadb-4cd8-b316-662b07f148dc", "rows": [ [ "0", "112_14", "1", "0", "0.5230987668037415", "0.604089617729187", "0.6764546632766724", "0.7475818395614624", "0.8190308213233948", "0.8877173662185669", "0.9524729251861572", "1.0128215551376343", "1.0707206726074219", "1.126678228378296", "1.1828153133392334", "1.2416585683822632", "1.304624319076538", "1.3736746311187744", "1.4507737159729004", "1.5418909788131714", "1.6548658609390259", "1.814528465270996", "2.105301856994629", "55.640804290771484" ], [ "1", "1127_06", "1", "1", "0.3892451226711273", "0.4280763268470764", "0.4564462900161743", "0.4808686375617981", "0.5039691925048828", "0.5266661047935486", "0.550217866897583", "0.5767838954925537", "0.6046844720840454", "0.6341522932052612", "0.6661766767501831", "0.7031199336051941", "0.7450857758522034", "0.791397750377655", "0.8446713089942932", "0.9242403507232666", "1.042220950126648", "1.2320489883422852", "1.5363825559616089", "12.564720153808594" ], [ "2", "1414_15", "1", "0", "0.37778228521347046", "0.436540424823761", "0.4770136773586273", "0.5113014578819275", "0.5430887937545776", "0.5737947821617126", "0.6041420102119446", "0.6352689862251282", "0.6675544381141663", "0.7013434171676636", "0.7373118996620178", "0.7763083577156067", "0.8184741735458374", "0.864501953125", "0.915713906288147", "0.9742200374603271", "1.042170524597168", "1.1313837766647339", "1.2744046449661255", "4.290683746337891" ], [ "3", "1705_16", "1", "0", "0.2813531458377838", "0.31400543451309204", "0.3402777910232544", "0.364426851272583", "0.38927143812179565", "0.41583243012428284", "0.44441530108451843", "0.47477987408638", "0.5072047114372253", "0.5414319038391113", "0.5768792629241943", "0.6145898699760437", "0.6557178497314453", "0.7012507319450378", "0.7529914379119873", "0.8147603869438171", "0.8899263143539429", "0.9964488744735718", "1.1879351139068604", "19.854957580566406" ], [ "4", "2278_07", "1", "0", "0.5104987025260925", "0.5785093307495117", "0.62920081615448", "0.6718265414237976", "0.7116126418113708", "0.7508419752120972", "0.7895643711090088", "0.8285021781921387", "0.8677459955215454", "0.9078217148780823", "0.9484649896621704", "0.9924747943878174", "1.0389128923416138", "1.090024471282959", "1.1490263938903809", "1.2202715873718262", "1.3069839477539062", "1.4194157123565674", "1.674635887145996", "9.817655563354492" ] ], "shape": { "columns": 23, "rows": 5 } }, "text/html": [ "
| \n", " | Patient_ID | \n", "Treatment_raw | \n", "AE_raw | \n", "Lung_SUV_5_max | \n", "Lung_SUV_10_max | \n", "Lung_SUV_15_max | \n", "Lung_SUV_20_max | \n", "Lung_SUV_25_max | \n", "Lung_SUV_30_max | \n", "Lung_SUV_35_max | \n", "... | \n", "Lung_SUV_55_max | \n", "Lung_SUV_60_max | \n", "Lung_SUV_65_max | \n", "Lung_SUV_70_max | \n", "Lung_SUV_75_max | \n", "Lung_SUV_80_max | \n", "Lung_SUV_85_max | \n", "Lung_SUV_90_max | \n", "Lung_SUV_95_max | \n", "Lung_SUV_100_max | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", "112_14 | \n", "1 | \n", "0 | \n", "0.523099 | \n", "0.604090 | \n", "0.676455 | \n", "0.747582 | \n", "0.819031 | \n", "0.887717 | \n", "0.952473 | \n", "... | \n", "1.182815 | \n", "1.241659 | \n", "1.304624 | \n", "1.373675 | \n", "1.450774 | \n", "1.541891 | \n", "1.654866 | \n", "1.814528 | \n", "2.105302 | \n", "55.640804 | \n", "
| 1 | \n", "1127_06 | \n", "1 | \n", "1 | \n", "0.389245 | \n", "0.428076 | \n", "0.456446 | \n", "0.480869 | \n", "0.503969 | \n", "0.526666 | \n", "0.550218 | \n", "... | \n", "0.666177 | \n", "0.703120 | \n", "0.745086 | \n", "0.791398 | \n", "0.844671 | \n", "0.924240 | \n", "1.042221 | \n", "1.232049 | \n", "1.536383 | \n", "12.564720 | \n", "
| 2 | \n", "1414_15 | \n", "1 | \n", "0 | \n", "0.377782 | \n", "0.436540 | \n", "0.477014 | \n", "0.511301 | \n", "0.543089 | \n", "0.573795 | \n", "0.604142 | \n", "... | \n", "0.737312 | \n", "0.776308 | \n", "0.818474 | \n", "0.864502 | \n", "0.915714 | \n", "0.974220 | \n", "1.042171 | \n", "1.131384 | \n", "1.274405 | \n", "4.290684 | \n", "
| 3 | \n", "1705_16 | \n", "1 | \n", "0 | \n", "0.281353 | \n", "0.314005 | \n", "0.340278 | \n", "0.364427 | \n", "0.389271 | \n", "0.415832 | \n", "0.444415 | \n", "... | \n", "0.576879 | \n", "0.614590 | \n", "0.655718 | \n", "0.701251 | \n", "0.752991 | \n", "0.814760 | \n", "0.889926 | \n", "0.996449 | \n", "1.187935 | \n", "19.854958 | \n", "
| 4 | \n", "2278_07 | \n", "1 | \n", "0 | \n", "0.510499 | \n", "0.578509 | \n", "0.629201 | \n", "0.671827 | \n", "0.711613 | \n", "0.750842 | \n", "0.789564 | \n", "... | \n", "0.948465 | \n", "0.992475 | \n", "1.038913 | \n", "1.090024 | \n", "1.149026 | \n", "1.220272 | \n", "1.306984 | \n", "1.419416 | \n", "1.674636 | \n", "9.817656 | \n", "
5 rows × 23 columns
\n", "| \n", " | Patient_ID | \n", "Treatment_raw | \n", "AE_raw | \n", "Lung_SUV_5_max | \n", "Lung_SUV_10_max | \n", "Lung_SUV_15_max | \n", "Lung_SUV_20_max | \n", "Lung_SUV_25_max | \n", "Lung_SUV_30_max | \n", "Lung_SUV_35_max | \n", "... | \n", "Lung_SUV_65_max | \n", "Lung_SUV_70_max | \n", "Lung_SUV_75_max | \n", "Lung_SUV_80_max | \n", "Lung_SUV_85_max | \n", "Lung_SUV_90_max | \n", "Lung_SUV_95_max | \n", "Lung_SUV_100_max | \n", "Treatment | \n", "AE | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", "112_14 | \n", "1 | \n", "0 | \n", "0.523099 | \n", "0.604090 | \n", "0.676455 | \n", "0.747582 | \n", "0.819031 | \n", "0.887717 | \n", "0.952473 | \n", "... | \n", "1.304624 | \n", "1.373675 | \n", "1.450774 | \n", "1.541891 | \n", "1.654866 | \n", "1.814528 | \n", "2.105302 | \n", "55.640804 | \n", "0 | \n", "0 | \n", "
| 1 | \n", "1127_06 | \n", "1 | \n", "1 | \n", "0.389245 | \n", "0.428076 | \n", "0.456446 | \n", "0.480869 | \n", "0.503969 | \n", "0.526666 | \n", "0.550218 | \n", "... | \n", "0.745086 | \n", "0.791398 | \n", "0.844671 | \n", "0.924240 | \n", "1.042221 | \n", "1.232049 | \n", "1.536383 | \n", "12.564720 | \n", "0 | \n", "1 | \n", "
| 2 | \n", "1414_15 | \n", "1 | \n", "0 | \n", "0.377782 | \n", "0.436540 | \n", "0.477014 | \n", "0.511301 | \n", "0.543089 | \n", "0.573795 | \n", "0.604142 | \n", "... | \n", "0.818474 | \n", "0.864502 | \n", "0.915714 | \n", "0.974220 | \n", "1.042171 | \n", "1.131384 | \n", "1.274405 | \n", "4.290684 | \n", "0 | \n", "0 | \n", "
| 3 | \n", "1705_16 | \n", "1 | \n", "0 | \n", "0.281353 | \n", "0.314005 | \n", "0.340278 | \n", "0.364427 | \n", "0.389271 | \n", "0.415832 | \n", "0.444415 | \n", "... | \n", "0.655718 | \n", "0.701251 | \n", "0.752991 | \n", "0.814760 | \n", "0.889926 | \n", "0.996449 | \n", "1.187935 | \n", "19.854958 | \n", "0 | \n", "0 | \n", "
| 4 | \n", "2278_07 | \n", "1 | \n", "0 | \n", "0.510499 | \n", "0.578509 | \n", "0.629201 | \n", "0.671827 | \n", "0.711613 | \n", "0.750842 | \n", "0.789564 | \n", "... | \n", "1.038913 | \n", "1.090024 | \n", "1.149026 | \n", "1.220272 | \n", "1.306984 | \n", "1.419416 | \n", "1.674636 | \n", "9.817656 | \n", "0 | \n", "0 | \n", "
5 rows × 25 columns
\n", "| \n", " | biomarker | \n", "C1_p | \n", "C2_p | \n", "C3_p | \n", "C4_Z_p | \n", "C4_S_p | \n", "PE | \n", "PE_risk | \n", "C1 | \n", "C2 | \n", "C3 | \n", "C4 | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", "Lung_SUV_5_max | \n", "0.99946 | \n", "0.180648 | \n", "0.391947 | \n", "0.999011 | \n", "0.447461 | \n", "-0.873942 | \n", "-0.473302 | \n", "False | \n", "False | \n", "False | \n", "False | \n", "
| 1 | \n", "Lung_SUV_10_max | \n", "0.99946 | \n", "0.220694 | \n", "0.259521 | \n", "0.999419 | \n", "0.299437 | \n", "-1.721333 | \n", "-1.037612 | \n", "False | \n", "False | \n", "False | \n", "False | \n", "
| 2 | \n", "Lung_SUV_15_max | \n", "0.99946 | \n", "0.253225 | \n", "0.246258 | \n", "0.999447 | \n", "0.283013 | \n", "-1.852068 | \n", "-1.118455 | \n", "False | \n", "False | \n", "False | \n", "False | \n", "
| 3 | \n", "Lung_SUV_20_max | \n", "0.99946 | \n", "0.277178 | \n", "0.242275 | \n", "0.998825 | \n", "0.277394 | \n", "-1.904771 | \n", "-1.149946 | \n", "False | \n", "False | \n", "False | \n", "False | \n", "
| 4 | \n", "Lung_SUV_25_max | \n", "0.99946 | \n", "0.296118 | \n", "0.242687 | \n", "0.999133 | \n", "0.276884 | \n", "-1.919268 | \n", "-1.156261 | \n", "False | \n", "False | \n", "False | \n", "False | \n", "
| 5 | \n", "Lung_SUV_30_max | \n", "0.99946 | \n", "0.314547 | \n", "0.244748 | \n", "0.999822 | \n", "0.278213 | \n", "-1.919068 | \n", "-1.155422 | \n", "False | \n", "False | \n", "False | \n", "False | \n", "
| 6 | \n", "Lung_SUV_35_max | \n", "0.99946 | \n", "0.331386 | \n", "0.249599 | \n", "0.996800 | \n", "0.282658 | \n", "-1.893223 | \n", "-1.143974 | \n", "False | \n", "False | \n", "False | \n", "False | \n", "
| 7 | \n", "Lung_SUV_40_max | \n", "0.99946 | \n", "0.347803 | \n", "0.256964 | \n", "1.000000 | \n", "0.289833 | \n", "-1.844501 | \n", "-1.125671 | \n", "False | \n", "False | \n", "False | \n", "False | \n", "
| 8 | \n", "Lung_SUV_45_max | \n", "0.99946 | \n", "0.362406 | \n", "0.266071 | \n", "0.999768 | \n", "0.298966 | \n", "-1.782004 | \n", "-1.104541 | \n", "False | \n", "False | \n", "False | \n", "False | \n", "
| 9 | \n", "Lung_SUV_50_max | \n", "0.99946 | \n", "0.375690 | \n", "0.275802 | \n", "0.999995 | \n", "0.308821 | \n", "-1.717557 | \n", "-1.084817 | \n", "False | \n", "False | \n", "False | \n", "False | \n", "
| 10 | \n", "Lung_SUV_55_max | \n", "0.99946 | \n", "0.389215 | \n", "0.285329 | \n", "0.999860 | \n", "0.318440 | \n", "-1.658327 | \n", "-1.070200 | \n", "False | \n", "False | \n", "False | \n", "False | \n", "
| 11 | \n", "Lung_SUV_60_max | \n", "0.99946 | \n", "0.405060 | \n", "0.297655 | \n", "0.999998 | \n", "0.330922 | \n", "-1.582551 | \n", "-1.043581 | \n", "False | \n", "False | \n", "False | \n", "False | \n", "
| 12 | \n", "Lung_SUV_65_max | \n", "0.99946 | \n", "0.423703 | \n", "0.315889 | \n", "0.999435 | \n", "0.349463 | \n", "-1.470922 | \n", "-0.992155 | \n", "False | \n", "False | \n", "False | \n", "False | \n", "
| 13 | \n", "Lung_SUV_70_max | \n", "0.99946 | \n", "0.444673 | \n", "0.344577 | \n", "0.999936 | \n", "0.378732 | \n", "-1.305816 | \n", "-0.897806 | \n", "False | \n", "False | \n", "False | \n", "False | \n", "
| 14 | \n", "Lung_SUV_75_max | \n", "0.99946 | \n", "0.472071 | \n", "0.379143 | \n", "0.999890 | \n", "0.413464 | \n", "-1.130677 | \n", "-0.793969 | \n", "False | \n", "False | \n", "False | \n", "False | \n", "
| 15 | \n", "Lung_SUV_80_max | \n", "0.99946 | \n", "0.512830 | \n", "0.432833 | \n", "0.999782 | \n", "0.466642 | \n", "-0.895964 | \n", "-0.639848 | \n", "False | \n", "False | \n", "False | \n", "False | \n", "
| 16 | \n", "Lung_SUV_85_max | \n", "0.99946 | \n", "0.569874 | \n", "0.521932 | \n", "0.853121 | \n", "0.553942 | \n", "-0.585186 | \n", "-0.412484 | \n", "False | \n", "False | \n", "False | \n", "False | \n", "
| 17 | \n", "Lung_SUV_90_max | \n", "0.99946 | \n", "0.635140 | \n", "0.692811 | \n", "0.999350 | \n", "0.721507 | \n", "-0.205122 | \n", "-0.135550 | \n", "False | \n", "False | \n", "False | \n", "False | \n", "
| 18 | \n", "Lung_SUV_95_max | \n", "0.99946 | \n", "0.759202 | \n", "0.950283 | \n", "0.999454 | \n", "0.932928 | \n", "-0.010139 | \n", "-0.007981 | \n", "False | \n", "False | \n", "False | \n", "False | \n", "
| 19 | \n", "Lung_SUV_100_max | \n", "0.99946 | \n", "0.843803 | \n", "0.690510 | \n", "0.999383 | \n", "0.703974 | \n", "-0.254284 | \n", "-0.204175 | \n", "False | \n", "False | \n", "False | \n", "False | \n", "