Пример #1
0
 def __init__(self, rules, flux):
   QDialog.__init__(self)
   self.rules = rules
   self.flux = flux
   
   self.setModal(True)
   self.ui = Ui_ExpertivityDialog()
   self.ui.setupUi(self)
   
   R = len(rules)
   self.ui.tableWidget.setColumnCount(R)
   self.ui.tableWidget.setRowCount(R)
   
   ruleNames = [rule.name[:3] for rule in self.rules]
   self.ui.tableWidget.setHorizontalHeaderLabels(ruleNames)
   self.ui.tableWidget.setVerticalHeaderLabels(ruleNames)
   
   for i in range(R):
     self.ui.tableWidget.setColumnWidth(i, 50)
     
   s = QSettings()
   s.beginGroup('Expertivity')
   for i in range(R):
     s.beginGroup('Row%d' % i)
     for j in range(R):
       if j != i:
         self.ui.tableWidget.setItem(i, j, QTableWidgetItem(str(s.value('Column%d' % j, 0, float))))
     s.endGroup()
   s.endGroup()
   
   self.ui.tableWidget.itemChanged.connect(self.recalculateExpertivity)
   self.recalculateExpertivity();
Пример #2
0
class ExpertivityDialog(QDialog):
  def __init__(self, rules, flux):
    QDialog.__init__(self)
    self.rules = rules
    self.flux = flux
    
    self.setModal(True)
    self.ui = Ui_ExpertivityDialog()
    self.ui.setupUi(self)
    
    R = len(rules)
    self.ui.tableWidget.setColumnCount(R)
    self.ui.tableWidget.setRowCount(R)
    
    ruleNames = [rule.name[:3] for rule in self.rules]
    self.ui.tableWidget.setHorizontalHeaderLabels(ruleNames)
    self.ui.tableWidget.setVerticalHeaderLabels(ruleNames)
    
    for i in range(R):
      self.ui.tableWidget.setColumnWidth(i, 50)
      
    s = QSettings()
    s.beginGroup('Expertivity')
    for i in range(R):
      s.beginGroup('Row%d' % i)
      for j in range(R):
        if j != i:
          self.ui.tableWidget.setItem(i, j, QTableWidgetItem(str(s.value('Column%d' % j, 0, float))))
      s.endGroup()
    s.endGroup()
    
    self.ui.tableWidget.itemChanged.connect(self.recalculateExpertivity)
    self.recalculateExpertivity();
    
  def getWeightAt(self, i, j):
    item = self.ui.tableWidget.item(i, j)
    if item:
      try:
        return float(item.text())
      except ValueError:
        pass
    
    return 0

  def getWeights(self):
    R = len(self.rules)
    weights = [[self.getWeightAt(i, j) for j in range(R)] for i in range(R)]
    return weights
    
  def recalculateExpertivity(self):
    w = self.getWeights()
    expertivity = calculateExpertivity(self.flux, w)
    self.ui.label.setText("Expertivity: %g" % expertivity)
    
  def saveOptions(self):
    R = len(self.rules)
    s = QSettings()
    s.beginGroup('Expertivity')
    for i in range(R):
      s.beginGroup('Row%d' % i)
      for j in range(R):
        if j != i:
          s.setValue('Column%d' % j, self.getWeightAt(i, j))
      s.endGroup()
    s.endGroup()