Exemplo n.º 1
0
def getInputs(parent=None):
    '''Get inputs needed to create node and add to inputs to global lists in BN'''
    #Input name
    parents = []
    states = []
    didicancel = 0
    dlg = wx.TextEntryDialog(parent, 'Please enter name of node: ')
    if dlg.ShowModal() == wx.ID_OK:
        myaddednode = dlg.GetValue()
        name = myaddednode
    else:
        didicancel = 1
    #print(BN.nodesSave)
    #Input parents - CHANGE -> ask for number of parents and have new window pop up for each
    dlg.Destroy()
    dlg2 = wx.TextEntryDialog(parent, 'Please enter number of parents: ')

    if dlg2.ShowModal() == wx.ID_OK:
        parents_Num = int(dlg2.GetValue())
    else:
        parents_Num = -1
        didicancel = 1

    #print(parents_Num)
    dlg2.Destroy()
    for i in range(parents_Num):
        #print(i)
        dlg3 = wx.TextEntryDialog(parent,
                                  "Please enter name of parent %d: " % (i + 1))
        if dlg3.ShowModal() == wx.ID_OK:
            parents.append(dlg3.GetValue())
        else:
            didicancel = 1

        dlg3.Destroy()
    parents.reverse()
    parents = ''.join(parents)
    if parents_Num > 0:
        together = parents + name
    if parents_Num == 0:
        together = name

    dlg4 = wx.TextEntryDialog(parent, 'Please enter number of states: ')

    if dlg4.ShowModal() == wx.ID_OK:
        states_Num = int(dlg4.GetValue())
    else:
        states_Num = 0
        didicancel = 1
    #print(states_Num)
    dlg4.Destroy()
    for z in range(states_Num):
        #print(i)
        dlg5 = wx.TextEntryDialog(parent, "Please enter state %d: " % (z + 1))
        if dlg5.ShowModal() == wx.ID_OK:
            states.append(dlg5.GetValue())
        else:
            didicancel = 1

        dlg5.Destroy()

    dlg6 = wx.TextEntryDialog(parent,
                              'Please enter probability distribution: ')
    if dlg6.ShowModal() == wx.ID_OK:
        cpt_input = eval(dlg6.GetValue())
    else:
        didicancel = 1
    #print(cpt_input)
    dlg6.Destroy()

    if didicancel == 0:

        cpt = BN.TablePotential(together, cpt_input)
        BN.cpts.append(cpt)

        BN.parentsSave.append(parents)
        BN.statesSave.append(states)
        BN.nodesSave.append(myaddednode)
        BN.cptsSave.append(cpt_input)

    #print(BN.parentsSave)
    #print(BN.statesSave)
    return didicancel