def test_Mode():

    #Arrange
    Array = [7, 2, 0, 2, 2]
    expected = 2

    #Act
    actual = Mode.Mode(Array)

    #Assert
    assert expected == actual
    def back():
        modeGUI.destroy()
        nonlocal modes
        nonlocal components
        nonlocal numberComponents
        nonlocal numberModes
        # Dict of 1's and 0's where 1 is component is used and
        # 0 is component not used
        compsInMode = {}
        for modeNumber in range(numberModes):
            for componentName in components:
                compsInMode[componentName] = modeCompChecks[modeNumber][
                    componentName].get()

            modes[varModeNames[modeNumber].get()] = Mode.Mode(
                varModeNames[modeNumber].get(), components, compsInMode)

        global first
        first = False
        components, modes, numberComponents, number = Components_GUI.comp(
            components, modes, numberComponents, numberModes)
Beispiel #3
0
                                               E_electronic)

    numpoints = range_ns**(len(Modes))
    print
    print "Expected Numpoints", numpoints
    print "Actual numpoints", len(Intensities)

    return (Energies, Intensities)


threshold = 10**-5

# m = M.Mode(501, 499, 1)
# Modes = [m]

m1 = M.Mode(500, 450, 1)
m2 = M.Mode(300, 200, 1)
m3 = M.Mode(600, 500, 1)
m4 = M.Mode(500, 450, 1)
m5 = M.Mode(100, 50, 1)
m6 = M.Mode(600, 250, 1)
m7 = M.Mode(500, 250, 0.5)
m8 = M.Mode(550, 250, 10)
m9 = M.Mode(550, 400, 10)
m10 = M.Mode(550, 450, 20)
m11 = M.Mode(560, 450, 2)

# m1 = M.Mode(501, 499, 1)
# m2 = M.Mode(500.1, 300, 0.1)
# m3 = M.Mode(5000.01, 5000, 0.1)
Beispiel #4
0
def run(components, modes):
    location = "C:\\Users\...\\testFile2.csv"

    def cancel():
        fileGUI.destroy()
        Program_Terminated.terminate()
        sys.exit()

    first = True

    while (True):
        fileGUI = tk.Tk()

        varLocation = tk.StringVar()

        # \t is tab so \testFile -> \t estFile but \\testFile -> \testFile
        varLocation.set(location)

        # A GUI that doesn't change size or anything, this is so nice
        fileTitle = tk.Label(fileGUI, text="Input File Location")
        locationEntry = tk.Entry(fileGUI, textvariable=varLocation)
        errorTxt = "Could not find file at " + location
        locationError = tk.Label(fileGUI, text=errorTxt)

        fileGap = tk.Label(fileGUI, text="\t \t \t \t \t \t \t")

        fileContinue = tk.Button(fileGUI,
                                 text="CONTINUE",
                                 command=fileGUI.destroy)

        fileCancel = tk.Button(fileGUI, text="CANCEL", command=cancel)

        fileTitle.grid(row=0, column=0, columnspan=5, sticky=tk.W + tk.E)

        locationEntry.grid(row=1, column=0, columnspan=5, sticky=tk.W + tk.E)

        if (not first):
            locationError.grid(row=2,
                               column=0,
                               columnspan=5,
                               sticky=tk.W + tk.E)

        fileGap.grid(row=3, column=0, columnspan=5, sticky=tk.W + tk.E)

        fileContinue.grid(row=4, column=0, columnspan=5, sticky=tk.W + tk.E)

        fileCancel.grid(row=5, column=0, columnspan=5, sticky=tk.W + tk.E)

        fileGUI.mainloop()

        location = varLocation.get()

        if (os.path.exists(location)):
            break
        else:
            first = False

    input = pd.read_csv(location)
    # Spliting the Spreadsheet into two dataframes:
    # 1 for components, 1 for modes
    # Components Dataframe
    component = (input['Object'] == "Component")
    comps = input[component]
    # Only care about component name and power
    comps = comps[comps.columns[[1, 2]]]
    comps.rename(columns={'Power/Comp1': 'Power'}, inplace=True)
    # Modes Dataframe
    mode = (input['Object'] == "Mode")
    mods = input[mode]
    mods.rename(columns={"Power/Comp1": "Comp1"}, inplace=True)

    for i in range(len(comps)):
        components[comps['Name'].iloc[i]] = comps['Power'].iloc[i]

    def checkModes(componentsDict, modsDF, modeNumber):
        tfComponents = {}
        for componentName, compPower in components.items():
            tfComponents[componentName] = 0
        for i in range(len(components)):
            compHeading = "Comp" + str(i + 1)
            tfComponents[modsDF[compHeading].iloc[modeNumber]] = 1

        return tfComponents

    for i in range(len(mods)):
        tfComps = {}
        tfComps = checkModes(components, mods, i)
        key = mods['Name'].iloc[i]
        modes[key] = Mode.Mode(mods['Name'].iloc[i], components, tfComps)

        modes[key].assignRequirement(mods['Requirement'].iloc[i],
                                     mods['Rank'].iloc[i])

        #modes[mods['Name'].iloc[i]].inputRank(mods['Rank'].iloc[i])

        modes[key].inputRequirementConstraints(mods['Begin'].iloc[i],
                                               mods['BeginUnits'].iloc[i],
                                               mods['End'].iloc[i],
                                               mods['EndUnits'].iloc[i])

        modes[key].inputLightingConstraints(mods['Sunlight'].iloc[i],
                                            mods['Penumbra'].iloc[i],
                                            mods['Umbra'].iloc[i])

    return components, modes, len(comps), len(mods)
Beispiel #5
0
				FCFactors += [Modes[0].FrankCondons[n]* Modes[1].FrankCondons[m] * Modes[0].FrankCondons[p]]


	# use permutations in itertools
	# Each tuple in permutations is (for 3 modes) the tuple(n, m, o) 
	# such that Modes[0] is going to the nth state, Modes[1] is going
	# to the mth state, and Modes[2] is going to the oth state.
	permutations = [[0]*nModes]*range_ns

	print FCFactors
	
	#FCFactors = map(lambda x: helper(Modes, x), permutations)

	numpoints = range_ns ** (nModes)
	print
	print "Expected Numpoints", numpoints
	print "Actual numpoints", len(FCFactors)
	#intensities = map(lambda x: x**2, FCFactors)
	#return intensities

#def genMultiModeEnergies(E_el, Modes):


m1 = M.Mode(500, 450, 1)
m2 = M.Mode(300, 200, 0.1)
m3 = M.Mode(600, 500, 0.5)
Modes = [m1, m2, m3]
genMultiModeIntensities(Modes)


Beispiel #6
0
def genMultiModeEnergies(E_el, Modes, states):
    Eground = 0
    for mode in Modes:
        Eground += mode.groundEnergy

    energies = [E_el - Eground] * len(states)

    for i in range(len(states)):
        state = states[i]
        for j in range(len(state)):
            energies[i] += Modes[j].excitedEnergy(state[j])
    return energies


m1 = M.Mode(501, 499, 1)
m2 = M.Mode(500.1, 300, 0.1)
m3 = M.Mode(5000.01, 5000, 0.1)

# m1 = M.Mode(500, 450, 1)
# m2 = M.Mode(300, 200, 20)
# m3 = M.Mode(600, 500, 0.5)

Modes = [m1, m2, m3]
E_electronic = 0.005
[intensities, states] = genMultiModeIntensities(Modes)
energies = genMultiModeEnergies(E_electronic, Modes, states)

wide = [0.01] * 11
med = [0.005] * 11
skinny = [0.001] * 11
def mode(components, modes, numberComponents, numberModes):
    modeGUI = tk.Tk()

    if (len(modes) > 0):
        fakeModes = {}
        for mode, k in zip(modes.values(), range(len(modes))):
            fakeModes[k] = mode

    def back():
        modeGUI.destroy()
        nonlocal modes
        nonlocal components
        nonlocal numberComponents
        nonlocal numberModes
        # Dict of 1's and 0's where 1 is component is used and
        # 0 is component not used
        compsInMode = {}
        for modeNumber in range(numberModes):
            for componentName in components:
                compsInMode[componentName] = modeCompChecks[modeNumber][
                    componentName].get()

            modes[varModeNames[modeNumber].get()] = Mode.Mode(
                varModeNames[modeNumber].get(), components, compsInMode)

        global first
        first = False
        components, modes, numberComponents, number = Components_GUI.comp(
            components, modes, numberComponents, numberModes)

    # Making the title, column headings, and
    # ADD and CONTINUE which will always be in the GUI
    modeTitle = tk.Label(modeGUI, text="MODES")
    modeNameHead = tk.Label(modeGUI, text="Name")
    modeCompHead = tk.Label(modeGUI, text="Components Operating in Mode")
    modeGap = tk.Label(modeGUI, text="\t")

    modeContinue = tk.Button(modeGUI, text="CONTIUE", command=modeGUI.destroy)

    # modeBack will be fully implemented later
    modeBack = tk.Button(modeGUI, text="BACK", command=back)

    # The title and headings will always be in the same place sin the
    # GUI so I put them here to make later less cluttered
    modeTitle.grid(row=0, column=0, columnspan=3)
    modeNameHead.grid(row=1, column=1)
    modeCompHead.grid(row=1, column=2, columnspan=numberComponents)
    modeGap.grid(row=numberModes + 2, column=0)

    modeContinue.grid(row=numberModes + 3,
                      column=0,
                      columnspan=2 + numberComponents,
                      sticky=tk.W + tk.E)

    # The mode name ENTRY BOX array.
    # Same as 'compName' from components but for modes
    modeNameEntry = {}
    # Array of tkinter string variables of the mode name.
    # Same as 'varCompNames' from components
    varModeNames = {}
    # dict of tkinter checkboxes, one for each component in the satellite
    modeComps = {}
    # dict of tkinter integer variables for the checkboxes,
    # one for each component
    varModeCompChecks = {}
    # list of 'varModeCompChecks' used to keep track of which components
    # are in use for each mode
    modeCompChecks = {}
    # List of modeComps (list of lists of checkboxes) where ...
    # modeCompsRow[row/mode][component checkbox]
    modeCompsRow = {}
    for modeNumber in range(numberModes):
        # Makes the mode name input string and adds it to the list of
        # mode names
        varModeNames[modeNumber] = tk.StringVar()
        if (len(modes) == 0):
            varModeNames[modeNumber].set("Mode" + str(modeNumber + 1))
        else:
            varModeNames[modeNumber].set(fakeModes[modeNumber].name())

        # Makes a new "Mode " label and mode name input box and
        # adds them to the lists
        modeNameLabel = tk.Label(modeGUI, text="Mode " + str(modeNumber + 1))

        modeNameEntry[modeNumber] = tk.Entry(
            modeGUI, textvariable=varModeNames[modeNumber])

        # Clears the arrays specific to each row to make sure they
        # aren't running over one row to another
        varModeCompChecks = {}
        modeComps = {}

        # Makes input needed for checkboxes (different modes) and adds it
        # to a list and adds the actual checkboxes to a list of checkboxes
        if (len(modes) > 0):
            for modeIndex in fakeModes:
                # for key in dict:
                for componentName in components:
                    varModeCompCheck = tk.IntVar()
                    varModeCompCheck.set(0)
                    for compName in fakeModes[modeIndex].components():
                        if (compName == componentName):
                            varModeCompCheck.set(1)
                    varModeCompChecks[componentName] = (varModeCompCheck)

                    modeComps[componentName] = tk.Checkbutton(
                        modeGUI,
                        text=componentName,
                        variable=varModeCompChecks[componentName])

        else:
            for componentName, compPower in components.items():
                varModeCompCheck = tk.IntVar()
                varModeCompChecks[componentName] = (varModeCompCheck)

                modeComps[componentName] = tk.Checkbutton(
                    modeGUI,
                    text=componentName,
                    variable=varModeCompChecks[componentName])

        modeCompChecks[modeNumber] = varModeCompChecks
        modeCompsRow[modeNumber] = modeComps

        modeNameLabel.grid(row=modeNumber + 2, column=0)
        modeNameEntry[modeNumber].grid(row=modeNumber + 2, column=1)
        for componentName, compsColumn in zip(components,
                                              range(numberComponents)):
            modeCompsRow[modeNumber][componentName].grid(row=modeNumber + 2,
                                                         column=compsColumn +
                                                         2)

    modeGUI.mainloop()

    global first
    if (first):
        # Dict of 1's and 0's where 1 is component is used and
        # 0 is component not used
        compsInMode = {}
        sameModes = False
        if (len(modes) > 0):
            sameModes = True
            for modeNumber in range(numberModes):
                if (varModeNames[modeNumber].get() !=
                        fakeModes[modeNumber].name()):
                    modes = {}
                    sameModes = False
                    break
        if (sameModes):
            for componentName in components:
                compsInMode[componentName] = modeCompChecks[modeNumber][
                    componentName].get()

            modes[varModeNames[modeNumber].get()].changeComponents(
                components, compsInMode)
        else:
            for modeNumber in range(numberModes):
                for componentName in components:
                    compsInMode[componentName] = modeCompChecks[modeNumber][
                        componentName].get()

                modes[varModeNames[modeNumber].get()] = Mode.Mode(
                    varModeNames[modeNumber].get(), components, compsInMode)

        return ModeSwitching_GUI.switching(components, modes, numberComponents,
                                           numberModes)
    else:
        return components, modes, numberComponents, numberModes