class TrajectoryDialog(): def on_TrajectoryDialog_button_load_clicked(self, button): """ Function doc """ self.project = self.EasyHybridSession.project first = int( self.builder.get_object('TrajectoryDialog_first').get_text()) last = int(self.builder.get_object('TrajectoryDialog_last').get_text()) stride = int( self.builder.get_object('TrajectoryDialog_stride').get_text()) #traj_name = self.builder.get_object('filechooserbutton1').get_text() #traj_name2 = self.builder.get_object('filechooserbutton2').get_text() new_pymol_object = self.builder.get_object('entry1').get_text() _type = self.builder.get_object('combobox1').get_active_text() """ Function doc """ if _type == 'folder - pDynamo': traj_name = self.builder.get_object( 'filechooserbutton1').get_filename() else: traj_name = self.builder.get_object( 'filechooserbutton2').get_filename() print(first, last, stride, traj_name, new_pymol_object, _type) frames = self.project.load_trajectory_to_system( first, last, stride, traj_name, new_pymol_object, _type) self.EasyHybridSession.builder.get_object( 'trajectory_max_entrey').set_text(str(frames)) self.EasyHybridSession.on_TrajectoryTool_HSCALE_update() 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): """ Class initialiser """ self.EasyHybridSession = EasyHybridSession self.project = EasyHybridSession.project self.main_builder = EasyHybridSession.builder self.builder = gtk.Builder() self.builder.add_from_file( os.path.join(EasyHybrid_GUI, 'DialogLoadTrajectory', 'TrajectoryDialog.glade')) self.builder.connect_signals(self) self.dialog = self.builder.get_object('TrajectoryDialog') ''' -------------------------------------------------- - - - WindowControl - - - -------------------------------------------------- ''' self.window_control = WindowControl(self.builder) 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)
class NonBondDialog(): """ Class doc """ def on_button1_apply_NBModel_clicked(self, button): """ Function doc """ self.project = self.EasyHybridSession.project nbModel = self.builder.get_object( 'combobox1_nb_types').get_active_text() innercutoff = float(self.builder.get_object('entry1').get_text()) outercutoff = float(self.builder.get_object('entry2').get_text()) listcutoff = float(self.builder.get_object('entry3').get_text()) kappa = float(self.builder.get_object('entry4').get_text()) if self.project == None: print(nbModel, innercutoff, outercutoff, listcutoff, kappa) else: self.project.ABFS_options = { "innerCutoff": innercutoff, "outerCutoff": outercutoff, "listCutoff": listcutoff } self.project.settings['nbModel_type'] = nbModel self.project.set_nbModel_to_system() def QCcomboxChange(self, combobox): """ Function doc """ mode = self.builder.get_object('combobox1_nb_types').get_active_text() if mode == 'NBModelFull': self.builder.get_object('entry1').set_sensitive(False) self.builder.get_object('entry2').set_sensitive(False) self.builder.get_object('entry3').set_sensitive(False) self.builder.get_object('entry4').set_sensitive(False) if mode == 'NBModelABFS': self.builder.get_object('entry1').set_sensitive(True) self.builder.get_object('entry2').set_sensitive(True) self.builder.get_object('entry3').set_sensitive(True) self.builder.get_object('entry4').set_sensitive(True) if mode == 'NBModelGABFS': self.builder.get_object('entry1').set_sensitive(True) self.builder.get_object('entry2').set_sensitive(True) self.builder.get_object('entry3').set_sensitive(True) self.builder.get_object('entry4').set_sensitive(True) if mode == 'NBModelSSBP': self.builder.get_object('entry1').set_sensitive(False) self.builder.get_object('entry2').set_sensitive(False) self.builder.get_object('entry3').set_sensitive(False) self.builder.get_object('entry4').set_sensitive(False) if mode == 'No NB model': self.builder.get_object('entry1').set_sensitive(False) self.builder.get_object('entry2').set_sensitive(False) self.builder.get_object('entry3').set_sensitive(False) self.builder.get_object('entry4').set_sensitive(False) def __init__(self, EasyHybridSession=None): """ Class initialiser """ self.builder = gtk.Builder() if EasyHybridSession != None: self.project = EasyHybridSession.project self.main_builder = EasyHybridSession.builder self.EasyHybridSession = EasyHybridSession self.window_control = EasyHybridSession.window_control #self.project = project #self.window_control = window_control #self.builder = gtk.Builder() #self.main_builder = main_builder self.builder.add_from_file( os.path.join(EasyHybrid_GUI, 'DialogNonBond', 'NonBondDialog.glade')) self.builder.connect_signals(self) self.dialog = self.builder.get_object('dialog1') ''' -------------------------------------------------- - - - WindowControl - - - -------------------------------------------------- ''' self.window_control = WindowControl(self.builder) #----------------- Setup ComboBoxes -------------------------# combobox = 'combobox1_nb_types' # combolist = nbList self.window_control.SETUP_COMBOBOXES(combobox, combolist, 0)
class ScanWindow2D(): """ Class doc """ def on_ScanWindow_destroy(self, widget): """ Function doc """ self.Visible = False def RunScan(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() # # print " " + ATOM1_name + " ->- " + ATOM2_name + " -->-- " + ATOM3_name + " " # print " pk1 --- pk2 ---- pk3 \n" # print "DMINIMUM : ", DMINIMUM # print "\n\n" # print # #sigma_pk1_pk3 = self.coord1_sigma_pk1_pk3 # #sigma_pk3_pk1 = self.coord1_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, # 'sigma_pk1_pk3': self.coord1_sigma_pk1_pk3, # 'sigma_pk3_pk1': self.coord1_sigma_pk3_pk1 } # #-------------------------------------------------------------------------------------------------# #---------------------------------------------------# # # # Reaction COORD-2 # # # #---------------------------------------------------# #---------------------------------- importing parameters COORD-2 ---------------------------# DINCREMENT = float( self.builder.get_object('entry_STEP_size2').get_text()) # NWINDOWS = int( self.builder.get_object('entry_NWINDOWS2').get_text()) # DMINIMUM = float( self.builder.get_object('entry_param_DMINIMUM2').get_text()) # FORCECONSTANT = float( self.builder.get_object('entry_FORCE2').get_text()) # #-------------------------------------------------------------------------------------------# mode = self.builder.get_object( 'combobox_SCAN_reaction_coordiante2_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_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() # # REACTION_COORD2 = { '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_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() # # 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_COORD2 = { '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, # 'sigma_pk1_pk3': self.coord2_sigma_pk1_pk3, # 'sigma_pk3_pk1': self.coord2_sigma_pk3_pk1, } # #-------------------------------------------------------------------------------------------------# #-----------------------------------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( 'SCAN_entry_trajectory_name').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) # #-----------------------------------------------------------------------------------------------# PARAMETERS = { 'max_int': max_int, 'log_freq': log_freq, 'rms_grad': rms_grad, 'mim_method': mim_method, 'outpath': outpath } pprint(REACTION_COORD1) pprint(REACTION_COORD2) pprint(PARAMETERS) X, X_norm, logFile = Scan2D(outpath, REACTION_COORD1, REACTION_COORD2, PARAMETERS, self.EasyHybridSession.project) self.EasyHybridSession.project.From_PDYNAMO_to_EasyHybrid(type_='scn', log=logFile) self.Visible = False self.window.destroy() #return x, y, def Button_import_PyMOL_index(self, button): ''' ----------------------------------------------------self.coord1_sigma_pk1_pk3 REACTION COORDINATE 1 self.coord1_sigma_pk3_pk1 ---------------------------------------------------- ''' 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.coord1_sigma_pk1_pk3, self.coord1_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.coord1_sigma_pk1_pk3 * distance_a1_a2 ) - (self.coord1_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.coord1_sigma_pk1_pk3 print "Sigma pk3_pk1", self.coord1_sigma_pk3_pk1 print "Estimated minimum distance", DMINIMUM else: self.coord1_sigma_pk1_pk3 = 1.0 self.coord1_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.coord1_sigma_pk1_pk3 print "Sigma pk3_pk1", self.coord1_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.coord2_sigma_pk1_pk3, self.coord2_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.coord2_sigma_pk1_pk3 * distance_a1_a2 ) - (self.coord2_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.coord2_sigma_pk1_pk3 print "Sigma pk3_pk1", self.coord2_sigma_pk3_pk1 print "Estimated minimum distance", DMINIMUM else: self.coord2_sigma_pk1_pk3 = 1.0 self.coord2_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.coord2_sigma_pk1_pk3 print "Sigma pk3_pk1", self.coord2_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 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.coord1_sigma_pk1_pk3, self.coord1_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.coord1_sigma_pk1_pk3 * distance_a1_a2) - ( self.coord1_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.coord1_sigma_pk1_pk3 print "Sigma pk3_pk1", self.coord1_sigma_pk3_pk1 print "Estimated minimum distance", DMINIMUM else: self.coord1_sigma_pk1_pk3 = 1.0 self.coord1_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.coord1_sigma_pk1_pk3 print "Sigma pk3_pk1", selfcoord1_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.coord2_sigma_pk1_pk3, self.coord2_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.coord2_sigma_pk1_pk3 * distance_a1_a2) - ( self.coord2_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.coord2_sigma_pk1_pk3 print "Sigma pk3_pk1", self.coord2_sigma_pk3_pk1 print "Estimated minimum distance", DMINIMUM else: self.coord2_sigma_pk1_pk3 = 1.0 self.coord2_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.coord2_sigma_pk1_pk3 print "Sigma pk3_pk1", self.coord2_sigma_pk3_pk1 print "Estimated minimum distance", DMINIMUM def checkbutton_MassWeight(self, checkbutton): """ Function doc """ print 'checkbutton_MassWeight' self.Mass_weight_check(checkbutton) def Scan2DComboxChange(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) def OpenWindow(self, text): """ Function doc """ if self.Visible == False: self.builder = gtk.Builder() self.builder.add_from_file( os.path.join(self.EasyHybrid_GUI, 'WindowScan2D', 'ScanWindow2D.glade')) self.builder.connect_signals(self) self.window = self.builder.get_object('ScanWindow') self.coord2_sigma_pk1_pk3 = None self.coord2_sigma_pk3_pk1 = None self.coord1_sigma_pk1_pk3 = None self.coord1_sigma_pk3_pk1 = None self.builder.get_object("SCAN_entry_trajectory_name").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 = 'combobox_SCAN_reaction_coordiante2_type' combolist = ['simple-distance', 'multiple-distance'] 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) 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 """ self.Visible = False if EasyHybridSession != None: self.project = EasyHybridSession.project self.main_builder = EasyHybridSession.builder self.EasyHybridSession = EasyHybridSession self.window_control = EasyHybridSession.window_control self.EasyHybrid_ROOT = EasyHybridSession.EasyHybrid_ROOT self.EasyHybrid_GUI = EasyHybridSession.EasyHybrid_GUI else: self.EasyHybrid_ROOT = '' self.EasyHybrid_GUI = '' self.project = None #self.window_control = window_control #self.builder = gtk.Builder() #self.main_builder = main_builder #self.builder.add_from_file( # os.path.join(EasyHybrid_GUI, 'ScanWindow.glade')) # #self.builder.connect_signals(self) #self.window = self.builder.get_object('ScanWindow') # #self.sigma_pk1_pk3 = None #self.sigma_pk3_pk1 = None '''
class NewProjectDialog(): """ Class doc """ def on_new_project_entry_changed (self, entry): """ Function doc """ text = self.builder.get_object("new_project_entry").get_text() WorkSpace = self.EasyHybridSession.EasyHybridConfig['WorkSpace'] try: path = os.path.join(WorkSpace, text) self.builder.get_object("ProjectDirectory").set_text(path) except: pass def on_combobox1_changed(self, combobox): """ Function doc """ fftype = self.builder.get_object("combobox1").get_active_text() if fftype == "AMBER": #print fftype self.builder.get_object("amber_prmtop_label"). show() self.builder.get_object("amber_prmtop_chooser").show() self.builder.get_object("charmm_topologies_label").hide() self.builder.get_object("charmm_topologies_chooser").hide() self.builder.get_object("opls_prmtop_label").hide() self.builder.get_object("opls_prmtop_chooser").hide() if fftype == "CHARMM": #print fftype self.builder.get_object("opls_prmtop_label").hide() self.builder.get_object("opls_prmtop_chooser").hide() self.builder.get_object("amber_prmtop_label"). show() self.builder.get_object("amber_prmtop_chooser").show() self.builder.get_object("charmm_topologies_label").show() self.builder.get_object("charmm_topologies_chooser").show() if fftype == "GROMACS": #print fftype self.builder.get_object("amber_prmtop_label"). show() self.builder.get_object("amber_prmtop_chooser").show() self.builder.get_object("charmm_topologies_label").hide() self.builder.get_object("charmm_topologies_chooser").hide() self.builder.get_object("opls_prmtop_label").hide() self.builder.get_object("opls_prmtop_chooser").hide() if fftype == "OPLS": #print fftype self.builder.get_object("amber_prmtop_label"). hide() self.builder.get_object("amber_prmtop_chooser").hide() self.builder.get_object("opls_prmtop_label").show() self.builder.get_object("opls_prmtop_chooser").show() self.builder.get_object("charmm_topologies_label"). hide() self.builder.get_object("charmm_topologies_chooser").hide() if fftype == "pDynamo files(*.pkl,*.yaml)": self.builder.get_object("opls_prmtop_label").hide() self.builder.get_object("opls_prmtop_chooser").hide() self.builder.get_object("amber_prmtop_label"). hide() self.builder.get_object("amber_prmtop_chooser").hide() self.builder.get_object("charmm_topologies_label"). hide() self.builder.get_object("charmm_topologies_chooser").hide() if fftype == "Other(*.pdb,*.xyz,*.mol2...)": self.builder.get_object("opls_prmtop_label").hide() self.builder.get_object("opls_prmtop_chooser").hide() self.builder.get_object("amber_prmtop_label"). hide() self.builder.get_object("amber_prmtop_chooser").hide() self.builder.get_object("charmm_topologies_label"). hide() self.builder.get_object("charmm_topologies_chooser").hide() # "old import_molmec_system(*args): " def on_button1_clicked_create_new_project(self, button): BufferText = self.builder.get_object('textview1').get_buffer() # BufferText = BufferText.get_text(*BufferText.get_bounds(), include_hidden_chars=False) #print BufferText #print '\n\n\n' + BufferText + '\n\n\n' + 'teste aqui' project = self.project name = self.builder.get_object("new_project_entry").get_text() ProjectDirectory = self.builder.get_object("ProjectDirectory").get_text() ProjectDirectory = ProjectDirectory.split('/') path = '/' for i in ProjectDirectory: path = os.path.join(path, i) if not os.path.exists (path): os.mkdir (path) #data_path = self.builder.get_object("filechooserbutton1").get_filename() data_path = self.builder.get_object("ProjectDirectory").get_text() FileType = self.builder.get_object("combobox1").get_active_text() # combo box combox_model filename = os.path.join(data_path,name) filesin = {} try: import shutil except: print "shutil module is no available" if FileType == "AMBER": filesin['amber_params'] = self.builder.get_object( "amber_prmtop_chooser").get_filename() filesin['amber_coords'] = self.builder.get_object( "amber_inpcrd_chooser").get_filename() elif FileType == "CHARMM": filesin['charmm_params'] = self.builder.get_object( "amber_prmtop_chooser").get_filename() filesin['charmm_topologies'] = self.builder.get_object( "charmm_topologies_chooser").get_filename() filesin['charmm_coords'] = self.builder.get_object( "amber_inpcrd_chooser").get_filename() elif FileType == "GROMACS": filesin['gromacs_params'] = self.builder.get_object( "amber_prmtop_chooser").get_filename() # filesin['gromacs_coords'] = self.builder.get_object( "amber_inpcrd_chooser").get_filename() elif FileType == "OPLS": filesin['opls_params'] = self.builder.get_object( "opls_prmtop_chooser").get_filename() filesin['opls_coords'] = self.builder.get_object( "amber_inpcrd_chooser").get_filename() elif FileType == "pDynamo files(*.pkl,*.yaml)": filesin['pDynamoFile'] = self.builder.get_object( "amber_inpcrd_chooser").get_filename() # elif FileType == "Other(*.pdb,*.xyz,*.mol2...)": filesin['coordinates'] = self.builder.get_object( "amber_inpcrd_chooser").get_filename() # self.project = self.EasyHybridSession.project #self.project.DeleteActualProject() self.project.Create_New_Project( name, data_path, FileType, filesin, BufferText) self.project.Save_Project_To_File (filename = filename, type_ = 'pkl') # self.project.From_PDYNAMO_to_EasyHybrid() self.project.system.Summary() self.project.settings['add_info'] = BufferText # def __init__(self, EasyHybridSession = None): """ Class initialiser """ self.builder = gtk.Builder() if EasyHybridSession != None: self.project = EasyHybridSession.project self.main_builder = EasyHybridSession.builder self.EasyHybridSession = EasyHybridSession self.builder.add_from_file( os.path.join(EasyHybrid_GUI,'DialogNewProject', 'NewProjectDialog.glade')) self.builder.connect_signals(self) self.dialog = self.builder.get_object('dialog1') self.dualLog = None #self.scrath = os.environ.get('PDYNAMO_SCRATCH') # #self.builder.get_object('ProjectDirectory').set_text(self.scrath ) ''' -------------------------------------------------- - - - WindowControl - - - -------------------------------------------------- ''' self.window_control = WindowControl(self.builder) #----------------- Setup ComboBoxes -------------------------# combobox = 'combobox1' # combolist = ["AMBER", # "CHARMM", # # #"GROMACS", # "OPLS", # "pDynamo files(*.pkl,*.yaml)", "Other(*.pdb,*.xyz,*.mol2...)"] # # self.window_control.SETUP_COMBOBOXES(combobox, combolist, 0) #------------------------------------------------------------# localtime = time.asctime(time.localtime(time.time())) print "Local current time :", localtime localtime = localtime.split() # 0 1 2 3 4 #[Sun] [Sep] [28] [02:32:04] [2014] text = 'NewProject_' + localtime[1] + \ '_' + localtime[2] + '_' + localtime[4] self.builder.get_object("new_project_entry").set_text(text)
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 PreferencesDialog(): """ Class doc """ def SavePreferences(self, button): """ Function doc """ atom_color = self.builder.get_object('combobox1').get_active_text() fixed_atom_color = self.builder.get_object( 'combobox2').get_active_text() bq_color = self.builder.get_object('combobox3').get_active_text() QC_representations = { 'lines': self.builder.get_object('QC_lines').get_active(), 'sticks': self.builder.get_object('QC_sticks').get_active(), 'spheres': self.builder.get_object('QC_spheres').get_active(), 'dots': self.builder.get_object('QC_dots').get_active(), } FIX_representations = { 'lines': self.builder.get_object('FIX_lines').get_active(), 'sticks': self.builder.get_object('FIX_sticks').get_active(), 'spheres': self.builder.get_object('FIX_spheres').get_active(), 'dots': self.builder.get_object('FIX_dots').get_active(), } #FIX_representations = {'lines' : self.builder.get_object('FIX_lines').get_active() # } # self.EasyHybridSession.EasyHybridConfig['bg_color'] = bq_color self.EasyHybridSession.EasyHybridConfig['fixed'] = fixed_atom_color self.EasyHybridSession.EasyHybridConfig['color'] = atom_color self.EasyHybridSession.EasyHybridConfig['QC'] = QC_representations self.EasyHybridSession.EasyHybridConfig['FIX'] = FIX_representations self.EasyHybridSession.Save_EasyHybrid_ConfigFile() self.EasyHybridSession.project.SystemCheck(status=True, PyMOL=True, _color=True, _cell=True, treeview_selections=True, ORCA_backup=False) def __init__(self, EasyHybridSession=None): """ Class initialiser """ self.builder = gtk.Builder() if EasyHybridSession != None: self.project = EasyHybridSession.project self.main_builder = EasyHybridSession.builder self.EasyHybridSession = EasyHybridSession self.window_control = EasyHybridSession.window_control self.builder.add_from_file( os.path.join(EasyHybrid_GUI, 'DialogPreferences', 'Preferences.glade')) self.builder.connect_signals(self) self.dialog = self.builder.get_object('dialog_preferences') ''' -------------------------------------------------- - - - WindowControl - - - -------------------------------------------------- ''' self.window_control = WindowControl(self.builder) #colors = [ ] #colors = [ #'actinium','darksalmon','iodine','palecyan','sodium', #'aluminum','dash','iridium','palegreen','splitpea', #'americium','deepblue','iron','paleyellow','strontium', #'antimony','deepolive','krypton','palladium','sulfur', #'aquamarine','deeppurple','lanthanum','phosphorus','tantalum', #'argon','deepsalmon','lawrencium','pink','teal', #'arsenic','deepsalmon','lead','platinum','technetium', #'astatine','deepteal','lightblue','plutonium','tellurium', #'atomic','default','lightmagenta','polonium','terbium', #'auto','density','lightorange','potassium','thallium', #'barium','deuterium','lightpink','praseodymium','thorium', #'berkelium','dirtyviolet','lightteal','promethium','thulium', #'beryllium','dubnium','lime','protactinium','tin', #'bismuth','dysprosium','limegreen','pseudoatom','titanium', #'black','einsteinium','limon','purple','tungsten', #'blue','erbium','lithium','purpleblue','tv_blue', #'bluewhite','europium','lonepair','radium','tv_green', #'bohrium','fermium','lutetium','radon','tv_orange', #'boron','firebrick','magenta','raspberry','tv_red', #'brightorange','fluorine','magnesium','red','tv_yellow', #'bromine','forest','manganese','rhenium','uranium', #'brown','francium','marine','rhodium','vanadium', #'cadmium','gadolinium','meitnerium','rubidium','violet', #'calcium','gallium','mendelevium','ruby','violetpurple', #'californium','germanium','mercury','ruthenium','warmpink', #'carbon','gold','molybdenum','rutherfordium','wheat', #'cerium','gray','neodymium','salmon','white', #'cesium','green','neon','samarium','xenon', #'chartreuse','greencyan','neptunium','sand','yellow', #'chlorine','grey','nickel','scandium','yelloworange', #'chocolate','hafnium','niobium','seaborgium','ytterbium', #'chromium','hassium','nitrogen','selenium','yttrium', #'cobalt','helium','nobelium','silicon','zinc', #'copper','holmium','olive','silver','zirconium', #'curium','hotpink','orange','skyblue' #'current','hydrogen','osmium','slate' #'cyan','indium','oxygen','smudg' #] colors = [ 'darksalmon', 'palecyan', 'palegreen', 'deepblue', 'deeppurple', 'deepsalmon', 'deepsalmon', 'lightblue', 'lightorange', 'lightpink', 'dirtyviolet', 'lime', 'tin', 'limegreen', 'black', 'limon', 'purple', 'blue', 'purpleblue', 'tv_blue', 'bluewhite', 'tv_green', 'radon', 'tv_orange', 'firebrick', 'magenta', 'raspberry', 'tv_red', 'brightorange', 'red', 'tv_yellow', 'forest', 'brown', 'marine', 'violet', 'ruby', 'violetpurple', 'warmpink', 'wheat', 'gray', 'salmon', 'white', 'green', 'greencyan', 'sand', 'yellow', 'yelloworange', 'chocolate', 'olive', 'hotpink', 'orange', 'skyblue', 'slate', 'cyan', 'smudg' ] fixed_colors = [ 'black', 'grey10', 'grey20', 'grey30', 'grey40', 'grey50', 'grey60', 'grey70', 'grey80', 'grey90', 'white' ] bg_color = ['white', 'grey', 'black'] #----------------- Setup ComboBoxes -------------------------# combobox = 'combobox1' # self.window_control.SETUP_COMBOBOXES(combobox, colors, 0) #------------------------------------------------------------# #----------------- Setup ComboBoxes -------------------------# combobox = 'combobox2' # self.window_control.SETUP_COMBOBOXES(combobox, fixed_colors, 0) #------------------------------------------------------------# #----------------- Setup ComboBoxes -------------------------# combobox = 'combobox3' # self.window_control.SETUP_COMBOBOXES(combobox, bg_color, 0)
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)