Examples

Base App

The Base App is an out-of-box app that can be run.

# create a wave_app.py file
from h2o_wave import Q, main, app
from wacy.apps import BaseApp

wacy_app = BaseApp()

@app('/wacy')
async def serve(q: Q):
    await wacy_app.serve(q)

Run the app:

$ wave run wave_app.py

The app will be available on http://localhost:10101/wacy

Customize Meta / Layout

The metadata / layout of the app can be customized using meta_card.

Example using a new meta card:

from h2o_wave import ui
from wacy.apps import BaseApp

new_meta_card = ui.meta_card(
    box='',
    title='My custom title',
    icon='Globe',
    layouts=[
        ...
    ],
    ...
)

wacy_app = BaseApp(meta_card=new_meta_card)

Example using the BaseApp:

from wacy.apps import BaseApp

wacy_app = BaseApp()
wacy_app.meta_card.title = 'My custom title'
wacy_app.meta_card.icon = 'Globe'
wacy_app.meta_card.layouts = [...]
...

P.S. You can change the box names of any card but ensure the same names are used in the layout.

Customize Models

The models for the app can be downloaded using spaCy and customized using input_model_card:

Example of downloading spaCy models:

$ python3 -m spacy download en_core_web_sm
$ python3 -m spacy download en_core_web_md
$ python3 -m spacy download en_core_web_lg
$ python3 -m spacy download fr_core_news_md
$ python3 -m spacy download de_dep_news_trf

Example using a new input model card:

from wacy.apps import BaseApp
from wacy.cards import InputModelCard

new_input_model_card = InputModelCard(
    input_models=['en_core_web_sm', 'en_core_web_md', 'en_core_web_lg', 'fr_core_news_md', 'de_dep_news_trf'],
    input_model='en_core_web_md',
    title='My custom title',
    ...
)

wacy_app = BaseApp(input_model_card=new_input_model_card)

Example using the BaseApp:

from wacy.apps import BaseApp

wacy_app = BaseApp()
wacy_app.input_model_card.input_models = ['en_core_web_sm', 'en_core_web_md', 'en_core_web_lg', 'fr_core_news_md', 'de_dep_news_trf']
wacy_app.input_model_card.title = 'My custom title'
...

P.S. Make sure to download the required models before using it in the app.

Customize Textbox

The textbox for the app can be customized using input_text_card:

Example using a new input text card:

from wacy.apps import BaseApp
from wacy.cards import InputTextCard

new_input_text_card = InputTextCard(
    input_text='I want this to be the default text',
    title='My custom title',
    ...
)

wacy_app = BaseApp(input_text_card=new_input_text_card)

Example using the BaseApp:

from wacy.apps import BaseApp

wacy_app = BaseApp()
wacy_app.input_text_card.input_text = 'I want this to be the default text'
wacy_app.input_text_card.title = 'My custom title'
...

Customize Entity Visualizer

The entity visualizer for the app can be customized using entity_setting_card and entity_visualizer_card:

Example using new entity cards:

from wacy.apps import BaseApp
from wacy.cards import EntitySettingsCard, EntityVisualizerCard

new_entity_settings_card = EntitySettingsCard(
    select_ents=['PERSON'],
    title='My custom title',
    ...
)

new_entity_visualizer_card = EntityVisualizerCard(
    name='new visualizer card name',
    title='displacy plot',
    ...
)

wacy_app = BaseApp(entity_settings_card=new_entity_settings_card, entity_visualizer_card=new_entity_visualizer_card)

Example using the BaseApp:

from wacy.apps import BaseApp

wacy_app = BaseApp()
wacy_app.entity_settings_card.select_ents = ['PERSON']
wacy_app.entity_settings_card.title = 'My custom title'
...

wacy_app.entity_visualizer_card.name = 'new visualizer card name'
wacy_app.entity_visualizer_card.title = 'displacy plot'
...

Customize Dependency Visualizer

The dependency visualizer for the app can be customized using dependency_setting_card and dependency_visualizer_card:

Example using new dependency cards:

from wacy.apps import BaseApp
from wacy.cards import DependencySettingsCard, DependencyVisualizerCard

new_dependency_settings_card = DependencySettingsCard(
    compact=True,
    color='blue',
    title='My custom title',
    ...
)

new_dependency_visualizer_card = DependencyVisualizerCard(
    name='new visualizer card name',
    title='displacy plot',
    ...
)

wacy_app = BaseApp(dependency_settings_card=new_dependency_settings_card, dependency_visualizer_card=new_dependency_visualizer_card)

Example using the BaseApp:

from wacy.apps import BaseApp

wacy_app = BaseApp()
wacy_app.dependency_settings_card.compact = True
wacy_app.dependency_settings_card.color = 'blue'
wacy_app.dependency_settings_card.title = 'My custom title'
...

wacy_app.dependency_visualizer_card.name = 'new visualizer card name'
wacy_app.dependency_visualizer_card.title = 'displacy plot'
...

Customize Similarity Visualizer

The similarity visualizer for the app can be customized using similarity_setting_card and similarity_visualizer_card:

Example using new similarity cards:

from wacy.apps import BaseApp
from wacy.cards import SimilaritySettingsCard, SimilarityVisualizerCard

new_similarity_settings_card = SimilaritySettingsCard(
    color='blue',
    title='My custom title',
    ...
)

new_similarity_visualizer_card = SimilarityVisualizerCard(
    name='new visualizer card name',
    title='similarity scatterplot',
    ...
)

wacy_app = BaseApp(similarity_settings_card=new_similarity_settings_card, similarity_visualizer_card=new_similarity_visualizer_card)

Example using the BaseApp:

from wacy.apps import BaseApp

wacy_app = BaseApp()
wacy_app.similarity_settings_card.color = 'blue'
wacy_app.similarity_settings_card.title = 'My custom title'
...

wacy_app.similarity_visualizer_card.name = 'new visualizer card name'
wacy_app.similarity_visualizer_card.title = 'similarity scatterplot'
...