def main():
  minPoints = 10
  maxPoints = 300
  pointInterval = 5
  iteration = 2
  for points in xrange(minPoints,maxPoints,pointInterval):
      print points
      distances = [0,0,0,0,0,0,0,0,0,0,0]
      times =[0,0,0,0,0,0,0,0,0]
      for iterations in xrange(iteration):
        string = generateRandomString(points,50)


        solver = []
        solver.append(ab3d.alpha_beta_3d(string))
        solver.append(ab.alpha_beta(string))
        solver.append(ss.SlitheringSnakeSolver(string))
        #solver.append(abai3d.alpha_beta_ai_3d(string))

        for solves in xrange(len(solver)):
            timer = time.time()
            solution = solver[solves].solve()
            timer = time.time()-timer
            times[solves] += timer
            distances[solves] += getPotentialEnergy(solution)
           # print"a"
      for solves in xrange(len(solver)):
        print times[solves]/iteration
        print distances[solves]/iteration
def main():
  rails_environment = sys.argv[1]
  connection = dbf.connect_to_database(rails_environment)
  connection.autocommit = True

  database_row_id=sys.argv[2]

  cur = connection.cursor()
  cur.execute ("SELECT * FROM proteins WHERE id=\'"+database_row_id+"\' LIMIT 1;")
  database_row = cur.fetchone()
  database_row_id = database_row[0]
  params = database_row[3]
  algorithm = database_row[4]
  solver = None

  if algorithm == "Alpha Beta":
    solver = ab.alpha_beta(params)

  if algorithm =="Slithering Snake":
    solver = ss.SlitheringSnakeSolver(params)

  if algorithm == "Alpha Beta 3D AI":
    solver = ab_3d_ai.alpha_beta_ai_3d(params)

  if algorithm == "Alpha Beta 3D":
    solver = ab3d.alpha_beta_3d(params)

  if solver is None:
    print "ERROR: Invalid solver!"
  else:
    solver.cur = cur
    solver.database_row_id=database_row_id
    solver.setStatusDone("Calculating solution...")
    solution =solver.solve()
    solver.setSolution(solution)
    solver.setDone('y')
    print solution
    return float(solution[i:len(solution)-1])

def generateRandomString(length, percent_h):
    ph = float(percent_h)
    hs = 0
    string = ""
    for i in xrange(length):
        rand = random.random()
        if rand <= float(length*ph - hs)/float(length - i):
            string += "H"
            hs += 1
        else:
            string += "P"
    return string

percent_h = .5
length = 50
string = generateRandomString(length,percent_h)
print string
solver = ss.SlitheringSnakeSolver(string)
solution = solver.solve()
print getPotentialEnergy(solution)

solver = ab.alpha_beta(string)
solution = solver.solve()
print getPotentialEnergy(solution)

solver = ab3d.alpha_beta_3d(string)
solution = solver.solve()
print getPotentialEnergy(solution)