예제 #1
0
 def test_ftm(self):
     """Test if ftm is running properly"""
     result = getBBRCDesc.getBBRCDescResult(self.data,"FTM", 6)
     expected_atts = 31
     expected_data_length = 32
     self.assertEqual(expected_atts,len(result.domain.attributes))
     self.assertEqual(expected_data_length, len(result[0]))
예제 #2
0
 def test_smartsRecalc(self):
     """Test bbrc feature recalculation"""
     result = getBBRCDesc.getBBRCDescResult(self.data, "FTM", 6)
     smarts = [smrt.name for smrt in result.domain.attributes[len(self.data.domain.attributes):]]
     result2 = getBBRCDesc.getSMARTSrecalcDesc(self.data,smarts)
     #expected_atts = 3
     self.assertEqual(len(result),len(result2))
예제 #3
0
 def test_ftm(self):
     """Test if ftm is running properly"""
     result = getBBRCDesc.getBBRCDescResult(self.data, "FTM", 6)
     expected_atts = 31
     expected_data_length = 32
     self.assertEqual(expected_atts, len(result.domain.attributes))
     self.assertEqual(expected_data_length, len(result[0]))
예제 #4
0
    def getDescriptors(self, smiles):
        self.getSmilesData(smiles)

        # Calculate descriptors defined in the model files
        descList = self.model.varNames
   
        savedSmilesData = dataUtilities.DataTable(self.smilesData)

        #Try 3 time to get All compounds descriptors
        nTry = 3       
        errorDesc = "" 
        while nTry > 0:
           try:
                traceLog = "Model Location:"+str(self.modelLocation)+"\n"
                nBadEx = 0        
                # Determine Signature and non-Signature descriptor names
                cinfonyDesc, clabDesc, signatureHeight, bbrcDesc, signDesc = descUtilities.getDescTypes(descList)
                # Signatures
                if "sign" in DescMethodsAvailable and signatureHeight:
                    traceLog += "Calculating signatures...\n"
                    print "Calculating signatures...."
                    preCalcData = dataUtilities.DataTable(self.preDefSignatureFile)
                    startHeight = 0                # Not used desc ignored in model prediction
                    endHeight = signatureHeight  
                    self.smilesData  = getSignatures.getSignatures(self.smilesData, startHeight, endHeight, preCalcData)

                # C-Lab desc
                if "clab" in DescMethodsAvailable and clabDesc:
                    traceLog += "Calculating C-Lab...\n"
                    print "Calculating C-Lab desc...."
                    self.smilesData = ClabUtilities.appendCLabDesc(clabDesc, self.smilesData)

                # Cinfony
                if cinfonyDesc:
                    traceLog += "Calculating Cinfony...\n"
                    print "Calculating Cinfony desc..."
                    self.smilesData = getCinfonyDesc.getCinfonyDescResults(self.smilesData, cinfonyDesc, radius = 5)

                # bbrcDesc
                if "bbrc" in DescMethodsAvailable and bbrcDesc:
                    traceLog += "Calculating BBRC...\n"
                    print "Calculating BBRC desc..."
                    self.smilesData = getBBRCDesc.getBBRCDescResult(self.smilesData, algo = "FTM", minSupPar = 1, descList = bbrcDesc)

                # Detect if the descripts calaculation or something else went wrong!
                for ex in self.smilesData:
                   if sum([ex[attr].isSpecial() for attr in self.smilesData.domain.attributes]) == len(self.smilesData.domain.attributes):
                        nBadEx +=1
                if nBadEx:
                    traceLog += "WARNING: Desc. Calculation: From the "+str(len(self.smilesData))+" compounds, "+str(nBadEx)+" could not be calculated!\n"
                    print "WARNING: Desc. Calculation: From the "+str(len(self.smilesData))+" compounds, "+str(nBadEx)+" could not be calculated!"
                    print "WARNING:   Tying again..."
                    self.smilesData = dataUtilities.DataTable(savedSmilesData)
                    nTry -= 1
                else:
                    nTry = 0
           except Exception, e:
                errorDesc = "Error Calculating Descriptors:;"+traceLog+str(e)+";"
                nTry -= 1
예제 #5
0
 def test_bbrc(self):
     """ Test if bbrc is running properly """
     import bbrc
     # the minimum support for BBRC is absolute not relative like for FTM
     result = getBBRCDesc.getBBRCDescResult(self.data, "BBRC", 2)
     expected_atts = 9
     expected_data_length = 10
     self.assertEqual(expected_atts,len(result.domain.attributes))
     self.assertEqual(expected_data_length, len(result[0]))
예제 #6
0
 def test_bbrc(self):
     """ Test if bbrc is running properly """
     import bbrc
     # the minimum support for BBRC is absolute not relative like for FTM
     result = getBBRCDesc.getBBRCDescResult(self.data, "BBRC", 2)
     expected_atts = 9
     expected_data_length = 10
     self.assertEqual(expected_atts, len(result.domain.attributes))
     self.assertEqual(expected_data_length, len(result[0]))
예제 #7
0
 def test_smartsRecalc(self):
     """Test bbrc feature recalculation"""
     result = getBBRCDesc.getBBRCDescResult(self.data, "FTM", 6)
     smarts = [
         smrt.name for smrt in
         result.domain.attributes[len(self.data.domain.attributes):]
     ]
     result2 = getBBRCDesc.getSMARTSrecalcDesc(self.data, smarts)
     #expected_atts = 3
     self.assertEqual(len(result), len(result2))
예제 #8
0
    def getDescriptors(self, smiles):
        self.getSmilesData(smiles)

        # Calculate descriptors defined in the model files
        descList = self.model.varNames

        savedSmilesData = dataUtilities.DataTable(self.smilesData)

        #Try 3 time to get All compounds descriptors
        nTry = 3
        errorDesc = ""
        while nTry > 0:
            try:
                #if True:
                traceLog = "Model Location:" + str(self.modelLocation) + "\n"
                nBadEx = 0
                # Determine Signature and non-Signature descriptor names
                cinfonyDesc, clabDesc, signatureHeight, bbrcDesc, signDesc = descUtilities.getDescTypes(
                    descList)
                # Signatures
                if "sign" in DescMethodsAvailable and signatureHeight:
                    traceLog += "Calculating signatures...\n"
                    print "Calculating signatures...."
                    preCalcData = dataUtilities.DataTable(
                        self.preDefSignatureFile)
                    startHeight = 0  # Not used desc ignored in model prediction
                    endHeight = signatureHeight
                    self.smilesData = getSignatures.getSignatures(
                        self.smilesData, startHeight, endHeight, preCalcData)

                # C-Lab desc
                if "clab" in DescMethodsAvailable and clabDesc:
                    traceLog += "Calculating C-Lab...\n"
                    print "Calculating C-Lab desc...."
                    self.smilesData = ClabUtilities.appendCLabDesc(
                        clabDesc, self.smilesData)

                # Cinfony
                if cinfonyDesc:
                    traceLog += "Calculating Cinfony...\n"
                    print "Calculating Cinfony desc..."
                    self.smilesData = getCinfonyDesc.getCinfonyDescResults(
                        self.smilesData, cinfonyDesc, radius=5)

                # bbrcDesc
                if "bbrc" in DescMethodsAvailable and bbrcDesc:
                    traceLog += "Calculating BBRC...\n"
                    print "Calculating BBRC desc..."
                    self.smilesData = getBBRCDesc.getBBRCDescResult(
                        self.smilesData,
                        algo="FTM",
                        minSupPar=1,
                        descList=bbrcDesc)

                # Detect if the descripts calaculation or something else went wrong!
                for ex in self.smilesData:
                    if sum([
                            ex[attr].isSpecial()
                            for attr in self.smilesData.domain.attributes
                    ]) == len(self.smilesData.domain.attributes):
                        nBadEx += 1
                if nBadEx:
                    traceLog += "WARNING: Desc. Calculation: From the " + str(
                        len(self.smilesData)) + " compounds, " + str(
                            nBadEx) + " could not be calculated!\n"
                    print "WARNING: Desc. Calculation: From the " + str(
                        len(self.smilesData)) + " compounds, " + str(
                            nBadEx) + " could not be calculated!"
                    print "WARNING:   Tying again..."
                    self.smilesData = dataUtilities.DataTable(savedSmilesData)
                    nTry -= 1
                else:
                    nTry = 0
            #else:
            except Exception, e:
                errorDesc = "Error Calculating Descriptors:;" + traceLog + str(
                    e) + ";"
                nTry -= 1