Esempio n. 1
0
def clear_databases():
    EnzymeType.drop_collection()
    Sequence.drop_collection()
    Paper.drop_collection()
    Reaction.drop_collection()
    Activity.drop_collection()
    Molecule.drop_collection()
Esempio n. 2
0
def init_db():
    form = InitDB()

    if form.validate_on_submit() == True:
        if form.rxns.data != None:
            rxns_data = form.rxns.data
            filename = secure_filename(rxns_data.filename)
            try:
                rxns_data.save(filename)
                yaml_dict = rxn_rules_to_db.load_yaml_dict(filename)
                Reaction.drop_collection()
                current_app.db_queue.enqueue(rxn_rules_to_db.load_into_mongo,
                                             yaml_dict)
                flash("Yaml loaded ok, reactions_to_db in queue", 'success')
            except:
                flash("Failed to load reactions", 'fail')
            os.remove(filename)

        if form.biocatdb.data != None:
            filename = secure_filename(form.biocatdb.data.filename)
            form.biocatdb.data.save(filename)
            try:
                df = biocatdb_excel_to_db.load_df(filename)

                Paper.drop_collection()
                Activity.drop_collection()
                Molecule.drop_collection()
                Sequence.drop_collection()
                current_app.db_queue.enqueue(biocatdb_excel_to_db.df_to_db, df)
                current_app.db_queue.enqueue(make_molecule_db.make_fp_db)
                flash("Biocatdb excel loaded ok, added to queue", "success")
            except:
                flash("Problem loading biocatdb_2 excel", "fail")
            os.remove(filename)

        if form.sequences.data != None:
            filename = secure_filename(form.sequences.data.filename)
            form.sequences.data.save(filename)
            try:

                if '.xlsx' in filename:
                    df = pd.read_excel(filename)
                elif '.csv' in filename:
                    df = pd.read_csv(filename)
                else:
                    df = None
                    Exception('File must be .csv or .xlsx')

                current_app.db_queue.enqueue(task_add_sequence_data, df)
                flash("Sequences excel loaded ok, added to queue", "success")
            except Exception as e:
                flash(f"Problem loading sequences excel - {e}", "fail")

            os.remove(filename)

        if form.mongo_dump.data != None:
            filename = secure_filename(form.mongo_dump.data.filename)
            form.mongo_dump.data.save(filename)

            try:
                if 'mongo_dump.gz' in filename:
                    execute_mongo_restore(filename)
                else:
                    Exception('File must be mongo_dump.gz')

                flash("mongo dump loaded ok", "success")
            except Exception as e:
                flash(f"Problem loading mongo dump - {e}", "fail")

    return render_template('init_db/init_db.html', form=form)
                                enzyme_types=enzymes,
                                cofactors=yaml_dict[rxn_name]['enzymes'],
                                positive_tests=yaml_dict[rxn_name]['positive_tests'],
                                negative_tests=yaml_dict[rxn_name]['negative_tests'],
                                type=yaml_dict[rxn_name]['type'])

            if 'experimental' in yaml_dict[rxn_name]:
                reaction.experimental = bool(yaml_dict[rxn_name]['experimental'])

            if 'two_step' in yaml_dict[rxn_name]:
                reaction.two_step = bool(yaml_dict[rxn_name]['two_step'])

            reaction.save()

def load_reaction_rules_into_mongo(yaml_file=YAML_PATH):
    yaml_dict = load_yaml_dict(yaml_file)
    load_into_mongo(yaml_dict)




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

    Reaction.drop_collection()
    load_reaction_rules_into_mongo()

    test_reaction = Reaction.objects.get(name='Primary alcohol oxidation')
    print(test_reaction.smarts)