107 lines
2.6 KiB
Python
Executable file
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')
|
|
|