Esempio n. 1
0
    def prepare(self):
        """
        Overrides Executor method.
        """
        Executor.prepare(self)

        ## if setGrid hasn't been called yet, create automatic grid
        if not self.gsize:
            self.setGrid()

        if self.protonate:
            reducer = Reduce(self.model,
                             verbose=self.verbose,
                             autocap=self.autocap,
                             tempdir=self.tempdir,
                             cwd=self.cwd,
                             log=self.log,
                             debug=self.debug)
            if self.verbose:
                self.log.add('adding hydrogen atoms to input structure\n')

            self.delphimodel = reducer.run()
        else:
            self.delphimodel = self.model.clone()

        self.delphimodel.xplor2amber()

        if not os.path.exists(self.f_radii):
            self.__prepareRadii()

        if not os.path.exists(self.f_charges):
            self.__prepareCharges(self.f_charges)

        self.delphimodel.writePdb(self.f_pdb)
Esempio n. 2
0
    def prepare( self ):
        """
        Overrides Executor method.
        """
        Executor.prepare( self )
        
##        self.__prepareFolder()
        
        ## if setGrid hasn't been called yet, create automatic grid
        if not self.gsize:
            self.setGrid()
        
        if self.protonate:
            reducer = Reduce( self.model, verbose=self.verbose,
                              autocap=self.autocap,
                              tempdir=self.tempdir, cwd=self.cwd,
                              log=self.log, debug=self.debug )
            if self.verbose: 
                self.log.add('adding hydrogen atoms to input structure\n')
    
            self.delphimodel = reducer.run()
        else:
            self.delphimodel = self.model.clone()
            
        self.delphimodel.xplor2amber()
        
        if not os.path.exists( self.f_charges ):
            self.__prepareCharges( self.f_charges )
        
        self.delphimodel.writePdb( self.f_pdb )
Esempio n. 3
0
    def cleanup(self):
        """
        Tidy up the mess you created.
        """
        if not self.debug:
            T.tryRemove(self.f_pdb)
            if not self.keep_map:
                T.tryRemove(self.f_map)

        Executor.cleanup(self)
Esempio n. 4
0
    def cleanup( self ):
        """
        Tidy up the mess you created.
        """        
        if not self.debug:
            T.tryRemove( self.f_pdb )
            if not self.keep_map:
                T.tryRemove( self.f_map )

        Executor.cleanup( self )
Esempio n. 5
0
 def finish(self):
     """
     Overrides Executor method
     """
     Executor.finish(self)
     self.result = self.parseOutput()
Esempio n. 6
0
    def __init__(self,
                 model,
                 template=None,
                 topologies=None,
                 f_charges=None,
                 f_radii=None,
                 f_map=None,
                 addcharge=True,
                 protonate=True,
                 autocap=False,
                 indi=4.0,
                 exdi=80.0,
                 salt=0.15,
                 ionrad=2,
                 prbrad=1.4,
                 bndcon=4,
                 scale=2.3,
                 perfil=60,
                 **kw):
        """
        @param model: structure for which potential should be calculated
        @type  model: PDBModel
        @param template: delphi command file template [None=use default]
        @type  template: str
        @param f_radii: alternative delphi atom radii file [None=use default]
        @type  f_radii: str
        @param topologies: alternative list of residue charge/topology files
                           [default: amber/residues/all*]
        @type  topologies: [ str ]
        @param f_charges: alternative delphi charge file 
                          [default: create custom]
        @type  f_charges: str
        @param f_map   : output file name for potential map [None= discard]
        @type  f_map   : str
        @param addcharge: build atomic partial charges with AtomCharger
                          [default: True]
        @type  addcharge: bool
        
        @param protonate: (re-)build hydrogen atoms with reduce program (True)
                          see L{Biskit.Reduce}
        @type  protonate: bool
        @param autocap: add capping NME and ACE residues to any (auto-detected)
                        false N- or C-terminal and chain breaks (default: False)
                        see L{Biskit.Reduce} and L{Biskit.PDBCleaner}
        @type  autocap: bool

        @param indi: interior dilectric (4.0)
        @param exdi: exterior dielectric (80.0)
        @param salt: salt conc. in M (0.15)
        @param ionrad: ion radius (2)
        @param prbrad: probe radius (1.4) 
        @param bndcon: boundary condition (4, delphi default is 2)
        @param scale:  grid spacing (2.3)
        @param perfil: grid fill factor in % (for automatic grid, 60) 
        
        @param kw: additional key=value parameters for Executor:
        @type  kw: key=value pairs
        ::
          debug    - 0|1, keep all temporary files (default: 0)
          verbose  - 0|1, print progress messages to log (log != STDOUT)
          node     - str, host for calculation (None->local) NOT TESTED
                          (default: None)
          nice     - int, nice level (default: 0)
          log      - Biskit.LogFile, program log (None->STOUT) (default: None)
        """
        template = template or os.path.join(T.dataRoot(), 'delphi',
                                            self.F_PARAMS)

        tempdir = self.newtempfolder(tempdir=True)  ## create new temp folder
        f_in = tempfile.mktemp('.inp', 'delphi_', dir=tempdir)

        self.f_pdb = tempfile.mktemp('.pdb', 'delphi_', dir=tempdir)

        self.keep_map = f_map is not None
        self.f_map = f_map or \
            tempfile.mktemp( '_mapout.phi', 'delphi_', dir=tempdir )

        ##        self.f_map = None
        self.f_radiisrc = os.path.join(T.dataRoot(), 'delphi', self.F_RADII)
        self.f_radii = f_radii or os.path.join(tempdir, 'radii.siz')

        self.topologies = topologies or self.F_RESTYPES
        self.f_charges = f_charges or tempfile.mktemp(
            '.crg', 'delphi_', dir=tempdir)

        self.protonate = protonate
        self.autocap = autocap
        self.addcharge = addcharge

        ## DELPHI run parameters
        self.indi = indi  # interior dilectric(4.0)
        self.exdi = exdi  # exterior dielectric(80.0)
        self.salt = salt  # salt conc. in M (0.15)
        self.ionrad = ionrad  # ion radius (2)
        self.prbrad = prbrad  # probe radius (1.4)
        self.bndcon = bndcon  # boundary condition (4, delphi default is 2)

        ## DELPHI parameters for custom grid
        self.scale = scale  # grid spacing (2.3)
        self.perfil = perfil  # grid fill factor in % (for automatic grid, 60)
        self.gsize = None
        self.acenter = None
        self.strcenter = '(0.0,0.0,0.0)'

        kw['tempdir'] = tempdir
        kw['cwd'] = tempdir

        Executor.__init__(self,
                          'delphi',
                          template=template,
                          f_in=f_in,
                          args=f_in,
                          catch_err=True,
                          **kw)

        self.model = model
        self.delphimodel = None
Esempio n. 7
0
 def finish( self ):
     """
     Overrides Executor method
     """
     Executor.finish( self )
     self.result = self.parseOutput()
Esempio n. 8
0
    def __init__( self, 
                  model, 
                  template=None, 
                  topologies=None,
                  f_charges=None,
                  f_radii=None,
                  f_map=None,
                  addcharge=True,
                  protonate=True,
                  autocap=False,
                  indi=4.0, exdi=80.0, salt=0.15, ionrad=2, prbrad=1.4, 
                  bndcon=4, scale=2.3, perfil=60, 
                  **kw ):
        """
        @param model: structure for which potential should be calculated
        @type  model: PDBModel
        @param template: delphi command file template [None=use default]
        @type  template: str
        @param f_radii: alternative delphi atom radii file [None=use default]
        @type  f_radii: str
        @param topologies: alternative list of residue charge/topology files
                           [default: amber/residues/all*]
        @type  topologies: [ str ]
        @param f_charges: alternative delphi charge file 
                          [default: create custom]
        @type  f_charges: str
        @param f_map   : output file name for potential map [None= discard]
        @type  f_map   : str
        @param addcharge: build atomic partial charges with AtomCharger
                          [default: True]
        @type  addcharge: bool
        
        @param protonate: (re-)build hydrogen atoms with reduce program (True)
                          see L{Biskit.Reduce}
        @type  protonate: bool
        @param autocap: add capping NME and ACE residues to any (auto-detected)
                        false N- or C-terminal and chain breaks (default: False)
                        see L{Biskit.Reduce} and L{Biskit.PDBCleaner}
        @type  autocap: bool

        @param indi: interior dilectric (4.0)
        @param exdi: exterior dielectric (80.0)
        @param salt: salt conc. in M (0.15)
        @param ionrad: ion radius (2)
        @param prbrad: probe radius (1.4) 
        @param bndcon: boundary condition (4, delphi default is 2)
        @param scale:  grid spacing (2.3)
        @param perfil: grid fill factor in % (for automatic grid, 60) 
        
        @param kw: additional key=value parameters for Executor:
        @type  kw: key=value pairs
        ::
          debug    - 0|1, keep all temporary files (default: 0)
          verbose  - 0|1, print progress messages to log (log != STDOUT)
          node     - str, host for calculation (None->local) NOT TESTED
                          (default: None)
          nice     - int, nice level (default: 0)
          log      - Biskit.LogFile, program log (None->STOUT) (default: None)
        """
        template = template or os.path.join(T.dataRoot(),'delphi',self.F_PARAMS)
        
        tempdir = self.newtempfolder( tempdir=True )  ## create new temp folder
        f_in = tempfile.mktemp( '.inp', 'delphi_', dir=tempdir )
        
        self.f_pdb = tempfile.mktemp( '.pdb', 'delphi_', dir=tempdir)

        self.keep_map = f_map is not None
        self.f_map = f_map or \
            tempfile.mktemp( '_mapout.phi', 'delphi_', dir=tempdir )

##        self.f_map = None
        self.f_radii = f_radii or os.path.join(
                                             T.dataRoot(),'delphi',self.F_RADII)
        self.topologies = topologies or self.F_RESTYPES
        self.f_charges = f_charges or tempfile.mktemp( '.crg', 'delphi_',
                                                       dir=tempdir )
        
        self.protonate = protonate
        self.autocap = autocap
        self.addcharge = addcharge
        
        ## DELPHI run parameters
        self.indi=indi  # interior dilectric(4.0)
        self.exdi=exdi  # exterior dielectric(80.0)
        self.salt=salt  # salt conc. in M (0.15)
        self.ionrad=ionrad # ion radius (2)
        self.prbrad=prbrad # probe radius (1.4) 
        self.bndcon=bndcon # boundary condition (4, delphi default is 2)
        
        ## DELPHI parameters for custom grid
        self.scale=scale   # grid spacing (2.3)
        self.perfil=perfil # grid fill factor in % (for automatic grid, 60)
        self.gsize = None
        self.acenter = None
        self.strcenter = '(0.0,0.0,0.0)'
        
        kw['tempdir'] = tempdir
        kw['cwd']     = tempdir
        
        Executor.__init__( self, 'delphi', 
                           template=template,
                           f_in=f_in,
                           args=f_in,
                           catch_err=True,
                           **kw )
        
        self.model = model
        self.delphimodel = None