def show(nodes=[], ctx=None, contexts=[], redirect=False, style=wx.DEFAULT_FRAME_STYLE):
    global _frame

    if isinstance(nodes, MDFNode):
        nodes = [nodes]

    if ctx is None:
        ctx = _get_current_context()

    if not contexts:
        contexts = [ctx] * len(nodes)

    root_ctx = ctx.get_parent() or ctx

    # get/create a wx.App
    app = get_wx_app(redirect)

    def _on_frame_close(event):
        global _frame
        if event.GetEventObject() is _frame:
            _frame = None
        event.Skip()

    if _frame is None:
        _frame = MDFViewerFrame(None, -1, "MDF Viewer", size=(800, 600), style=style)
        _frame.Bind(wx.EVT_CLOSE, _on_frame_close)
        _frame.CenterOnScreen()
        _frame.SetContext(root_ctx, nodes=[])
        _frame.Show()

    for node, ctx in zip(nodes, contexts):
        _frame.AddNodeToRoot(node, ctx)

    if not _in_ipython:
        app.MainLoop()
Opens a new mdf viewer for a context and nodes, or adds
dataset/ETHPy150Open manahl/mdf/mdf/viewer/__init__.py/show