Example #1
0
    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)
Example #2
0
    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, 'DialogMinimization',
                         'MinimizationDialog.glade'))
        self.builder.connect_signals(self)
        self.dialog = self.builder.get_object('02_MinimizationWindow')
        '''
		--------------------------------------------------
		-                                                -
		-	              WindowControl                  -
		-                                                -
		--------------------------------------------------
		'''
        self.window_control = WindowControl(self.builder)

        #----------------- Setup ComboBoxes -------------------------#
        combobox = '02_window_combobox_minimization_method'  #
        combolist = ["Conjugate Gradient", "Steepest Descent", "LBFGS"]
        self.window_control.SETUP_COMBOBOXES(combobox, combolist, 0)
    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 __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, 'DialogMolecularDynamics',
                         'MolecularDynamicsDialog.glade'))
        self.builder.connect_signals(self)
        self.dialog = self.builder.get_object('MMDialog_molecular_dynamics')
        '''
		--------------------------------------------------
		-                                                -
		-	              WindowControl                  -
		-                                                -
		--------------------------------------------------
		'''
        self.window_control = WindowControl(self.builder)

        #----------------- Setup ComboBoxes -------------------------#
        combobox = 'MMDialog_combobox_molecular_dynamics_method'  #
        combolist = [
            "Velocity Verlet Dynamics", "Leap Frog Dynamics",
            "Langevin Dynamics"
        ]
        self.window_control.SETUP_COMBOBOXES(combobox, combolist, 0)
Example #5
0
def main():
    # encrypt = EncryptData()
    # encrypt.start()
    window = WindowControl()
    root = window.createWindow(250, 200)

    root.mainloop()
Example #6
0
    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)
Example #7
0
    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)
Example #8
0
    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)
Example #9
0
    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.EasyHybrid_GUI = EasyHybridSession.EasyHybrid_GUI

        else:
            self.EasyHybrid_ROOT = ''
            self.EasyHybrid_GUI = ''

        self.builder.add_from_file(
            os.path.join(self.EasyHybrid_GUI, 'DialogChargeRescale',
                         'ExportCoordinates.glade'))
        self.builder.connect_signals(self)
        self.dialog = self.builder.get_object('ExportCoordinates')

        combolist = ["xyz", "pdb", "pkl",
                     "yaml"]  #,"mol","cif","psf","crd","mol2"]
        combobox = 'combobox_file_type'
        '''
		--------------------------------------------------
		-                                                -
		-	              WindowControl                  -
		-                                                -
		--------------------------------------------------
		'''

        #cbox = self.builder.get_object(combobox)  # remover isso depois ----> combobox_MM_model
        #store = gtk.ListStore(gobject.TYPE_STRING)# remover isso depois
        #cbox.set_model(store)                     # remover isso depois
        #                                          # remover isso depois
        #for i in combolist:                       # remover isso depois
        #	cbox.append_text(i)                   # remover isso depois
        #                                          # remover isso depois
        #cell = gtk.CellRendererText()             # remover isso depois
        #cbox.pack_start(cell, True)               # remover isso depois
        #cbox.add_attribute(cell, 'text', 0)       # remover isso depois
        #cbox.set_active(0)                        # remover isso depois

        self.window_control = WindowControl(self.builder)

        #----------------- Setup ComboBoxes -------------------------#
        #combolist = ["xyz","pdb","pkl","yaml","mol","cif","psf","crd","mol2"]
        #combobox = 'combobox_file_type'
        self.window_control.SETUP_COMBOBOXES(combobox, combolist, 0)
Example #10
0
    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()
Example #11
0
    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()
Example #12
0
    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)
    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
Example #14
0
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 MolecularDynamicsWindow():
    """ Class doc """
    def on_MMDialog_button1_RUN_DYNAMICS_clicked(self, button):
        self.project = self.EasyHybridSession.project

        trajectory_name = self.builder.get_object(
            "MMDialog_entry_trajectory_name").get_text()
        nsteps = int(self.builder.get_object('MMDialog_n_steps_dy').get_text())
        log_freq = int(
            self.builder.get_object("MMDialog_entry_log_freq_dy").get_text())
        trajectory_freq = int(
            self.builder.get_object("MMDialog_entry_traj_freq_dy").get_text())
        timestep = float(
            self.builder.get_object('MMDialog_timestep').get_text())
        method = self.builder.get_object(
            "MMDialog_combobox_molecular_dynamics_method").get_active_text()
        seed = int(
            self.builder.get_object('MMDialog_entry_seed_dy').get_text())
        temperature = int(
            self.builder.get_object('MMDialog_temperature').get_text())
        temp_scale_freq = int(
            self.builder.get_object('MMDialog_temp_scale_freq').get_text())
        coll_freq = int(
            self.builder.get_object('MMDialog_collision_frequency').get_text())
        AmberTrajectoryFlag = self.builder.get_object(
            "MMDialog_AMBER_trajectory_checkbox1").get_active()
        TrajectoryFlag = self.builder.get_object(
            "MMDialog_Output_trajectory_checkbox1").get_active()

        parameters = {
            'trajectory_name': trajectory_name,
            'nsteps': nsteps,
            'log_freq': log_freq,
            'trajectory_freq': trajectory_freq,
            'timestep': timestep,
            'method': method,
            'seed': seed,
            'temperature': temperature,
            'temp_scale_freq': temp_scale_freq,
            'coll_freq': coll_freq,
            'TrajectoryFlag': TrajectoryFlag,
            'AmberTrajectoryFlag': AmberTrajectoryFlag
        }

        #print parameters
        self.project.MolecularDynamics(parameters)
        #RunMolecularDynamics(parameters, self.project)

    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, 'DialogMolecularDynamics',
                         'MolecularDynamicsDialog.glade'))
        self.builder.connect_signals(self)
        self.dialog = self.builder.get_object('MMDialog_molecular_dynamics')
        '''
		--------------------------------------------------
		-                                                -
		-	              WindowControl                  -
		-                                                -
		--------------------------------------------------
		'''
        self.window_control = WindowControl(self.builder)

        #----------------- Setup ComboBoxes -------------------------#
        combobox = 'MMDialog_combobox_molecular_dynamics_method'  #
        combolist = [
            "Velocity Verlet Dynamics", "Leap Frog Dynamics",
            "Langevin Dynamics"
        ]
        self.window_control.SETUP_COMBOBOXES(combobox, combolist, 0)
Example #16
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 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
Example #18
0
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 = ''
    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 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)
Example #21
0
class MinimizationWindow():
    """ Class doc """
    def on_02_window_button_RUN_MINIMIZATION1_clicked(self, button):
        """ Function doc """
        self.project = self.EasyHybridSession.project

        trajectory = self.builder.get_object(
            "02_window_entry_traj_name").get_text()
        maximumIterations = int(
            self.builder.get_object("02_window_entry_max_int").get_text())
        logFrequency = int(
            self.builder.get_object("02_window_entry_log_freq").get_text())
        trajectory_freq = int(
            self.builder.get_object("02_window_entry_traj_freq").get_text())
        rmsGradientTolerance = float(
            self.builder.get_object("02_window_entry_rmsGRAD").get_text())
        method = self.builder.get_object(
            "02_window_combobox_minimization_method").get_active_text()
        AmberTrajectoryFlag = self.builder.get_object(
            "02_window_AMBER_trajectory_checkbox").get_active()
        TrajectoryFlag = self.builder.get_object(
            "02_window_Output_trajectory_checkbox").get_active()

        parameters = {
            'trajectory': trajectory,
            'maximumIterations': maximumIterations,
            'logFrequency': logFrequency,
            'trajectory_freq': trajectory_freq,
            'rmsGradientTolerance': rmsGradientTolerance,
            'method': method,
            'AmberTrajectoryFlag': AmberTrajectoryFlag,
            'TrajectoryFlag': TrajectoryFlag
        }

        if self.project.system is not None:
            #------------------------------------------------------------------#
            #                     Geometry optimization                         #
            #                                                                  #
            #    requires: method = 'Conjugate Gradient', parameters = None    #
            # -----------------------------------------------------------------#
            self.project.Minimization(method, parameters)
            ''' 
			toda esta parte abaixo ficou obsoleta devido ao novo metodo no pDynamoProject -  
			 
			 
								  From_PDYNAMO_to_EasyHybrid
			 
				esse metodo eh responsavel por:
					contar o passo
					exportar o frame atual para o pymol
					exportar as informacoes relevantes para as treeviews
					e adicionar informacoes ao history 
				 
			'''

    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, 'DialogMinimization',
                         'MinimizationDialog.glade'))
        self.builder.connect_signals(self)
        self.dialog = self.builder.get_object('02_MinimizationWindow')
        '''
		--------------------------------------------------
		-                                                -
		-	              WindowControl                  -
		-                                                -
		--------------------------------------------------
		'''
        self.window_control = WindowControl(self.builder)

        #----------------- Setup ComboBoxes -------------------------#
        combobox = '02_window_combobox_minimization_method'  #
        combolist = ["Conjugate Gradient", "Steepest Descent", "LBFGS"]
        self.window_control.SETUP_COMBOBOXES(combobox, combolist, 0)
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
Example #23
0
class ExportCoordinatesDialog():
    """ Class doc """
    def on_button_SAVE_FRAME_clicked(self, button):
        """ Function doc """

        filename = self.builder.get_object("entry_file_name").get_text()
        folder = self.builder.get_object("directory_save_file").get_filename()
        type_ = self.builder.get_object("combobox_file_type").get_active_text()
        filename = os.path.join(folder, filename + '.' + type_)
        print filename

        self.project = self.EasyHybridSession.project
        self.project.ExportStateToFile(filename, type_)

    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.EasyHybrid_GUI = EasyHybridSession.EasyHybrid_GUI

        else:
            self.EasyHybrid_ROOT = ''
            self.EasyHybrid_GUI = ''

        self.builder.add_from_file(
            os.path.join(self.EasyHybrid_GUI, 'DialogChargeRescale',
                         'ExportCoordinates.glade'))
        self.builder.connect_signals(self)
        self.dialog = self.builder.get_object('ExportCoordinates')

        combolist = ["xyz", "pdb", "pkl",
                     "yaml"]  #,"mol","cif","psf","crd","mol2"]
        combobox = 'combobox_file_type'
        '''
		--------------------------------------------------
		-                                                -
		-	              WindowControl                  -
		-                                                -
		--------------------------------------------------
		'''

        #cbox = self.builder.get_object(combobox)  # remover isso depois ----> combobox_MM_model
        #store = gtk.ListStore(gobject.TYPE_STRING)# remover isso depois
        #cbox.set_model(store)                     # remover isso depois
        #                                          # remover isso depois
        #for i in combolist:                       # remover isso depois
        #	cbox.append_text(i)                   # remover isso depois
        #                                          # remover isso depois
        #cell = gtk.CellRendererText()             # remover isso depois
        #cbox.pack_start(cell, True)               # remover isso depois
        #cbox.add_attribute(cell, 'text', 0)       # remover isso depois
        #cbox.set_active(0)                        # remover isso depois

        self.window_control = WindowControl(self.builder)

        #----------------- Setup ComboBoxes -------------------------#
        #combolist = ["xyz","pdb","pkl","yaml","mol","cif","psf","crd","mol2"]
        #combobox = 'combobox_file_type'
        self.window_control.SETUP_COMBOBOXES(combobox, combolist, 0)
Example #24
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)
Example #25
0
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)
Example #26
0
class ScanWindow():
    """ Class doc """
    def on_ScanWindow_destroy(self, widget):
        """ Function doc """
        self.Visible = False

    def RunScan(self, button):
        #------------------------------------- importing parameters -----------------------------------------------#
        DINCREMENT = float(
            self.builder.get_object(
                'ScanDialog_SCAN_entry_STEP_SIZE4').get_text())  #
        NWINDOWS = int(
            self.builder.get_object(
                'ScanDialog_SCAN_entry_NWINDOWS4').get_text())  #
        DMINIMUM = float(
            self.builder.get_object(
                'ScanDialog_SCAN_entry_param_DMINIMUM').get_text())  #
        FORCECONSTANT = float(
            self.builder.get_object(
                'ScanDialog_SCAN_entry_FORCE4').get_text())  #
        #
        max_int = int(
            self.builder.get_object(
                "ScanDialog_SCAN_mim_param_entry_max_int1").get_text())  #
        rms_grad = float(
            self.builder.get_object(
                "ScanDialog_SCAN_mim_param_entry_rmsd_grad1").get_text())  #
        mim_method = self.builder.get_object(
            'ScanDialog_combobox_optimization_method').get_active_text()  #
        log_freq = None  #
        data_path = self.EasyHybridSession.project.settings['data_path']  #
        #----------------------------------------------------------------------------------------------------------#

        #-----------------------------------import trajectory parameters--------------------------------------------#
        traj = self.builder.get_object(
            'ScanDialog_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)  #
        #-----------------------------------------------------------------------------------------------------------#

        mode = self.builder.get_object(
            'ScanDialog_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(
                    'ScanDialog_SCAN_entry_cood1_ATOM1').get_text())  #
            ATOM1_name = self.builder.get_object(
                'ScanDialog_SCAN_entry_cood1_ATOM1_name').get_text()  #
            ATOM2 = int(
                self.builder.get_object(
                    'ScanDialog_SCAN_entry_cood1_ATOM2').get_text())  #
            ATOM2_name = self.builder.get_object(
                'ScanDialog_SCAN_entry_cood1_ATOM2_name').get_text()  #
            #
            parameters = {
                'method': mim_method,
                'outpath': outpath,  #
                'ATOM1': ATOM1,  #
                'ATOM1_name': ATOM1_name,  #
                'ATOM2': ATOM2,  #
                'ATOM2_name': ATOM2_name,  #
                'DINCREMENT': DINCREMENT,  #
                'NWINDOWS': NWINDOWS,  #
                'FORCECONSTANT': FORCECONSTANT,  #
                'DMINIMUM': DMINIMUM,  #
                'max_int': max_int,  #
                'log_freq': log_freq,  #
                'rms_grad': rms_grad,  #
                'mim_method': mim_method,  #
                'data_path': data_path
            }  #
            x, y, logFile = ScanSimpleDistance(
                parameters, self.EasyHybridSession.project)  #
        #-------------------------------------------------------------------------------------------------#

        #-------------------------------------------------------------------------------------------------#
        #                                      multiple-distance                                          #
        #-------------------------------------------------------------------------------------------------#
        if mode == "multiple-distance":  #
            ATOM1 = int(
                self.builder.get_object(
                    'ScanDialog_SCAN_entry_cood1_ATOM1').get_text())  #
            ATOM1_name = self.builder.get_object(
                'ScanDialog_SCAN_entry_cood1_ATOM1_name').get_text()  #
            ATOM2 = int(
                self.builder.get_object(
                    'ScanDialog_SCAN_entry_cood1_ATOM2').get_text())  #
            ATOM2_name = self.builder.get_object(
                'ScanDialog_SCAN_entry_cood1_ATOM2_name').get_text()  #
            ATOM3 = int(
                self.builder.get_object(
                    'ScanDialog_SCAN_entry_cood1_ATOM3').get_text())  #
            ATOM3_name = self.builder.get_object(
                'ScanDialog_SCAN_entry_cood1_ATOM3_name').get_text()  #
            #
            mass_weight = self.builder.get_object(
                "ScanDialog_scan_checkbutton_mass_weight").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  #
            #
            parameters = {
                'method': mim_method,  #
                'outpath': outpath,  #
                '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': sigma_pk1_pk3,  #
                'sigma_pk3_pk1': sigma_pk3_pk1,  #
                'max_int': max_int,  #
                'log_freq': log_freq,  #
                'rms_grad': rms_grad,  #
                'mim_method': mim_method,  #
                'mass_weight': mass_weight,  #
                'data_path': data_path
            }  #
            #
            #
            x, y, logFile = ScanMultipleDistances(
                parameters, self.EasyHybridSession.project)  #
        #-------------------------------------------------------------------------------------------------#
        self.EasyHybridSession.project.From_PDYNAMO_to_EasyHybrid(type_='scn',
                                                                  log=logFile)

        self.BackUpWindowData()
        self.Visible = False
        self.window.destroy()
        return x, y,

    def ScanDialog_ImportFromPyMOL(self, button):
        mode = self.builder.get_object(
            'ScanDialog_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('ScanDialog_SCAN_entry_param_DMINIMUM'
                                        ).set_text(distance_a1_a2)

                self.builder.get_object(
                    "ScanDialog_SCAN_entry_cood1_ATOM1").set_text(
                        str(atom1_index))
                self.builder.get_object(
                    "ScanDialog_SCAN_entry_cood1_ATOM1_name").set_text(name1)
                self.builder.get_object(
                    "ScanDialog_SCAN_entry_cood1_ATOM2").set_text(
                        str(atom2_index))
                self.builder.get_object(
                    "ScanDialog_SCAN_entry_cood1_ATOM2_name").set_text(name2)

                self.atom1_index = atom1_index
                self.name1 = name1
                self.atom2_index = atom2_index
                self.name2 = name2

            except:
                cmd.edit_mode()
                print "pk1 and pk2 selections 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(
                        "ScanDialog_scan_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(
                        'ScanDialog_SCAN_entry_param_DMINIMUM').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(
                        'ScanDialog_SCAN_entry_param_DMINIMUM').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(
                "ScanDialog_SCAN_entry_cood1_ATOM1").set_text(str(atom1_index))
            self.builder.get_object(
                "ScanDialog_SCAN_entry_cood1_ATOM1_name").set_text(name1)
            self.builder.get_object(
                "ScanDialog_SCAN_entry_cood1_ATOM2").set_text(str(atom2_index))
            self.builder.get_object(
                "ScanDialog_SCAN_entry_cood1_ATOM2_name").set_text(name2)
            self.builder.get_object(
                "ScanDialog_SCAN_entry_cood1_ATOM3").set_text(str(atom3_index))
            self.builder.get_object(
                "ScanDialog_SCAN_entry_cood1_ATOM3_name").set_text(name3)

    def Mass_weight_check(self):
        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(
                "ScanDialog_scan_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(
                'ScanDialog_SCAN_entry_param_DMINIMUM').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(
                'ScanDialog_SCAN_entry_param_DMINIMUM').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 on_ScanDialog_checkbutton_MassWeight(self, checkbutton):
        """ Function doc """
        print 'checkbutton_MassWeight'
        self.Mass_weight_check()

    def ScanComboxChange(self, combobox):
        """ Function doc """
        mode = self.builder.get_object(
            'ScanDialog_combobox_SCAN_reaction_coordiante_type'
        ).get_active_text()
        if mode == 'simple-distance':
            self.builder.get_object(
                'ScanDialog_SCAN_label_coord1_atom3').set_sensitive(False)
            self.builder.get_object(
                'ScanDialog_SCAN_entry_cood1_ATOM3').set_sensitive(False)
            self.builder.get_object(
                'ScanDialog_SCAN_label_cood1_ATOM3_name').set_sensitive(False)
            self.builder.get_object(
                'ScanDialog_SCAN_entry_cood1_ATOM3_name').set_sensitive(False)
            self.builder.get_object(
                'ScanDialog_scan_checkbutton_mass_weight').set_sensitive(False)
            self.distanceType = 0
        if mode == 'multiple-distance':
            self.builder.get_object(
                'ScanDialog_SCAN_label_coord1_atom3').set_sensitive(True)
            self.builder.get_object(
                'ScanDialog_SCAN_entry_cood1_ATOM3').set_sensitive(True)
            self.builder.get_object(
                'ScanDialog_SCAN_label_cood1_ATOM3_name').set_sensitive(True)
            self.builder.get_object(
                'ScanDialog_SCAN_entry_cood1_ATOM3_name').set_sensitive(True)
            self.builder.get_object(
                'ScanDialog_scan_checkbutton_mass_weight').set_sensitive(True)
            self.distanceType = 1

    def BackUpWindowData(self):
        """ Function doc """

        mode = self.builder.get_object(
            'ScanDialog_combobox_SCAN_reaction_coordiante_type'
        ).get_active_text()
        if mode == 'simple-distance':
            self.distanceType = 0
        if mode == 'multiple-distance':
            self.distanceType = 1
        #---------------------------------------------------------------------------------------------------------#
        self.atom1_index = self.builder.get_object(
            'ScanDialog_SCAN_entry_cood1_ATOM1').get_text()  #
        self.name1 = self.builder.get_object(
            'ScanDialog_SCAN_entry_cood1_ATOM1_name').get_text()  #
        self.atom2_index = self.builder.get_object(
            'ScanDialog_SCAN_entry_cood1_ATOM2').get_text()  #
        self.name2 = self.builder.get_object(
            'ScanDialog_SCAN_entry_cood1_ATOM2_name').get_text()  #
        self.atom3_index = self.builder.get_object(
            'ScanDialog_SCAN_entry_cood1_ATOM3').get_text()  #
        self.name3 = self.builder.get_object(
            'ScanDialog_SCAN_entry_cood1_ATOM3_name').get_text()  #
        #---------------------------------------------------------------------------------------------------------#

        #---------------------------------------------------------------------------------------------------------#
        self._mass_weight_check = self.builder.get_object(
            "ScanDialog_scan_checkbutton_mass_weight").get_active()  #
        #---------------------------------------------------------------------------------------------------------#

        #------------------------------------- importing parameters ----------------------------------------------#
        self.DINCREMENT = self.builder.get_object(
            'ScanDialog_SCAN_entry_STEP_SIZE4').get_text()  #
        self.NWINDOWS = self.builder.get_object(
            'ScanDialog_SCAN_entry_NWINDOWS4').get_text()  #
        self.FORCECONSTANT = self.builder.get_object(
            'ScanDialog_SCAN_entry_FORCE4').get_text()  #
        self.DMINIMUM = self.builder.get_object(
            'ScanDialog_SCAN_entry_param_DMINIMUM').get_text()  #
        #---------------------------------------------------------------------------------------------------------#

        #---------------------------------------------------------------------------------------------------------#
        mim_method = self.builder.get_object(
            'ScanDialog_combobox_optimization_method').get_active_text()  #
        self.minitype = 0  #
        #
        self.max_int = self.builder.get_object(
            "ScanDialog_SCAN_mim_param_entry_max_int1").get_text()  #
        self.rms_grad = self.builder.get_object(
            "ScanDialog_SCAN_mim_param_entry_rmsd_grad1").get_text()  #

    def PutBackUpWindowData(self):

        #""" Function doc """
        #mode = self.builder.get_object('ScanDialog_combobox_SCAN_reaction_coordiante_type').get_active_text()
        #if mode == 'simple-distance':
        #    self.distanceType = 0
        #if mode == 'multiple-distance':
        #    self.distanceType = 1
        #---------------------------------------------------------------------------------------------------------#
        self.builder.get_object('ScanDialog_SCAN_entry_cood1_ATOM1').set_text(
            str(self.atom1_index))  #
        self.builder.get_object(
            'ScanDialog_SCAN_entry_cood1_ATOM1_name').set_text(
                str(self.name1))  #
        self.builder.get_object('ScanDialog_SCAN_entry_cood1_ATOM2').set_text(
            str(self.atom2_index))  #
        self.builder.get_object(
            'ScanDialog_SCAN_entry_cood1_ATOM2_name').set_text(
                str(self.name2))  #
        self.builder.get_object('ScanDialog_SCAN_entry_cood1_ATOM3').set_text(
            str(self.atom3_index))  #
        self.builder.get_object(
            'ScanDialog_SCAN_entry_cood1_ATOM3_name').set_text(
                str(self.name3))  #
        #---------------------------------------------------------------------------------------------------------#

        #---------------------------------------------------------------------------------------------------------#
        if self._mass_weight_check:  #
            self.builder.get_object(
                "ScanDialog_scan_checkbutton_mass_weight").set_active(True)  #
        #---------------------------------------------------------------------------------------------------------#

        #------------------------------------- importing parameters ----------------------------------------------#
        self.builder.get_object('ScanDialog_SCAN_entry_STEP_SIZE4').set_text(
            str(self.DINCREMENT))  #
        self.builder.get_object('ScanDialog_SCAN_entry_NWINDOWS4').set_text(
            str(self.NWINDOWS))  #
        self.builder.get_object('ScanDialog_SCAN_entry_FORCE4').set_text(
            str(self.FORCECONSTANT))  #
        self.builder.get_object(
            'ScanDialog_SCAN_entry_param_DMINIMUM').set_text(
                str(self.DMINIMUM))  #
        #---------------------------------------------------------------------------------------------------------#

        #---------------------------------------------------------------------------------------------------------#
        #mim_method	       = self.builder.get_object('ScanDialog_combobox_optimization_method').get_active_text() #
        #self.minitype      = 0                                                                                   #
        #
        self.builder.get_object(
            "ScanDialog_SCAN_mim_param_entry_max_int1").set_text(
                str(self.max_int))  #
        self.builder.get_object(
            "ScanDialog_SCAN_mim_param_entry_rmsd_grad1").set_text(
                str(self.rms_grad))  #
        #---------------------------------------------------------------------------------------------------------#

    def OpenWindow(self, text):
        """ Function doc """
        if self.Visible == False:
            self.project = self.EasyHybridSession.project
            self.builder = gtk.Builder()
            self.builder.add_from_file(
                os.path.join(EasyHybrid_GUI, 'WindowScan1D',
                             'ScanWindow.glade'))

            self.builder.connect_signals(self)
            self.window = self.builder.get_object('ScanWindow')
            self.sigma_pk1_pk3 = None
            self.sigma_pk3_pk1 = None
            self.builder.get_object(
                "ScanDialog_SCAN_entry_trajectory_name").set_text(text)
            '''
            --------------------------------------------------
            -                                                -
            -	              WindowControl                  -
            -                                                -
            --------------------------------------------------
            '''
            self.window_control = WindowControl(self.builder)

            #--------------------- Setup ComboBoxes -------------------------
            combobox = 'ScanDialog_combobox_SCAN_reaction_coordiante_type'
            combolist = ['simple-distance', 'multiple-distance']
            self.window_control.SETUP_COMBOBOXES(combobox, combolist,
                                                 self.distanceType)

            combobox = 'ScanDialog_combobox_optimization_method'
            combolist = ['Conjugate Gradient', 'Steepest Descent', 'LBFGS']
            self.window_control.SETUP_COMBOBOXES(combobox, combolist,
                                                 self.minitype)

            self.window.show()
            #
            self.builder.connect_signals(self)

            self.Visible = True
            self.PutBackUpWindowData()
            gtk.main()
            #----------------------------------------------------------------

    def CloseWindow(self, button):
        """ Function doc """
        self.BackUpWindowData()
        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.atom1_index = ''
        self.name1 = ''
        self.atom2_index = ''
        self.name2 = ''
        self.atom3_index = ''
        self.name3 = ''

        self.distanceType = 0
        self.DMINIMUM = ''
        self.minitype = 0

        self.DINCREMENT = '0.1'
        self.NWINDOWS = '10'
        self.FORCECONSTANT = '4000'
        self.max_int = '500'
        self.rms_grad = '0.1'

        self._mass_weight_check = False

        #self.project   =  project
        self.Visible = False
Example #27
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)