[Bio] / ModelEditor / MetabolitePanel.py Repository:
ViewVC logotype

Annotation of /ModelEditor/MetabolitePanel.py

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.8 - (view) (download) (as text)

1 : efrank 1.1 from wxPython.wx import *
2 :     from wxPython.grid import *
3 :     from KahOM.RecoElem import RecoElem
4 : efrank 1.2 from ModelEditor.RecoElempanel import RecoElempanel
5 :     from ModelEditor.MainLayout import MainLayout
6 :     from ModelEditor.DoubleTextEntryDialog import DoubleTextEntryDialog
7 : efrank 1.6 from ModelEditor.MetAddMetDialog import MetAddMetDialog
8 : efrank 1.1
9 :     class MetabolitePanel:
10 :     #------------------------------------------------------------------------
11 :     def __init__(self, parent):
12 :     #------------------------------------------------------------------------
13 :     #wxPanel.__init__(self, parent, -1)
14 :     self.parent = parent
15 :    
16 :    
17 :     self.initEvents()
18 :    
19 :    
20 :     return
21 :    
22 :    
23 :     #------------------------------------------------------------------------
24 :     def initEvents(self):
25 :     #------------------------------------------------------------------------
26 :     EVT_COMBOBOX(self.parent,
27 :     self.parent.foundryComboBox.GetId(),
28 :     self.onFoundryComboBox)
29 :    
30 :     searchMetabsBtn = self.parent.searchMetabsBtn
31 :     EVT_BUTTON(self.parent, searchMetabsBtn.GetId(), self.onSearchMetabs)
32 :    
33 :     addMetabsBtn = self.parent.addMetabsBtn
34 :     EVT_BUTTON(self.parent, addMetabsBtn.GetId(),
35 :     self.onAddMetabs)
36 :    
37 :    
38 :     clearSearchResultsBtn = self.parent.clearSearchResultsBtn
39 :     EVT_BUTTON(self.parent, clearSearchResultsBtn.GetId(),
40 :     self.onClearSearchResults)
41 :    
42 :    
43 :     clearSelectedMetabsBtn = self.parent.clearSelectedMetabsBtn
44 :    
45 :     EVT_BUTTON(self.parent, clearSelectedMetabsBtn.GetId(),
46 :     self.onClearSelectedMetabs)
47 :    
48 :    
49 :    
50 :     selectSearchResultsBtn = self.parent.selectSearchResultsBtn
51 :     EVT_BUTTON(self.parent, selectSearchResultsBtn.GetId(),
52 :     self.onSelectSearchResults)
53 :    
54 :     return
55 :    
56 :     #------------------------------------------------------------------------
57 :     def onSearchMetabs(self, evt):
58 :     #------------------------------------------------------------------------
59 :     # this replaces the old seed specific and bss specific searches.
60 :     # that means that the short name search is now kaput.
61 :    
62 : efrank 1.8 factory = self.parent.getCurrentDataFactory()
63 :     foundryName = factory.getFoundryName()
64 :    
65 :     if ( not factory.getFoundryType() == "KahChemDb"):
66 :     self.parent.error( "Metabolite search only supported by KahChemDb" )
67 :     return
68 :    
69 : efrank 1.1 wxBeginBusyCursor()
70 :    
71 :    
72 :     longName = self.parent.longText.GetValue()
73 :     longLikeOpt = self.parent.optionsLongComboBox.GetValue()
74 :    
75 :     if longName == "": longName = None
76 :    
77 : efrank 1.8 metabsResults=[]
78 : efrank 1.1
79 :     if (longName != None):
80 :     metabsResults = factory.longMetabSearch( longName, longLikeOpt )
81 :     else:
82 :     metabsResults = []
83 :    
84 :    
85 :     theGrid = self.parent.bssGrid
86 :     n = theGrid.GetNumberRows()
87 :    
88 :    
89 :     for r in metabsResults:
90 : efrank 1.6 (compId, name, ic) = r
91 :     if (ic==1):
92 :     isClass="Y"
93 :     elif (ic==0):
94 :     isClass="N"
95 :     else:
96 :     isClass="?"
97 :    
98 : efrank 1.1 theGrid.AppendRows(numRows=1)
99 :     theGrid.SetCellValue(n, 0 , foundryName)
100 : efrank 1.4 theGrid.SetCellValue(n, 1, name )
101 : efrank 1.5 theGrid.SetCellValue(n, 2, str(compId ) )
102 : efrank 1.6 theGrid.SetCellValue(n, 3, isClass )
103 : efrank 1.1 theGrid.SetReadOnly(n, 0)
104 :     theGrid.SetReadOnly(n, 1)
105 :     theGrid.SetReadOnly(n, 2)
106 : efrank 1.6 theGrid.SetReadOnly(n, 3)
107 : efrank 1.1 theGrid.AutoSizeColumn(1)
108 :     theGrid.AutoSizeColumn(2)
109 :     n += 1
110 :     theGrid.FitInside()
111 :    
112 :    
113 :     wxEndBusyCursor()
114 :    
115 :     return
116 :    
117 :     #------------------------------------------------------------------------
118 :     def onAddMetabs(self, evt):
119 :     #------------------------------------------------------------------------
120 :    
121 :     factory = self.parent.getCurrentDataFactory()
122 : efrank 1.8 if ( not factory.getFoundryType() == "KahChemDb" ):
123 :     self.parent.error( "Add metabolite only supported by KahChemDb" )
124 : efrank 1.5 return
125 :    
126 : efrank 1.6 prompt = "New specie name:"
127 :     dlg = MetAddMetDialog(self.parent, -1, "Add Specie",
128 :     pos=(300,300), size=(700,400),
129 :     style=wxDEFAULT_FRAME_STYLE)
130 : efrank 1.5
131 : efrank 1.6 #dlg = wxTextEntryDialog(self.parent, message=prompt, style=wxDEFAULT_DIALOG_STYLE)
132 :    
133 :     result = dlg.ShowModal()
134 :     if (not result == wxID_OK):
135 : efrank 1.5 return
136 :    
137 : efrank 1.6 (specieName, isClass) = dlg.GetValue()
138 :     if (specieName=="" or specieName==None):
139 :     self.parent.error( "Invalid Metabolite name: [%s]" % (specieName) )
140 : efrank 1.5 return
141 :    
142 : efrank 1.6 if (isClass=="Unknown"):
143 :     ic=-1
144 : efrank 1.7 icstr="?"
145 : efrank 1.6 elif (isClass=="Class"):
146 :     ic=1
147 : efrank 1.7 icstr="Y"
148 : efrank 1.6 elif (isClass=="Specific"):
149 : efrank 1.7 icstr="N"
150 : efrank 1.6 ic=0
151 :     else:
152 :     raise ImplementationError, "MetabolitePanel.onAddMetabs, logic error"
153 :    
154 : efrank 1.5 try:
155 : efrank 1.6 specieId=factory.writeMetabolite( specieName, ic)
156 : efrank 1.5 except Exception, e:
157 : efrank 1.6 self.parent.error( "Database Error adding %s: %s" % ( specieName, e))
158 : efrank 1.5 return
159 :    
160 :     bssRowNum= self.parent.bssGrid.GetNumberRows()
161 :     self.parent.bssGrid.AppendRows(numRows=1)
162 :     self.parent.bssGrid.SetCellValue(bssRowNum, 0, factory.getFoundryName())
163 : efrank 1.6 self.parent.bssGrid.SetCellValue(bssRowNum, 1, specieName)
164 :     self.parent.bssGrid.SetCellValue(bssRowNum, 2, str(specieId))
165 : efrank 1.7 self.parent.bssGrid.SetCellValue(bssRowNum, 3, icstr)
166 : efrank 1.5 self.parent.bssGrid.AutoSizeColumn(1)
167 :    
168 :     return
169 :    
170 :     #------------------------------------------------------------------------
171 :     def OLDonAddMetabs(self, evt):
172 :     #------------------------------------------------------------------------
173 :    
174 :     factory = self.parent.getCurrentDataFactory()
175 : efrank 1.3 if ( not factory.getFoundryType() == "KahDb"):
176 : efrank 1.1 self.parent.error( "Add metabolite only supported by Bss" )
177 :     return
178 :    
179 :     onAddMetDialogWin = DoubleTextEntryDialog(self.parent, -1,
180 :     "New Metabolite", prompt=("Short Name", "Long Name"),
181 :     pos=(300,300),size=wxSize(350,200),
182 :     style=wxDEFAULT_DIALOG_STYLE)
183 :     result = onAddMetDialogWin.ShowModal()
184 :    
185 :     if ( result == wxID_CANCEL):
186 :     return
187 :     elif ( result == wxID_OK ):
188 :     (shortName,longName) = onAddMetDialogWin.GetValue()
189 :     else:
190 :     self.parent.error( "Program error in onAddMetabs" )
191 :    
192 :     if ( longName == "" or longName == None or
193 :     shortName =="" or shortName == None ):
194 :     self.parent.error( "Invalid Metabolite name: [%s] [%s]" %
195 :     (shortName, longName) )
196 :     return
197 :    
198 :    
199 :     try:
200 :     factory.writeMetabolite( shortName, longName)
201 :     except:
202 :     self.parent.error( "Database Error adding " + shortName
203 :     + " " + longName )
204 :     return
205 :    
206 :     bssRowNum= self.parent.bssGrid.GetNumberRows()
207 :     self.parent.bssGrid.AppendRows(numRows=1)
208 : efrank 1.3 self.parent.bssGrid.SetCellValue(bssRowNum, 0, factory.getFoundryName())
209 : efrank 1.4 self.parent.bssGrid.SetCellValue(bssRowNum, 1, longName)
210 : efrank 1.1 self.parent.bssGrid.AutoSizeColumn(1)
211 :    
212 :     return
213 :    
214 :     #------------------------------------------------------------------------
215 :     def onClearSearchResults(self, event):
216 :     #------------------------------------------------------------------------
217 :     if (self.parent.bssGrid.GetNumberRows() == 0 ):
218 :     return
219 :    
220 :     self.parent.bssGrid.DeleteRows(0, self.parent.bssGrid.GetNumberRows())
221 :     self.parent.bssGrid.ClearGrid()
222 :     return
223 :    
224 :     #------------------------------------------------------------------------
225 :     def onClearSelectedMetabs(self, event):
226 :     #------------------------------------------------------------------------
227 :    
228 :     if (self.parent.selectedMetabsGrid.GetNumberRows() == 0 ):
229 :     return
230 :    
231 :     self.parent.selectedMetabsGrid.DeleteRows(0, self.parent.selectedMetabsGrid.GetNumberRows())
232 :     self.parent.selectedMetabsGrid.ClearGrid()
233 :     return
234 :    
235 :     #------------------------------------------------------------------------
236 :     def onSelectSearchResults(self, event):
237 :     #------------------------------------------------------------------------
238 :     onSelectRows = self.parent.bssGrid.GetSelectedRows()
239 :    
240 :     bottomGrid = self.parent.selectedMetabsGrid
241 :     bottomGridNumber = self.parent.selectedMetabsGrid.GetNumberRows()
242 :    
243 :     for s in onSelectRows:
244 :     bottomFoundryValue = self.parent.bssGrid.GetCellValue(s, 0)
245 : efrank 1.5 bottomCompNameValue = self.parent.bssGrid.GetCellValue(s, 1)
246 : efrank 1.4 bottomAuxValue = self.parent.bssGrid.GetCellValue(s, 2)
247 : efrank 1.1
248 :     bottomGrid.AppendRows(numRows=1)
249 :     bottomGrid.SetCellValue(bottomGridNumber, 0, bottomFoundryValue)
250 : efrank 1.5 bottomGrid.SetCellValue(bottomGridNumber, 1, bottomCompNameValue)
251 : efrank 1.1 bottomGrid.AutoSizeColumn(1)
252 : efrank 1.4 bottomGrid.SetCellValue(bottomGridNumber, 2, bottomAuxValue)
253 : efrank 1.1 bottomGrid.AutoSizeColumn(2)
254 :     bottomGridNumber += 1
255 :    
256 :    
257 :     #doesn't work
258 :     #bottomGrid.SelectAll()
259 :     #print "bottomGridSelectAll ", bottomGrid.GetSelectedRows()
260 :     bottomGrid.FitInside()
261 :    
262 :     return
263 :    
264 :     #------------------------------------------------------------------------
265 :     def onFoundryComboBox(self, evt):
266 :     #------------------------------------------------------------------------
267 :    
268 :     print "i'm in the metabolitepanel onFoundryComboBox"
269 :     self.parent.error( "CALLED onFoundryCombBox in MetabolitePanel")
270 :     return
271 :    
272 :     cb = evt.GetEventObject()
273 :     choice = evt.GetString()
274 :    
275 :     if (choice == "Bss"):
276 :     self.parent.shortText.Enable(true)
277 :     self.parent.optionsShortComboBox.Enable(true)
278 :     self.parent.orAndMetabsComboBox.Enable(true)
279 :     elif (choice == "Wit"):
280 :     self.parent.shortText.Enable(false)
281 :     self.parent.optionsShortComboBox.Enable(false)
282 :     self.parent.orAndMetabsComboBox.Enable(false)
283 :     else:
284 :     # of of the N seed factory instances.
285 :     self.parent.shortText.Enable(false)
286 :     self.parent.optionsShortComboBox.Enable(false)
287 :     self.parent.orAndMetabsComboBox.Enable(false)
288 :    
289 :    
290 :     return
291 :    
292 :     #------------------------------------------------------------------------
293 :     def DOOMwitShow(self):
294 :     #------------------------------------------------------------------------
295 :    
296 :     self.parent.MetTop.ReplaceWindow(self.parent.theBssPanel, self.parent.theWitPanel)
297 :     self.parent.theBssPanel.Hide()
298 :    
299 :     return
300 :    
301 :    
302 :     #------------------------------------------------------------------------
303 :     def DOOMbssShow(self):
304 :     #------------------------------------------------------------------------
305 :    
306 :     self.parent.MetTop.ReplaceWindow(self.parent.theWitPanel, self.parent.theBssPanel)
307 :     self.parent.theWitPanel.Hide()
308 :    
309 :     return

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3