Hi Sunghun,
Indeed, the way '/input/clinical-information-prostate-mri.json'
is read inside the process.py script of the U-Net (semi-supervised) container (shown below), is the way you can use it in your encapsulated AI algorithm container, for any of the 100 hidden validation cases or the 1000 hidden testing cases (later on, at the end of the Open Development Phase).
# load clinical information
with open("/input/clinical-information-prostate-mri.json") as fp:
self.clinical_info = json.load(fp)
# extract available clinical metadata
self.age = self.clinical_info["patient_age"]
if "PSA_report" in self.clinical_info:
self.psa = self.clinical_info["PSA_report"]
else:
self.psa = None # value is missing, if not reported
if "PSAD_report" in self.clinical_info:
self.psad = self.clinical_info["PSAD_report"]
else:
self.psad = None # value is missing, if not reported
if "prostate_volume_report" in self.clinical_info:
self.prostate_volume = self.clinical_info["prostate_volume_report"]
else:
self.prostate_volume = None # value is missing, if not reported
In other words, patient age will always be available for any given case. However, PSA, PSAD and prostate volume may or may not be available for any given case, depending on whether these values were reported during clinical routine (similar to what you also see in the marksheet.csv provided for the Public Training and Development Dataset).
Please note, that each clinical-information-prostate-mri.json
file will always contain the clinical information for only a single case in a dictionary format (as shown above). And during evaluation (for the leaderboards), each case (imaging + clinical information) is processed by your encapsulated AI algorithm independently, one-at-a-time.
Hope this helps.