Пример #1
0
    def parseReference(self, fpdb, dry_out=None):
        flushPrint("parsing " + fpdb + "...")
        m = PDBModel(fpdb)

        solute_res = m.atom2resMask(logical_not(m.maskSolvent()))
        self.lenres = self.lenres or sum(solute_res)
        self.lenatoms = len(m) - sum(m.maskH2O())

        if dry_out:
            m.remove(m.maskH2O())
            m.writePdb(dry_out)
        flushPrint('done.\n')
Пример #2
0
    def parseReference(self, fpdb, dry_out=None ):
        flushPrint("parsing "+fpdb+"...")
        m = PDBModel( fpdb )
        
        solute_res = m.atom2resMask( logical_not( m.maskSolvent() )  )
        self.lenres = self.lenres or sum( solute_res )
        self.lenatoms = len( m ) - sum( m.maskH2O() )

        if dry_out:
            m.remove( m.maskH2O() )
            m.writePdb( dry_out )
        flushPrint('done.\n')
Пример #3
0
if __name__ == '__main__':

    options = cmdDict( {'ter':1} )

    if len( options ) < 2:
        _use( options )

    skip = None
    if options.has_key('wat'):
        skip = ['TIP3', 'WAT', 'HOH', 'H2O', 'Na+', 'Cl-']

    fin = [ absfile(f) for f in toList( options['i'] ) ]
    ter = int( options['ter'] )
    codeprefix = options.has_key( 'codeprefix' )

    for f in fin:

        fout= options.get('o', None) or stripSuffix( f ) + '.pdb'

        m = PDBModel( f )

        if codeprefix:
            code = m.pdbCode or ''
            fpath, fname = osp.split( fout )
            fout = osp.join( fpath, code + fname )

        m.writePdb( fout, ter=ter )

        errWriteln('dumped ' + fout )

Пример #4
0
    def process_all( self, file_dic, keep_hetatoms=0 ):
        """
        Process PDB files in file_dic.
        The PDB is read from:
          - L{TemplateSearcher.F_NR}

        and cleaned files are written to:
          - L{F_CLEANED}
          - L{F_COFFEE}
          - L{F_MODELLER}

        If the file L{F_CLEANED} already exists, this file is
        used to write modeller and t-coffee pdbs.

        @param file_dic: dictionary mapping filenames of pdb files to
                         the chains of interest, e.g. { fname : chain_id, }
        @type  file_dic: {str:str}
        @param keep_hetatoms: keep hetatoms (default: 0)
        @type  keep_hetatoms: 0|1
        """
        fasta = ""
        c = None

        for f, id in file_dic.items():

            self.logWrite( '\nCLEANING ' + f + '...')

            try:
                code = string.split(f, '/')[-1][:4]

                ## clean to standard PDB
                c = PDBCleaner( f, self.log )

                ## if /templates/nr_cleaned/pfb-file exists
                if os.path.exists(
                    self.outFolder+self.F_CLEANED + code + '.pdb' ):

                    model = PDBModel( self.outFolder+self.F_CLEANED \
                                      + code + '.pdb' )

                ## read pdb from /templates/nr
                else:
                    model = c.process( keep_hetatoms=keep_hetatoms )

                    ## write complete cleaned PDB
                    model.writePdb( self.outFolder+self.F_CLEANED \
                                    + code + '.pdb')

                code = model.pdbCode
                title = code + '_' + id

                ## extract needed chain
                if len( id ) > 0:
                    model = self.__chain_by_id( model, id )

                fname =  "%s%s.pdb" % (self.outFolder + self.F_MODELLER, title)
                self.write_modeller_pdb( model, fname )

                ## write T_coffee CA trace with res sequence
                fname = "%s%s.alpha"%(self.outFolder + self.F_COFFEE, title)
                self.write_tcoffee_pdb( model, fname )

                ## append fasta
                fasta += self.fasta_sequence( title, model.sequence() )

            except:
                self.logWrite( 'Error cleaning ' + f)
                self.logWrite( T.lastError() )
                self.err_cleaner = c
                self.err_file = f

        fasta_out = open( self.outFolder + self.F_FASTA, 'w' )
        fasta_out.write( fasta )
        fasta_out.close()
Пример #5
0
    errWriteln("loading pdbs...")

    m1 = PDBModel(f1)
    m2 = PDBModel(f2)

    if options.has_key('c1'):
        m1 = m1.takeChains(toIntList(options['c1']))

    if options.has_key('c2'):
        m2 = m2.takeChains(toIntList(options['c2']))

    m1.removeRes('TIP3')
    m2.removeRes('TIP3')

    m1.sort()
    m2.sort()

    errWriteln("compare atoms of pdbs...")
    mask1, mask2 = m1.equalAtoms(m2)

    errWriteln("removing %i atoms from %s" % (sum(logical_not(mask1)), f1))
    m1.remove(logical_not(mask1))

    errWriteln("removing %i atoms from %s" % (sum(logical_not(mask2)), f2))
    m2.remove(logical_not(mask2))

    errWriteln("writing new pdbs...")
    m1.writePdb(o1)
    m2.writePdb(o2)
Пример #6
0
    errWriteln("loading pdbs...")
    
    m1 = PDBModel( f1 )
    m2 = PDBModel( f2 )

    if options.has_key('c1'):
        m1 = m1.takeChains( toIntList( options['c1'] ) )

    if options.has_key('c2'):
        m2 = m2.takeChains( toIntList( options['c2'] ) )

    m1.removeRes( 'TIP3' )
    m2.removeRes( 'TIP3' )

    m1.sort()
    m2.sort()

    errWriteln("compare atoms of pdbs...")
    mask1, mask2 = m1.equalAtoms( m2 )

    errWriteln("removing %i atoms from %s" % (sum( logical_not( mask1 ) ), f1))
    m1.remove( logical_not( mask1 ) )
    
    errWriteln("removing %i atoms from %s" % (sum( logical_not( mask2 ) ), f2))
    m2.remove( logical_not( mask2 ) )

    errWriteln("writing new pdbs..." )
    m1.writePdb( o1 )
    m2.writePdb( o2 )