Loading analysis/analysisview.py +4 −5 Original line number Diff line number Diff line Loading @@ -475,7 +475,7 @@ class ParticleAnalysis(QtWidgets.QMainWindow): self.sizeHist_ax.figure.canvas.draw() def updateSpecPlot(self): particleSize = self.particleContainer.getSizeOfParticleByIndex(self.currentParticleIndex) particleSize = np.round(self.particleContainer.getSizeOfParticleByIndex(self.currentParticleIndex)) hqi = self.particleContainer.getHQIOfSpectrumIndex(self.currentSpectrumIndex) self.specPlot.updateParticleSpectrum(self.currentSpectrumIndex, particleSize, hqi) # self.lastSpectrumInFocus = self.currentSpectrumIndex Loading Loading @@ -614,8 +614,8 @@ class ParticleAnalysis(QtWidgets.QMainWindow): for index, partIndex in enumerate(indices): self.setWidgetsToNewParticleIndex(partIndex) assignment = self.dataset.particleContainer.getParticleAssignmentByIndex(partIndex) specIndices = self.dataset.particleContainer.getSpectraIndicesOfParticle(partIndex) assignment = self.particleContainer.getParticleAssignmentByIndex(partIndex) specIndices = self.particleContainer.getSpectraIndicesOfParticle(partIndex) self.viewparent.highLightContour(partIndex) self.viewparent.centerOnRamanIndex(specIndices[0]) reply = QtWidgets.QMessageBox.question(self, f'Particle {index+1} of {numIndices}', Loading @@ -636,7 +636,6 @@ class ParticleAnalysis(QtWidgets.QMainWindow): self.viewparent.resetContourIndices() self.updateHistogramsAndContours() def show_hide_labels(self): hidden = self.hideLabelAct.isChecked() for scanIndicator in self.viewparent.ramanscanitems: Loading @@ -644,7 +643,7 @@ class ParticleAnalysis(QtWidgets.QMainWindow): scanIndicator.update() def exportToExcel(self): expWin = ExpExcelDialog(self.particleContainer, self) expWin = ExpExcelDialog(self.dataset, self.particleContainer) expWin.exec() def exportToSQL(self): Loading analysis/analysiswidgets.py +3 −3 Original line number Diff line number Diff line Loading @@ -30,13 +30,13 @@ from matplotlib.figure import Figure class ExpExcelDialog(QtWidgets.QDialog): def __init__(self, dataset, parent): super(ExpExcelDialog, self).__init__(parent) def __init__(self, dataset, particleContainer): super(ExpExcelDialog, self).__init__() self.setWindowTitle('Export Options') self.setGeometry(200, 200, 300, 300) self.dataset = dataset self.particleContainer = self.dataset.particleContainer self.particleContainer = particleContainer # self.particles = self.datastats.getParticleStats() self.polymers = self.particleContainer.getListOfParticleAssignments # self.additives = self.datastats.currentAdditives Loading analysis/particleeditor.py +21 −2 Original line number Diff line number Diff line Loading @@ -35,6 +35,8 @@ class ParticleContextMenu(QtWidgets.QMenu): combineParticlesSignal = QtCore.pyqtSignal(list, str) reassignParticlesSignal = QtCore.pyqtSignal(list, str) paintParticlesSignal = QtCore.pyqtSignal(list, str) deleteParticlesSignal = QtCore.pyqtSignal(list) def __init__(self, viewparent): super(ParticleContextMenu, self).__init__() self.viewparent = viewparent Loading Loading @@ -80,6 +82,7 @@ class ParticleContextMenu(QtWidgets.QMenu): self.addMenu(self.combineMenu) self.addMenu(self.reassignMenu) self.addMenu(self.paintMenu) self.deleteAct = self.addAction("Delete particle(s)") action = self.exec_(screenPos) Loading @@ -92,6 +95,8 @@ class ParticleContextMenu(QtWidgets.QMenu): self.reassignParticlesSignal.emit(self.selectedParticleIndices, newAssignment) elif action in self.paintActs: self.paintParticlesSignal.emit(self.selectedParticleIndices, newAssignment) elif action == self.deleteAct: self.deleteParticlesSignal.emit(self.selectedParticleIndices) def validifyAssignment(self, assignment): if assignment == "other": Loading Loading @@ -122,6 +127,7 @@ class ParticleEditor(QtCore.QObject): contextMenu.combineParticlesSignal.connect(self.combineParticles) contextMenu.reassignParticlesSignal.connect(self.reassignParticles) contextMenu.paintParticlesSignal.connect(self.paintParticles) contextMenu.deleteParticlesSignal.connect(self.deleteParticles) def createSafetyBackup(self): self.actionCounter += 1 Loading Loading @@ -248,7 +254,20 @@ class ParticleEditor(QtCore.QObject): return long, short, longellipse, shortellipse, cv2.contourArea(cnt) @QtCore.pyqtSlot(list) def deleteParticles(self, contourIndices): reply = QtWidgets.QMessageBox.question(self, f'About to delete {len(contourIndices)} particles.', "Are you sure to permanantly delete these particles?", QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No, QtWidgets.QMessageBox.No) if reply == QtWidgets.QMessageBox.Yes: for partIndex in sorted(contourIndices, reverse=True): self.viewparent.removeParticleContour(partIndex) self.viewparent.dataset.particleContainer.removeParticles([partIndex]) self.viewparent.dataset.particleContainer.resetParticleIndices() self.viewparent.resetContourIndices() self.viewparent.analysiswidget.updateHistogramsAndContours() No newline at end of file analysis/sqlexport.py +18 −17 Original line number Diff line number Diff line Loading @@ -21,9 +21,11 @@ class SQLExport(QtWidgets.QDialog): self.particleContainer = particleContainer # self.polymerList = self.datastats.particleContainer particlestats = self.datastats.getParticleStats() self.longSizes = np.round(np.array([i[0] if np.isnan(i[2]) else i[2] for i in particlestats]), 1) self.shortSize = np.round(np.array([i[1] if np.isnan(i[3]) else i[3] for i in particlestats]), 1) # particlestats = self.datastats.getParticleStats() self.longSizes = self.particleContainer.getSizesOfAllParticles() self.shortSize = self.particleContainer.getShortSizesOfAllParticles() # self.longSizes = np.round(np.array([i[0] if np.isnan(i[2]) else i[2] for i in particlestats]), 1) # self.shortSize = np.round(np.array([i[1] if np.isnan(i[3]) else i[3] for i in particlestats]), 1) #spectra can be quite some data size, they are not copied here but referenced later on... Loading @@ -48,7 +50,6 @@ class SQLExport(QtWidgets.QDialog): self.cnx = None self.createInterface() def createInterface(self): layout = QtWidgets.QVBoxLayout() self.setLayout(layout) Loading Loading @@ -110,7 +111,8 @@ class SQLExport(QtWidgets.QDialog): for index, entry in enumerate(['Detected Result*', 'DB Polymer Category*', 'DB Categorized Result', 'DB Paint Remark', 'Comment']): typeLayout.addWidget(QtWidgets.QLabel(entry), 0, index+1) self.polymerTypes = np.unique(self.polymerList) # self.polymerTypes = np.unique(self.polymerList) self.polymerTypes = self.particleContainer.getUniquePolymers() self.polymerCheckboxes = [] self.db_polyms = [] self.db_categs = [] Loading Loading @@ -180,8 +182,8 @@ class SQLExport(QtWidgets.QDialog): for index, polymerType in enumerate(self.polymerTypes): if self.polymerCheckboxes[index].isChecked(): polymIndices = np.where(self.polymerList == polymerType)[0] # polymIndices = np.where(self.polymerList == polymerType)[0] polymIndices = self.particleContainer.getIndicesOfParticleType(polymerType) particleCols = self.getEntireTable('particles')[0] sizeCols = [i for i in particleCols if i.startswith('Size') and i.endswith(']')] Loading Loading @@ -213,7 +215,7 @@ class SQLExport(QtWidgets.QDialog): cursor.execute(sql_command) except: print(sql_command) self.cnx.commit() # self.cnx.commit() newIndices = self.getPartIndicesOfSample(self.sampleSelector.currentText()) addedParticleIndex = list(set(newIndices) - set(currentParticleInd))[0] Loading Loading @@ -244,7 +246,7 @@ class SQLExport(QtWidgets.QDialog): cursor.execute(sql_command) except: print(sql_command) self.cnx.commit() # self.cnx.commit() #remove spectrum for log... sql_command = format_str.format(method=method, lib=lib, hqi=hqi, spec='SpecFile', res=res, com=com) self.log.append(sql_command) Loading @@ -256,14 +258,13 @@ class SQLExport(QtWidgets.QDialog): particles2analasyses[addedParticleIndex].append(addedAnalysisIndex) ##upload particles2analyses: for particleInd in particles2analasyses: for anaInd in particles2analasyses[particleInd]: sql_command = """INSERT INTO particles2analysis (IDParticles, IDAnalysis) VALUES ("{}", "{}");""".format(particleInd, anaInd) cursor.execute(sql_command) self.log.append(sql_command) self.cnx.commit() # ##upload particles2analyses: # for particleInd in particles2analasyses: # for anaInd in particles2analasyses[particleInd]: # sql_command = """INSERT INTO particles2analysis (IDParticles, IDAnalysis) VALUES ("{}", "{}");""".format(particleInd, anaInd) # cursor.execute(sql_command) # self.log.append(sql_command) # self.cnx.commit() for index, polymType in enumerate(self.polymerTypes): if self.polymerCheckboxes[index].isChecked(): Loading Loading
analysis/analysisview.py +4 −5 Original line number Diff line number Diff line Loading @@ -475,7 +475,7 @@ class ParticleAnalysis(QtWidgets.QMainWindow): self.sizeHist_ax.figure.canvas.draw() def updateSpecPlot(self): particleSize = self.particleContainer.getSizeOfParticleByIndex(self.currentParticleIndex) particleSize = np.round(self.particleContainer.getSizeOfParticleByIndex(self.currentParticleIndex)) hqi = self.particleContainer.getHQIOfSpectrumIndex(self.currentSpectrumIndex) self.specPlot.updateParticleSpectrum(self.currentSpectrumIndex, particleSize, hqi) # self.lastSpectrumInFocus = self.currentSpectrumIndex Loading Loading @@ -614,8 +614,8 @@ class ParticleAnalysis(QtWidgets.QMainWindow): for index, partIndex in enumerate(indices): self.setWidgetsToNewParticleIndex(partIndex) assignment = self.dataset.particleContainer.getParticleAssignmentByIndex(partIndex) specIndices = self.dataset.particleContainer.getSpectraIndicesOfParticle(partIndex) assignment = self.particleContainer.getParticleAssignmentByIndex(partIndex) specIndices = self.particleContainer.getSpectraIndicesOfParticle(partIndex) self.viewparent.highLightContour(partIndex) self.viewparent.centerOnRamanIndex(specIndices[0]) reply = QtWidgets.QMessageBox.question(self, f'Particle {index+1} of {numIndices}', Loading @@ -636,7 +636,6 @@ class ParticleAnalysis(QtWidgets.QMainWindow): self.viewparent.resetContourIndices() self.updateHistogramsAndContours() def show_hide_labels(self): hidden = self.hideLabelAct.isChecked() for scanIndicator in self.viewparent.ramanscanitems: Loading @@ -644,7 +643,7 @@ class ParticleAnalysis(QtWidgets.QMainWindow): scanIndicator.update() def exportToExcel(self): expWin = ExpExcelDialog(self.particleContainer, self) expWin = ExpExcelDialog(self.dataset, self.particleContainer) expWin.exec() def exportToSQL(self): Loading
analysis/analysiswidgets.py +3 −3 Original line number Diff line number Diff line Loading @@ -30,13 +30,13 @@ from matplotlib.figure import Figure class ExpExcelDialog(QtWidgets.QDialog): def __init__(self, dataset, parent): super(ExpExcelDialog, self).__init__(parent) def __init__(self, dataset, particleContainer): super(ExpExcelDialog, self).__init__() self.setWindowTitle('Export Options') self.setGeometry(200, 200, 300, 300) self.dataset = dataset self.particleContainer = self.dataset.particleContainer self.particleContainer = particleContainer # self.particles = self.datastats.getParticleStats() self.polymers = self.particleContainer.getListOfParticleAssignments # self.additives = self.datastats.currentAdditives Loading
analysis/particleeditor.py +21 −2 Original line number Diff line number Diff line Loading @@ -35,6 +35,8 @@ class ParticleContextMenu(QtWidgets.QMenu): combineParticlesSignal = QtCore.pyqtSignal(list, str) reassignParticlesSignal = QtCore.pyqtSignal(list, str) paintParticlesSignal = QtCore.pyqtSignal(list, str) deleteParticlesSignal = QtCore.pyqtSignal(list) def __init__(self, viewparent): super(ParticleContextMenu, self).__init__() self.viewparent = viewparent Loading Loading @@ -80,6 +82,7 @@ class ParticleContextMenu(QtWidgets.QMenu): self.addMenu(self.combineMenu) self.addMenu(self.reassignMenu) self.addMenu(self.paintMenu) self.deleteAct = self.addAction("Delete particle(s)") action = self.exec_(screenPos) Loading @@ -92,6 +95,8 @@ class ParticleContextMenu(QtWidgets.QMenu): self.reassignParticlesSignal.emit(self.selectedParticleIndices, newAssignment) elif action in self.paintActs: self.paintParticlesSignal.emit(self.selectedParticleIndices, newAssignment) elif action == self.deleteAct: self.deleteParticlesSignal.emit(self.selectedParticleIndices) def validifyAssignment(self, assignment): if assignment == "other": Loading Loading @@ -122,6 +127,7 @@ class ParticleEditor(QtCore.QObject): contextMenu.combineParticlesSignal.connect(self.combineParticles) contextMenu.reassignParticlesSignal.connect(self.reassignParticles) contextMenu.paintParticlesSignal.connect(self.paintParticles) contextMenu.deleteParticlesSignal.connect(self.deleteParticles) def createSafetyBackup(self): self.actionCounter += 1 Loading Loading @@ -248,7 +254,20 @@ class ParticleEditor(QtCore.QObject): return long, short, longellipse, shortellipse, cv2.contourArea(cnt) @QtCore.pyqtSlot(list) def deleteParticles(self, contourIndices): reply = QtWidgets.QMessageBox.question(self, f'About to delete {len(contourIndices)} particles.', "Are you sure to permanantly delete these particles?", QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No, QtWidgets.QMessageBox.No) if reply == QtWidgets.QMessageBox.Yes: for partIndex in sorted(contourIndices, reverse=True): self.viewparent.removeParticleContour(partIndex) self.viewparent.dataset.particleContainer.removeParticles([partIndex]) self.viewparent.dataset.particleContainer.resetParticleIndices() self.viewparent.resetContourIndices() self.viewparent.analysiswidget.updateHistogramsAndContours() No newline at end of file
analysis/sqlexport.py +18 −17 Original line number Diff line number Diff line Loading @@ -21,9 +21,11 @@ class SQLExport(QtWidgets.QDialog): self.particleContainer = particleContainer # self.polymerList = self.datastats.particleContainer particlestats = self.datastats.getParticleStats() self.longSizes = np.round(np.array([i[0] if np.isnan(i[2]) else i[2] for i in particlestats]), 1) self.shortSize = np.round(np.array([i[1] if np.isnan(i[3]) else i[3] for i in particlestats]), 1) # particlestats = self.datastats.getParticleStats() self.longSizes = self.particleContainer.getSizesOfAllParticles() self.shortSize = self.particleContainer.getShortSizesOfAllParticles() # self.longSizes = np.round(np.array([i[0] if np.isnan(i[2]) else i[2] for i in particlestats]), 1) # self.shortSize = np.round(np.array([i[1] if np.isnan(i[3]) else i[3] for i in particlestats]), 1) #spectra can be quite some data size, they are not copied here but referenced later on... Loading @@ -48,7 +50,6 @@ class SQLExport(QtWidgets.QDialog): self.cnx = None self.createInterface() def createInterface(self): layout = QtWidgets.QVBoxLayout() self.setLayout(layout) Loading Loading @@ -110,7 +111,8 @@ class SQLExport(QtWidgets.QDialog): for index, entry in enumerate(['Detected Result*', 'DB Polymer Category*', 'DB Categorized Result', 'DB Paint Remark', 'Comment']): typeLayout.addWidget(QtWidgets.QLabel(entry), 0, index+1) self.polymerTypes = np.unique(self.polymerList) # self.polymerTypes = np.unique(self.polymerList) self.polymerTypes = self.particleContainer.getUniquePolymers() self.polymerCheckboxes = [] self.db_polyms = [] self.db_categs = [] Loading Loading @@ -180,8 +182,8 @@ class SQLExport(QtWidgets.QDialog): for index, polymerType in enumerate(self.polymerTypes): if self.polymerCheckboxes[index].isChecked(): polymIndices = np.where(self.polymerList == polymerType)[0] # polymIndices = np.where(self.polymerList == polymerType)[0] polymIndices = self.particleContainer.getIndicesOfParticleType(polymerType) particleCols = self.getEntireTable('particles')[0] sizeCols = [i for i in particleCols if i.startswith('Size') and i.endswith(']')] Loading Loading @@ -213,7 +215,7 @@ class SQLExport(QtWidgets.QDialog): cursor.execute(sql_command) except: print(sql_command) self.cnx.commit() # self.cnx.commit() newIndices = self.getPartIndicesOfSample(self.sampleSelector.currentText()) addedParticleIndex = list(set(newIndices) - set(currentParticleInd))[0] Loading Loading @@ -244,7 +246,7 @@ class SQLExport(QtWidgets.QDialog): cursor.execute(sql_command) except: print(sql_command) self.cnx.commit() # self.cnx.commit() #remove spectrum for log... sql_command = format_str.format(method=method, lib=lib, hqi=hqi, spec='SpecFile', res=res, com=com) self.log.append(sql_command) Loading @@ -256,14 +258,13 @@ class SQLExport(QtWidgets.QDialog): particles2analasyses[addedParticleIndex].append(addedAnalysisIndex) ##upload particles2analyses: for particleInd in particles2analasyses: for anaInd in particles2analasyses[particleInd]: sql_command = """INSERT INTO particles2analysis (IDParticles, IDAnalysis) VALUES ("{}", "{}");""".format(particleInd, anaInd) cursor.execute(sql_command) self.log.append(sql_command) self.cnx.commit() # ##upload particles2analyses: # for particleInd in particles2analasyses: # for anaInd in particles2analasyses[particleInd]: # sql_command = """INSERT INTO particles2analysis (IDParticles, IDAnalysis) VALUES ("{}", "{}");""".format(particleInd, anaInd) # cursor.execute(sql_command) # self.log.append(sql_command) # self.cnx.commit() for index, polymType in enumerate(self.polymerTypes): if self.polymerCheckboxes[index].isChecked(): Loading