Definition of MDT features¶
SOAP feature module for defining MDT features.
- class feature.feature(features, mlib=None)[source]¶
Define the features for calculating statistics from structures
- Parameters:
features (str) – the string representation of features.
Feature definition mini language:
features => feature [,features] feature => type, number of bins, #, range, [,#, start value] #start value will be zero if not defined
Example:
features='d30#15'# 0-30A, 0.5 bin size
Types are from MDT:
def _gen_single_feature(self,sfc,end,numofbin,start): mlib=self.mlib if end > 0: ub=mdt.uniform_bins(numofbin, start, (float(end)-float(start))/numofbin) if sfc[0:2]=='as': return mdt.features.AtomType(mlib, pos2=True) elif sfc=='b2': return mdt.features.FractionalAtomAccessibility(mlib,bins=mdt.uniform_bins(1, 0,0.1)+mdt.uniform_bins(1, 0.1,0.9)) elif sfc=='bs2': return mdt.features.FractionalAtomAccessibility(mlib,pos2=True, bins=mdt.uniform_bins(1, 0,0.1)+mdt.uniform_bins(1, 0.1,0.9)) elif sfc[0:1]=='a': return mdt.features.AtomType(mlib) elif sfc[0:2]=='rs': return mdt.features.ResidueType(mlib,delta=numofbin, pos2=True) elif sfc[0:1]=='r': return mdt.features.ResidueType(mlib,delta=numofbin) elif sfc in ['dr']: return mdt.features.ResidueDistance(mlib, bins=ub) elif sfc[0:1]=='m': return mdt.features.MainchainConformation(mlib) elif sfc[0:2]=='ms': return mdt.features.MainchainConformation(mlib,pos2=True) elif sfc[0:2]=='ca': return mdt.features.AngleType(mlib) elif sfc[0:2]=='cb': return mdt.features.BondType(mlib) elif sfc[0:2]=='cd': return mdt.features.DihedralType(lib) elif sfc[0:2]=='co': return mdt.features.BondLength(mlib,bins=ub) elif sfc[0:2]=='cn': return mdt.features.Angle(mlib,bins=ub) elif sfc[0:2]=='ci': return mdt.features.Dihedral(mlib,bins=ub) elif sfc[0:2]=='ps': return mdt.features.PsiDihedral(mlib,bins=ub) elif sfc[0:2]=='ph': return mdt.features.PhiDihedral(mlib,bins=ub) elif sfc in ['d','dca','dmc','dsc','dl']: return mdt.features.AtomDistance(mlib,bins=ub) elif sfc=='l': return mdt.features.ResidueAccessibility(mlib,bins=ub) elif sfc=='b': return mdt.features.FractionalAtomAccessibility(mlib,bins=ub) elif sfc=='bs': return mdt.features.FractionalAtomAccessibility(mlib,bins=ub,pos2=True) elif sfc=='ba30': return mdt.features.AtomAccessibility(mlib,bins=mdt.uniform_bins(30, 0, 0.5)) elif sfc=='bas30': return mdt.features.AtomAccessibility(mlib,bins=mdt.uniform_bins(30, 0, 0.5),pos2=True) elif sfc=='s2': return mdt.features.ResidueIndexDifference(mlib, bins=mdt.uniform_bins(1, -1,1)+mdt.uniform_bins(1, 1,1), absolute=False) elif sfc=='s33': return mdt.features.ResidueIndexDifference(mlib, bins=mdt.uniform_bins(1, -10015,10000)+mdt.uniform_bins(31, -15,1)+mdt.uniform_bins(1, 16,100000), absolute=False) elif sfc in ['dt','dtl']: return mdt.features.TupleDistance(mlib,bins=ub) elif sfc=='g': return mdt.features.TupleAngle1(mlib,bins=ub) elif sfc=='gs': return mdt.features.TupleAngle2(mlib,bins=ub) elif sfc=='h': return mdt.features.TupleDihedral1(mlib,bins=ub) elif sfc[0]=='t': return mdt.features.TupleType(mlib) elif sfc[:2]=='ts': return mdt.features.TupleType(mlib, pos2=True) else: raise Exception('can not find feature '+sfc+' in module feature._gen_single_feature()')