def initialize_GUI(self):
        """
        Fill up the GUI
        """
        _debug('GUIMainExperiment: initialize_GUI')

        # Prepare the GUI before to place them
        self.gui_confocal = gui_confocal_main.GUIMainConfocal(self.fpga)
        self.gui_pulser = gui_pulser.GuiMainPulseSequence(self.fpga)
        self.gui_saturation = gui_saturation.GUISaturation(self.fpga)

        # Replace the optimer button outside, for easy access
        self.place_object(self.gui_confocal.gui_optimizer.button_optimize,
                          row=1)

        # Place a button for printing the bugs
        self.button_checkbug = egg.gui.Button('Check is everything is cool',
                                              tip='Print the last error')
        self.place_object(self.button_checkbug, row=1)
        self.connect(self.button_checkbug.signal_clicked,
                     self.button_checkbug_clicked)
        # Plus the label for the print
        self.label_checkbug = egg.gui.Label(
            'Welcome to the best experiment since 1992.')
        self.place_object(self.label_checkbug, row=1)

        # Place tabs
        self.tabs1 = self.place_object(egg.gui.TabArea(),
                                       row=2,
                                       column=0,
                                       column_span=5,
                                       alignment=0)

        # Tab for the confocal
        self.tab_confocal = self.tabs1.add_tab('Confocal')
        self.tab_confocal.place_object(self.gui_confocal, alignment=0)

        # Tab for the pulser
        self.tab_pulser = self.tabs1.add_tab('Pulser')
        self.tab_pulser.place_object(self.gui_pulser, alignment=0)

        # Tab for the saturation analysis
        self.tab_saturation = self.tabs1.add_tab('Saturation curve')
        self.tab_saturation.place_object(self.gui_saturation, alignment=0)

        # Tab for miscaleneous experiment that are more complexe that simple
        # Pulse sequence
        # Each experiment will be placed into tabs2
        self.tabs2 = egg.gui.TabArea()
        self.tab_high_level = self.tabs1.add_tab('Awesome experiment')
        self.tab_high_level.place_object(self.tabs2,
                                         row=2,
                                         column=0,
                                         column_span=5,
                                         alignment=0)

        # Place a tab for the pi-pulse
        self.gui_pipulse_opt = gui_pipulse_optimization.GUIPiPulseOptimization(
            self.gui_pulser)
        self.tab_pipulse = self.tabs2.add_tab('Pi-pulse')
        self.tab_pipulse.place_object(self.gui_pipulse_opt, alignment=0)

        # Place a tab for the adaptive Bayes
        self.tab_bayes = self.tabs2.add_tab('Adaptive Bayes')
        self.tab_bayes.place_object(egg.gui.Button('Wooho'))
            # Update the image
            self.map.set_data(self.Z)

            _debug('GUIPiPulseOptimization: run: f=', f, 'Okay')


if __name__ == '__main__':
    _debug_enabled = True

    # Create the fpga api
    bitfile_path = (
        "X:\DiamondCloud\Magnetometry\Acquisition\FPGA\Magnetometry Control\FPGA Bitfiles"
        "\Pulsepattern(bet_FPGATarget_FPGAFULLV2_WZPA4vla3fk.lvbitx")
    resource_num = "RIO0"

    #    fpga = _fc.FPGA_api(bitfile_path, resource_num) # Create the api
    #    fpga.open_session()
    #    self = GuiMainPulseSequence(fpga)
    #    self.show()

    import api_fpga as _fc
    fpga_fake = _fc.FPGA_fake_api(bitfile_path, resource_num)  # Create the api
    fpga_fake.open_session()

    import gui_pulser
    gui = gui_pulser.GuiMainPulseSequence(fpga_fake)

    self = GUIPiPulseOptimization(gui)
    self.show()