Switch to side-by-side view

--- a
+++ b/code/check_T2star_metadata.py
@@ -0,0 +1,134 @@
+import glob
+import os
+import json
+import argparse
+import pandas as pd
+
+def get_parser():
+    parser = argparse.ArgumentParser(description='Check if AcquisitionDuration, RepetitionTime, VolumeTiming, '
+                                                 'SliceTiming are available in the JSON metadata for *_T2star.json ')
+    parser.add_argument('--input', help='Path to data-multi-subject')
+    parser.add_argument('--output', help='CSV output file.')
+    return parser
+
+def fetch_acquisition_duration(fname_json):
+    """
+    Fetch the value of AcquisitionDuration in the JSON file of the same basename as fname_nifti
+    Return: float: Acquisition duration in seconds
+    """
+    # Open JSON file
+    with open(fname_json) as f:
+        dict_json = json.load(f)
+        if 'AcquisitionDuration' in dict_json:
+            return float(dict_json['AcquisitionDuration'])
+        else:
+            raise ReferenceError
+
+def fetch_slice_timing(fname_json):
+    """
+    Fetch the value of SliceTiming in the JSON file of the same basename as fname_nifti
+    Return: float: SliceTiming in seconds
+    """
+    # Open JSON file
+    with open(fname_json) as f:
+        dict_json = json.load(f)
+        if 'SliceTiming' in dict_json:
+            return (dict_json['SliceTiming'])
+        else:
+            raise ReferenceError
+
+def fetch_volume_timing(fname_json):
+    """
+    Fetch the value of VolumeTiming in the JSON file of the same basename as fname_nifti
+    Return: float: VolumeTiming in seconds
+    """
+    # Open JSON file
+    with open(fname_json) as f:
+        dict_json = json.load(f)
+        if 'VolumeTiming' in dict_json:
+            return (dict_json['VolumeTiming'])
+        else:
+            raise ReferenceError
+
+def fetch_repetitiontime(fname_json):
+    """
+    Fetch the value of RepetitionTime in the JSON file of the same basename as fname_nifti
+    Return: float: RepetitionTime in seconds
+    """
+    # Open JSON file
+    with open(fname_json) as f:
+        dict_json = json.load(f)
+        if 'RepetitionTime' in dict_json:
+            return (dict_json['RepetitionTime'])
+        else:
+            raise ReferenceError
+
+def fetch_acqparam(fname_json, acq_param):
+    """
+    Fetch the value of Acquisition Parameter in the JSON file of the same basename as fname_nifti
+    Return: Acquisition Parameter
+    """
+    # Open JSON file
+    with open(fname_json) as f:
+        dict_json = json.load(f)
+        if acq_param in dict_json:
+            return (dict_json[acq_param])
+        else:
+            raise ReferenceError
+
+
+def main(argv=None):
+    parser = get_parser()
+    args = parser.parse_args(argv)
+    os.chdir(args.input)
+    rows=[]
+    for file in glob.glob("./*/*/*_T2star.json"):
+        print(file)
+        row = []
+        row.append((os.path.split(file)[1]).replace("_T2star.json",""))
+        try:
+            repetitiontime = fetch_repetitiontime(file)
+            row.append(repetitiontime)
+        except ReferenceError:
+            print("Field 'RepetitionTime' was not found in the JSON sidecar.")
+            row.append("N")
+        try:
+            acq_duration = fetch_acquisition_duration(file)
+            row.append(acq_duration)
+        except ReferenceError:
+            print("Field 'AcquisitionDuration' was not found in the JSON sidecar.")
+            row.append("N")
+        try:
+            rep_timing = fetch_volume_timing(file)
+            row.append(rep_timing)
+        except ReferenceError:
+            print("Field 'VolumeTiming' was not found in the JSON sidecar.")
+            row.append("N")
+        try:
+            slice_timing = fetch_slice_timing(file)
+            row.append(slice_timing)
+        except ReferenceError:
+            print("Field 'SliceTiming' was not found in the JSON sidecar.")
+            row.append("N")
+        try:
+            acq_matrix = fetch_acqparam(file,'AcquisitionMatrixPE')
+            row.append(acq_matrix)
+        except ReferenceError:
+            print("Field 'AcquisitionMatrixPE' was not found in the JSON sidecar.")
+            row.append("N")
+        try:
+            acq_matrix = fetch_acqparam(file, 'ReconMatrixPE')
+            row.append(acq_matrix)
+        except ReferenceError:
+            print("Field 'ReconMatrixPE' was not found in the JSON sidecar.")
+            row.append("N")
+
+
+        rows.append(row)
+
+    df = pd.DataFrame(rows, columns=["Subject", "RepetitionTime", "AcquisitionDuration", "VolumeTiming", "SliceTiming", "AcquisitionMatrixPE", "ReconMatrixPE"])
+    df = df.sort_values(by=['Subject'])
+    df.to_csv(args.output, index=False)
+
+if __name__ == "__main__":
+    main()
\ No newline at end of file