Source code for pyanno.ui.model_bt_view
# Copyright (c) 2011, Enthought, Ltd.
# Author: Pietro Berkes <pberkes@enthought.com>
# License: Modified BSD license (2-clause)
from traits.trait_types import    Str, Int
from traitsui.api import  Item, VGroup
from traitsui.editors.range_editor import RangeEditor
from pyanno.modelBt import ModelBt
from pyanno.ui.model_btloop_view import ModelBtLoopDesignView
from pyanno.ui.model_view import  NewModelDialog
MODEL_BT_NAME = 'Model B-with-theta'
[docs]class NewModelBtDialog(NewModelDialog):
    model_name = Str(MODEL_BT_NAME)
    nclasses = Int(5)
    nannotators = Int(8)
    parameters_group = VGroup(
        Item(name='nclasses',
             editor=RangeEditor(mode='spinner', low=3, high=1000),
             label='Number of annotation classes:',
             width=100),
        Item(name='nannotators',
             editor=RangeEditor(mode='spinner', low=2, high=1000),
             label='Number of annotators:',
             width=100),
    )
 
ModelBtView = ModelBtLoopDesignView
[docs]class ModelBtView(ModelBtLoopDesignView):
    """ Traits UI Model/View for 'ModelBt' objects.
    """
    model_name = Str(MODEL_BT_NAME)
    new_model_dialog_class = NewModelBtDialog
    @classmethod
    def _create_model_from_dialog(cls, dialog):
        return ModelBt.create_initial_state(
            dialog.nclasses, dialog.nannotators)
#### Testing and debugging ####################################################
 
[docs]def main():
    """ Entry point for standalone testing/debugging. """
    from pyanno.models import ModelBt
    model = ModelBt.create_initial_state(5, 12)
    anno = model.generate_annotations(100)
    samples = model.sample_posterior_over_accuracy(
        anno, 50,
        step_optimization_nsamples=3)
    model_view = ModelBtView(model=model)
    model_view.plot_theta_samples(samples)
    model_view.configure_traits(view='traits_view')
    return model, model_view
 
if __name__ == '__main__':
    model, model_view = main()