Example #1
0
def imptools_results(request):
  if(request.POST.has_key('update')):
    return update_results(request)
  c = {}
  c.update(csrf(request))
  promoters = Promoter.objects.all()
  rbs = RBS.objects.all()
  terminators = Terminator.objects.all()
  orgs = Organism.objects.all()
  c['all_orgs'] = orgs
  c['promoters'] = promoters
  c['terminators'] = terminators
  c['RBS'] = rbs
  plasmid_with_descript = [(key, dplasmids[key].description[:-20]) for key in dplasmids.keys()]
  c['plasmids'] = plasmid_with_descript
  wt1=float(request.POST['wt1']) #reactants
  wt2=float(request.POST['wt2']) #products
  wt3=float(request.POST['wt3']) #ATP
  wt4=float(request.POST['wt4']) #Enzyme
  wt5=float(request.POST['wt5']) #Node order
  wt6=float(request.POST['wt6']) #Org
  orgID=request.POST['orgchoice']
  rmlst=request.POST['rmlst'][:-1]
  starter= request.POST['typein']
  ender= request.POST['typeout']
  starter = convert_compound_name_to_id(starter)
  ender = convert_compound_name_to_id(ender)
  num=request.POST['num']
  org_obj = Organism.objects.get(id=orgID)
  if eval(num)==1:
    # res[0] = dist, res[1] = cmpds, res[2] = rxns
    res=dgl.bidirectional_dijkstra(G,starter,ender,[wt1,wt2,wt3,wt4,wt5,wt6],org_obj,eval(rmlst+']'))
    if not res[0]:
      c.update({'message':res[1]})
      return render_to_response('nopath_strain_des.html',c)
    res[2].append(1)
    p1=zip(res[1],res[2],[get_smallest_compound_name_from_kegg_id(comp) for comp in res[1]])
    json_p1 = jsonpickle.encode(p1)
    # return HttpResponse(res[0])
    c.update({'in':starter,'out':ender,'wt1':wt1,'wt2':wt2,'wt3':wt3,'wt4':wt4,'wt5':wt5,'wt6':wt6,'removed':rmlst,'p1':p1,'json_p1':json_p1,'num':num,'org':org_obj})
    return render_to_response('imptools_results_strain_des.html',c)
  else:
    res=dgl.three_paths(G,starter,ender,[wt1,wt2,wt3,wt4,wt5,wt6],org,eval(rmlst+']'))
    if not res[0]:
      c.update({'message':res[1]})
      return render_to_response('nopath_strain_des.html',c)
    res[0][2].append(1)
    res[1][2].append(1)
    res[2][2].append(1)
    p1=zip(res[0][1],res[0][2])
    p2=zip(res[1][1],res[1][2])
    p3=zip(res[2][1],res[2][2])
    c.update({'in':starter,'out':ender,'wt1':wt1,'wt2':wt2,'wt3':wt3,'wt4':wt4,'wt5':wt5,'wt6':wt6,'org':org,'removed':rmlst,'p1':p1,'p2':p2,'p3':p3,'num':num})
    return render_to_response('allresults_strain_des.html',c)
Example #2
0
def allresults(request):
    c = {}
    c.update(csrf(request))
    # 'C[0-9]{4}
    wt1=float(request.POST['wt1']) #reactants
    wt2=float(request.POST['wt2']) #products
    wt3=float(request.POST['wt3']) #ATP
    wt4=float(request.POST['wt4']) #Enzyme
    wt5=float(request.POST['wt5']) #Node order
    wt6=float(request.POST['wt6']) #Org
    org=request.POST['orgchoice']
    rmlst=request.POST['rmlst'][:-1]
    starter=request.POST['typein']
    ender=request.POST['typeout']
#search by name here

    try:
        starter=CompoundName.objects.get(Name=starter).comp.KeggID
    except:
        try:
            starter= CompoundName.objects.get(Name=starter + ';').comp.KeggID
        except:
            if not re.match('C[0-9]{5}',starter):
                c.update({'message': 'Search by KeggID or check your spelling.'})
                return render_to_response('igemnopath.html',c)
            #regular expression, also igemnopath
    try:
        ender=CompoundName.objects.get(Name=ender).comp.KeggID
    except:
        try:
            ender = CompoundName.objects.get(Name=ender + ';').comp.KeggID
        except:
            if not re.match('C[0-9]{5}',starter):
                c.update({'message':'Search by KeggID or check your spelling'})
                return render_to_response('igemnopath.html',c)
    num=request.POST['num']
    if eval(num)==1:
        res=dgl.bidirectional_dijkstra(G,starter,ender,[wt1,wt2,wt3,wt4,wt5,wt6],org,eval(rmlst+']'))
        if not res[0]:
            c.update({'message':res[1]})
            return render_to_response('igemnopath.html',c)
        res[2].append(1)
        p1=zip(res[1],res[2], map(lambda Mname: Compound.objects.get(KeggID=Mname).MainName(),res[1] ))
        # return HttpResponse(res[0])
        c.update({'in':starter,'out':ender,'wt1':wt1,'wt2':wt2,'wt3':wt3,'wt4':wt4,'wt5':wt5,'wt6':wt6,'org':org,'removed':rmlst,'p1':p1,'num':num})
        return render_to_response('igemoneresult.html',c)


    else:
        res=dgl.three_paths(G,starter,ender,[wt1,wt2,wt3,wt4,wt5,wt6],org,eval(rmlst+']'))
        if not res[0]:
            c.update({'message':res[1]})
            return render_to_response('igemnopath.html',c)
        res[0][2].append(1)
        res[1][2].append(1)
        res[2][2].append(1)
        p1=zip(res[0][1],res[0][2])
        p2=zip(res[1][1],res[1][2])
        p3=zip(res[2][1],res[2][2])
        c.update({'in':starter,'out':ender,'wt1':wt1,'wt2':wt2,'wt3':wt3,'wt4':wt4,'wt5':wt5,'wt6':wt6,'org':org,'removed':rmlst,'p1':p1,'p2':p2,'p3':p3,'num':num})
        return render_to_response('igemallresults.html',c)