sbw_func.py :  » Mobile » Pysces » pysces-0.7.2-(test) » pysces » contrib » sbw » Python Open Source

Home
Python Open Source
1.3.1.2 Python
2.Ajax
3.Aspect Oriented
4.Blog
5.Build
6.Business Application
7.Chart Report
8.Content Management Systems
9.Cryptographic
10.Database
11.Development
12.Editor
13.Email
14.ERP
15.Game 2D 3D
16.GIS
17.GUI
18.IDE
19.Installer
20.IRC
21.Issue Tracker
22.Language Interface
23.Log
24.Math
25.Media Sound Audio
26.Mobile
27.Network
28.Parser
29.PDF
30.Project Management
31.RSS
32.Search
33.Security
34.Template Engines
35.Test
36.UML
37.USB Serial
38.Web Frameworks
39.Web Server
40.Web Services
41.Web Unit
42.Wiki
43.Windows
44.XML
Python Open Source » Mobile » Pysces 
Pysces » pysces 0.7.2 test  » pysces » contrib » sbw » sbw_func.py
"""
This is a prototype PySCeS interface to the System Biology Workbench
(http://www.sys-bio.org). Bits of code in this module have been shamelessly scavenged 
from the SBW/Python inteface modules found in sbwStartup.py and sbwModuleProxy.py.

Essentially what I am trying to do is to get the SBW/Python interface to operate
as a module and not in the global/interactive namespace. Modules added as I 
discover more about SBW ;-) Brett G. Olivier - 20060929

Notes: notification does not work yet, new SBW modules are not autoloaded - the
interface itself checks and, if necessary, loads services as required.

"""
try:
    import SBW
except Exception, exc:
    print '\nError loading SBW'
    print 'Is the Systems Biology Workbench (www.sys-bio.org) installed?'
    print 'If SBW is installed and still doesn\'t work try creating an empty file'
    print 'called __init__.py and copy it into'
    print '\tpython2.x\\lib\\site-packages\\SBW\\'
    print 'if this directory doesn\'t exist copy python2.x\\SBW\\ to'
    print 'python2.x\\lib\\site-packages\\SBW\\ add __init__.py and try again'
    print exc,'\n'

import os
from time import sleep
import SBW.sbwModuleProxy as sbwModuleProxy
import SBW.psbw as psbw       # give user access to psbw in interactive mode

sbwModuleProxy.importAllModules(SBW.__dict__, verbose=1)
sbwModuleProxy.startModuleNotification(SBW.__dict__, verbose=1)

class SBW_base:
    sbml_file = 'The SBML file name'
    sbml_string = 'The SBML file object as a string'
    SBW = 'The inheriting class SBW interface'
    output = 'Holds the output of the analysis'

##    def __init__(self):
##        #Load all modules the generic form of above probably should have its own function someday
##        modules = [ sbwModuleProxy.ModuleProxy(id) for id in psbw.getModuleIdList() ]
##        for module in modules:
##            if not sbwModuleProxy.moduleDict.has_key(module.id):
##                print 'Adding module to ModuleProxy', module.id
##                sbwModuleProxy.moduleDict[module.id] = module
##            if not SBW.__dict__.has_key(module.pythonName):
##                print 'Adding module to SBW namespace', module.pythonName
##                SBW.__dict__[module.pythonName] = module

    def loadSBMLfromFile(self,filename,dir=None):
        """Loads an SBML file where name=filename"""
        if dir != None:
            filename = os.path.join(dir,filename)
        self.sbml_file = filename
        sbml_file = file(filename,'r')
        self.sbml_string = ''
        for line in sbml_file: self.sbml_string += line
        sbml_file.close()

    def Info(self):
        """Display module info"""
        print ' '
        print 'Module: ' + self.SBW.getName() + ' (ver. ' + self.SBW.getVersion() + ')'
        print ' \"' + self.SBW.getDescription() + '\"'
        print 'Author: ' + self.SBW.getAuthor() + ' (' + self.SBW.getURL() + ')'

    def SBW_Methods(self):
        """Display available SBW service methods"""
        print '\nMethods available as sbw.'+ self.SBW.getName()+'.SBW.*'
        for x in self.SBW.methods:
            print x        
        print '\n'

    def WriteOutputToFile(self,filename,dir=None):
        if dir != None:
            filename = os.path.join(dir,filename)
        Fout = file(filename,'w')
        Fout.write(self.output)
        Fout.flush()
        Fout.close()

class StructAnalysis(SBW_base):
    def __init__(self):
        #Get the module instance and load it if necessary ... i think!?
        #Note to self - find out for sure why this only works in __init__ it is a
        #namespace issue but it would be nice to work around it ;-)  - brett
        struct_module_id = psbw.SBWGetModuleInstance('edu.kgi.StructAnalysis')
        if not sbwModuleProxy.moduleDict.has_key(struct_module_id):
            print '<PySCeS_SBW> Adding ' + sbwModuleProxy.ModuleProxy(struct_module_id).pythonName + ' to ModuleProxy (id=' + str(struct_module_id) + ')'
        if not SBW.__dict__.has_key(sbwModuleProxy.ModuleProxy(struct_module_id).pythonName):
            print '<PySCeS_SBW> Adding ' + sbwModuleProxy.ModuleProxy(struct_module_id).pythonName + ' to SBW namespace'
            SBW.__dict__[sbwModuleProxy.ModuleProxy(struct_module_id).pythonName] = sbwModuleProxy.ModuleProxy(struct_module_id)

        #wang the StructAnalysis methods into the StructAnalysis instance as SBW.*
        self.SBW = SBW.edu_kgi_StructAnalysis.StructAnalysis

        # MORE COMING SOON TO AN INTERFaCE NEAR YOU ...........

    def _InitStuff(self):
        #reassign some useful stuff for easy access
        self.rank = self.SBW.getRank()

    def loadSBML(self, sbml_str=None):
        if sbml_str == None:
            sbml_str = self.sbml_string
        else:
            self.sbml_string = sbml_str
        try:
            self.output = SBW.edu_kgi_StructAnalysis.StructAnalysis.loadSBML(sbml_str)
        except Exception, ex:
            print ex
            self.output = str(ex)
        self._InitStuff()
        
    def Run(self, sbml_str=None):
        if sbml_str == None:
            sbml_str = self.sbml_string
        else:
            self.sbml_string = sbml_str
        try:
            self.output = SBW.edu_kgi_StructAnalysis.StructAnalysis.loadSBML(sbml_str)
        except Exception, ex:
            print ex
            self.output = str(ex)
        self._InitStuff()

    def RunWithTests(self, sbml_str=None):
        if sbml_str == None:
            sbml_str = self.sbml_string
        else:
            self.sbml_string = sbml_str
        try:
            self.output = SBW.edu_kgi_StructAnalysis.StructAnalysis.loadSBMLwithTests(sbml_str)
        except Exception, ex:
            self.output = str(ex)
        self._InitStuff()

class DrawNetworkGUI(SBW_base):
    def __init__(self):
        # externally spawn a GUI to avoid locking the console (uses default windows location)
        os.spawnv(os.P_NOWAIT,'c:\\Program Files\\KGI\\SBW\\Layout\\DrawNetwork.exe',[])
        print 'Loading ...'
        sleep(3)
        # as we have loaded the thing already, we can just get the Id
        draw_module_id = psbw.getModuleId('DrawNetwork.GUI')
        if not sbwModuleProxy.moduleDict.has_key(draw_module_id):
            print '<PySCeS_SBW> Adding ' + sbwModuleProxy.ModuleProxy(draw_module_id).pythonName + ' to ModuleProxy (id=' + str(draw_module_id) + ')'
        if not SBW.__dict__.has_key(sbwModuleProxy.ModuleProxy(draw_module_id).pythonName):
            print '<PySCeS_SBW> Adding ' + sbwModuleProxy.ModuleProxy(draw_module_id).pythonName + ' to SBW namespace'
            SBW.__dict__[sbwModuleProxy.ModuleProxy(draw_module_id).pythonName] = sbwModuleProxy.ModuleProxy(draw_module_id)
        self.SBW = SBW.DrawNetwork_GUI.network


    def loadSBML(self,sbml_str=None):
        if sbml_str == None:
            sbml_str = self.sbml_string
        else:
            self.sbml_string = sbml_str
        try:
            self.SBW.loadSBML(sbml_str)
        except Exception, ex:
            print ex
            self.output = str(ex)
        print '\n\n\tClick in the DrawNetwork window to refresh display\n\n'

    def getSBMLstringWithLayout(self):
        self.output = self.SBW.getSBML()
        print "SBML+layout stored as output"

##  class Simulate3D(SBW_base):
    ##  def __init__(self):
        ##  # externally spawn a GUI to avoid locking the console (uses default windows location)
        ##  os.spawnv(os.P_NOWAIT,'c:\\Program Files\\KGI\\Simulate3D\\3Dlauncher.exe',[])
        ##  print 'Loading ...'
        ##  sleep(3)
        ##  # as we have loaded the thing already, we can just get the Id
        ##  threeD_module_id = psbw.getModuleId('Simulate3D')
        ##  if not sbwModuleProxy.moduleDict.has_key(threeD_module_id):
            ##  print '<PySCeS_SBW> Adding ' + sbwModuleProxy.ModuleProxy(threeD_module_id).pythonName + ' to ModuleProxy (id=' + str(threeD_module_id) + ')'
        ##  if not SBW.__dict__.has_key(sbwModuleProxy.ModuleProxy(threeD_module_id).pythonName):
            ##  print '<PySCeS_SBW> Adding ' + sbwModuleProxy.ModuleProxy(threeD_module_id).pythonName + ' to SBW namespace'
            ##  SBW.__dict__[sbwModuleProxy.ModuleProxy(threeD_module_id).pythonName] = sbwModuleProxy.ModuleProxy(threeD_module_id)
        ##  self.SBW = SBW.DrawNetwork_GUI.network

    ##  def loadSBML(self,sbml_str=None):
        ##  if sbml_str != None:
            ##  self.sbml_string = sbml_str
            ##  self.SBW.loadSBML(sbml_str)
        ##  else:
            ##  self.SBW.loadSBML(self.sbml_string)
        ##  print '\n\n\tClick in the DrawNetwork window to refresh display\n\n'

    ##  def getSBMLstringWithLayout(self):
        ##  self.output = self.SBW.getSBML()
        ##  print "SBML+layout stored as output"
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.