def prepareSource(inFile, outFile, wat=1, sort=1, foldx=1, surf=1, dens=1, cons=1, dssp=1, delphi=0): """ Strip waters, add profiles and save as doped source model. """ source = PDBModel(inFile) if wat: source.remove(lambda a: a['residue_name'] in ['HOH', 'WAT', 'TIP3']) if sort: source = source.sort() doper = PDBDope(source) if surf: ## doper.addASA() ## doper.addSurfaceMask() doper.addSurfaceRacer(probe=1.4) if foldx: doper.addFoldX() if dens: doper.addDensity() if dssp: doper.addSecondaryStructure() if delphi: doper.addDelphi() try: if cons: doper.addConservation() except: errWriteln('\n ERROR: Conservation profile could not be added to '\ + str(sourceOut) + '\n' ) source.saveAs(outFile) return source
def changeModel(inFile, prefix, sourceModel): print '\nget ' + os.path.basename(inFile) + '..', model = PDBModel(inFile) model.update() model = model.sort() eq = model.equals(sourceModel) if not eq[0] and eq[1]: raise ConvertError('source and other models are not equal: ' + str(eq)) # model.validSource() model.setSource(sourceModel.validSource()) #model.atomsChanged = 0 for k in model.atoms: model.atoms[k, 'changed'] = N0.all(model[k] == sourceModel[k]) model.xyzChanged = (0 != N0.sum(N0.ravel(model.xyz - sourceModel.xyz))) model.update(updateMissing=1) if model.xyzChanged: doper = PDBDope(model) if 'MS' in sourceModel.atoms.keys(): doper.addSurfaceRacer(probe=1.4) if 'density' in sourceModel.atoms.keys(): doper.addDensity() if 'foldX' in sourceModel.info.keys(): doper.addFoldX() if 'delphi' in sourceModel.info.keys(): doper.addDelphi() outFile = os.path.dirname( inFile ) + '/' + prefix +\ T.stripFilename( inFile ) + '.model' T.dump(model, outFile) print '-> ' + os.path.basename(outFile)
def changeModel( inFile, prefix, sourceModel ): print '\nget ' + os.path.basename( inFile ) + '..', model = PDBModel( inFile ) model.update() model = model.sort() eq = model.equals( sourceModel ) if not eq[0] and eq[1]: raise ConvertError('source and other models are not equal: ' + str(eq)) # model.validSource() model.setSource( sourceModel.validSource() ) #model.atomsChanged = 0 for k in model.atoms: model.atoms[k,'changed'] = N0.all( model[k] == sourceModel[k] ) model.xyzChanged = ( 0 != N0.sum( N0.ravel( model.xyz - sourceModel.xyz)) ) model.update( updateMissing=1 ) if model.xyzChanged: doper = PDBDope( model ) if 'MS' in sourceModel.atoms.keys(): doper.addSurfaceRacer( probe=1.4 ) if 'density' in sourceModel.atoms.keys(): doper.addDensity() ## if 'foldX' in sourceModel.info.keys(): ## doper.addFoldX() if 'delphi' in sourceModel.info.keys(): doper.addDelphi() outFile = os.path.dirname( inFile ) + '/' + prefix +\ T.stripFilename( inFile ) + '.model' T.dump( model, outFile ) print '-> ' + os.path.basename( outFile )
def prepareSource( inFile, outFile, wat=1, sort=1, surf=1, dens=1, cons=1, dssp=1, delphi=0 ): """ Strip waters, add profiles and save as doped source model. """ source = PDBModel( inFile ) if wat: source.remove( lambda a: a['residue_name'] in ['HOH','WAT','TIP3'] ) if sort: source = source.sort() doper = PDBDope( source ) if surf: ## doper.addASA() ## doper.addSurfaceMask() doper.addSurfaceRacer( probe=1.4 ) ## if foldx: ## doper.addFoldX() if dens: doper.addDensity() if dssp: doper.addSecondaryStructure() if delphi: doper.addDelphi() try: if cons: doper.addConservation( ) except: errWriteln('\n ERROR: Conservation profile could not be added to '\ + str(sourceOut) + '\n' ) source.saveAs( outFile ) return source