rank model start and gibo file support

This commit is contained in:
Sander Land committed 2020-06-28 14:10:20 +02:00
1 parent 94fdd24260
commit 7a4a8e268b
10 files changed
+525 -52

No files matched your search

+15
View File
@@ -15,6 +15,7 @@ from kivymd.uix.boxlayout import MDBoxLayout
from kivymd.uix.selectioncontrol import MDCheckbox
from kivymd.uix.textfield import MDTextField
from katrain.core.ai import ai_rank_estimation
from katrain.core.constants import (
AI_CONFIG_DEFAULT,
AI_DEFAULT,
@@ -29,6 +30,7 @@ from katrain.core.lang import i18n
from katrain.core.utils import PATHS, find_package_resource
from katrain.gui.kivyutils import BackgroundMixin, I18NSpinner
from katrain.gui.style import DEFAULT_FONT, EVAL_COLORS
from katrain.gui.widgets import RankGraph
from katrain.gui.widgets.progress_loader import ProgressLoader
@@ -313,6 +315,16 @@ class ConfigAIPopup(QuickConfigGui):
self.build_ai_options()
self.ai_select.bind(text=self.build_ai_options)
def estimate_rank_from_options(self,*_args):
strategy = self.ai_select.selected[1]
options = self.collect_properties(self) # [strategy]
print(strategy,options)
prefix = f"ai/{strategy}/"
options = {k[len(prefix):]:v for k,v in options.items() if k.startswith(prefix)}
print(options)
dan_rank, model_based = ai_rank_estimation(strategy, options)
self.estimated_rank_label.text = ('' if model_based else '~') + RankGraph.rank_label(dan_rank)
def build_ai_options(self, *_args):
strategy = self.ai_select.selected[1]
mode_settings = self.katrain.config(f"ai/{strategy}")
@@ -325,6 +337,7 @@ class ConfigAIPopup(QuickConfigGui):
if values == "bool":
widget = LabelledCheckBox(input_property=f"ai/{strategy}/{k}")
widget.active = v
widget.bind(active=self.estimate_rank_from_options)
else:
if isinstance(values[0], Tuple): # with descriptions, possibly language-specific
fixed_values = [(v, re.sub(r"\[(.*?)\]", lambda m: i18n._(m[1]), l)) for v, l in values]
@@ -332,6 +345,7 @@ class ConfigAIPopup(QuickConfigGui):
fixed_values = [(v, str(v)) for v in values]
widget = LabelledSelectionSlider(values=fixed_values, input_property=f"ai/{strategy}/{k}")
widget.set_value(v)
widget.textbox.bind(text=self.estimate_rank_from_options)
self.options_grid.add_widget(wrap_anchor(widget))
else:
self.options_grid.add_widget(
@@ -339,6 +353,7 @@ class ConfigAIPopup(QuickConfigGui):
)
for _ in range((self.max_options - len(mode_settings)) * 2):
self.options_grid.add_widget(Label(size_hint_x=None))
Clock.schedule_once(self.estimate_rank_from_options)
class ConfigPopup(QuickConfigGui):