else:
            print('Error no activity category is suitable')
            return None

    def _log_time(self, msg):
        if self.log_times == True:
            print(msg)

    def _log(self, msg):
        if self.print_log == True:
            print(msg)


if __name__ == '__main__':
    from retrobiocat_web.mongo.default_connection import make_default_connection
    make_default_connection()

    t0 = time.time()
    scorer = SubstrateSpecificityScorer(log_times=True)
    t1 = time.time()
    print(f"Time to load = {round(t1-t0,3)}")
    reactionName = 'All'
    enzyme = 'CAR'
    product = 'CCc1ccc(C=O)cc1'

    score, info, top_hits_json = scorer.scoreReaction(reactionName,
                                                      enzyme,
                                                      product,
                                                      None,
                                                      None,
                                                      sim_cutoff=0.5,
    for rxn in query_result:
        rxns[rxn.name] = []
        for rxn_string in rxn.smarts:
            rxns[rxn.name].append(rxn_string)
    return rxns


def load_rules_by_type(query_result):
    rules_by_type = {}
    for rxn in query_result:
        rule_type = rxn.type
        if rule_type not in rules_by_type:
            rules_by_type[rule_type] = []
        rules_by_type[rule_type].append(rxn.name)
    return rules_by_type


if __name__ == '__main__':
    default_connection.make_default_connection()

    t0 = time.time()
    query_result = get_reactions()
    rxns = load_rxns(query_result)
    reactionEnzymeCofactorDict = load_cofactors(query_result)
    reactions, enzymes, reaction_enzyme_map = load_reactions_and_enzymes(
        query_result)
    t1 = time.time()

    print(f"Time to load rules = {round(t1-t0, 3)}")
    print(reactions)