class UmbrellaSamplingWindow(): """ Class doc """ def on_Window_destroy(self, widget): """ Function doc """ self.Visible = False def RunUmbrellaSampling(self, button): #---------------------------------------------------# # # # Reaction COORD-1 # # # #---------------------------------------------------# #---------------------------------- importing parameters COORD-1 ---------------------------# DINCREMENT = float(self.builder.get_object('entry_STEP_size1' ).get_text()) # NWINDOWS = int (self.builder.get_object('entry_NWINDOWS1' ).get_text()) # DMINIMUM = float(self.builder.get_object('entry_param_DMINIMUM1').get_text()) # FORCECONSTANT = float(self.builder.get_object('entry_FORCE1' ).get_text()) # #-------------------------------------------------------------------------------------------# mode = self.builder.get_object('combobox_SCAN_reaction_coordiante_type').get_active_text() print "\n\n" print mode self.EasyHybridSession.project.ActiveModeCheck() #-------------------------------------------------------------------------------------------------# # simple-distance # #-------------------------------------------------------------------------------------------------# if mode == "simple-distance": # ATOM1 = int(self.builder.get_object("entry_coord1_ATOM1" ).get_text()) # ATOM1_name = self.builder.get_object ("entry_coord1_ATOM1_name").get_text() # ATOM2 = int(self.builder.get_object("entry_coord1_ATOM2" ).get_text()) # ATOM2_name = self.builder.get_object ("entry_coord1_ATOM2_name").get_text() # # REACTION_COORD1 = {'MODE' : mode, # 'ATOM1' : ATOM1, # 'ATOM1_name' : ATOM1_name, # 'ATOM2' : ATOM2, # 'ATOM2_name' : ATOM2_name, # 'DINCREMENT' : DINCREMENT, # 'NWINDOWS' : NWINDOWS, # 'FORCECONSTANT': FORCECONSTANT, # 'DMINIMUM' : DMINIMUM} # #-------------------------------------------------------------------------------------------------# #-------------------------------------------------------------------------------------------------# # multiple-distance # #-------------------------------------------------------------------------------------------------# if mode == "multiple-distance": # ATOM1 = int(self.builder.get_object("entry_coord1_ATOM1" ).get_text()) # ATOM1_name = self.builder.get_object ("entry_coord1_ATOM1_name").get_text() # ATOM2 = int(self.builder.get_object("entry_coord1_ATOM2" ).get_text()) # ATOM2_name = self.builder.get_object ("entry_coord1_ATOM2_name").get_text() # ATOM3 = int(self.builder.get_object("entry_coord1_ATOM3" ).get_text()) # ATOM3_name = self.builder.get_object ("entry_coord1_ATOM3_name").get_text() # # mass_weight= self.builder.get_object ("checkbutton_mass_weight1").get_active() # # print " "+ATOM1_name+" ->- "+ATOM2_name+" -->-- "+ATOM3_name+" " # print " pk1 --- pk2 ---- pk3 \n" # print "DMINIMUM : ",DMINIMUM # print "\n\n" # print # sigma_pk1_pk3 = self.sigma_pk1_pk3 # sigma_pk3_pk1 = self.sigma_pk3_pk1 # print sigma_pk3_pk1 # print sigma_pk1_pk3 # # REACTION_COORD1 = {'MODE' : mode, # 'ATOM1' : ATOM1, # 'ATOM1_name' : ATOM1_name, # 'ATOM2' : ATOM2, # 'ATOM2_name' : ATOM2_name, # 'ATOM3' : ATOM3, # 'ATOM3_name' : ATOM3_name, # 'DINCREMENT' : DINCREMENT, # 'NWINDOWS' : NWINDOWS, # 'FORCECONSTANT': FORCECONSTANT, # 'DMINIMUM' : DMINIMUM, # 'mass_weight' : mass_weight, # 'sigma_pk1_pk3': sigma_pk1_pk3, # 'sigma_pk3_pk1': sigma_pk3_pk1} # #-------------------------------------------------------------------------------------------------# #----------------------------------------------------------------------------------------# # Reacion path type sequential / from trajectory # #----------------------------------------------------------------------------------------# reaction_path_type = self.builder.get_object("combobox1" ).get_active_text() # trajectory = self.builder.get_object("filechooserbutton1").get_filename() # N_process = self.builder.get_object("spinbutton1" ).get_value_as_int() # # REACTION_COORD1['REACTION_PATH_TYPE'] = reaction_path_type # REACTION_COORD1['FROM_TRAJECTORY'] = trajectory # REACTION_COORD1['N_PROCESS'] = N_process # ''' REACTION_PATH_TYPE = sequential or from trajectory FROM_TRAJECTORY = a trajectory obtained by SCANS N_PROCESS = number of CPUs used ''' #----------------------------------------------------------------------------------------# #-----------------------------------import trajectory parameters--------------------------------# max_int = int(self.builder.get_object ("SCAN_MIN_entry_max_int").get_text()) # rms_grad = float(self.builder.get_object("SCAN_MIN_entry_rmsd_grad").get_text()) # mim_method = self.builder.get_object ('combobox_optimization_method').get_active_text() # log_freq = None # #-----------------------------------------------------------------------------------------------# #-----------------------------------------------------------------------------------------------# data_path = self.EasyHybridSession.project.settings['data_path'] # traj = self.builder.get_object('umbrella_entry_TRAJECTORY').get_text() # if not os.path.exists (os.path.join(data_path, traj)): os.mkdir (os.path.join(data_path, traj)) # outpath = os.path.join(data_path, traj) # #-----------------------------------------------------------------------------------------------# if self.builder.get_object("checkbutton_minimization").get_active(): outpath_opt = os.path.join (outpath, 'GeometryOptimization') if not os.path.isdir(outpath_opt): os.mkdir(outpath_opt) #----------------------------------------------# MINIMIZATION_PARAMETERS={ 'do_minimizaton': True , 'max_int' : max_int , 'log_freq' : log_freq , 'rms_grad' : rms_grad , 'mim_method' : mim_method, 'outpath' : outpath_opt } else: MINIMIZATION_PARAMETERS = {'do_minimizaton': False } MDYNAMICS_PARAMETERS = {} MD_mode = self.builder.get_object('combobox_molecular_dynamics_method').get_active_text() if MD_mode == "Velocity Verlet Dynamics": nsteps_EQ = int(self.builder.get_object ('steps_eq').get_text()) nsteps_DC = int(self.builder.get_object ('steps_dc').get_text()) temperature = int(self.builder.get_object ('temperature').get_text()) temp_scale_freq = int(self.builder.get_object ('temp_scale_freq').get_text()) timestep = float(self.builder.get_object('timestep').get_text()) trajectory_freq = int(self.builder.get_object ("traj_freq_dy").get_text()) log_freq = int(self.builder.get_object ("log_freq_dy").get_text()) seed = int(self.builder.get_object ('entry_seed_dy').get_text()) coll_freq = int(self.builder.get_object ('collision_frequency').get_text()) MDYNAMICS_PARAMETERS = {'MD_mode' : MD_mode, 'nsteps_EQ' : nsteps_EQ, 'nsteps_DC' : nsteps_DC, 'temperature' : temperature, 'temp_scale_freq' : temp_scale_freq, 'timestep' : timestep, 'trajectory_freq' : trajectory_freq, 'log_freq' : log_freq, 'seed' : seed, 'coll_freq' : coll_freq} if MD_mode == "Leap Frog Dynamics": nsteps_EQ = int(self.builder.get_object ('steps_eq').get_text()) nsteps_DC = int(self.builder.get_object ('steps_dc').get_text()) temperature = int(self.builder.get_object ('temperature').get_text()) temp_scale_freq = int(self.builder.get_object ('temp_scale_freq').get_text()) timestep = float(self.builder.get_object('timestep').get_text()) trajectory_freq = int(self.builder.get_object ("traj_freq_dy").get_text()) log_freq = int(self.builder.get_object ("log_freq_dy").get_text()) seed = int(self.builder.get_object ('entry_seed_dy').get_text()) coll_freq = int(self.builder.get_object ('collision_frequency').get_text()) MDYNAMICS_PARAMETERS = {'MD_mode' : MD_mode, 'nsteps_EQ' : nsteps_EQ, 'nsteps_DC' : nsteps_DC, 'temperature' : temperature, 'temp_scale_freq' : temp_scale_freq, 'timestep' : timestep, 'trajectory_freq' : trajectory_freq, 'log_freq' : log_freq, 'seed' : seed, 'coll_freq' : coll_freq, 'temperatureCoupling' : 0.1 } if MD_mode == "Langevin Dynamics": nsteps_EQ = int(self.builder.get_object ('steps_eq').get_text()) nsteps_DC = int(self.builder.get_object ('steps_dc').get_text()) temperature = int(self.builder.get_object ('temperature').get_text()) temp_scale_freq = int(self.builder.get_object ('temp_scale_freq').get_text()) timestep = float(self.builder.get_object('timestep').get_text()) trajectory_freq = int(self.builder.get_object ("traj_freq_dy").get_text()) log_freq = int(self.builder.get_object ("log_freq_dy").get_text()) seed = int(self.builder.get_object ('entry_seed_dy').get_text()) coll_freq = int(self.builder.get_object ('collision_frequency').get_text()) MDYNAMICS_PARAMETERS = {'MD_mode' : MD_mode, 'nsteps_EQ' : nsteps_EQ, 'nsteps_DC' : nsteps_DC, 'temperature' : temperature, 'timestep' : timestep, 'trajectory_freq' : trajectory_freq, 'log_freq' : log_freq, 'seed' : seed, 'coll_freq' : coll_freq} outpath_eq = os.path.join (outpath, 'Equilibration') if not os.path.isdir(outpath_eq): os.mkdir(outpath_eq) outpath_collect = os.path.join (outpath, 'DataCollection') if not os.path.isdir(outpath_collect): os.mkdir(outpath_collect) MDYNAMICS_PARAMETERS['outpath_collect'] = outpath_collect MDYNAMICS_PARAMETERS['outpath_eq'] = outpath_eq pprint(REACTION_COORD1) pprint(MINIMIZATION_PARAMETERS) pprint(MDYNAMICS_PARAMETERS) logFile = umbrella_sampling (outpath , REACTION_COORD1 , MINIMIZATION_PARAMETERS , MDYNAMICS_PARAMETERS , self.EasyHybridSession.project ) self.EasyHybridSession.project.From_PDYNAMO_to_EasyHybrid(type_='ubs', log = logFile) self.Visible = False self.window.destroy() def Button_import_PyMOL_index(self, button): ''' ---------------------------------------------------- REACTION COORDINATE 1 ---------------------------------------------------- ''' if button == self.builder.get_object('Button_import_PyMOL_index1'): mode = self.builder.get_object('combobox_SCAN_reaction_coordiante_type').get_active_text() if mode == "simple-distance": try: name1, atom1_index, name2, atom2_index, distance_a1_a2 = import_ATOM1_ATOM2("pk1", "pk2") distance_a1_a2 = str(distance_a1_a2) self.builder.get_object('entry_param_DMINIMUM1' ).set_text(distance_a1_a2) self.builder.get_object("entry_coord1_ATOM1" ).set_text(str(atom1_index)) self.builder.get_object("entry_coord1_ATOM1_name").set_text(name1) self.builder.get_object("entry_coord1_ATOM2" ).set_text(str(atom2_index)) self.builder.get_object("entry_coord1_ATOM2_name").set_text(name2) except: cmd.edit_mode() print "pk1, pk2 selection not found" print texto_d1 return if mode == "multiple-distance": try: name1, atom1_index, name2, atom2_index, distance_a1_a2 = import_ATOM1_ATOM2("pk1", "pk2") name2, atom2_index, name3, atom3_index, distance_a2_a3 = import_ATOM1_ATOM2("pk2", "pk3") print "distance between atom 1 and atom 2: ",distance_a1_a2 print "distance between atom 2 and atom 3: ",distance_a2_a3 if self.builder.get_object("checkbutton_mass_weight1").get_active(): self.sigma_pk1_pk3, self.sigma_pk3_pk1 = compute_sigma_a1_a3 (name1, name3) """ R R \ / A1--A2 . . . . A3 / \ R R ^ ^ ^ | | | pk1-pk2 . . . . pk3 d1 d2 q1 = 1 / (mpk1 + mpk3) = [ mpk1 * r (pk3_pk2) - mpk3 * r (pk1_pk2) ] """ DMINIMUM = (self.sigma_pk1_pk3 * distance_a1_a2) -(self.sigma_pk3_pk1 * distance_a2_a3*-1) self.builder.get_object('entry_param_DMINIMUM1').set_text(str(DMINIMUM)) print "\n\nUsing mass weighted restraints" print "Sigma pk1_pk3", self.sigma_pk1_pk3 print "Sigma pk3_pk1", self.sigma_pk3_pk1 print "Estimated minimum distance", DMINIMUM else: self.sigma_pk1_pk3 = 1.0 self.sigma_pk3_pk1 = -1.0 DMINIMUM = distance_a1_a2 - distance_a2_a3 self.builder.get_object('entry_param_DMINIMUM1').set_text(str(DMINIMUM)) print "\n\nSigma pk1_pk3 ", self.sigma_pk1_pk3 print "Sigma pk3_pk1", self.sigma_pk3_pk1 print "Estimated minimum distance", DMINIMUM except: cmd.edit_mode() print "pk1, pk2 and pk3 selections not found" print texto_d2d1 return print name3, name2, name1 self.builder.get_object("entry_coord1_ATOM1" ).set_text(str(atom1_index)) self.builder.get_object("entry_coord1_ATOM1_name").set_text(name1) self.builder.get_object("entry_coord1_ATOM2" ).set_text(str(atom2_index)) self.builder.get_object("entry_coord1_ATOM2_name").set_text(name2) self.builder.get_object("entry_coord1_ATOM3" ).set_text(str(atom3_index)) self.builder.get_object("entry_coord1_ATOM3_name").set_text(name3) ''' ---------------------------------------------------- REACTION COORDINATE 2 ---------------------------------------------------- ''' if button == self.builder.get_object('Button_import_PyMOL_index2'): mode = self.builder.get_object('combobox_SCAN_reaction_coordiante2_type').get_active_text() if mode == "simple-distance": try: name1, atom1_index, name2, atom2_index, distance_a1_a2 = import_ATOM1_ATOM2("pk1", "pk2") distance_a1_a2 = str(distance_a1_a2) self.builder.get_object('entry_param_DMINIMUM2' ).set_text(distance_a1_a2) self.builder.get_object("entry_coord2_ATOM1" ).set_text(str(atom1_index)) self.builder.get_object("entry_coord2_ATOM1_name").set_text(name1) self.builder.get_object("entry_coord2_ATOM2" ).set_text(str(atom2_index)) self.builder.get_object("entry_coord2_ATOM2_name").set_text(name2) except: cmd.edit_mode() print "pk1, pk2 selection not found" print texto_d1 return if mode == "multiple-distance": try: name1, atom1_index, name2, atom2_index, distance_a1_a2 = import_ATOM1_ATOM2("pk1", "pk2") name2, atom2_index, name3, atom3_index, distance_a2_a3 = import_ATOM1_ATOM2("pk2", "pk3") print "distance between atom 1 and atom 2: ",distance_a1_a2 print "distance between atom 2 and atom 3: ",distance_a2_a3 if self.builder.get_object("checkbutton_mass_weight2").get_active(): self.sigma_pk1_pk3, self.sigma_pk3_pk1 = compute_sigma_a1_a3 (name1, name3) """ R R \ / A1--A2 . . . . A3 / \ R R ^ ^ ^ | | | pk1-pk2 . . . . pk3 d1 d2 q1 = 1 / (mpk1 + mpk3) = [ mpk1 * r (pk3_pk2) - mpk3 * r (pk1_pk2) ] """ DMINIMUM = (self.sigma_pk1_pk3 * distance_a1_a2) -(self.sigma_pk3_pk1 * distance_a2_a3*-1) self.builder.get_object('entry_param_DMINIMUM2').set_text(str(DMINIMUM)) print "\n\nUsing mass weighted restraints" print "Sigma pk1_pk3", self.sigma_pk1_pk3 print "Sigma pk3_pk1", self.sigma_pk3_pk1 print "Estimated minimum distance", DMINIMUM else: self.sigma_pk1_pk3 = 1.0 self.sigma_pk3_pk1 = -1.0 DMINIMUM = distance_a1_a2 - distance_a2_a3 self.builder.get_object('entry_param_DMINIMUM2').set_text(str(DMINIMUM)) print "\n\nSigma pk1_pk3 ", self.sigma_pk1_pk3 print "Sigma pk3_pk1", self.sigma_pk3_pk1 print "Estimated minimum distance", DMINIMUM except: cmd.edit_mode() print "pk1, pk2 and pk3 selections not found" print texto_d2d1 return print name3, name2, name1 self.builder.get_object("entry_coord2_ATOM1" ).set_text(str(atom1_index)) self.builder.get_object("entry_coord2_ATOM1_name").set_text(name1) self.builder.get_object("entry_coord2_ATOM2" ).set_text(str(atom2_index)) self.builder.get_object("entry_coord2_ATOM2_name").set_text(name2) self.builder.get_object("entry_coord2_ATOM3" ).set_text(str(atom3_index)) self.builder.get_object("entry_coord2_ATOM3_name").set_text(name3) def on_ScanDialog_button_CANCEL_SCAN_clicked (self, button): """ Function doc """ self.window.destroy() def Mass_weight_check(self, checkbutton): ''' ---------------------------------------------------- REACTION COORDINATE 1 ---------------------------------------------------- ''' if checkbutton == self.builder.get_object('checkbutton_mass_weight1'): try: name1, atom1_index, name2, atom2_index, distance_a1_a2 = import_ATOM1_ATOM2("pk1", "pk2") name2, atom2_index, name3, atom3_index, distance_a2_a3 = import_ATOM1_ATOM2("pk2", "pk3") except: print texto_d2d1 return if self.builder.get_object("checkbutton_mass_weight1").get_active(): self.sigma_pk1_pk3, self.sigma_pk3_pk1 = compute_sigma_a1_a3 (name1, name3) """ R R \ / A1--A2 . . . . A3 / \ R R ^ ^ ^ | | | pk1-pk2 . . . . pk3 d1 d2 q1 = 1 / (mpk1 + mpk3) = [ mpk1 * r (pk3_pk2) - mpk3 * r (pk1_pk2) ] """ DMINIMUM = (self.sigma_pk1_pk3 * distance_a1_a2) -(self.sigma_pk3_pk1 * distance_a2_a3*-1) self.builder.get_object('entry_param_DMINIMUM1').set_text(str(DMINIMUM)) print "\n\nUsing mass weighted restraints" print "Sigma pk1_pk3", self.sigma_pk1_pk3 print "Sigma pk3_pk1", self.sigma_pk3_pk1 print "Estimated minimum distance", DMINIMUM else: self.sigma_pk1_pk3 = 1.0 self.sigma_pk3_pk1 = -1.0 DMINIMUM = distance_a1_a2 - distance_a2_a3 self.builder.get_object('entry_param_DMINIMUM1').set_text(str(DMINIMUM)) print "\n\nSigma pk1_pk3 ", self.sigma_pk1_pk3 print "Sigma pk3_pk1", self.sigma_pk3_pk1 print "Estimated minimum distance", DMINIMUM ''' ---------------------------------------------------- REACTION COORDINATE 2 ---------------------------------------------------- ''' if checkbutton == self.builder.get_object('checkbutton_mass_weight2'): try: name1, atom1_index, name2, atom2_index, distance_a1_a2 = import_ATOM1_ATOM2("pk1", "pk2") name2, atom2_index, name3, atom3_index, distance_a2_a3 = import_ATOM1_ATOM2("pk2", "pk3") except: print texto_d2d1 return if self.builder.get_object("checkbutton_mass_weight2").get_active(): self.sigma_pk1_pk3, self.sigma_pk3_pk1 = compute_sigma_a1_a3 (name1, name3) """ R R \ / A1--A2 . . . . A3 / \ R R ^ ^ ^ | | | pk1-pk2 . . . . pk3 d1 d2 q1 = 1 / (mpk1 + mpk3) = [ mpk1 * r (pk3_pk2) - mpk3 * r (pk1_pk2) ] """ DMINIMUM = (self.sigma_pk1_pk3 * distance_a1_a2) -(self.sigma_pk3_pk1 * distance_a2_a3*-1) self.builder.get_object('entry_param_DMINIMUM2').set_text(str(DMINIMUM)) print "\n\nUsing mass weighted restraints" print "Sigma pk1_pk3", self.sigma_pk1_pk3 print "Sigma pk3_pk1", self.sigma_pk3_pk1 print "Estimated minimum distance", DMINIMUM else: self.sigma_pk1_pk3 = 1.0 self.sigma_pk3_pk1 = -1.0 DMINIMUM = distance_a1_a2 - distance_a2_a3 self.builder.get_object('entry_param_DMINIMUM2').set_text(str(DMINIMUM)) print "\n\nSigma pk1_pk3 ", self.sigma_pk1_pk3 print "Sigma pk3_pk1", self.sigma_pk3_pk1 print "Estimated minimum distance", DMINIMUM def checkbutton_MassWeight (self, checkbutton): """ Function doc """ print 'checkbutton_MassWeight' self.Mass_weight_check(checkbutton) def ComboxChange(self, combobox): """ Function doc """ if combobox == self.builder.get_object('combobox_SCAN_reaction_coordiante_type'): mode = self.builder.get_object('combobox_SCAN_reaction_coordiante_type').get_active_text() if mode == 'simple-distance': self.builder.get_object('label_coord1_atom3' ).set_sensitive(False) self.builder.get_object('entry_coord1_ATOM3' ).set_sensitive(False) self.builder.get_object('label_coord1_ATOM3_name' ).set_sensitive(False) self.builder.get_object('entry_coord1_ATOM3_name' ).set_sensitive(False) self.builder.get_object('checkbutton_mass_weight1').set_sensitive(False) if mode == 'multiple-distance': self.builder.get_object('label_coord1_atom3' ).set_sensitive(True) self.builder.get_object('entry_coord1_ATOM3' ).set_sensitive(True) self.builder.get_object('label_coord1_ATOM3_name' ).set_sensitive(True) self.builder.get_object('entry_coord1_ATOM3_name' ).set_sensitive(True) self.builder.get_object('checkbutton_mass_weight1').set_sensitive(True) if combobox == self.builder.get_object('combobox_SCAN_reaction_coordiante2_type'): mode = self.builder.get_object('combobox_SCAN_reaction_coordiante2_type').get_active_text() if mode == 'simple-distance': self.builder.get_object('label_coord2_atom3' ).set_sensitive(False) self.builder.get_object('entry_coord2_ATOM3' ).set_sensitive(False) self.builder.get_object('label_coord2_ATOM3_name' ).set_sensitive(False) self.builder.get_object('entry_coord2_ATOM3_name' ).set_sensitive(False) self.builder.get_object('checkbutton_mass_weight2').set_sensitive(False) if mode == 'multiple-distance': self.builder.get_object('label_coord2_atom3' ).set_sensitive(True) self.builder.get_object('entry_coord2_ATOM3' ).set_sensitive(True) self.builder.get_object('label_coord2_ATOM3_name' ).set_sensitive(True) self.builder.get_object('entry_coord2_ATOM3_name' ).set_sensitive(True) self.builder.get_object('checkbutton_mass_weight2').set_sensitive(True) if combobox == self.builder.get_object('combobox1'): mode = self.builder.get_object('combobox1').get_active_text() if mode == 'sequential': self.builder.get_object('scan2d_label_step_size1' ).show() self.builder.get_object('entry_STEP_size1' ).show() self.builder.get_object('13_window_scan2d_scam_label_step_Nwindows2' ).show() self.builder.get_object('entry_NWINDOWS1' ).show() self.builder.get_object('13_window_scan2d_scam_label_step_trajectory3' ).show() self.builder.get_object('entry_param_DMINIMUM1' ).show() #self.builder.get_object('table3').show() self.builder.get_object('table1').hide() if mode == 'from trajectory': #self.builder.get_object('table3').hide() self.builder.get_object('scan2d_label_step_size1' ).hide() self.builder.get_object('entry_STEP_size1' ).hide() self.builder.get_object('13_window_scan2d_scam_label_step_Nwindows2' ).hide() self.builder.get_object('entry_NWINDOWS1' ).hide() self.builder.get_object('13_window_scan2d_scam_label_step_trajectory3' ).hide() self.builder.get_object('entry_param_DMINIMUM1' ).hide() self.builder.get_object('table1').show() def checkbutton_Minimization (self, checkbutton): if self.builder.get_object("checkbutton_minimization").get_active(): self.builder.get_object('table17').set_sensitive(True) else: self.builder.get_object('table17').set_sensitive(False) def OpenWindow (self, text): if self.Visible == False: self.project = self.EasyHybridSession.project EasyHybrid_ROOT = self.EasyHybridSession.EasyHybrid_ROOT EasyHybrid_GUI = self.EasyHybridSession.EasyHybrid_GUI self.builder = gtk.Builder() self.builder.add_from_file( os.path.join(EasyHybrid_GUI,'WindowUmbrellaSampling', 'UmbrellaSampling2.glade')) self.builder.connect_signals(self) self.window = self.builder.get_object('window1') self.sigma_pk1_pk3 = None self.sigma_pk3_pk1 = None self.builder.get_object("umbrella_entry_TRAJECTORY").set_text(text) ''' -------------------------------------------------- - - - WindowControl - - - -------------------------------------------------- ''' self.window_control = WindowControl(self.builder) #--------------------- Setup ComboBoxes ------------------------- combobox = 'combobox_SCAN_reaction_coordiante_type' combolist = ['simple-distance', 'multiple-distance'] self.window_control.SETUP_COMBOBOXES(combobox, combolist, 0) combobox = 'combobox1' combolist = ['sequential', 'from trajectory'] self.window_control.SETUP_COMBOBOXES(combobox, combolist, 0) combobox = 'combobox_optimization_method' combolist = ['Conjugate Gradient']#, 'Steepest Descent','LBFGS'] self.window_control.SETUP_COMBOBOXES(combobox, combolist, 0) combobox = 'combobox_molecular_dynamics_method' # combolist = ["Velocity Verlet Dynamics", "Leap Frog Dynamics"]#,"Langevin Dynamics"] self.window_control.SETUP_COMBOBOXES(combobox, combolist, 0) #------------------------------------------------------------# # QC SPIN MULTIPLICITY spinbutton = 'spinbutton1' config = [0.0, 1.0, 500.0, 1.0, 0.0, 0.0] self.window_control.SETUP_SPINBUTTON(spinbutton, config) self.window.show() # self.builder.connect_signals(self) self.Visible = True gtk.main() #---------------------------------------------------------------- def CloseWindow (self, button): """ Function doc """ #print "Bacheguissimo" self.window.destroy() def __init__(self, EasyHybridSession = None): """ Class initialiser """ if EasyHybridSession != None: self.project = EasyHybridSession.project self.main_builder = EasyHybridSession.builder self.EasyHybridSession = EasyHybridSession self.window_control = EasyHybridSession.window_control self.Visible = False
class pDynamoSelectionWindow(): """ Class doc """ def on_pDynamoSelectionsWindow_destroy(self, widget): """ Function doc """ self.Visible = False def OpenWindow(self): """ Function doc """ if self.Visible == False: self.builder = gtk.Builder() self.builder.add_from_file( os.path.join(EasyHybrid_GUI, 'WindowpDynamoSelections', 'pDynamoSelectionsWindow.glade')) self.builder.connect_signals(self) self.window = self.builder.get_object('window1') self.window_control = WindowControl(self.builder) #--------------------- Setup ComboBoxes -----------------------# combobox = 'combobox_selection_type' # combolist = ['ByComponent', 'Complement', 'ByLinearPolymer'] # self.window_control.SETUP_COMBOBOXES(combobox, combolist, 0) # # combobox = 'combobox_select_as_prune_fix_pymol' # combolist = ["Select in PyMOl", "FIX atoms", "PRUNE atoms"] # self.window_control.SETUP_COMBOBOXES(combobox, combolist, 0) # #--------------------------------------------------------------# self.builder.get_object('selection_entry1').set_text(self.chain) self.builder.get_object('selection_entry2').set_text(self.resn) self.builder.get_object('selection_entry3').set_text(str( self.resi)) self.builder.get_object('selection_entry4').set_text( self.atom_name) # SPINBUTTON spinbutton = 'selection_radius_spinbutton' config = [0.0, 1.0, 500.0, 1.0, 0.0, 0.0] self.window_control.SETUP_SPINBUTTON(spinbutton, config) self.builder.get_object('selection_radius_spinbutton').set_value( int(self.radius_distance)) self.project = self.EasyHybridSession.project self.project.importPDBInformantion() #self.build_treeview() self.window.show() self.builder.connect_signals(self) self.Visible = True gtk.main() def on_selection_radius_spinbutton_value_changed(self, widget): """ Function doc """ self.radius_distance = float( self.builder.get_object( "selection_radius_spinbutton").get_value_as_int()) def importResidueInformation(self, button): #print 'button' #try: model = cmd.get_model("pk1") index = [] resn = None resi = None for a in model.atom: #resn = a.resn #resi = a.resi #print resn #print resi #print a.index index = a.index chain = self.project.pdbInfo[index][1] resn = self.project.pdbInfo[index][0] resi = self.project.pdbInfo[index][2] atom_name = self.project.pdbInfo[index][3] self.builder.get_object('selection_entry1').set_text(chain) self.builder.get_object('selection_entry2').set_text(resn) self.builder.get_object('selection_entry3').set_text(str(resi)) self.builder.get_object('selection_entry4').set_text(atom_name) self.chain = chain self.resn = resn self.resi = resi self.atom_name = atom_name #except: # cmd.edit_mode() # print "pk1 selection not found" def apply_pdynamo_selection(self, button): #pdynamo method """Fucntion that permits select atoms from pDynamo arguments""" self.project = self.EasyHybridSession.project iter3 = self.builder.get_object('selection_entry1').get_text() iter2 = self.builder.get_object('selection_entry2').get_text() iter4 = self.builder.get_object('selection_entry3').get_text() iter1 = self.builder.get_object('selection_entry4').get_text() self.iter3 = iter3 self.iter2 = iter2 self.iter4 = iter4 self.iter1 = iter1 str_teste = "*:%s.%s:%s" % (iter2, iter4, iter1) import_type2 = self.builder.get_object( "combobox_select_as_prune_fix_pymol").get_active_text() import_type = self.builder.get_object( "combobox_selection_type").get_active_text() selection_type = self.builder.get_object( "combobox_selection_type").get_active_text() radius_distance = float( self.builder.get_object( "selection_radius_spinbutton").get_value_as_int()) print str_teste pymolIndex = AtomSelection.FromAtomPattern(self.project.system, str_teste) pymolIndex = pymolIndex.Within(radius_distance) if selection_type == "ByComponent": pymolIndex = pymolIndex.ByComponent() self.builder.get_object("selectionByAtomSelectionMode") pymolIndex = Selection(pymolIndex) #project.system = PruneByAtom ( project.system, pymolIndex ) if selection_type == "Complement": pymolIndex = pymolIndex.Complement() self.builder.get_object("") pymolIndex = Selection(pymolIndex) #project.system.DefineFixedAtoms ( pymolIndex ) if selection_type == "ByLinearPolymer": pymolIndex = pymolIndex.ByLinearPolymer() self.builder.get_object("selectionByAtomSelectionMode") pymolIndex = Selection(pymolIndex) #print pymolIndex try: cmd.delete('sele') except: pass index_list = list(pymolIndex) PymolPutTable(index_list, "sele") pymol_id = self.project.settings['PyMOL_Obj'] string22 = 'select sele, (' + pymol_id + ' and sele )' cmd.do(string22) #cmd.disable("all") #cmd.enable("pymol_id") cmd.enable("sele") #if import_type2 == "Select in PyMOl": # # export data to pymol # try: # cmd.delete("sele") # except: # a = None # # pymol_put_table (index_list, "sele") # pymol_id = project.settings['last_pymol_id'] # string22 = 'select sele, ('+pymol_id+ ' and sele )' # cmd.do(string22) # ##if import_type2 == "FIX atoms": # project.system.DefineFixedAtoms ( pymolIndex ) # # export data to pymol # try: # cmd.delete("FIX_atoms") # except: # a = None # # project.settings['fix_table'] = index_list # # pymol_put_table (index_list, "FIX_atoms") # # pymol_id = project.settings['last_pymol_id'] # string22 = 'select FIX_atoms, ('+pymol_id+ ' and FIX_atoms )' # cmd.do(string22) # string5 = 'color grey80, FIX_atoms' # cmd.do(string5) # #if import_type2 == "PRUNE atoms": # data_path = self.builder.get_object("01_main_window_filechooserbutton_datapath").get_filename() # project.system = PruneByAtom ( project.system, pymolIndex ) # # # exporting data to pymol # project.increment_step() # step # project.export_frames_to_pymol('prn', types_allowed , data_path) # Loading the actual frame in pymol. # project.check_system(self.dualLog) # Check System # # # JOB HISTORY # step = project.step # process = "prune system" # potencial = project.settings["potencial"] # energy = " - " # time = " - " # #self.insert_JOB_HISTORY_DATA ( step, process, potencial, energy, time ) def on_button_cancel_clicked(self, button): """ Function doc """ self.window.destroy() def __init__(self, EasyHybridSession): """ Class initialiser """ self.radius_distance = 16 self.EasyHybridSession = EasyHybridSession #self.project = EasyHybridSession.project self.Visible = False self.chain = '' self.resn = '' self.resi = '' self.atom_name = ''
class TrajectoryEnergyRefineDialog(): def runTrajectoryEnergyRefine (self, button): """ Function doc """ trajectory = self.builder.get_object('filechooserbutton1').get_filename() data_path = self.project.settings['data_path'] logfile = self.builder.get_object('filechooserbutton4').get_filename() input_type = self.builder.get_object('combobox4').get_active_text() nCPUs = self.builder.get_object('spinbutton2').get_value_as_int() #nCPUs = 8 REACTION_COORD1 = None REACTION_COORD2 = None set_MM_chrgs_to_zero = False exclude_MM_atoms = False system = Clone(self.project.system) if self.builder.get_object("checkbutton_set_MM_charges_to_zero").get_active(): charges = system.energyModel.mmAtoms.AtomicCharges() natoms = len(charges) ZeroCharges = [0.0] * natoms system.energyModel.mmAtoms.SetAtomicCharges(ZeroCharges) #if self.builder.get_object("checkbutton_exclude_MM_atoms").get_active(): # exclude_MM_atoms = True #_type = None #-------------------------------------------------------------------------------------------------# # Coordinate 1 #-------------------------------------------------------------------------------------------------# mode = self.builder.get_object('combobox_reaction_coordiante_type1').get_active_text() if mode == "simple-distance": REACTION_COORD1 = {'MODE' : mode, 'ATOM1' : int(self.builder.get_object("entry_coord1_ATOM1" ).get_text()) , 'ATOM1_name' : self.builder.get_object ("entry_coord1_ATOM1_name").get_text() , 'ATOM2' : int(self.builder.get_object("entry_coord1_ATOM2" ).get_text()) , 'ATOM2_name' : self.builder.get_object ("entry_coord1_ATOM2_name").get_text() , } if mode == "multiple-distance": REACTION_COORD1 = {'MODE' : mode, 'ATOM1' : int(self.builder.get_object("entry_coord1_ATOM1" ).get_text()), 'ATOM1_name' : self.builder.get_object ("entry_coord1_ATOM1_name").get_text() , 'ATOM2' : int(self.builder.get_object("entry_coord1_ATOM2" ).get_text()), 'ATOM2_name' : self.builder.get_object ("entry_coord1_ATOM2_name").get_text() , 'ATOM3' : int(self.builder.get_object("entry_coord1_ATOM3" ).get_text()), 'ATOM3_name' : self.builder.get_object ("entry_coord1_ATOM3_name").get_text() , } #-------------------------------------------------------------------------------------------------# #-------------------------------------------------------------------------------------------------# # Coordinate 2 #-------------------------------------------------------------------------------------------------# if self.refine_type == '2D': mode = self.builder.get_object('combobox_reaction_coordiante_type2').get_active_text() if mode == "simple-distance": REACTION_COORD2 = {'MODE' : mode, 'ATOM1' : int(self.builder.get_object("entry_coord2_ATOM1" ).get_text()), 'ATOM1_name' : self.builder.get_object ("entry_coord2_ATOM1_name").get_text() , 'ATOM2' : int(self.builder.get_object("entry_coord2_ATOM2" ).get_text()), 'ATOM2_name' : self.builder.get_object ("entry_coord2_ATOM2_name").get_text() , } if mode == "multiple-distance": REACTION_COORD2 = {'MODE' : mode, 'ATOM1' : int(self.builder.get_object("entry_coord2_ATOM1" ).get_text()), 'ATOM1_name' : self.builder.get_object ("entry_coord2_ATOM1_name").get_text() , 'ATOM2' : int(self.builder.get_object("entry_coord2_ATOM2" ).get_text()), 'ATOM2_name' : self.builder.get_object ("entry_coord2_ATOM2_name").get_text() , 'ATOM3' : int(self.builder.get_object("entry_coord2_ATOM3" ).get_text()), 'ATOM3_name' : self.builder.get_object ("entry_coord2_ATOM3_name").get_text() , } #-------------------------------------------------------------------------------------------------# ''' if self.builder.get_object('checkbutton_minimization').get_active() : #---------------------------------- importing parameters COORD-1 ---------------------------# FORCECONSTANT = float(self.builder.get_object('entry_FORCE1').get_text()) # #-------------------------------------------------------------------------------------------# self.EasyHybridSession.project.ActiveModeCheck() MINIMIZATION_PARAMETERS = None if self.builder.get_object("checkbutton_minimization").get_active(): #---------------------------------------------------------------------------------------------------------# mim_method = self.builder.get_object('combobox_optimization_method').get_active_text() # # max_int = self.builder.get_object("entry_max_interactions") .get_text() # rms_grad = self.builder.get_object("entry_rmsd_grad") .get_text() # log_freq = 1 #---------------------------------------------------------------------------------------------------------# MINIMIZATION_PARAMETERS={ 'do_minimizaton': True , 'max_int' : max_int , 'log_freq' : log_freq , 'rms_grad' : rms_grad , 'mim_method' : mim_method} pprint(REACTION_COORD1) pprint(MINIMIZATION_PARAMETERS) else: pass ''' _type = 'energy' outputLogFile = self.builder.get_object("output_entry").get_text() pDynamoTrajectoryEnergyRefine (system = system , data_path = outputLogFile , trajectory = trajectory , REACTION_COORD1 = REACTION_COORD1 , REACTION_COORD2 = REACTION_COORD2 , input_type = input_type , _type = self.refine_type , nCPUs = nCPUs , set_MM_chrgs_to_zero = set_MM_chrgs_to_zero, exclude_MM_atoms = exclude_MM_atoms ) #if self.builder.get_object("checkbutton_set_MM_charges_to_zero").get_active(): # self.project.system.energyModel.mmAtoms.SetAtomicCharges(charges) # def fileChooser_logFile (self, widget): """ Function doc parameters = { 1: { 'type' : 'line' , # line / matrix 'title' : '' , # 'X' : [] , # X 'Y' : [] , # Y 'xlabel' : 'x label' , # xlabel, 'ylabel' : 'y label' , # ylabel, 'energy_model' : 'UNK' , 'c1_ATOM1_id' : None , 'c1_ATOM2_id' : None , 'c1_ATOM3_id' : None , 'c1_ATOM1_name' : None , 'c1_ATOM2_name' : None , 'c1_ATOM3_name' : None , 'c2_ATOM1_id' : None , 'c2_ATOM2_id' : None , 'c2_ATOM3_id' : None , 'c2_ATOM1_name' : None , 'c2_ATOM2_name' : None , 'c2_ATOM3_name' : None , } REACTION_COORD1 = {'MODE' : mode, 'ATOM1' : int(self.builder.get_object("entry_coord1_ATOM1" ).get_text()), 'ATOM1_name' : self.builder.get_object ("entry_coord1_ATOM1_name").get_text() , 'ATOM2' : int(self.builder.get_object("entry_coord1_ATOM2" ).get_text()), 'ATOM2_name' : self.builder.get_object ("entry_coord1_ATOM2_name").get_text() , 'ATOM3' : int(self.builder.get_object("entry_coord1_ATOM3" ).get_text()), 'ATOM3_name' : self.builder.get_object ("entry_coord1_ATOM3_name").get_text() , """ FileName = self.builder.get_object("filechooserbutton4").get_filename() parameters = ParseProcessLogFile(FileName) #print parameters if parameters[1]['c1_ATOM1_id']: self.builder.get_object("entry_coord1_ATOM1").set_text(parameters[1]['c1_ATOM1_id']) self.builder.get_object ("entry_coord1_ATOM1_name").set_text(parameters[1]['c1_ATOM1_name']) if parameters[1]['c1_ATOM2_id']: self.builder.get_object("entry_coord1_ATOM2").set_text(parameters[1]['c1_ATOM2_id']) self.builder.get_object ("entry_coord1_ATOM2_name").set_text(parameters[1]['c1_ATOM2_name']) if parameters[1]['c1_ATOM3_id']: self.builder.get_object("entry_coord1_ATOM3").set_text(parameters[1]['c1_ATOM3_id']) self.builder.get_object ("entry_coord1_ATOM3_name").set_text(parameters[1]['c1_ATOM3_name']) self.builder.get_object('combobox_reaction_coordiante_type1').set_active(1) else: self.builder.get_object('combobox_reaction_coordiante_type1').set_active(0) if parameters[1]['c2_ATOM1_id']: self.builder.get_object("entry_coord2_ATOM1").set_text(parameters[1]['c2_ATOM1_id']) self.builder.get_object ("entry_coord2_ATOM1_name").set_text(parameters[1]['c2_ATOM1_name']) if parameters[1]['c2_ATOM2_id']: self.builder.get_object("entry_coord2_ATOM2").set_text(parameters[1]['c2_ATOM2_id']) self.builder.get_object ("entry_coord2_ATOM2_name").set_text(parameters[1]['c2_ATOM2_name']) if parameters[1]['c2_ATOM3_id']: self.builder.get_object("entry_coord2_ATOM3").set_text(parameters[1]['c2_ATOM3_id']) self.builder.get_object ("entry_coord2_ATOM3_name").set_text(parameters[1]['c2_ATOM3_name']) self.builder.get_object('combobox_reaction_coordiante_type2').set_active(1) else: self.builder.get_object('combobox_reaction_coordiante_type2').set_active(0) def Button_import_PyMOL_index(self, button): ''' ---------------------------------------------------- REACTION COORDINATE 1 ---------------------------------------------------- ''' if button == self.builder.get_object('import_indexes_from_PyMOL1'): mode = self.builder.get_object('combobox_reaction_coordiante_type1').get_active_text() if mode == "simple-distance": try: name1, atom1_index, name2, atom2_index, distance_a1_a2 = import_ATOM1_ATOM2("pk1", "pk2") distance_a1_a2 = str(distance_a1_a2) #self.builder.get_object('entry_param_DMINIMUM1' ).set_text(distance_a1_a2) self.builder.get_object("entry_coord1_ATOM1" ).set_text(str(atom1_index)) self.builder.get_object("entry_coord1_ATOM1_name").set_text(name1) self.builder.get_object("entry_coord1_ATOM2" ).set_text(str(atom2_index)) self.builder.get_object("entry_coord1_ATOM2_name").set_text(name2) except: cmd.edit_mode() print "pk1, pk2 selection not found" print texto_d1 return if mode == "multiple-distance": try: name1, atom1_index, name2, atom2_index, distance_a1_a2 = import_ATOM1_ATOM2("pk1", "pk2") name2, atom2_index, name3, atom3_index, distance_a2_a3 = import_ATOM1_ATOM2("pk2", "pk3") #print "distance between atom 1 and atom 2: ",distance_a1_a2 #print "distance between atom 2 and atom 3: ",distance_a2_a3 ''' if self.builder.get_object("checkbutton_mass_weight").get_active(): self.sigma_pk1_pk3, self.sigma_pk3_pk1 = compute_sigma_a1_a3 (name1, name3) """ R R \ / A1--A2 . . . . A3 / \ R R ^ ^ ^ | | | pk1-pk2 . . . . pk3 d1 d2 q1 = 1 / (mpk1 + mpk3) = [ mpk1 * r (pk3_pk2) - mpk3 * r (pk1_pk2) ] """ #DMINIMUM = (self.sigma_pk1_pk3 * distance_a1_a2) -(self.sigma_pk3_pk1 * distance_a2_a3*-1) #self.builder.get_object('entry_param_DMINIMUM1').set_text(str(DMINIMUM)) print "\n\nUsing mass weighted restraints" print "Sigma pk1_pk3", self.sigma_pk1_pk3 print "Sigma pk3_pk1", self.sigma_pk3_pk1 #print "Estimated minimum distance", DMINIMUM else: self.sigma_pk1_pk3 = 1.0 self.sigma_pk3_pk1 = -1.0 #DMINIMUM = distance_a1_a2 - distance_a2_a3 #self.builder.get_object('entry_param_DMINIMUM1').set_text(str(DMINIMUM)) print "\n\nSigma pk1_pk3 ", self.sigma_pk1_pk3 print "Sigma pk3_pk1", self.sigma_pk3_pk1 #print "Estimated minimum distance", DMINIMUM ''' except: cmd.edit_mode() print "pk1, pk2 and pk3 selections not found" return print name3, name2, name1 self.builder.get_object("entry_coord1_ATOM1" ).set_text(str(atom1_index)) self.builder.get_object("entry_coord1_ATOM1_name").set_text(name1) self.builder.get_object("entry_coord1_ATOM2" ).set_text(str(atom2_index)) self.builder.get_object("entry_coord1_ATOM2_name").set_text(name2) self.builder.get_object("entry_coord1_ATOM3" ).set_text(str(atom3_index)) self.builder.get_object("entry_coord1_ATOM3_name").set_text(name3) if button == self.builder.get_object('import_indexes_from_PyMOL2'): mode = self.builder.get_object('combobox_reaction_coordiante_type2').get_active_text() if mode == "simple-distance": try: name1, atom1_index, name2, atom2_index, distance_a1_a2 = import_ATOM1_ATOM2("pk1", "pk2") distance_a1_a2 = str(distance_a1_a2) #self.builder.get_object('entry_param_DMINIMUM1' ).set_text(distance_a1_a2) self.builder.get_object("entry_coord2_ATOM1" ).set_text(str(atom1_index)) self.builder.get_object("entry_coord2_ATOM1_name").set_text(name1) self.builder.get_object("entry_coord2_ATOM2" ).set_text(str(atom2_index)) self.builder.get_object("entry_coord2_ATOM2_name").set_text(name2) except: cmd.edit_mode() print "pk1, pk2 selection not found" print texto_d1 return if mode == "multiple-distance": try: name1, atom1_index, name2, atom2_index, distance_a1_a2 = import_ATOM1_ATOM2("pk1", "pk2") name2, atom2_index, name3, atom3_index, distance_a2_a3 = import_ATOM1_ATOM2("pk2", "pk3") #print "distance between atom 1 and atom 2: ",distance_a1_a2 #print "distance between atom 2 and atom 3: ",distance_a2_a3 ''' if self.builder.get_object("checkbutton_mass_weight").get_active(): self.sigma_pk1_pk3, self.sigma_pk3_pk1 = compute_sigma_a1_a3 (name1, name3) """ R R \ / A1--A2 . . . . A3 / \ R R ^ ^ ^ | | | pk1-pk2 . . . . pk3 d1 d2 q1 = 1 / (mpk1 + mpk3) = [ mpk1 * r (pk3_pk2) - mpk3 * r (pk1_pk2) ] """ #DMINIMUM = (self.sigma_pk1_pk3 * distance_a1_a2) -(self.sigma_pk3_pk1 * distance_a2_a3*-1) #self.builder.get_object('entry_param_DMINIMUM1').set_text(str(DMINIMUM)) print "\n\nUsing mass weighted restraints" print "Sigma pk1_pk3", self.sigma_pk1_pk3 print "Sigma pk3_pk1", self.sigma_pk3_pk1 #print "Estimated minimum distance", DMINIMUM else: self.sigma_pk1_pk3 = 1.0 self.sigma_pk3_pk1 = -1.0 #DMINIMUM = distance_a1_a2 - distance_a2_a3 #self.builder.get_object('entry_param_DMINIMUM1').set_text(str(DMINIMUM)) print "\n\nSigma pk1_pk3 ", self.sigma_pk1_pk3 print "Sigma pk3_pk1", self.sigma_pk3_pk1 #print "Estimated minimum distance", DMINIMUM ''' except: cmd.edit_mode() print "pk1, pk2 and pk3 selections not found" #print texto_d2d1 return print name3, name2, name1 self.builder.get_object("entry_coord2_ATOM1" ).set_text(str(atom1_index)) self.builder.get_object("entry_coord2_ATOM1_name").set_text(name1) self.builder.get_object("entry_coord2_ATOM2" ).set_text(str(atom2_index)) self.builder.get_object("entry_coord2_ATOM2_name").set_text(name2) self.builder.get_object("entry_coord2_ATOM3" ).set_text(str(atom3_index)) self.builder.get_object("entry_coord2_ATOM3_name").set_text(name3) def ComboxChange(self, combobox): """ Function doc """ #print combobox, combobox.get_active_text() if combobox == self.builder.get_object('combobox_reaction_coordiante_type1'): mode = self.builder.get_object('combobox_reaction_coordiante_type1').get_active_text() if mode == 'simple-distance': self.builder.get_object('label_coord1_atom3' ).set_sensitive(False) self.builder.get_object('entry_coord1_ATOM3' ).set_sensitive(False) self.builder.get_object('label_coord1_ATOM3_name' ).set_sensitive(False) self.builder.get_object('entry_coord1_ATOM3_name' ).set_sensitive(False) if mode == 'multiple-distance': self.builder.get_object('label_coord1_atom3' ).set_sensitive(True) self.builder.get_object('entry_coord1_ATOM3' ).set_sensitive(True) self.builder.get_object('label_coord1_ATOM3_name' ).set_sensitive(True) self.builder.get_object('entry_coord1_ATOM3_name' ).set_sensitive(True) if combobox == self.builder.get_object('combobox_reaction_coordiante_type2'): mode = self.builder.get_object('combobox_reaction_coordiante_type2').get_active_text() if mode == 'simple-distance': self.builder.get_object('label_coord2_atom3' ).set_sensitive(False) self.builder.get_object('entry_coord2_ATOM3' ).set_sensitive(False) self.builder.get_object('label_coord2_ATOM3_name' ).set_sensitive(False) self.builder.get_object('entry_coord2_ATOM3_name' ).set_sensitive(False) if mode == 'multiple-distance': self.builder.get_object('label_coord2_atom3' ).set_sensitive(True) self.builder.get_object('entry_coord2_ATOM3' ).set_sensitive(True) self.builder.get_object('label_coord2_ATOM3_name' ).set_sensitive(True) self.builder.get_object('entry_coord2_ATOM3_name' ).set_sensitive(True) if combobox == self.builder.get_object('combobox1'): mode = combobox.get_active_text() if mode == 'Scan 1D': self.builder.get_object('vseparator1').hide() self.builder.get_object('vbox4').hide() self.refine_type = "1D" if mode == 'Scan 2D': self.builder.get_object('vseparator1').show() self.builder.get_object('vbox4').show() self.refine_type = '2D' def on_combobox1_changed(self, button): _type = self.builder.get_object('combobox1').get_active_text() """ Function doc """ if _type == 'folder - pDynamo': self.builder.get_object('filechooserbutton2').hide() self.builder.get_object('filechooserbutton1').show() else: self.builder.get_object('filechooserbutton2').show() self.builder.get_object('filechooserbutton1').hide() def geo_opt_change(self, widget): if self.builder.get_object('checkbutton_minimization').get_active(): self.builder.get_object('vbox3').set_sensitive(True) else: self.builder.get_object('vbox3').set_sensitive(False) def __init__(self, EasyHybridSession = None): self.builder = gtk.Builder() if EasyHybridSession != None: self.project = EasyHybridSession.project self.main_builder = EasyHybridSession.builder self.window_control = EasyHybridSession.window_control self.EasyHybridSession = EasyHybridSession self.EasyHybrid_ROOT = EasyHybridSession.EasyHybrid_ROOT self.EasyHybrid_GUI = EasyHybridSession.EasyHybrid_GUI # - - - importing ORCA PATH from EasyHybridConfig file. - - - #-----------------------------------------------------------------------# try: # ORCA = EasyHybridSession.EasyHybridConfig['ORCAPATH']# except: # ORCA = '' # #-----------------------------------------------------------------------# self.builder.add_from_file( os.path.join(self.EasyHybrid_GUI, 'DialogTrajectoryEnergyRefine','TrajectoryEnergyRefine.glade')) self.builder.connect_signals(self) self.dialog = self.builder.get_object('dialog1') self.window_control = WindowControl(self.builder) self.builder.get_object('filechooserbutton2').hide() self.builder.get_object('vseparator1').hide() self.builder.get_object('vbox4').hide() self.builder.get_object('Optimize_Geometry_frame').hide() self.builder.get_object('checkbutton_exclude_MM_atoms').hide() #----------------- Setup ComboBoxes -------------------------# combobox = 'combobox1' # combolist = ["Scan 1D", "Scan 2D"]#, "trj - AMBER", "dcd - CHARMM", 'xtc - GROMACS'] self.window_control.SETUP_COMBOBOXES(combobox, combolist, 0) combobox = 'combobox4' # combolist = ["pkl", "xyz", 'pdb']#, "trj - AMBER", "dcd - CHARMM", 'xtc - GROMACS'] self.window_control.SETUP_COMBOBOXES(combobox, combolist, 0) combobox = 'combobox_optimization_method' # combolist = ['Conjugate Gradient', 'Steepest Descent','LBFGS'] self.window_control.SETUP_COMBOBOXES(combobox, combolist,0) combobox = 'combobox_reaction_coordiante_type1' combolist = ['simple-distance', 'multiple-distance'] self.window_control.SETUP_COMBOBOXES(combobox, combolist,0) combobox = 'combobox_reaction_coordiante_type2' combolist = ['simple-distance', 'multiple-distance'] self.window_control.SETUP_COMBOBOXES(combobox, combolist,0) self.refine_type = '1D' # QC SPIN MULTIPLICITY self.spinbutton = 'spinbutton2' config = [0.0, 1.0, 500.0, 1.0, 0.0, 0.0] self.window_control.SETUP_SPINBUTTON(self.spinbutton, config) #if self.builder.get_object('check_opt_geometry'): self.builder.get_object('vbox3').set_sensitive(False) self.sigma_pk1_pk3 = None self.sigma_pk3_pk1 = None def Mass_weight_check(self, checkbutton): ''' ---------------------------------------------------- REACTION COORDINATE 1 ---------------------------------------------------- ''' if checkbutton == self.builder.get_object('checkbutton_mass_weight'): try: name1, atom1_index, name2, atom2_index, distance_a1_a2 = import_ATOM1_ATOM2("pk1", "pk2") name2, atom2_index, name3, atom3_index, distance_a2_a3 = import_ATOM1_ATOM2("pk2", "pk3") except: print texto_d2d1 return if self.builder.get_object("checkbutton_mass_weight").get_active(): self.sigma_pk1_pk3, self.sigma_pk3_pk1 = compute_sigma_a1_a3 (name1, name3) """ R R \ / A1--A2 . . . . A3 / \ R R ^ ^ ^ | | | pk1-pk2 . . . . pk3 d1 d2 q1 = 1 / (mpk1 + mpk3) = [ mpk1 * r (pk3_pk2) - mpk3 * r (pk1_pk2) ] """ #DMINIMUM = (self.sigma_pk1_pk3 * distance_a1_a2) -(self.sigma_pk3_pk1 * distance_a2_a3*-1) #self.builder.get_object('entry_param_DMINIMUM1').set_text(str(DMINIMUM)) print "\n\nUsing mass weighted restraints" print "Sigma pk1_pk3", self.sigma_pk1_pk3 print "Sigma pk3_pk1", self.sigma_pk3_pk1 #print "Estimated minimum distance", DMINIMUM else: self.sigma_pk1_pk3 = 1.0 self.sigma_pk3_pk1 = -1.0 #DMINIMUM = distance_a1_a2 - distance_a2_a3 #self.builder.get_object('entry_param_DMINIMUM1').set_text(str(DMINIMUM)) print "\n\nSigma pk1_pk3 ", self.sigma_pk1_pk3 print "Sigma pk3_pk1", self.sigma_pk3_pk1
class QuantumChemistrySetupDialog(): """ Class doc """ def Print_AQUI(self, button): """ Function doc """ print 'AQUI!!!!' def SetQCParameters(self, button): """Function doc """ self.project = self.EasyHybridSession.project qc_table = self.project.settings['qc_table'] if self.project.system == None: return "system empty" # Message Dialog #-----------------------------------------------------------------------------------------------------# if qc_table == []: # # - I M P O R T A N T - # # #---------------------------------------------------------# # # # # # Message Dialog - when 2 buttons will be showed # # # 1 -create the warning message # # # 2 -hide the actual dialog - optional # # # 3 -show the message dialog # # # 4 -hide the message dialog # # # 5 -check the returned valor by the message dialog # # # 6 -do something # # # 7 -restore the actual dialog - optional # # #---------------------------------------------------------# # # 1 step # self.builder.get_object( 'MessageDialogQuestion').format_secondary_text( dialog_text['qc_region']) # dialog = self.builder.get_object('MessageDialogQuestion') # # a = dialog.run( ) # possible "a" valors # # 4 step # -8 - yes # dialog.hide( ) # -9 - no # # -4 - close # # -5 - OK # # -6 - Cancel # # # 5 step # if a == -8: # # 6 step # pass # else: # return 0 # # 7 step # #self.load_trj_windows.run() # else: # pass #print 'QC list:' #print qc_table # #-----------------------------------------------------------------------------------------------------# qc_method = self.builder.get_object('combobox1').get_active_text() charge = self.builder.get_object( 'spinbutton_charge').get_value_as_int() multiplicity = self.builder.get_object( 'spinbutton_multiplicity').get_value_as_int() # restricted or unrestrited if self.builder.get_object( 'pDynamo_radiobutton_restrict').get_active(): isSpinRestricted = True else: isSpinRestricted = False #isSpinRestricted = False if qc_method in SMO_Methods: #print '\n\n\n\n aqui OH!!!!' #print SMO_Methods_Dic[qc_method], isSpinRestricted self.project.set_qc_parameters_MNDO(SMO_Methods_Dic[qc_method], charge, multiplicity, isSpinRestricted) #print '\n\n\n\n' if qc_method in DFT_Methods: print DFT_Methods_Dic[qc_method] density_tol = self.builder.get_object( 'DFT_density_tolerance_entry').get_text() Maximum_SCF = self.builder.get_object( 'DFT_Maximum_SCF_entry2').get_text() densityBasis = DFT_Methods_Dic[qc_method][0] functional = DFT_Methods_Dic[qc_method][1] orbitalBasis = DFT_Methods_Dic[qc_method][2] self.project.set_qc_parameters_DFT(qc_method, charge, multiplicity, density_tol, Maximum_SCF, densityBasis, functional, orbitalBasis) if qc_method in ORCA_Method: print ORCA_Method[0] ORCA_method = self.builder.get_object( 'combobox1_ORCA_method').get_active_text() ORCA_SCF = self.builder.get_object( 'combobox2_ORCA_SCF').get_active_text() ORCA_basis = self.builder.get_object( 'combobox3_ORCA_basis').get_active_text() ORCA_POLARIZATION = self.builder.get_object( 'combobox2_ORCA_POLARIZATION').get_active_text() ORCA_DIFFUSE = self.builder.get_object( 'combobox2_ORCA_DIFFUSE').get_active_text() ORCA_PATH = self.builder.get_object( 'ORCA_entry_command').get_text() if self.builder.get_object('ORCA_radiobutton_restrict'): print 'radiobutton_restrict = True' else: print 'radiobutton_restrict = False' PAL = self.builder.get_object( 'SpinButton1_ORCA_pal').get_value_as_int() ORCA_String = self.builder.get_object( 'ORCA_entry_keywords').get_text() self.project.set_qc_parameters_ORCA(charge=charge, multiplicity=multiplicity, qc_table=qc_table, ORCA_String=ORCA_String, PAL=PAL, ORCA_PATH=ORCA_PATH) self.project.settings['charge'] = charge self.project.settings['multiplicity'] = multiplicity def QCcomboxChange(self, combobox): """ Function doc """ mode = self.builder.get_object('combobox1').get_active_text() if mode == 'ab initio using ORCA': self.builder.get_object('06_window_alignment3_ORCA').show() self.builder.get_object('06_window_alignment3_ORCA2').show() self.builder.get_object('alignment3').show() self.builder.get_object('06_window_alignment3_ORCA1').hide() if mode in DFT_Methods: self.builder.get_object('06_window_alignment3_ORCA').hide() self.builder.get_object('alignment3').hide() self.builder.get_object('06_window_alignment3_ORCA2').hide() self.builder.get_object('06_window_alignment3_ORCA1').show() self.builder.get_object( 'DFT_density_tolerance_entry').set_sensitive(True) self.builder.get_object('DFT_Maximum_SCF_entry2').set_sensitive( True) self.builder.get_object('06_window_label78_ORCA1').set_sensitive( True) self.builder.get_object('06_window_label75_ORCA1').set_sensitive( True) if mode in SMO_Methods: self.builder.get_object('06_window_alignment3_ORCA').hide() self.builder.get_object('06_window_alignment3_ORCA2').hide() self.builder.get_object('alignment3').hide() self.builder.get_object('06_window_alignment3_ORCA1').show() self.builder.get_object( 'DFT_density_tolerance_entry').set_sensitive(False) self.builder.get_object('DFT_Maximum_SCF_entry2').set_sensitive( False) self.builder.get_object('06_window_label78_ORCA1').set_sensitive( False) self.builder.get_object('06_window_label75_ORCA1').set_sensitive( False) #print 'AQUI!!!' def save_ORCAPATH(self, widget): """ Function doc """ self.EasyHybridSession.EasyHybridConfig[ 'ORCAPATH'] = self.builder.get_object( 'ORCA_entry_command').get_text() self.EasyHybridSession.Save_EasyHybrid_ConfigFile() def ORCA_check_parameters(self, widget): """ Function doc """ orca_method = self.builder.get_object( 'combobox1_ORCA_method').get_active_text() orca_scf = self.builder.get_object( 'combobox2_ORCA_SCF').get_active_text() orca_basis = self.builder.get_object( 'combobox3_ORCA_basis').get_active_text() orca_pol = self.builder.get_object( 'combobox2_ORCA_POLARIZATION').get_active_text() orca_diff = self.builder.get_object( 'combobox2_ORCA_DIFFUSE').get_active_text() orca_restriciton = None if self.builder.get_object("ORCA_radiobutton_restrict").get_active(): if orca_method in KS_list: orca_restriciton = "RKS" if orca_method in HF_list: orca_restriciton = "RHF" if self.builder.get_object("ORCA_radiobutton_unrestrict").get_active(): if orca_method in KS_list: orca_restriciton = "UKS" if orca_method in HF_list: orca_restriciton = "UHF" orca_method2 = orca_method.split() orca_method2 = orca_method2[0] orca_basis2 = orca_basis.split() orca_basis2 = orca_basis2[0] if orca_diff != "No": orca_basis2 = orca_basis2.split("G") orca_basis2 = orca_basis2[0] + orca_diff + "G" if orca_pol != "No": orca_basis2 = orca_basis2 + orca_pol orca_string = orca_method2 + ' ' + orca_basis2 + ' ' + orca_scf + ' ' + orca_restriciton + ' CHELPG' self.builder.get_object("ORCA_entry_keywords").set_text(orca_string) def __init__(self, EasyHybridSession=None): '''''' self.builder = gtk.Builder() if EasyHybridSession != None: self.project = EasyHybridSession.project self.main_builder = EasyHybridSession.builder self.window_control = EasyHybridSession.window_control self.EasyHybridSession = EasyHybridSession self.EasyHybrid_ROOT = EasyHybridSession.EasyHybrid_ROOT self.EasyHybrid_GUI = EasyHybridSession.EasyHybrid_GUI # - - - importing ORCA PATH from EasyHybridConfig file. - - - #-----------------------------------------------------------------------# try: # ORCA = EasyHybridSession.EasyHybridConfig['ORCAPATH'] # except: # ORCA = '' # #-----------------------------------------------------------------------# self.builder.add_from_file( os.path.join(self.EasyHybrid_GUI, 'DialogQuantumChemistrySetup', 'QuantumChemistrySetupDialog.glade')) self.builder.add_from_file( os.path.join(self.EasyHybrid_GUI, 'MessageDialogQuestion.glade')) self.builder.connect_signals(self) self.dialog = self.builder.get_object('dialog1') #self.builder.get_object('06_window_alignment3_ORCA1').hide() self.builder.get_object('06_window_alignment3_ORCA').hide() self.builder.get_object('06_window_alignment3_ORCA2').hide() if ORCA == None: ORCA = '' self.builder.get_object('ORCA_entry_command').set_text(ORCA) ''' -------------------------------------------------- - - - WindowControl - - - -------------------------------------------------- ''' self.window_control = WindowControl(self.builder) #--------------------- Setup ComboBoxes ------------------------- combobox = 'combobox1' combolist = SMO_Methods + DFT_Methods + ORCA_Method # = ORCA_Method = ['ab initio using ORCA'] self.window_control.SETUP_COMBOBOXES(combobox, combolist, 0) combobox = 'combobox1_ORCA_method' combolist = HF_list + KS_list self.window_control.SETUP_COMBOBOXES(combobox, combolist, 0) combobox = 'combobox2_ORCA_SCF' combolist = SCF_ORCA self.window_control.SETUP_COMBOBOXES(combobox, combolist, 0) combobox = 'combobox3_ORCA_basis' combolist = BASIS_ORCA self.window_control.SETUP_COMBOBOXES(combobox, combolist, 0) combobox = 'combobox2_ORCA_POLARIZATION' combolist = POLARIZATION_ORCA self.window_control.SETUP_COMBOBOXES(combobox, combolist, 0) combobox = 'combobox2_ORCA_DIFFUSE' combolist = DIFFUSE_ORCA self.window_control.SETUP_COMBOBOXES(combobox, combolist, 0) # QC SPIN CHARGE spinbutton = 'spinbutton_charge' config = [0.0, -500.0, 500.0, 1.0, 0.0, 0.0] self.window_control.SETUP_SPINBUTTON(spinbutton, config) # QC SPIN MULTIPLICITY spinbutton = 'spinbutton_multiplicity' config = [0.0, 1.0, 500.0, 1.0, 0.0, 0.0] self.window_control.SETUP_SPINBUTTON(spinbutton, config) # QC SPIN PAL - ORCA ONY spinbutton = 'SpinButton1_ORCA_pal' config = [0.0, 1.0, 500.0, 1.0, 0.0, 0.0] self.window_control.SETUP_SPINBUTTON(spinbutton, config) self.builder.get_object('combobox1_ORCA_method').connect( "changed", self.ORCA_check_parameters) self.builder.get_object('combobox2_ORCA_SCF').connect( "changed", self.ORCA_check_parameters) self.builder.get_object('combobox3_ORCA_basis').connect( "changed", self.ORCA_check_parameters) self.builder.get_object('combobox2_ORCA_POLARIZATION').connect( "changed", self.ORCA_check_parameters) self.builder.get_object('combobox2_ORCA_DIFFUSE').connect( "changed", self.ORCA_check_parameters) self.builder.get_object("ORCA_radiobutton_restrict").connect( "toggled", self.ORCA_check_parameters) self.builder.get_object("ORCA_radiobutton_unrestrict").connect( "toggled", self.ORCA_check_parameters)
class MOPACSEnergyDialog(): def runMOPACEnergy(self, button): """ Function doc """ parameters = {} parameters['methods'] = None parameters['overwrite_files'] = True #AUX = True , parameters['trajectory'] = None parameters['charge'] = 0 #charge = charge , parameters['multiplicity'] = 1 #multiplicity = multiplicity, parameters['mopac_AUX'] = True #AUX = True , parameters['mopac_1SCF'] = True #single_point = True , parameters['mopac_MOZYME'] = True #MOZYME = MOZYME , parameters['mopac_BONDS'] = False #BONDS = False , parameters['mopac_LARGE'] = True #PDBOUT = False , parameters['mopac_PDBOUT'] = True #PDBOUT = False , parameters['mopac_SOLV'] = False #SOLV = SOLV , parameters['mopac_ESP'] = None #ESP = ESP , parameters['mopac_RSOLV'] = None #RSOLV = RSOLV , parameters['mopac_QMMM'] = False #QMMM = QMMM ) parameters['tmpfile_outpath'] = None parameters['logfile_outpath'] = None parameters['log_file_name'] = None parameters['trajectory_type'] = "SCAN" parameters['mopac_path'] = '/opt/mopac/MOPAC2016.exe' #---------------------------------------------------------------------------------------------------------------# # Time and log file # #---------------------------------------------------------------------------------------------------------------# localtime = time.asctime(time.localtime(time.time())) # localtime = localtime.split() # # 0 1 2 3 4 # #[Sun] [Sep] [28] [02:32:04] [2014] # log_file_name = 'MOPAC_Energy_' + localtime[1] + '_' + localtime[ 2] + '_' + localtime[3] + '_' + localtime[4] + '.log' # parameters['log_file_name'] = log_file_name # #---------------------------------------------------------------------------------------------------------------# #-----------------------------------------------------------------------------------------------# # folder and datapath # #-----------------------------------------------------------------------------------------------# data_path = self.EasyHybridSession.project.settings['data_path'] # # #traj = self.builder.get_object('umbrella_entry_TRAJECTORY').get_text() # if not os.path.exists(os.path.join(data_path, 'MOPAC_files')): # os.mkdir(os.path.join(data_path, 'MOPAC_files')) # logfile_outpath = os.path.join(data_path, 'MOPAC_files') # # # if not os.path.exists(os.path.join(logfile_outpath, 'tmp')): # os.mkdir(os.path.join(logfile_outpath, 'tmp')) # tmpfile_outpath = os.path.join(logfile_outpath, 'tmp') # parameters['tmpfile_outpath'] = tmpfile_outpath # parameters['logfile_outpath'] = logfile_outpath # #-----------------------------------------------------------------------------------------------# #-----------------------------------------------------------------------------------------------# # LOG file - optional # #-----------------------------------------------------------------------------------------------# scanLogFile = self.builder.get_object( 'filechooserbutton3').get_filename() # # if scanLogFile == None: # #parameters = False # #summary = False # parameters['original_system_summary'] = False # parameters['original_scan_log'] = False # else: # parameters['original_scan_log'] = ParseProcessLogFile( scanLogFile) # parameters['original_system_summary'] = ParseSummaryLogFile( scanLogFile) # #-----------------------------------------------------------------------------------------------# #-----------------------------------------------------------------------------------------------# if self.builder.get_object('checkbutton4').get_active() == True: parameters['overwrite_files'] = False # else: # parameters['overwrite_files'] = True # #-----------------------------------------------------------------------------------------------# #-----------------------------------------------------------------------------------------------# charge = self.builder.get_object( 'spinbutton_charge').get_value_as_int() # charge = str(charge) # multiplicity = self.builder.get_object( 'spinbutton_multiplicity').get_value_as_int() # multiplicity = 'Singlet' # # parameters['charge'] = charge # parameters['multiplicity'] = multiplicity # #-----------------------------------------------------------------------------------------------# #-----------------------------------------------------------------------------------------------# # mopac path # #-----------------------------------------------------------------------------------------------# parameters['mopac_path'] = self.builder.get_object( 'mopac_path').get_text() # print parameters['mopac_path'] #-----------------------------------------------------------------------------------------------# if self.builder.get_object('checkbutton1').get_active() == True: SOLV = True ESP = self.builder.get_object('entry2').get_text() RSOLV = self.builder.get_object('entry3').get_text() parameters['mopac_SOLV'] = True parameters['mopac_ESP'] = ESP parameters['mopac_RSOLV'] = RSOLV else: parameters['mopac_SOLV'] = False parameters['mopac_ESP'] = None parameters['mopac_RSOLV'] = None if self.builder.get_object('checkbutton2').get_active() == True: MOZYME = True parameters['mopac_MOZYME'] = MOZYME else: MOZYME = False parameters['mopac_MOZYME'] = MOZYME if self.builder.get_object('checkbutton3').get_active() == True: QMMM = True parameters['mopac_QMMM'] = QMMM else: QMMM = False parameters['mopac_QMMM'] = QMMM #----------------------------------------------------------------------------------------------- trajectory_type = self.builder.get_object( 'combobox2').get_active_text() # SCAN # SCAN-2D parameters['trajectory_type'] = trajectory_type #---------------------------------------------------------------------------# system = self.project.system # parameters['system'] = system # trajectory = self.builder.get_object( 'filechooserbutton1').get_filename() # parameters['trajectory'] = trajectory # # methods = self.builder.get_object('entry1').get_text() # methods = methods.split() # parameters['methods'] = methods # system.Summary() # #---------------------------------------------------------------------------# print charge, multiplicity, methods #, trajectory if trajectory_type == 'SCAN': self.run_MOPAC_SCAN_refine(parameters=parameters) if trajectory_type == 'SCAN-2D': self.run_MOPAC_SCAN2D_refine(parameters=parameters) def run_MOPAC_SCAN_refine(self, parameters=None): """ Function doc """ ''' parameters['methods'] parameters['trajectory'] parameters['charge' ] parameters['multiplicity'] parameters['mopac_AUX' ] parameters['mopac_1SCF' ] parameters['mopac_MOZYME'] parameters['mopac_BONDS' ] parameters['mopac_PDBOUT'] parameters['mopac_SOLV' ] parameters['mopac_ESP' ] parameters['mopac_RSOLV' ] parameters['mopac_QMMM' ] parameters['tmpfile_outpath'] parameters['logfile_outpath'] parameters['log_file_name'] ''' logs = {} for method in parameters['methods']: logs[method] = { 'energy': [], 'energyNorm': [], } trajectory = SystemGeometryTrajectory(parameters['trajectory'], parameters['system'], mode="r") n = 0 while trajectory.RestoreOwnerData(): MOPAC_system = pDynamoToMOPAC(system=parameters['system']) keywords = MOPAC_system.DefineMopacKeys( methods=method, charge=parameters['charge'], multiplicity=parameters['multiplicity'], AUX=parameters['mopac_AUX'], single_point=parameters['mopac_1SCF'], MOZYME=parameters['mopac_MOZYME'], BONDS=parameters[ 'mopac_BONDS'], # False PDBOUT=parameters[ 'mopac_PDBOUT'], # False SOLV=parameters['mopac_SOLV'], ESP=parameters['mopac_ESP'], RSOLV=parameters['mopac_RSOLV'], QMMM=parameters['mopac_QMMM']) energy = MOPAC_system.Energy( fileout=os.path.join(parameters['tmpfile_outpath'], 'system' + str(n) + '.mop'), mopac_path=parameters['mopac_path'], overwrite_files=parameters['overwrite_files']) logs[method]['energy'].append(float(energy)) logs[method]['energyNorm'].append( float(energy) - logs[method]['energy'][0]) n += 1 #-------------------------------------------------------# # LOG FILE SUMMARY # #-------------------------------------------------------# header = '----------------------------- EasyHybrid - MOPAC Energy Refine ---------------------------------' #header += "\nMETHOD =%20s " % (parameters['actual_method'] ) header += "\nTOTAL CHARGE =%20s " % (str( parameters['charge'])) header += "\nMULTIPLICITYE =%20s " % (str( parameters['multiplicity'])) if parameters['mopac_MOZYME']: header += "\nMOZYME =%20s " % ("True") else: header += "\nMOZYME =%20s " % ("False") if parameters['mopac_SOLV']: header += "\nSOLV =%20s " % ('True') # header += "\nmopac_ESP =%20s " % (str( parameters['mopac_ESP'])) header += "\nmopac_RSOLV =%20s " % (str( parameters['mopac_RSOLV'])) else: header += "\nSOLV =%20s " % ('False') # header += "\n------------------------------------------------------------------------------------------------" header += "\nTRAJECTORY =%20s " % ( parameters['trajectory']) #header += "\nORIGINAL LOG =%20s " % ("True") header += "\n------------------------------------------------------------------------------------------------" #trajetoryFile = parameters['trajectory'] string = header #string += 'trajectoy: ' + trajetoryFile + '\n' #string += 'keywords: ' + keywords + '\n' string += '\n' for method in logs: string += " %15s " % (method) string += '\n' for i in range(0, n): #len(logs['AM1']['energyNorm'])): for method in logs: string += " %15.5f " % (logs[method]['energyNorm'][i]) string += '\n' print string arq = open( os.path.join(parameters['logfile_outpath'], parameters['log_file_name']), 'w') arq.writelines(string) arq.close() def run_MOPAC_SCAN2D_refine(self, parameters): """ Function doc """ #--------------------------------------------------------------# pass # trajectory_files = os.listdir(parameters['trajectory']) # trajectory_files2 = [] # #--------------------------------------------------------------# for File in trajectory_files: # File2 = File.split('.') # # if File2[-1] == 'pkl': # trajectory_files2.append(File) # #--------------------------------------------------------------# for method in parameters['methods']: i_table = [] j_table = [] n = 1 energy_table = {(0, 0): 0.0} print method #--------------------------------------------------------------------------------------------------------------------------------# for File in trajectory_files2: # File2 = File.split('.') # File2 = File2[0].split('_') # i = int(File2[1]) # j = int(File2[2]) # # system = parameters['system'] # system.coordinates3 = Unpickle( os.path.join(parameters['trajectory'], File)) # MOPAC_system = pDynamoToMOPAC(system=system) # # keywords = MOPAC_system.DefineMopacKeys( methods=method, # charge=parameters['charge'], # multiplicity=parameters['multiplicity'], # AUX=parameters['mopac_AUX'], # single_point=parameters['mopac_1SCF'], # MOZYME=parameters['mopac_MOZYME'], # BONDS=parameters[ 'mopac_BONDS'], # False # PDBOUT=parameters[ 'mopac_PDBOUT'], # False # SOLV=parameters['mopac_SOLV'], # ESP=parameters['mopac_ESP'], # RSOLV=parameters['mopac_RSOLV'], # QMMM=parameters['mopac_QMMM']) # # # energy = MOPAC_system.Energy( fileout=os.path.join( parameters['tmpfile_outpath'], 'system_' + method + '_' + str(i) + '_' + str(j) + '.mop', ), mopac_path=parameters['mopac_path'], overwrite_files=parameters['overwrite_files']) # energy_table[(i, j)] = float(energy) # i_table.append(i) # j_table.append(j) # print n, i, j, energy # n = n + 1 # #--------------------------------------------------------------------------------------------------------------------------------# #---------------------------------------------------------# import numpy as np # i_table = np.array(i_table) j_table = np.array(j_table) i_max = i_table.max() j_max = j_table.max() X = 0 * np.random.rand(i_max + 1, j_max + 1) #---------------------------------------------------------# #print X text = '' for i in range(0, i_max + 1): text = text + "\nMATRIX1 " for j in range(0, j_max + 1): X[i][j] = energy_table[(i, j)] #text = text + "%18.8f " % (X[i][j]) X_norm = X - np.min(X) parameters['energy_matrix'] = X parameters['energy_matrix_norm'] = X_norm parameters['actual_method'] = method parameters['matrix_i'] = i_max parameters['matrix_j'] = j_max self.build_SCAN2D_log(parameters) def build_SCAN2D_log(self, parameters): """ Function doc """ header = '----------------------------- EasyHybrid - MOPAC Energy Refine ---------------------------------' header += "\nMETHOD =%20s " % ( parameters['actual_method']) header += "\nTOTAL CHARGE =%20s " % (str( parameters['charge'])) header += "\nMULTIPLICITYE =%20s " % (str( parameters['multiplicity'])) if parameters['mopac_MOZYME']: header += "\nMOZYME =%20s " % ("True") else: header += "\nMOZYME =%20s " % ("False") if parameters['mopac_SOLV']: header += "\nSOLV =%20s " % ('True') # header += "\nmopac_ESP =%20s " % (str( parameters['mopac_ESP'])) header += "\nmopac_RSOLV =%20s " % (str( parameters['mopac_RSOLV'])) else: header += "\nSOLV =%20s " % ('False') # header += "\n------------------------------------------------------------------------------------------------" header += "\nRCOORD1 size =%20s " % (str( parameters['matrix_i'])) header += "\nRCOORD2 size =%20s " % (str( parameters['matrix_j'])) if parameters['original_scan_log']: header += "\nRCOORD1 =%20s " % ( parameters['original_scan_log'][1]['xlabel']) header += "\nRCOORD2 =%20s " % ( parameters['original_scan_log'][1]['ylabel']) header += "\nTRAJECTORY =%20s " % ( parameters['trajectory']) #header += "\nORIGINAL LOG =%20s " % ("True") header += "\n------------------------------------------------------------------------------------------------" text_matrix1 = '\n\n' for i in range(0, parameters['matrix_i'] + 1): text_matrix1 += "\nMATRIX1 " for j in range(0, parameters['matrix_j'] + 1): text_matrix1 += "%18.8f " % ( parameters['energy_matrix'][i][j]) text_matrix1 += '\n\n' for i in range(0, parameters['matrix_i'] + 1): text_matrix1 += "\nMATRIX2 " for j in range(0, parameters['matrix_j'] + 1): text_matrix1 += "%18.8f " % ( parameters['energy_matrix_norm'][i][j]) #print parameters['original_scan_log'] #print parameters['original_scan_log'][1] #print parameters['original_scan_log'][1]['R1' ] if parameters['original_scan_log']: print parameters['original_scan_log'][1]['R1'] #parameters['original_scan_log'] if parameters['original_scan_log']: R1 = parameters['original_scan_log'][1]['R1'] R2 = parameters['original_scan_log'][1]['R2'] try: text_matrix1 += '\n\n' for i in range(0, parameters['matrix_i'] + 1): text_matrix1 += "\nRCOORD1 " for j in range(0, parameters['matrix_j'] + 1): print i, j text_matrix1 += "%18.8f " % (R1[i][j]) text_matrix1 += '\n\n' for i in range(0, parameters['matrix_i'] + 1): text_matrix1 += "\nRCOORD2 " for j in range(0, parameters['matrix_j'] + 1): text_matrix1 += "%18.8f " % (R2[i][j]) except: pass #--------------------------------------------------------------------------------------------------------------- # Time and log file #--------------------------------------------------------------------------------------------------------------- localtime = time.asctime(time.localtime(time.time())) localtime = localtime.split() # 0 1 2 3 4 #[Sun] [Sep] [28] [02:32:04] [2014] log_file_name = "Scan2D_" + parameters[ 'actual_method'] + '_' + localtime[1] + '_' + localtime[ 2] + '_' + localtime[3] + '_' + localtime[4] + '.log' # #-------------------------------------------------------------------------------------------------------------- arq = open(os.path.join(parameters['trajectory'], log_file_name), 'w') arq.writelines(header) arq.writelines(text_matrix1) arq.close() #--------------------------------------------------------------------------------------------------------------- def on_checkbutton_continue_an_incomplete_scan_toggled(self, button): """ Function doc """ if self.builder.get_object('checkbutton4').get_active(): pass #print 'and here' #self.builder.get_object('entry2').set_sensitive(True) #self.builder.get_object('entry3').set_sensitive(True) else: pass #self.builder.get_object('entry2').set_sensitive(False) #self.builder.get_object('entry3').set_sensitive(False) def on_checkbutton1_toggled(self, button): """ Function doc """ if self.builder.get_object('checkbutton1').get_active(): self.builder.get_object('entry2').set_sensitive(True) self.builder.get_object('entry3').set_sensitive(True) else: self.builder.get_object('entry2').set_sensitive(False) self.builder.get_object('entry3').set_sensitive(False) def on_combobox1_changed(self, button): _type = self.builder.get_object('combobox1').get_active_text() """ Function doc """ if _type == 'folder - pDynamo': self.builder.get_object('filechooserbutton2').hide() self.builder.get_object('filechooserbutton1').show() else: self.builder.get_object('filechooserbutton2').show() self.builder.get_object('filechooserbutton1').hide() def __init__(self, EasyHybridSession=None): self.builder = gtk.Builder() if EasyHybridSession != None: self.project = EasyHybridSession.project self.main_builder = EasyHybridSession.builder self.window_control = EasyHybridSession.window_control self.EasyHybridSession = EasyHybridSession self.EasyHybrid_ROOT = EasyHybridSession.EasyHybrid_ROOT self.EasyHybrid_GUI = EasyHybridSession.EasyHybrid_GUI # - - - importing ORCA PATH from EasyHybridConfig file. - - - #-----------------------------------------------------------------------# try: # ORCA = EasyHybridSession.EasyHybridConfig['ORCAPATH'] # except: # ORCA = '' # #-----------------------------------------------------------------------# self.builder.add_from_file( os.path.join(self.EasyHybrid_GUI, 'MOPACEnergy', 'MOPACEnergy.glade')) self.builder.connect_signals(self) self.dialog = self.builder.get_object('dialog1') self.window_control = WindowControl(self.builder) # QC SPIN CHARGE spinbutton = 'spinbutton_charge' config = [0.0, -500.0, 500.0, 1.0, 0.0, 0.0] self.window_control.SETUP_SPINBUTTON(spinbutton, config) # QC SPIN MULTIPLICITY spinbutton = 'spinbutton_multiplicity' config = [0.0, 1.0, 500.0, 1.0, 0.0, 0.0] self.window_control.SETUP_SPINBUTTON(spinbutton, config) self.builder.get_object('filechooserbutton2').hide() #----------------- Setup ComboBoxes ----------------------------------------------# combobox = 'combobox1' # # combolist = ["folder - pDynamo" ] #, "trj - AMBER", "dcd - CHARMM", 'xtc - GROMACS']# self.window_control.SETUP_COMBOBOXES(combobox, combolist, 0) # combobox = 'combobox2' # # combolist = ["SCAN", 'SCAN-2D' ] #, "trj - AMBER", "dcd - CHARMM", 'xtc - GROMACS']# #---------------------------------------------------------------------------------# self.window_control.SETUP_COMBOBOXES(combobox, combolist, 0) # Hide unfinished widgets self.builder.get_object('checkbutton3').set_sensitive(False)