def run(self): try: if self.rank == 1: for test in range(1, self.limit): began = time() kanji_set = [] while len(kanji_set) != 4: kanji = Kanji.get_random(self.al.random_int()) if kanji is not None: if kanji not in kanji_set: kanji_set.append(kanji) print 'Quadruple selected: ' + str(time() - began) self.partDone.emit(float(test)/self.limit * 100) else: counter = 0.0 while Kanji.picked_max() < self.rank: began = time() kanji_set = [] while len(kanji_set) != 4: kanji = Kanji.get_random(self.al.random_int()) if kanji is not None: if kanji not in kanji_set: kanji_set.append(kanji) print 'Quadruple selected: ' + str(time() - began) counter += 0.0001 self.partDone.emit(float(counter) * 100) except Exception as e: print e.message self.over.emit(True)
def update_stat_info(self): """ Update statistics for active DB. Note: very time consuming. """ try: count, (picked, freqs), picked_count = \ Kanji.query.count(), Kanji.freq_stats(), Kanji.picked_count() self.statInfo.setText("Kanji in DB: <b>%d</b> | Max picked: <b>%d</b> | \ Max frequency: <b>%d</b> | Picked at least once: <b>%d</b>" % (count, max(picked), max(freqs), picked_count)) self.update() except ValueError: set.statInfo.setText("No data available yet!")
def refresh_plot(self): """ Update plot with data from DB. Note: very time consuming. """ #todo: how about 2d/3d contour, eh? self.statPlot.kanjiStats(Kanji.freq_stats()) self.update_stat_info()
def run(self): try: kanji_set = [] while len(kanji_set) != 4: kanji = Kanji.get_random(self.al.random_int()) if kanji is not None: # Should not get the same kanji in one set if kanji not in kanji_set: kanji_set.append(kanji) self.results['kanji_set'] = kanji_set self.results['success'] = True except MessedUpException as e: self.results['message'] = e.message self.done.emit(self.results)
def parse_freq_html(file_path): with file(file_path) as f: html = f.read() f.close() soup = BeautifulSoup(html) kanji_table = soup.find('table') for row in kanji_table.findAll('tr'): cols = row.findAll('td') if cols: Kanji( rank=cols[0].string, character=cols[1].a.string, frequency=cols[2].string, dominance=cols[3].string[:-1], picked=0) update_db()
def eventFilter(self, object, event): if event.type() == QEvent.HoverEnter: object.setStyleSheet("QLabel { color: rgb(125, 125, 255); }") if event.type() == QEvent.HoverLeave: object.setStyleSheet("QLabel { color: rgb(0, 0, 0); }") if event.type() == QEvent.MouseButtonPress: if event.button() == Qt.LeftButton: try: kanji = None while kanji is None: kanji = Kanji.get_random( parent_up(object).al.random_int()) object.setText(kanji.character) if object is parent_up(object).day: parent_up(object).dayLabel.setText( '<b>Day:</b> ' + str(kanji.frequency) + ' | ' + str(kanji.dominance) + '%') elif object is parent_up(object).week: parent_up(object).weekLabel.setText( '<b>Week:</b> ' + str(kanji.frequency) + ' | ' + str(kanji.dominance) + '%') elif object is parent_up(object).month: parent_up(object).monthLabel.setText( '<b>Month:</b> ' + str(kanji.frequency) + ' | ' + str(kanji.dominance) + '%') elif object is parent_up(object).year: parent_up(object).yearLabel.setText( '<b>Year:</b> ' + str(kanji.frequency) + ' | ' + str(kanji.dominance) + '%') parent_up(object).kanji_tooltip(object) parent_up(object).stats.update_stat_info() parent_up(object).stats.refresh_plot() except MessedUpException as e: parent_up(object).show_message_then_hide(e.message) elif event.button() == Qt.RightButton: found = JDIC.search(object.text()) if found: parent_up(object).toggle_kanji_info(object, found) else: parent_up(object).show_message_then_hide( 'No such kanji in kanjidic2!') return False
def eventFilter(self, object, event): if event.type() == QEvent.HoverEnter: object.setStyleSheet("QLabel { color: rgb(125, 125, 255); }") if event.type() == QEvent.HoverLeave: object.setStyleSheet("QLabel { color: rgb(0, 0, 0); }") if event.type() == QEvent.MouseButtonPress: if event.button() == Qt.LeftButton: try: kanji = None while kanji is None: kanji = Kanji.get_random(parent_up(object).al.random_int()) object.setText(kanji.character) if object is parent_up(object).day: parent_up(object).dayLabel.setText('<b>Day:</b> ' + str(kanji.frequency) + ' | ' + str(kanji.dominance) + '%') elif object is parent_up(object).week: parent_up(object).weekLabel.setText('<b>Week:</b> ' + str(kanji.frequency) + ' | ' + str(kanji.dominance) + '%') elif object is parent_up(object).month: parent_up(object).monthLabel.setText('<b>Month:</b> ' + str(kanji.frequency) + ' | ' + str(kanji.dominance) + '%') elif object is parent_up(object).year: parent_up(object).yearLabel.setText('<b>Year:</b> ' + str(kanji.frequency) + ' | ' + str(kanji.dominance) + '%') parent_up(object).kanji_tooltip(object) parent_up(object).stats.update_stat_info() parent_up(object).stats.refresh_plot() except MessedUpException as e: parent_up(object).show_message_then_hide(e.message) elif event.button() == Qt.RightButton: found = JDIC.search(object.text()) if found: parent_up(object).toggle_kanji_info(object, found) else: parent_up(object).show_message_then_hide('No such kanji in kanjidic2!') return False
def reset_stats(self): Kanji.reset_stats() self.refresh_plot() self.update_stat_info()