def __init__(self, data):

		"""
		Class Variables:
			self.data: data which is to be plotted.

			self.x_data: slice of the self.data alongthe x-axis
			self.y_data: slice of the self.data alongthe y-axis
			self.z_data: slice of the self.data alongthe z-axis.

			self.minimum: Intialised with the value 0, Default slicing for the data
			self.maximum: Intialised with the value 10000, Default slicing of the data, Both these class variable implies that the 
					Intial plot data will be plotted from data[self.minimum: self.maximum]

			Their values can be changed from the "Go Plot!!" button present at the end of the Frame.

			self.log_panel: wx.Panel which will have the standard input and out bound to it.
			self.New_Tab: wx.Notebook which is opened as a new tab whenever the new tab option is clicked from the file menu.

		"""
		
		self.selected_checkboxes = list()
		self.axis_3d = True
		self.tab_count = 0
		self.minimum = 0
		self.maximum = 1000
		self.data = data
		self.x_data= None
		self.y_data= None
		self.z_data= None
		self.base_axis = None
		
		wx.Frame.__init__(self, None, -1, size=(800,600), pos=((wx.DisplaySize()[0])/2,(wx.DisplaySize()[1])/2), style=wx.MAXIMIZE_BOX | wx.RESIZE_BORDER | wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX)
		self.Button_vbox= wx.BoxSizer(wx.VERTICAL)

		#Splitter window
		self.window= wx.SplitterWindow(self, wx.ID_ANY, style=wx.SP_3D | wx.SP_BORDER, size=(800,600))	
		
		
		#Two panels
		self.left_panel = wx.Panel(self.window, wx.ID_ANY)
		self.right_panel = wx.Panel(self.window, wx.ID_ANY)
		



		#Notebook on which the matplotlib panel will be inserted
		self.New_Tab = fnb.FlatNotebook(self.right_panel, style=fnb.FNB_TABS_BORDER_SIMPLE|fnb.FNB_VC71)


		font = wx.Font(6, wx.SWISS, wx.NORMAL, wx.NORMAL, False, u'Comic Sans MS')
		font_bottom = wx.Font(7, wx.FONTFAMILY_TELETYPE, wx.FONTFAMILY_DECORATIVE, wx.FONTWEIGHT_BOLD, True, u'Comic Sans MS')

		self.matplotlib_panel= MatplotlibPanel(self.New_Tab, self.tab_count, self.data, self.minimum, self.maximum)
		self.New_Tab.AddPage(self.matplotlib_panel, "Tab %s"%self.tab_count)
		self.tab_count += 1

		#This panel will have all the varibales present in the data file
		self.wxpanel= wx.PyScrolledWindow(self.left_panel, -1,)
		self.wxpanel.SetFont(font_bottom)
		self.wxpanel.SetBackgroundColour("DARKCYAN")
		self.log_window = wx.TextCtrl(self.left_panel, wx.ID_ANY, size=(300, 150), style = wx.TE_MULTILINE|wx.VSCROLL|wx.TE_BESTWRAP| wx.TE_WORDWRAP)
		self.log_window.SetFont(font)

		#This method populates the variable spresent in the file into the scrolled window
		self.checkbox_list = list()
		self.populate_variables(self.data, self.wxpanel, self.checkbox_list)


		self.vbox_left = wx.BoxSizer(wx.VERTICAL)
		self.vbox_left.Add(self.log_window, 0, wx.EXPAND| wx.ALL, 2)
		self.vbox_left.Add(self.wxpanel, 1, wx.EXPAND| wx.ALL, 2)
		self.left_panel.SetSizer(self.vbox_left)
		
		self.vbox_right = wx.BoxSizer(wx.VERTICAL)
		self.vbox_right.Add(self.New_Tab, 20, wx.EXPAND| wx.ALL, 1)
		self.right_panel.SetSizer(self.vbox_right)
		
		
		#This part generates the menu from the menu.xml present in the same directory
		menudata = XMLParser.xml_data("menu.xml")
		XMLParser.createMenus(self, menudata, self)

		sizer = wx.BoxSizer(wx.VERTICAL)
		self.window.SplitVertically(self.left_panel, self.right_panel)
		sizer.Add(self.window, 1, wx.EXPAND, 0)
		self.SetSizer(sizer)
		sizer.Fit(self)
		
		#This part redirects the standard output and standard input on the console embedded in the wx.Frame
		redir = RedirectText(self.log_window)
		sys.stdout = redir
		sys.stderr = redir
#		self.SetSizer(self.hbox)
		self.SetBackgroundColour("light blue")
		self.statusbar = self.CreateStatusBar()
		self.Centre()
		self.Show()