def sample_loop(self): while True: #try: conn = mddb_utils.get_dbconn(self.param_dict['dbname'], self.param_dict['dbuser'], self.param_dict['dbhost'], self.param_dict['dbpass']) res = mddb_utils.execute_query(conn, "select param_value from ControlParams where param_name = 'sampleloop'") print datetime.datetime.now() try: nt = mddb_utils.execute_query(conn, "select resample_blocking(E'{gmdhost}:{gmdport}')".format(**self.param_dict)) except Exception as e: m = "Error {0}".format(str(e)) print m try: mddb_utils.execute_query(conn, "insert into ErrorMessages values (statement_timestamp(),{0},{1})".format("sample_loop", m.encode("utf-8"))) except: pass nt = 0 time.sleep(2) continue if int(nt) > 0: time.sleep(0.05) else: time.sleep(2) print res if res == 'quitting': mddb_utils.execute_query(conn, "select controlparams_upsert('sampleloop', 'notrunning')") mddb_utils.execute_query(conn, "update ExpJobs set active = False;") conn.close() break cur = conn.cursor() cur.execute('select S.subspace_id from subspaces S, expjobs E where S.subspace_id = E.subspace_id group by S.subspace_id having bool_or(active)') num_active_subspaces = cur.rowcount if num_active_subspaces == 0: cur = conn.cursor(cursor_factory=psycopg2.extras.RealDictCursor) cur.execute('select * from mdq_pop()') if cur.rowcount > 0: ss_dict = cur.fetchone() if any(ss_dict.values()): ss_dict['protein_seq'] = "".join(ss_dict['expanded_terms']) mddb_utils.subspace_init(dict(self.param_dict.items() + ss_dict.items())) cur.close() conn.commit() conn.close()
def load_trj(self,d): print d d2 = copy.deepcopy(self.param_dict) d2.update(d) d = d2 print d pdbid = d['pdb_id'] query = "SELECT SS.subspace_id, SS.seqid FROM seq_pdb SP, seq_subspace SS WHERE SP.pdb_id = %s AND SP.seqid = SS.seqid" conn = mddb_utils.get_dbconn(d['dbname'], d['dbuser'], d['dbhost'], d['dbpass']) cur = conn.cursor() cur.execute(query,(pdbid,)) rows = cur.fetchall() ss_id = None seq_id = None if (len(rows) == 0): print "Creating New Subspace:" query = "SELECT seqid from seq_pdb where pdb_id = %s" cur = conn.cursor() cur.execute(query,(pdbid,)) seqid = cur.fetchall()[0][0] cur.close() self.update_dict(d,pdbid) self.config_ss() ss_id = mddb_utils.subspace_init(d) else: ss_id = rows[0][0] seqid = rows[0][1] self.update_dict(d,pdbid) mddb_utils.load_trajectories(conn,ss_id,d) cur.close() cur = conn.cursor() query = "INSERT INTO seq_subspace (seqid,subspace_id) VALUES (%s, %s)" print query cur.execute(query, (seqid, ss_id)) conn.commit() print cur.fetchone()[0] cur.close() conn.close() print "Successfuly Loaded Trajectory"
def __init__(self): self.param_dict = dict(self.param_dict.items() + self.mddb_param_dict.items()) self.add_parser_options(self.param_dict) self.param_dict = self.parse_param_dict() if self.param_dict['mode'] == 'initdb': self.quit_everything() self.init_database(self.schema_files) self.load_stored_procedures(self.sp_files) self.load_configs() sys.exit(0) if self.param_dict['mode'] == 'initss': mddb_utils.subspace_init(self.param_dict) sys.exit(0) if self.param_dict['mode'] == 'trjs': conn = mddb_utils.get_dbconn(self.param_dict['dbname'], self.param_dict['dbuser'], self.param_dict['dbhost'], self.param_dict['dbpass']) mddb_utils.add_trajectories(conn, self.param_dict) conn.close() sys.exit(0) if self.param_dict['mode'] == 'loop': self.sample_loop() sys.exit(0) if self.param_dict['mode'] == 'setup': self.quit_everything() #self.clear_jobqueue() #self.init_database(self.schema_files) #self.load_stored_procedures(self.sp_files) #self.load_configs() l = [] l.append({'hostname':'stampede', 'sequentialism': '1', 'res_config_name': 'gpu'}) self.setup_workers(l) #self.start_sampleloop() sys.exit(0) if self.param_dict['mode'] == 'qjobs': #trj_id_list = ['137'] #trj_len = 1000 #num_points = 1 #l = map(lambda x: getStartingPoints(x, trj_len, num_points), trj_id_list) #l = list(itertools.chain(*l)) l = [] timestamps = [(3294, 555, 50), (3264, 5, 50), (3264, 929, 100)] for ts in timestamps: l = l + MDDBController.get_prev_timestamps(*ts) l = map(lambda (trj_id,t): {'trj_id': "{0:03d}".format(trj_id), 't': t}, l) l = l[99:] default_params = {'nstep_simulation': 50000000, 'trj_save_freq': 50000, 'source': 'deshaw', 'generator': 'amber', 'template_dir': 'amber_min', 'dbname': self.param_dict['dbname'], 'dbuser': self.param_dict['dbuser'], 'dbhost': self.param_dict['dbhost'], 'dbpass': self.param_dict['dbpass'], } conn = mddb_utils.get_dbconn(self.param_dict['dbname'], self.param_dict['dbuser'], self.param_dict['dbhost'], self.param_dict['dbpass']) cur = conn.cursor() cur.execute('truncate table jobqueue') for d in l: d.update(default_params) print d data = 'ARRAY' + str([json.dumps(d)]) cur.execute('select jobqueue_insert({0})'.format(data)) cur.close() conn.commit() conn.close() if self.param_dict['mode'] == 'cmd': mc = mddb_cmd() mc.init_conn(self.param_dict) mc.cmdloop() sys.exit(0)