コード例 #1
0
            prx = select([md_tab.c.molecule_design_id, ssd_tab.c.modification,
                          ssd_tab.c.sequence],
                         where_clause,
                         from_obj=md_tab.outerjoin(ssd_tab)).execute()
        elif mt_id == 'COMPOUND':
            cmp_tab = metadata.tables['compound']
            prx = select([md_tab.c.molecule_design_id, cmp_tab.c.smiles],
                         where_clause,
                         from_obj=md_tab.outerjoin(cmp_tab)).execute()
        cch = dict([(row[0], row[1:]) for row in prx.fetchall()])
    print 'Fetching molecule designs.'
    print
    mt = sess.query(MoleculeType).filter_by(molecule_type_id=mt_id).one()
    new_structs = set()
    mds = sess.query(MoleculeDesign).filter_by(molecule_type=mt).all()
    for idx, md in enumerate(mds):
        print '%s: %d (%3d %%)' % (md.molecule_type_id,
                                  md.molecule_design_id,
                                  int((idx + 1) * 100 / len(mds)))
        process_design(md, cch[md.molecule_design_id], new_structs)
    sess.add_all(new_structs)
    if COMMIT and len(WARNINGS) == 0:
        sess.commit()
    else:
        if WARNINGS:
            print 'Warnings occurred - rolling back transaction.'
            print 'Warning messages:'
            print '\n'.join(WARNINGS)
        sess.rollback()