async def serve(self, q: Q) -> None: copy_expando(q.args, q.client) if not q.client.client_initialized: await self._initialize_client(q) q.client.client_initialized = True elif q.args.input_model: await self._load_model(q) await self._process_text(q) await self._update_all_cards(q) elif q.args.analyze_text: await self._process_text(q) await self._update_all_cards(q) elif q.args.select_ents: await self._update_entity_cards(q) elif any([ q.args.split_sentences, q.args.fine_grained, q.args.add_lemma, q.args.collapse_punct, q.args.collapse_phrases, q.args.compact, q.args.color, q.args.bg, q.args.font, q.args.offset_x, q.args.arrow_stroke, q.args.arrow_width, q.args.arrow_spacing, q.args.word_spacing, q.args.word_distance ]): await self._update_dependency_cards(q) elif q.args.compare_texts: await self._process_text(q) await self._update_similarity_card(q)
async def serve(q: Q): await init(q) if q.args.generate_text: copy_expando(q.args, q.app) await show_results(q) else: await get_inputs(q) await q.page.save()
async def serve(q: Q): if q.args.train: # train WaveML Model using H2O-3 AutoML copy_expando(q.args, q.client) q.client.wave_model = build_model( train_df=q.client.train_df, target_column='target', model_type=ModelType.H2O3, _h2o3_max_runtime_secs=30, _h2o3_nfolds=2, _h2o3_include_algos=[q.client.algo] ) model_id = q.client.wave_model.model.model_id accuracy = round(100 - q.client.wave_model.model.mean_per_class_error() * 100, 2) # show training details and prediction option q.page['example'].items[1].choice_group.value = q.client.algo q.page['example'].items[2].buttons.items[1].button.disabled = False q.page['example'].items[3].message_bar.type = 'success' q.page['example'].items[3].message_bar.text = 'Training successfully completed!' q.page['example'].items[4].text.content = f'''**H2O AutoML model id:** {model_id} <br /> **Accuracy:** {accuracy}%''' q.page['example'].items[5].text.content = '' elif q.args.predict: # predict on test data preds = q.client.wave_model.predict(test_df=q.client.test_df) # show predictions q.page['example'].items[3].message_bar.text = 'Prediction successfully completed!' q.page['example'].items[5].text.content = f'''**Example predictions:** <br /> {preds[0]} <br /> {preds[1]} <br /> {preds[2]}''' else: # prepare sample train and test dataframes data = load_wine(as_frame=True)['frame'] q.client.train_df, q.client.test_df = train_test_split(data, train_size=0.8) # algos algo_choices = [ui.choice(x, x) for x in ['DRF', 'GLM', 'XGBoost', 'GBM', 'DeepLearning']] # display ui q.page['example'] = ui.form_card( box='1 1 -1 -1', items=[ ui.text(content='''The sample dataset used is the <a href="https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_wine.html" target="_blank">wine dataset</a>.'''), ui.choice_group(name='algo', label='Select Algo', choices=algo_choices, value='DRF'), ui.buttons(items=[ ui.button(name='train', label='Train', primary=True), ui.button(name='predict', label='Predict', primary=True, disabled=True), ]), ui.message_bar(type='warning', text='Training will take a few seconds'), ui.text(content=''), ui.text(content='') ] ) await q.page.save()
async def serve(q: Q): if 'H2O_CLOUD_ENVIRONMENT' not in os.environ: # show appropriate message if app is not running on cloud q.page['example'] = ui.form_card(box='1 1 -1 -1', items=form_unsupported()) elif q.args.train: # get DAI instance name copy_expando(q.args, q.client) for dai_instance in q.client.dai_instances: if dai_instance['id'] == int(q.client.dai_instance_id): q.client.dai_instance_name = dai_instance['name'] # set DAI model details q.client.model_details = dai_experiment_url(q.client.dai_instance_id, q.client.dai_instance_name) # show training progress and details q.page['example'].items = form_training_progress(q) await q.page.save() # train WaveML Model using Driverless AI q.client.wave_model = await q.run( func=build_model, train_df=q.client.train_df, target_column='target', model_type=ModelType.DAI, refresh_token=q.auth.refresh_token, _steam_dai_instance_name=q.client.dai_instance_name, _dai_accuracy=1, _dai_time=1, _dai_interpretability=10) # update DAI model details q.client.project_id = q.client.wave_model.project_id q.client.model_details += f'<br />{mlops_deployment_url(q.client.project_id)}' # download AutoDoc path_autodoc = save_autodoc(project_id=q.client.project_id, output_dir_path='.', refresh_token=q.auth.refresh_token) q.client.path_autodoc, *_ = await q.site.upload([path_autodoc]) # show model outputs q.page['example'].items = form_training_completed(q) else: # prepare sample train and test dataframes data = load_wine(as_frame=True)['frame'] q.client.train_df, q.client.test_df = train_test_split(data, train_size=0.8) # DAI instances q.client.dai_instances = list_dai_instances( refresh_token=q.auth.refresh_token) q.client.choices_dai_instances = [ ui.choice(name=str(x['id']), label=f'{x["name"]} ({x["status"].capitalize()})', disabled=x['status'] != 'running') for x in q.client.dai_instances ] running_dai_instances = [ x['id'] for x in q.client.dai_instances if x['status'] == 'running' ] q.client.disable_training = False if running_dai_instances else True q.client.dai_instance_id = str( running_dai_instances[0]) if running_dai_instances else '' # display ui q.page['example'] = ui.form_card(box='1 1 -1 -1', items=form_default(q)) await q.page.save()
def test_expando_copy(): e = copy_expando(Expando(dict(answer=42)), Expando()) assert e.answer == 42 assert e['answer'] == 42 assert 'answer' in e