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)
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)