ck-ntuh-net/check_file.py
2024-12-11 16:15:42 +08:00

107 lines
2.6 KiB
Python
Executable file

import fnmatch
import glob
import os
import struct
MAX = 100
def isDCM(filename):
with open(filename, 'rb') as infile:
header = infile.read(132)
if ord(header[0]) == 8:
return True
if header[-4:] == 'DICM':
return True
print ":".join("{:02x}".format(ord(c)) for c in header), filename
print header[-4:]
exit()
def check_accuray():
ACCURAY_PATIENTS = '/shares/mnt/ntuh-cks/accuray/database/patients/'
count = 0
for patient in glob.glob("%s/*" % ACCURAY_PATIENTS):
print patient
for ct in glob.glob("%s/ct/patient/*" % patient):
for CTMR in glob.glob("%s/*" % ct):
for fullpath in glob.glob("%s/*" % CTMR):
if fullpath.endswith('import.list'):
continue
if isDCM(fullpath):
continue
count += 1
exit()
if count >= MAX:
exit()
# break
def isNII(filename):
with open(filename, 'rb') as infile:
header = infile.read(132)
sizeof_hdr = struct.unpack('i', header[0:4])[0]
if sizeof_hdr == 348:
return True
print ":".join("{:02x}".format(ord(c)) for c in header), filename
print sizeof_hdr
exit()
def check_accuray_nii():
CONVERTED_PATIENTS = '/shares/mnt/ntuh-cks/accuray_nii/'
count = 0
for patient in glob.glob("%s/*" % CONVERTED_PATIENTS):
print patient
for ct in glob.glob("%s/*.nii" % patient):
if isNII(ct):
# print("%s OK" % ct)
continue
count += 1
exit()
if count >= MAX:
exit()
# break
def isISO(filename):
with open(filename, 'rb') as infile:
header = infile.read(32774)
if header[-5:] in ('BEA01', 'CD001'):
return True
print ":".join("{:02x}".format(ord(c)) for c in header[-5:]), filename
# exit()
def check_iso():
ISO_PATIENTS = '/shares/mnt/ntuh-cks/ISO/'
count = 0
for path, dirs, files in os.walk(os.path.abspath(ISO_PATIENTS)):
for filename in fnmatch.filter(files, '*.iso'):
if 'RECYCLE' in path:
continue
# print os.path.join(path, filename)
if isISO(os.path.join(path, filename)):
continue
count += 1
# exit()
if count >= MAX:
exit()
# break
# check_accuray()
# check_accuray_nii()
# check_iso()
# print isDCM('/shares/mnt/ntuh-cks/accuray/database/patients/JOU_1920628/ct/patient/case2011.10.18.12.54.38/MR/IM1')