def createFlash(self): ''' Creates the Flash Card Frame ''' cur = self.conn.cursor() cur.execute("SELECT * FROM photos WHERE course=?", (self.name,)) rows = cur.fetchall() cur.close() if rows: # Hide this Frame self.master.withdraw() root = Tk() root.title("{} FlashPhotos".format(self.name)) #Center frame to window. w=2000 h=650 ws = root.winfo_screenwidth() # width of the screen hs = root.winfo_screenheight() x = (ws/2) - (w/2) y = (hs/2) - (h/2) root.geometry("%dx%d+%d+%d" % (w, h, x, y)) app = Flash(master=root, name=self.name) app.mainloop() root.destroy() self.master.deiconify() else: messagebox.showerror("OOPS!","Link your course photos to practice with FlashPhotos!")
def solve_point(point, molecules, pressure, temperature): i, j, k = point zcomp = normalize_list([j + 0.01, i + 0.01, k + 0.01]) #print ('Solving zcomp:', zcomp) mix = Mixture(molecules, zcomp) Flash.flash_mixture(mix, pressure, temperature) return mix
def __init__(self, initScript=None): """Init the flash Init Info: nuLiqphases = 2 nuStreamsIn = 2 """ super(LLStage, self).__init__(initScript) #Create a separator self.innerFlash = innerFlash = Flash.SimpleFlash() self.AddUnitOperation(innerFlash, FLASH) #Create a balance self.innerMixer = innerMixer = Balance.BalanceOp() self.AddUnitOperation(innerMixer, MIX) #Initialize params self.InitializeParameters() #Share the ports directly self.ports_mat_OUT = innerFlash.ports_mat_OUT self.ports_mat_IN = innerMixer.ports_mat_IN #Connect the balance to the separator self.ConnectPorts(MIX, OUT_PORT + str(0), FLASH, IN_PORT)
def __init__(self, parent, url): wx.Panel.__init__(self, parent, style=wx.TE_PROCESS_ENTER, size=parent.getSize()) sizer = wx.BoxSizer(wx.VERTICAL) self.flash = Flash(self, url) sizer.Add(self.flash, proportion=1, flag=wx.EXPAND) #On Maximise, expand TFM self.SetSizer(sizer) self.SetAutoLayout(True) ######BINDS FOR EACH HOTKEY SHORTCUT####### self.Bind(wx.EVT_MENU, self.genericF1, id=220) self.Bind(wx.EVT_MENU, self.onKeyDownTest, id=221) self.Bind(wx.EVT_MENU, self.genericF2, id=222) self.Bind(wx.EVT_MENU, self.genericF3, id=223) self.Bind(wx.EVT_MENU, self.genericF4, id=224) self.Bind(wx.EVT_MENU, self.genericF5, id=225) self.Bind(wx.EVT_MENU, self.genericF6, id=226) self.Bind(wx.EVT_MENU, self.genericF7, id=227) self.Bind(wx.EVT_MENU, self.genericF8, id=228) self.Bind(wx.EVT_MENU, self.genericF9, id=229) self.Bind(wx.EVT_SIZE, self.onResizeResetPans) self.Bind(wx.EVT_MENU, self.panUp, id=240) self.Bind(wx.EVT_MENU, self.panDown, id=241) self.Bind(wx.EVT_MENU, self.panLeft, id=242) self.Bind(wx.EVT_MENU, self.panRight, id=243) self.Bind(wx.EVT_MENU, self.panReset, id=244) accel_tbl = wx.AcceleratorTable([(wx.ACCEL_NORMAL, wx.WXK_F1, 220), ((wx.ACCEL_NORMAL, ord('`'), 221)), ((wx.ACCEL_NORMAL, wx.WXK_F2, 222)), ((wx.ACCEL_NORMAL, wx.WXK_F3, 223)), ((wx.ACCEL_NORMAL, wx.WXK_F4, 224)), ((wx.ACCEL_NORMAL, wx.WXK_F5, 225)), ((wx.ACCEL_NORMAL, wx.WXK_F6, 226)), ((wx.ACCEL_NORMAL, wx.WXK_F7, 227)), ((wx.ACCEL_NORMAL, wx.WXK_F8, 228)), ((wx.ACCEL_NORMAL, wx.WXK_F9, 229)), ((wx.ACCEL_SHIFT, wx.WXK_UP, 240)), ((wx.ACCEL_SHIFT, wx.WXK_DOWN, 241)), ((wx.ACCEL_SHIFT, wx.WXK_LEFT, 242)), ((wx.ACCEL_SHIFT, wx.WXK_RIGHT, 243)), ((wx.ACCEL_CTRL, wx.WXK_SPACE, 244)) ]) self.Bind(wx.EVT_CHILD_FOCUS, self.focusTest) self.flash.SetAcceleratorTable(accel_tbl) #After Binds self.epoch = time.time() self.hotkeyId = 0 self.isShaObj = False self.baseInitW = 0 self.baseInitH = 0 ################################################### #################Inherited Setting################# ################################################### self.getMSDelay = parent.proxyGetPictionaryDelay() self.getUsername = parent.proxyGetUsername() self.loadOffSetF1 = parent.proxyGetOffSetF1() self.loadOffSetF2 = parent.proxyGetOffSetF2() self.loadOffSetF3 = parent.proxyGetOffSetF3() self.loadOffSetF4 = parent.proxyGetOffSetF4()
def create_composition_data(points): ternary_cols = ['M', 'z', 'x', 'y'] rows = len(points) comp_dfs = [] for comp in range(len(molecules)): comp_df = pd.DataFrame([[0 for _ in range(rows)] for _ in range(len(ternary_cols))], ternary_cols) comp_dfs.append(comp_df) count = 0 for i, j, k in points: zFracs = [i + 0.1, j + 0.1, k + 0.1] normalize_list(zFracs) mix = Mixture(molecules, zFracs) Flash.flash_mixture(mix, psi, rankine) for m in range(len(molecules)): comp_dfs[m][count] = mix.fluids[['molecule', 'z', 'x', 'y']].ix[m] count += 1 return comp_dfs
class MyPanel(wx.Panel): def __init__(self, parent, url): wx.Panel.__init__(self, parent, style=wx.TE_PROCESS_ENTER, size=parent.getSize()) sizer = wx.BoxSizer(wx.VERTICAL) self.flash = Flash(self, url) sizer.Add(self.flash, proportion=1, flag=wx.EXPAND) #On Maximise, expand TFM self.SetSizer(sizer) self.SetAutoLayout(True) ######BINDS FOR EACH HOTKEY SHORTCUT####### self.Bind(wx.EVT_MENU, self.genericF1, id=220) self.Bind(wx.EVT_MENU, self.onKeyDownTest, id=221) self.Bind(wx.EVT_MENU, self.genericF2, id=222) self.Bind(wx.EVT_MENU, self.genericF3, id=223) self.Bind(wx.EVT_MENU, self.genericF4, id=224) self.Bind(wx.EVT_MENU, self.genericF5, id=225) self.Bind(wx.EVT_MENU, self.genericF6, id=226) self.Bind(wx.EVT_MENU, self.genericF7, id=227) self.Bind(wx.EVT_MENU, self.genericF8, id=228) self.Bind(wx.EVT_MENU, self.genericF9, id=229) self.Bind(wx.EVT_SIZE, self.onResizeResetPans) self.Bind(wx.EVT_MENU, self.panUp, id=240) self.Bind(wx.EVT_MENU, self.panDown, id=241) self.Bind(wx.EVT_MENU, self.panLeft, id=242) self.Bind(wx.EVT_MENU, self.panRight, id=243) self.Bind(wx.EVT_MENU, self.panReset, id=244) accel_tbl = wx.AcceleratorTable([(wx.ACCEL_NORMAL, wx.WXK_F1, 220), ((wx.ACCEL_NORMAL, ord('`'), 221)), ((wx.ACCEL_NORMAL, wx.WXK_F2, 222)), ((wx.ACCEL_NORMAL, wx.WXK_F3, 223)), ((wx.ACCEL_NORMAL, wx.WXK_F4, 224)), ((wx.ACCEL_NORMAL, wx.WXK_F5, 225)), ((wx.ACCEL_NORMAL, wx.WXK_F6, 226)), ((wx.ACCEL_NORMAL, wx.WXK_F7, 227)), ((wx.ACCEL_NORMAL, wx.WXK_F8, 228)), ((wx.ACCEL_NORMAL, wx.WXK_F9, 229)), ((wx.ACCEL_SHIFT, wx.WXK_UP, 240)), ((wx.ACCEL_SHIFT, wx.WXK_DOWN, 241)), ((wx.ACCEL_SHIFT, wx.WXK_LEFT, 242)), ((wx.ACCEL_SHIFT, wx.WXK_RIGHT, 243)), ((wx.ACCEL_CTRL, wx.WXK_SPACE, 244)) ]) self.Bind(wx.EVT_CHILD_FOCUS, self.focusTest) self.flash.SetAcceleratorTable(accel_tbl) #After Binds self.epoch = time.time() self.hotkeyId = 0 self.isShaObj = False self.baseInitW = 0 self.baseInitH = 0 ################################################### #################Inherited Setting################# ################################################### self.getMSDelay = parent.proxyGetPictionaryDelay() self.getUsername = parent.proxyGetUsername() self.loadOffSetF1 = parent.proxyGetOffSetF1() self.loadOffSetF2 = parent.proxyGetOffSetF2() self.loadOffSetF3 = parent.proxyGetOffSetF3() self.loadOffSetF4 = parent.proxyGetOffSetF4() def sizeDeterminerAndSend(self, correctionx, correctiony): x_val = self.getCorrectedX() + correctionx y_val = self.getCorrectedY() + correctiony s = SendKeys("", True, dest=(x_val,y_val)) s.voidStart() #Bloew two methods correct the Coord. retrieval for all screen sizes, and center it to access Game Items. def getCorrectedX(self): tupleSize = self.GetSize() tuplePos = self.GetScreenPosition() x_val = int(tuplePos[0] + (tupleSize[0]/2)) return x_val #Origin at center. def getCorrectedY(self): tupleSize = self.GetSize() tuplePos = self.GetScreenPosition() y_val = int(tuplePos[1] + (tupleSize[1]/2)) return y_val #Likewise as X getter. def genericF1(self, event): if(self.hotkeyId == 0): t1 = time.time() - self.epoch if(t1 > self.getMSDelay): self.epoch = time.time() s = SendKeys("1", True) s.voidStart() elif(self.hotkeyId == 1): s = SendKeys("{enter}{!}off "+ self.loadOffSetF1+"{enter}", False) s.voidStart() elif(self.hotkeyId == 2): s = SendKeys("9ccc", False) s.voidStart() elif(self.hotkeyId == 3): if not self.isShaObj: self.sizeDeterminerAndSend(350,125) self.isShaObj = True else: self.isShaObj = False self.sizeDeterminerAndSend(300,125) #Resets mouse from Item globally using F1 elif(self.hotkeyId == 4): s = SendKeys("{enter}/ch " +self.getUsername +"{enter}", False) s.voidStart() elif(self.hotkeyId == 5): s = SendKeys("{enter}voulez vous danser avec moi ce soir{enter}", False) s.voidStart() def genericF2(self, event): if(self.hotkeyId == 0): t1 = time.time() - self.epoch if(t1 > self.getMSDelay): self.epoch = time.time() s = SendKeys("1", True) s.voidStart() elif(self.hotkeyId == 1): s = SendKeys("{enter}{!}off "+ self.loadOffSetF2+"{enter}", False) s.voidStart() elif(self.hotkeyId == 2): s = SendKeys("9vv", False) s.voidStart() elif(self.hotkeyId == 3): if not self.isShaObj: self.sizeDeterminerAndSend(350,175) self.isShaObj = True else: self.isShaObj = False self.sizeDeterminerAndSend(300,125) elif(self.hotkeyId == 4): s = SendKeys("{enter}/sy{enter}", False) s.voidStart() elif(self.hotkeyId == 5): s = SendKeys("{enter}vous habitez chez vos parents{enter}", False) s.voidStart() def genericF3(self, event): if(self.hotkeyId == 1): s = SendKeys("{enter}{!}off "+self.loadOffSetF3+"{enter}", False) s.voidStart() elif(self.hotkeyId == 2): s = SendKeys("9cxxxxxx ", False) s.voidStart() elif(self.hotkeyId == 3): if not self.isShaObj: self.sizeDeterminerAndSend(300,175) self.isShaObj = True else: self.isShaObj = False self.sizeDeterminerAndSend(300,125) #Resets mouse from Item globally using F1 elif(self.hotkeyId == 4): s = SendKeys("{enter}/np ", False) s.voidStart() elif(self.hotkeyId == 5): s = SendKeys("{enter}tu as de beaux yeux{enter}", False) s.voidStart() def genericF4(self, event): if(self.hotkeyId == 2): s = SendKeys("9cccxxxxxx ", False) s.voidStart() elif(self.hotkeyId == 1): s = SendKeys("{enter}{!}off "+self.loadOffSetF4+"{enter}", False) s.voidStart() elif(self.hotkeyId == 3): if not self.isShaObj: self.sizeDeterminerAndSend(300,125) self.isShaObj = True else: self.isShaObj = False self.sizeDeterminerAndSend(300,125) #Resets mouse from Item globally using F1 elif(self.hotkeyId == 5): s = SendKeys("{enter}veux tu m'epouser{enter}", False) s.voidStart() def genericF5(self, event): if(self.hotkeyId == 2): s = SendKeys("7cc ", False) s.voidStart() elif(self.hotkeyId == 3): if not self.isShaObj: self.sizeDeterminerAndSend(300,225) self.isShaObj = True else: self.isShaObj = False self.sizeDeterminerAndSend(300,125) #Resets mouse from Item globally using F1 elif(self.hotkeyId == 5): s = SendKeys("{enter}fais moi un bisous{enter}", False) s.voidStart() def genericF6(self, event): if(self.hotkeyId == 2): s = SendKeys("7ccc ", False) s.voidStart() def genericF7(self, event): if(self.hotkeyId == 2): s = SendKeys("4c4cccxxxxxx ", False) s.voidStart() def genericF8(self, event): if(self.hotkeyId == 2): s = SendKeys("5ccxxxxxx", False) s.voidStart() def genericF9(self, event): if(self.hotkeyId == 2): s = SendKeys("6ccxxxxxx ", False) s.voidStart() def onKeyDownTest(self, event): if(self.hotkeyId == 0): s = SendKeys("{ENTER}! ", False) s.voidStart() elif(self.hotkeyId != 2 and self.hotkeyId != -1): s = SendKeys("{ENTER}!", False) s.voidStart() elif self.hotkeyId == 2: s = SendKeys("{enter}Shaman it appears that I have found myself in a rather bothersome predicament, if you would be so kind as to assist me here I would appreciate that generosity of yours.{enter}", False) s.voidStart() else: pass def panUp(self, event): if(self.isMovingAlongBothAxes()): self.panReset(event) self.baseInitH += SHIFTER if self.flash.getHeight() + self.baseInitH < self.flash.getHeight(): self.flash.SetDimensions(self.baseInitW,self.baseInitH,self.flash.getWidth() + self.baseInitW, self.flash.getHeight() - self.baseInitH) else: self.flash.SetDimensions(0,0,self.flash.getWidth() + self.baseInitW, self.flash.getHeight() + self.baseInitH) def panDown(self, event): if(self.isMovingAlongBothAxes()): self.panReset(event) self.baseInitH -= SHIFTER if not self.flash.getHeight() + self.baseInitH < self.flash.getHeight(): self.flash.SetDimensions(0,0,self.flash.getWidth() + self.baseInitW, self.flash.getHeight() + self.baseInitH) else: self.flash.SetDimensions(self.baseInitW,self.baseInitH,self.flash.getWidth(), self.flash.getHeight() - self.baseInitH) def panLeft(self, event): if(self.isMovingAlongBothAxes()): self.panReset(event) self.baseInitW += SHIFTER if self.flash.getWidth() + self.baseInitW < self.flash.getWidth(): self.flash.SetDimensions(self.baseInitW,self.baseInitH,self.flash.getWidth() - self.baseInitW, self.flash.getHeight() - self.baseInitH) else: self.flash.SetDimensions(0,0,self.flash.getWidth() + self.baseInitW, self.flash.getHeight() + self.baseInitH) def panRight(self,event): if(self.isMovingAlongBothAxes()): self.panReset(event) self.baseInitW -= SHIFTER if not self.flash.getWidth() + self.baseInitW < self.flash.getWidth(): self.flash.SetDimensions(0,0,self.flash.getWidth() + self.baseInitW, self.flash.getHeight() + self.baseInitH) else: self.flash.SetDimensions(self.baseInitW,self.baseInitH,self.flash.getWidth() - self.baseInitW, self.flash.getHeight() - self.baseInitH) def onResizeResetPans(self, event): event.Skip() self.baseInitH = 0 self.baseInitW = 0 def panReset(self, event): self.baseInitH = 0 self.baseInitW = 0 self.flash.SetDimensions(0,0,self.flash.getWidth(), self.flash.getHeight()) ############################################## #Getters, setters and test methods are below.# ############################################## #ToDo Remove this method and actually fix the negative axes movement, in 2 Dimensions def isMovingAlongBothAxes(self): if(self.baseInitH != 0 and self.baseInitW != 0): return True def getAbsolutePosX(self): return self.flash.GetPositionTuple()[0] def getAbsolutePosY(self): return self.flash.GetPositionTuple()[1] def setHotKeyId(self, id): self.hotkeyId = id def focusTest(self, event): pass
import Flash from Mixture import Mixture psi = 3000 rankine = 160 + 460 molecules = ['C1', 'C4', 'C10'] zFracs = [0.6301, 0.1055, 0.2644] mix = Mixture() mix.initialize_fluids(molecules, zFracs) Flash.flash_mixture(mix, psi, rankine) print print '-----Results-----' print mix.zFactors print mix.xFracs print mix.yFracs
def create_ternary(molecules, pressure, temperature, amt=30, heatmap=False, tie_lines=False, specific_zFracs=[], finish_curve=False): scale = 2 points = len(list(ternary.helpers.simplex_iterator(scale))) while points <= amt: scale += 1 points = len(list(ternary.helpers.simplex_iterator(scale))) scale -= 1 points = list(ternary.helpers.simplex_iterator(scale)) rows = len(points) print('using number of points:', rows) print('scale set to:', scale) cmap = plt.cm.get_cmap('summer') f, ax = plt.subplots(1, 1, figsize=(10, 8)) figure, tax = ternary.figure(ax=ax, scale=scale) style = 'h' # can be changed for colorized axes on composition (b: bottom, l: left, r: right) axes_colors = {'b': 'black', 'l': 'black', 'r': 'black'} mixed_data = [] if heatmap: mixed_data = create_composition_data(molecules, pressure, temperature, points, scale) values = mixed_data[0] tax.heatmap(dict(zip(points, values)), scale=scale, cmap=cmap, vmax=1, style=style, colorbar=True) tax.boundary(linewidth=2.0, axes_colors=axes_colors) tax.left_axis_label("C3", offset=0.16, color=axes_colors['l']) tax.right_axis_label("C1", offset=0.16, color=axes_colors['r']) tax.bottom_axis_label("C2", offset=-0.06, color=axes_colors['b']) tax.gridlines(multiple=1, linewidth=1, horizontal_kwargs={'color': axes_colors['b']}, left_kwargs={'color': axes_colors['l']}, right_kwargs={'color': axes_colors['r']}, alpha=0.6) ticks = [round(i / float(scale), 1) for i in reversed(range(scale + 1))] tax.ticks(ticks=ticks, axis='lbr', linewidth=1, clockwise=True, axes_colors=axes_colors, offset=0.03) tax.clear_matplotlib_ticks() tax._redraw_labels() #tie-lines prev_xs = [] prev_ys = [] max_phases = [0.64, 0.21, 0.15] print('max phases:', max_phases) cnt = 0 while max_phases[1] > 0 and cnt < 10 and tie_lines: pnt = (max_phases[0], max_phases[1], max_phases[2]) tie_mix = Mixture(molecules, max_phases) Flash.flash_mixture(tie_mix, pressure, temperature) diff = 0.05 max_phases[1] -= diff max_phases[2] += diff if tie_mix.vapor == 0 or tie_mix.vapor == 1: print('not in two-phase', pnt) continue cnt += 1 fluids = tie_mix.fluids xs = [ fluids['x'][1] * scale, fluids['x'][0] * scale, fluids['x'][2] * scale ] ys = [ fluids['y'][1] * scale, fluids['y'][0] * scale, fluids['y'][2] * scale ] if len(prev_xs) > 0 and len(prev_ys) > 0: tax.plot([xs, prev_xs], linewidth=1.0, label="Two-Phase Curve", color='b') tax.plot([ys, prev_ys], linewidth=1.0, label="Two-Phase Curve", color='b') prev_xs = xs prev_ys = ys tax.plot([xs, ys], linewidth=1, label="Tie-Line", color='b') if len(specific_zFracs) > 0: z1 = specific_zFracs[1] z2 = specific_zFracs[0] z3 = specific_zFracs[2] specific_mix = Mixture(molecules, [z1, z2, z3]) Flash.flash_mixture(specific_mix, pressure, temperature) fluids = specific_mix.fluids zss = [ fluids['z'][1] * scale, fluids['z'][0] * scale, fluids['z'][2] * scale ] xss = [ fluids['x'][1] * scale, fluids['x'][0] * scale, fluids['x'][2] * scale ] yss = [ fluids['y'][1] * scale, fluids['y'][0] * scale, fluids['y'][2] * scale ] tax.plot([xss, zss], linewidth=2.5, label="Specific-Line", color='r') tax.plot([zss, yss], linewidth=2.5, label="Specific-Line", color='pink') if tie_lines and heatmap and finish_curve: prev_xs = [] prev_ys = [] final_mixes = mixed_data[2] for f_mix in final_mixes: print f_mix fluids = f_mix.fluids xs = [ fluids['x'][1] * scale, fluids['x'][0] * scale, fluids['x'][2] * scale ] ys = [ fluids['y'][1] * scale, fluids['y'][0] * scale, fluids['y'][2] * scale ] if len(prev_xs) > 0 and len(prev_ys) > 0: tax.plot([xs, prev_xs], linewidth=1.0, label="Two-Phase Curve", color='b') tax.plot([ys, prev_ys], linewidth=1.0, label="Two-Phase Curve", color='b') prev_xs = xs prev_ys = ys tax.plot([xs, ys], linewidth=1, label="Tie-Line", color='b') tax.show() return tax