Example #1
0
  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()
Example #2
0
  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"
Example #3
0
  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)