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()')