Exemple #1
0
    def __init__(self, fname, sett, *args, **kwargs):
        super().__init__(*args, **kwargs)

        opendicomobject = dicom.pydicom_object(fname)
        self.plan = gpumcd.Rtplan(sett, opendicomobject)

        self.bi = 0
        self.si = 0
        self.be = 0

        self.beam_slider = BSlider("Beam index", 0,
                                   len(self.plan.beams) - 1, self.setbi)
        self.segment_slider = BSlider("Segment index", 0,
                                      len(self.plan.beams[0]) - 1, self.setsi)
        self.beginend_slider = BSlider("Seg. Position", "Begin", "End",
                                       self.setbe)

        l = QVBoxLayout()
        self.canvas = PlanCanvas(self.plan)

        planNav = QHBoxLayout()
        planNav.setContentsMargins(0, 0, 0, 0)
        # stretchfactor are integers
        planNav.addWidget(self.beam_slider, 0)
        planNav.addWidget(self.segment_slider, 1)
        planNav.addWidget(self.beginend_slider, 0)

        l.addLayout(planNav, 0)
        l.addWidget(self.canvas, 1)

        self.setLayout(l)

        self.canvas.setFrame(self.bi, self.si, self.be)
        self.ready = True
Exemple #2
0
	def loaddir(self):
		fname = str(QFileDialog.getExistingDirectory(self, 'Open Dicom CT (slices) directory'))
		try:
			opendicomobject = dicom.pydicom_object(fname)
			assert opendicomobject.modality == "CT", "That directory did not contain a valid set of DICOM CT slices."
			self.ctpane = ImagePane(fname)
		except Exception as e:
			self.popup(f"That was not a valid DICOM file.\n{str(e)}")
			return
		self.resetpanes()
Exemple #3
0
	def loadfiles(self):
		files=QFileDialog.getOpenFileNames(self, 'Load Dicom file(s) (RTPlan, Dose, CT)')[0]
		# try:
		for fname in files:
			opendicomobject = dicom.pydicom_object(fname)
			if opendicomobject.modality == "RTPLAN":
				self.planpane = PlanPane(fname,sett)
			if opendicomobject.modality == "CT":
				self.ctpane = ImagePane(fname)
			if opendicomobject.modality == "RTDOSE":
				self.plandosepane = ImagePane(fname)
		# except Exception as e:
		# 	self.popup(f"That was not a valid DICOM file.\n{str(e)}")
		# 	return
		self.resetpanes()
Exemple #4
0
# [print(a) for a in dumpdir.rglob('*') if a.is_file()]

# dcms = [dicom.pydicom_object(a) for a in dumpdir.rglob('*') if a.is_file()]
dcms = []
notdcms = []
problem = []
problemtypes = Counter()

studies = collections.defaultdict(dict)

for dirpath, dirnames, filenames in os.walk(dumpdir):
    if len(filenames) > 0:
        firstfname = os.path.join(dirpath, filenames[0])
        try:  #catch any problematic dcm
            # test if in CT dir
            dicomobj = dicom.pydicom_object(firstfname)
            if dicomobj.valid and dicomobj.sopid is None:
                #we've got a CT on our hands boys, yeehaw
                dcms.append(firstfname)
                studies[dicomobj.studyid]['ct'] = dirpath
                if loadimages:
                    if dicomobj.PatientPosition != 'HFS':
                        NotImplementedError(
                            "Patient (Dose) is not in HFS position.")
                    studies[dicomobj.studyid]['ct_im'] = image.image(dirpath)
            elif dicomobj.valid and dicomobj.sopid is not None:
                #this aint no CT-dir, therefore, iterate over all files to see whats what.
                for filename in filenames:
                    fname = os.path.join(dirpath, filename)
                    dicomobj = dicom.pydicom_object(fname)