Beispiel #1
0
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("")
Beispiel #2
0
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'])))