AdritRao's picture
Upload 62 files
a3290d1
raw
history blame
No virus
2.36 kB
"""
@author: louisblankemeier
"""
import csv
import os
import pydicom
def find_dicom_files(input_path):
dicom_series = []
if not os.path.isdir(input_path):
dicom_series = [str(os.path.abspath(input_path))]
else:
for root, _, files in os.walk(input_path):
for file in files:
if file.endswith(".dcm") or file.endswith(".dicom"):
dicom_series.append(os.path.join(root, file))
return dicom_series
def get_dicom_paths_and_num(path):
"""
Get all paths under a path that contain only dicom files.
Args:
path (str): Path to search.
Returns:
list: List of paths.
"""
dicom_paths = []
for root, _, files in os.walk(path):
if len(files) > 0:
if all(file.endswith(".dcm") or file.endswith(".dicom") for file in files):
dicom_paths.append((root, len(files)))
if len(dicom_paths) == 0:
raise ValueError("No scans were found in:\n" + path)
return dicom_paths
def get_dicom_or_nifti_paths_and_num(path):
"""Get all paths under a path that contain only dicom files or a nifti file.
Args:
path (str): Path to search.
Returns:
list: List of paths.
"""
if path.endswith(".nii") or path.endswith(".nii.gz"):
return [(path, 1)]
dicom_nifti_paths = []
for root, dirs, files in os.walk(path):
if len(files) > 0:
# if all(file.endswith(".dcm") or file.endswith(".dicom") for file in files):
dicom_nifti_paths.append((root, len(files)))
# else:
# for file in files:
# if file.endswith(".nii") or file.endswith(".nii.gz"):
# num_slices = 450
# dicom_nifti_paths.append((os.path.join(root, file), num_slices))
return dicom_nifti_paths
def write_dicom_metadata_to_csv(ds, csv_filename):
with open(csv_filename, "w", newline="") as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerow(["Tag", "Keyword", "Value"])
for element in ds:
tag = element.tag
keyword = pydicom.datadict.keyword_for_tag(tag)
if keyword == "PixelData":
continue
value = str(element.value)
csvwriter.writerow([tag, keyword, value])