def RetrieveChEMBLFiltersInfo(): """Retrieve information for ChEMBL filters.""" MayaChemToolsDataDir = MiscUtil.GetMayaChemToolsLibDataPath() ChEMBLFiltersFilePath = os.path.join(MayaChemToolsDataDir, "ChEMBLFilters.csv") MiscUtil.PrintInfo( "\nRetrieving ChEMBL alerts SMARTS patterns from file %s" % (ChEMBLFiltersFilePath)) Delimiter = ',' QuoteChar = '"' IgnoreHeaderLine = True FilterLinesWords = MiscUtil.GetTextLinesWords(ChEMBLFiltersFilePath, Delimiter, QuoteChar, IgnoreHeaderLine) ChEMBLFiltersMap = {} ChEMBLFiltersMap["FilterTypes"] = [] ChEMBLFiltersMap["ID"] = {} ChEMBLFiltersMap["SMARTS"] = {} for LineWords in FilterLinesWords: FilterType = LineWords[0] ID = LineWords[1] SMARTS = LineWords[2] if not FilterType in ChEMBLFiltersMap["FilterTypes"]: ChEMBLFiltersMap["FilterTypes"].append(FilterType) ChEMBLFiltersMap["ID"][FilterType] = [] ChEMBLFiltersMap["SMARTS"][FilterType] = [] ChEMBLFiltersMap["ID"][FilterType].append(ID) ChEMBLFiltersMap["SMARTS"][FilterType].append(SMARTS) OptionsInfo["ChEMBLFiltersMap"] = ChEMBLFiltersMap MiscUtil.PrintInfo("\nTotal number alerts: %d" % len(FilterLinesWords)) MiscUtil.PrintInfo( "Number of filter family types: %d\nFilter familty types: %s\n" % (len(ChEMBLFiltersMap["FilterTypes"]), ", ".join( ChEMBLFiltersMap["FilterTypes"]))) for FilterType in ChEMBLFiltersMap["FilterTypes"]: MiscUtil.PrintInfo( "Filter family type: %s; Number of alerts: %d" % (FilterType, len(ChEMBLFiltersMap["ID"][FilterType]))) MiscUtil.PrintInfo("")
def RetrieveReactionNamesInfo(): """Retrieve reaction names information.""" RxnNamesFilePath = OptionsInfo["RxnNamesFile"] if RxnNamesFilePath is None: MayaChemToolsDataDir = MiscUtil.GetMayaChemToolsLibDataPath() RxnNamesFilePath = os.path.join(MayaChemToolsDataDir, "ReactionNamesAndSMIRKS.csv") MiscUtil.PrintInfo( "\nRetrieving reaction names and SMIRKS patterns from file %s" % (RxnNamesFilePath)) if not os.path.exists(RxnNamesFilePath): MiscUtil.PrintError("The reaction names file, %s, doesn't exist.\n" % (RxnNamesFilePath)) Delimiter = ',' QuoteChar = '"' IgnoreHeaderLine = True RxnLinesWords = MiscUtil.GetTextLinesWords(RxnNamesFilePath, Delimiter, QuoteChar, IgnoreHeaderLine) RxnNamesMap['Names'] = [] RxnNamesMap['SMIRKSPattern'] = {} for LineWords in RxnLinesWords: Name = LineWords[0] SMIRKSPattern = LineWords[1] if Name in RxnNamesMap['SMIRKSPattern']: MiscUtil.PrintWarning("Ignoring duplicate reaction name: %s..." % Name) else: RxnNamesMap['Names'].append(Name) RxnNamesMap['SMIRKSPattern'][Name] = SMIRKSPattern if not len(RxnNamesMap['Names']): MiscUtil.PrintError( "Failed to retrieve any reaction names and SMIRKS patterns...") MiscUtil.PrintInfo( "Total number of reactions present in reaction names and SMIRKS file: %d" % (len(RxnNamesMap['Names'])))