def _process_sv_fetch(pathway): # Merged sv = pathway.get_sv() ret = Json("array") for name in sv: j = Json() j.add_pair("c", pathway.get_long_name(name)) j.add_pair("r", ''.join(sv[name]) + " = 0") ret.add_item(j) return ret
def _process_sv_fetch(pathway): sv = pathway.get_sv() ret = Json("array") for name in sv: j = Json() j.add_pair("c", pathway.get_long_name(name)) j.add_pair("r", ''.join(sv[name]) + " = 0") ret.add_item(j) return ret
def user_summary(request): u = request.user plist = Profile.objects.filter(user=u, status="submitted") result = "" r = Json("array") for p in plist: ri = Json("object") ri.add_pair("date", str(p.submitted_date)) ri.add_pair("model", str(p.name)) ri.add_pair("type", str(p.model_type)) ri.add_pair("status", str(p.status)) r.add_item(ri) result += "{ response: { status : 0, startRows: 0 , endRow: " if (len(plist) > 0): result += str(len(plist) - 1) else: result += "0" result += " , totalRows: " result += str(len(plist)) result += " , data :" result += repr(r) result += "} } " q = request.GET nq = dict(q) result = get_callback(nq) + "(" + result + ")" return HttpResponse(content=result, status=200, content_type="text/html")
def user_summary(request): u = request.user plist = Profile.objects.filter(user = u, status="submitted") result = "" r = Json("array") for p in plist: ri = Json("object") ri.add_pair("date", str(p.submitted_date)) ri.add_pair("model", str(p.name)) ri.add_pair("type", str(p.model_type)) ri.add_pair("status", str(p.status)) r.add_item(ri) result += "{ response: { status : 0, startRows: 0 , endRow: " if (len(plist) > 0): result += str(len(plist) - 1) else: result += "0" result += " , totalRows: " result += str(len(plist)) result += " , data :" result += repr(r) result += "} } " q = request.GET nq = dict(q) result = get_callback(nq) + "(" + result + ")" return HttpResponse(content = result, status = 200, content_type = "text/html")
def _process_object_update(input_params, pathway): key = str(input_params["pk"]) reaction = str(input_params["r"]) w = input_params["w"] weight = float(w) pathway.objective[reaction] = weight r = Json() r.add_pair("pk", key) r.add_pair("r", reaction) r.add_pair("w", str(weight)) return r
def _process_object_fetch(pathway): weights = pathway.get_objective_weights() ret = Json("array") public_key = 1 for name in pathway.reactions: j = Json() j.add_pair("pk", public_key) public_key += 1 j.add_pair("r", name) j.add_pair("w", str(weights[name])) ret.add_item(j) return ret
def _process_boundary_fetch(pathway): boundarys = pathway.get_bounds() ret = Json("array") public_key = 0 for name in boundarys: j = Json() j.add_pair("pk", public_key) public_key +=1 j.add_pair("r", name) j.add_pair("l", str(boundarys[name][0])) j.add_pair("u", str(boundarys[name][1])) ret.add_item(j) return ret
def _process_boundary_fetch(pathway): boundarys = pathway.get_bounds() ret = Json("array") public_key = 0 for name in boundarys: j = Json() j.add_pair("pk", public_key) public_key += 1 j.add_pair("r", name) j.add_pair("l", str(boundarys[name][0])) j.add_pair("u", str(boundarys[name][1])) ret.add_item(j) return ret
def _process_boundary_update(input_params, pathway): bound = pathway.get_bounds() key = str(input_params["pk"]) reactionid = str(input_params["r"]) lb = float(input_params["l"].encode('ascii', 'ignore')) ub = float(input_params["u"].encode('ascii', 'ignore')) bound[reactionid][0] = lb bound[reactionid][1] = ub j = Json() j.add_pair("pk", key) j.add_pair("r", reactionid) j.add_pair("l", str(lb)) j.add_pair("u", str(ub)) return j
def _process_object_fetch(pathway): weights = pathway.get_objective_weights() ret = Json("array") public_key = 1 for name in pathway.reactions: j = Json() j.add_pair("pk", public_key) public_key +=1 j.add_pair("r", name) if name not in weights: weight[name] = 1.0 j.add_pair("w", str(weights[name])) ret.add_item(j) return ret
def newfn(arg): response = Json("object") status_label = Json() status_label.set_label("status") status_indicate_label = Json() status_indicate_label.set_label("0") data_label = Json() data_label.set_label("data") response_label = Json() response_label.set_label("response") response.add_pair(status_label, status_indicate_label) response.add_pair(data_label, f(arg)) result = Json("object") result.add_pair(response_label, response) return result
def _process_pathway_info(input_params, pathway, cname): t = map(str, pathway.statistics()) r0 = Json("object") r0.add_pair("name", "Name of the pathway") r0.add_pair("value", cname) r1 = Json("object") r1.add_pair("name", "Name of the organism") r1.add_pair("value", pathway.name) r2 = Json("object") r2.add_pair("name", "Number of all genes/orthologs") r2.add_pair("value", t[0]) r3 = Json("object") r3.add_pair("name", "Number of annotated genes/orthologs") r3.add_pair("value", t[1]) r4 = Json("object") r4.add_pair("name", "Number of all pathways") r4.add_pair("value", t[2]) r5 = Json("object") r5.add_pair("name", "Number of active pathways") r5.add_pair("value", t[3]) r = Json("array") r.add_item(r0) r.add_item(r1) r.add_item(r2) r.add_item(r3) r.add_item(r4) r.add_item(r5) return r
def _process_pathway_update(input_params, pathway): key = input_params["pk"] new_key = input_params["reactionid"] ko = input_params['ko'] reactants = input_params.get("reactants", "") arrow = input_params['arrow'] if arrow == "<==>": arrow = '1' else: arrow = '0' products = input_params.get('products') pathway_name = input_params.get("pathway", "") pathway.update_pathway(new_key, ko, reactants, arrow, products, pathway_name) # Pack results into a JSON object j = Json("object") j.add_pair("pk", key) # respect input pathway j.add_pair("reactionid", new_key) j.add_pair("ko", ko) j.add_pair("reactants", reactants) if arrow == '1': j.add_pair("arrow", "<==>") else: j.add_pair("arrow", "===>") j.add_pair("products", products) j.add_pair("pathway", pathway_name) return j
def _process_pathway_info(input_params, pathway, cname): t = map(str, pathway.statistics()) r0 = Json("object") r0.add_pair("name" , "Name of the pathway") r0.add_pair("value", cname) r1 = Json("object") r1.add_pair("name" , "Name of the organism") r1.add_pair("value", pathway.name) r2 = Json("object") r2.add_pair("name", "Number of all genes/orthologs") r2.add_pair("value", t[0]) r3 = Json("object") r3.add_pair("name", "Number of annotated genes/orthologs") r3.add_pair("value", t[1]) r4 = Json("object") r4.add_pair("name", "Number of all pathways") r4.add_pair("value", t[2]) r5 = Json("object") r5.add_pair("name", "Number of active pathways") r5.add_pair("value", t[3]) r = Json("array") r.add_item(r0) r.add_item(r1) r.add_item(r2) r.add_item(r3) r.add_item(r4) r.add_item(r5) return r
def newfn(arg): tempresult = f(arg) startRow = int(arg.GET['_startRow']) endRow = int(arg.GET['_endRow']) totalRow = len(tempresult.array_container) if endRow >= totalRow: endRow = totalRow - 1 response = Json("object") status_label = Json() status_label.set_label("status") status_indicate_label = Json() status_indicate_label.set_label("0") response.add_pair(status_label, status_indicate_label) startrow_label = Json() startrow_label.set_label("startRow") startrow_value = Json() startrow_value.set_label(str(startRow)) response.add_pair(startrow_label, startrow_value) endrow_label = Json() endrow_label.set_label("endRow") endrow_value = Json() endrow_value.set_label(str(endRow)) response.add_pair(endrow_label, endrow_value) totalrow_label = Json() # note here might be a bug that those labels are not out totalrow_label.set_label("totalRows") totalrow_value = Json() totalrow_value.set_label(str(totalRow)) response.add_pair(totalrow_label, totalrow_value) jarray = tempresult.array_container[startRow:endRow + 1] newjson = Json("array") newjson.array_container = jarray data_label = Json() data_label.set_label("data") response.add_pair(data_label, newjson) result = Json("object") response_label = Json() response_label.set_label("response") result.add_pair(response_label, response) return result
def new_get_json(method, input_params, pathway): r = "" if method == "pathway_add": # merged """ Input parameters: pathway, products, reactants""" ko = input_params['ko'] reactants = input_params.get("reactants", "") arrow = input_params['arrow'] products = input_params.get('products') pathway_name = input_params.get("pathway", "") new_key = '' # pk = 0 if pathway_name == "BIOMASS": """ If user gives us biomass, we have to make sure that the left side of the equation is updated reactants --> BIOMASS """ # 1. Check if we can find a metabolism that contains USER:BIOMASS pathway for m in pathway.metabolism: if m.name == "USER:BIOMASS" and len(m.reactions) > 0: new_key = m.reactions.keys()[0] break # 2.1. If there is already a biomass, we have to update its reactant list if len(new_key) > 0: reaction = pathway.reactions[new_key] ret = "" for i in reaction.substrates: ret += str(reaction.stoichiometry[i]) ret += " " ret += i ret += " + " pathway.add_pathway(new_key, False, ret + reactants, arrow, "BIOMASS", "BIOMASS") else: # 2.2. If there is no existing BIOMASS pathway, add a new BIOMASS pathway.user_reaction += 1 new_key = "Biomass" + str(pathway.user_reaction) pathway.add_pathway(new_key, ko, reactants, arrow, products, pathway_name) elif pathway_name == "Inflow": pathway.user_reaction += 1 new_key = "Inflow" + str(pathway.user_reaction) pathway.register_user_pathway(new_key) pathway.add_pathway(new_key, ko, reactants, arrow, products, pathway_name) elif pathway_name == "Outflow": pathway.user_reaction += 1 new_key = "Outflow" + str(pathway.user_reaction) pathway.register_user_pathway(new_key) pathway.add_pathway(new_key, ko, reactants, arrow, products, pathway_name) elif pathway_name == "Heterologous Pathways": pathway.user_reaction += 1 new_key = "Heterologous" + str(pathway.user_reaction) pathway.add_pathway(new_key, ko, reactants, arrow, products, pathway_name) else: pass j = Json("object") tpk = digital_pattern.match(new_key) pk = int(tpk.group(1)) j.add_pair("pk", 100000 + pk) j.add_pair("reactionid", new_key) j.add_pair("ko", ko) j.add_pair("reactants", reactants) if arrow == '1': j.add_pair("arrow", "<==>") else: j.add_pair("arrow", "===>") j.add_pair("products", products) j.add_pair("pathway", pathway_name) return j elif method == "pathway_update": # merged key = input_params["pk"] new_key = input_params["reactionid"] ko = input_params['ko'] reactants = input_params.get("reactants", "") arrow = input_params['arrow'] if arrow == "<==>": arrow = '1' else: arrow = '0' products = input_params.get('products') pathway_name = input_params.get("pathway", "") pathway.update_pathway(new_key, ko, reactants, arrow, products, pathway_name) j = Json("object") j.add_pair("pk", key) j.add_pair("reactionid", new_key) j.add_pair("ko", ko) j.add_pair("reactants", reactants) if arrow == '1': j.add_pair("arrow", "<==>") else: j.add_pair("arrow", "===>") j.add_pair("products", products) j.add_pair("pathway", pathway_name) return j elif method == "pathway_info": # merged t = map(str, pathway.statistics()) r1 = Json("object") r1.add_pair("name" , "Name of the pathway") r1.add_pair("value", pathway.name) r2 = Json("object") r2.add_pair("name", "Number of all genes/orthologs") r2.add_pair("value", t[0]) r3 = Json("object") r3.add_pair("name", "Number of annotated genes/orthologs") r3.add_pair("value", t[1]) r4 = Json("object") r4.add_pair("name", "Number of all pathways") r4.add_pair("value", t[2]) r5 = Json("object") r5.add_pair("name", "Number of active pathways") r5.add_pair("value", t[3]) r = Json("array") r.add_item(r1) r.add_item(r2) r.add_item(r3) r.add_item(r4) r.add_item(r5) elif method == "user_obj_update": # changed key = str(input_params["pk"]) if len(key) < 5: new_key = 'R' + '0' * (5 - len(key)) + key else: new_key = 'R' + key #w = input_params["w"][0].encode('ascii', 'ignore') w = input_params["w"] weight = float(w) pathway.objective[new_key] = weight r = Json() r.add_pair("pk", key) r.add_pair("r", new_key) r.add_pair("w", str(weight)) return r elif method == "user_obj_fetch": # changed objective_json = pathway.json_objective() return objective_json elif method == "model_sv": """ Output the SV=0 equations """ sv = pathway.json_sv() # print "In Model SV, Now SV is", len(pathway.sv) t = len(pathway.sv) input_params['startRows'] = '0' input_params['endRow'] = str(t - 1) input_params['totalRows'] = str(t) # later get_header will use it return "[" + sv + "]" elif method == "model_bound_fetch": bound = pathway.get_bounds_as_json() # print "In Model bound, Now bound is", len(pathway.bound) t = len(pathway.reactions) input_params['startRows'] = '0' input_params['endRow'] = str(t - 1) input_params['totalRows'] = str(t) # later get_header will use it return "[" + bound + "]" elif method == "model_bound_update": bound = pathway.get_bounds() key = str(input_params["pk"][0]) # print "key is", key if len(key) < 5: new_key = 'R' + '0' * (5 - len(key)) + key else: new_key = 'R' + key # print new_key lb = float(input_params["l"][0].encode('ascii', 'ignore')) ub = float(input_params["u"][0].encode('ascii', 'ignore')) # print lb, ub bound[new_key][0] = lb bound[new_key][1] = ub r += '"pk":"' + key + '",' r += '"r":"' + new_key + '",' r += '"l":"' + str(lb) + '",' r += '"u":"' + str(ub) + '"' else: r = "" pass return r
def _process_pathway_add(input_params, pathway): public_key = len(pathway.reactions) ko = input_params['ko'] print "Input ko value is ", ko reactants = input_params.get("reactants", "") arrow = input_params['arrow'] products = input_params.get('products') pathway_name = input_params.get("pathway", "") if pathway_name == "BIOMASS": if pathway.reactions.has_key("BIOMASS0"): # Already there reaction = pathway.reactions["BIOMASS0"] ret = "" for i in reaction.substrates: ret += str(reaction.stoichiometry[i]) ret += " " ret += i ret += " + " pathway.update_pathway("BIOMASS0", False, ret + reactants, arrow, "BIOMASS", "BIOMASS") # update new_key = "BIOMASS0" else: new_key = "BIOMASS0" pathway.add_pathway("BIOMASS0", ko, reactants, arrow, "BIOMASS", "BIOMASS") elif pathway_name == "Inflow": pathway.user_reaction_index += 1 new_key = "Inflow" + str(pathway.user_reaction_index) reactants = _attach_suffix( reactants, ".ext" ) pathway.register_user_pathway(new_key) pathway.add_pathway(new_key, ko, reactants, arrow, products, pathway_name) elif pathway_name == "Outflow": pathway.user_reaction_index += 1 new_key = "Outflow" + str(pathway.user_reaction_index) products = _attach_suffix( products, ".ext" ) pathway.register_user_pathway(new_key) pathway.add_pathway(new_key, ko, reactants, arrow, products, pathway_name) elif pathway_name == "Heterologous Pathways": pathway.user_reaction_index += 1 new_key = "Heterologous" + str(pathway.user_reaction_index) pathway.add_pathway(new_key, ko, reactants, arrow, products, pathway_name) else: pass j = Json("object") tpk = digital_pattern.match(new_key) pk = int(tpk.group(1)) j.add_pair("pk", public_key) j.add_pair("reactionid", new_key) j.add_pair("ko", ko) j.add_pair("reactants", reactants) if arrow == '1': j.add_pair("arrow", "<==>") else: j.add_pair("arrow", "===>") j.add_pair("products", products) j.add_pair("pathway", pathway_name) return j
def _process_pathway_add(input_params, pathway): public_key = len(pathway.reactions) ko = input_params['ko'] print "Input ko value is ", ko reactants = input_params.get("reactants", "") arrow = input_params['arrow'] products = input_params.get('products') pathway_name = input_params.get("pathway", "") if pathway_name == "BIOMASS": if pathway.reactions.has_key("BIOMASS0"): # Already there reaction = pathway.reactions["BIOMASS0"] ret = "" for i in reaction.substrates: ret += str(reaction.stoichiometry[i]) ret += " " ret += i ret += " + " pathway.update_pathway("BIOMASS0", False, ret + reactants, arrow, "BIOMASS", "BIOMASS") # update new_key = "BIOMASS0" else: new_key = "BIOMASS0" pathway.add_pathway("BIOMASS0", ko, reactants, arrow, "BIOMASS", "BIOMASS") elif pathway_name == "Inflow": pathway.user_reaction_index += 1 new_key = "Inflow" + str(pathway.user_reaction_index) reactants = _attach_suffix(reactants, ".ext") pathway.register_user_pathway(new_key) pathway.add_pathway(new_key, ko, reactants, arrow, products, pathway_name) elif pathway_name == "Outflow": pathway.user_reaction_index += 1 new_key = "Outflow" + str(pathway.user_reaction_index) products = _attach_suffix(products, ".ext") pathway.register_user_pathway(new_key) pathway.add_pathway(new_key, ko, reactants, arrow, products, pathway_name) elif pathway_name == "Heterologous Pathways": pathway.user_reaction_index += 1 new_key = "Heterologous" + str(pathway.user_reaction_index) pathway.add_pathway(new_key, ko, reactants, arrow, products, pathway_name) else: pass j = Json("object") tpk = digital_pattern.match(new_key) pk = int(tpk.group(1)) j.add_pair("pk", public_key) j.add_pair("reactionid", new_key) j.add_pair("ko", ko) j.add_pair("reactants", reactants) if arrow == '1': j.add_pair("arrow", "<==>") else: j.add_pair("arrow", "===>") j.add_pair("products", products) j.add_pair("pathway", pathway_name) return j
def new_get_json(method, input_params, pathway): r = "" if method == "pathway_add": # merged """ Input parameters: pathway, products, reactants""" ko = input_params['ko'] reactants = input_params.get("reactants", "") arrow = input_params['arrow'] products = input_params.get('products') pathway_name = input_params.get("pathway", "") new_key = '' # pk = 0 if pathway_name == "BIOMASS": """ If user gives us biomass, we have to make sure that the left side of the equation is updated reactants --> BIOMASS """ # 1. Check if we can find a metabolism that contains USER:BIOMASS pathway for m in pathway.metabolism: if m.name == "USER:BIOMASS" and len(m.reactions) > 0: new_key = m.reactions.keys()[0] break # 2.1. If there is already a biomass, we have to update its reactant list if len(new_key) > 0: reaction = pathway.reactions[new_key] ret = "" for i in reaction.substrates: ret += str(reaction.stoichiometry[i]) ret += " " ret += i ret += " + " pathway.add_pathway(new_key, False, ret + reactants, arrow, "BIOMASS", "BIOMASS") else: # 2.2. If there is no existing BIOMASS pathway, add a new BIOMASS pathway.user_reaction += 1 new_key = "Biomass" + str(pathway.user_reaction) pathway.add_pathway(new_key, ko, reactants, arrow, products, pathway_name) elif pathway_name == "Inflow": pathway.user_reaction += 1 new_key = "Inflow" + str(pathway.user_reaction) pathway.register_user_pathway(new_key) pathway.add_pathway(new_key, ko, reactants, arrow, products, pathway_name) elif pathway_name == "Outflow": pathway.user_reaction += 1 new_key = "Outflow" + str(pathway.user_reaction) pathway.register_user_pathway(new_key) pathway.add_pathway(new_key, ko, reactants, arrow, products, pathway_name) elif pathway_name == "Heterologous Pathways": pathway.user_reaction += 1 new_key = "Heterologous" + str(pathway.user_reaction) pathway.add_pathway(new_key, ko, reactants, arrow, products, pathway_name) else: pass j = Json("object") tpk = digital_pattern.match(new_key) pk = int(tpk.group(1)) j.add_pair("pk", 100000 + pk) j.add_pair("reactionid", new_key) j.add_pair("ko", ko) j.add_pair("reactants", reactants) if arrow == '1': j.add_pair("arrow", "<==>") else: j.add_pair("arrow", "===>") j.add_pair("products", products) j.add_pair("pathway", pathway_name) return j elif method == "pathway_update": # merged key = input_params["pk"] new_key = input_params["reactionid"] ko = input_params['ko'] reactants = input_params.get("reactants", "") arrow = input_params['arrow'] if arrow == "<==>": arrow = '1' else: arrow = '0' products = input_params.get('products') pathway_name = input_params.get("pathway", "") pathway.update_pathway(new_key, ko, reactants, arrow, products, pathway_name) j = Json("object") j.add_pair("pk", key) j.add_pair("reactionid", new_key) j.add_pair("ko", ko) j.add_pair("reactants", reactants) if arrow == '1': j.add_pair("arrow", "<==>") else: j.add_pair("arrow", "===>") j.add_pair("products", products) j.add_pair("pathway", pathway_name) return j elif method == "pathway_info": # merged t = map(str, pathway.statistics()) r1 = Json("object") r1.add_pair("name" , "Name of the pathway") r1.add_pair("value", pathway.name) r2 = Json("object") r2.add_pair("name", "Number of all genes/orthologs") r2.add_pair("value", t[0]) r3 = Json("object") r3.add_pair("name", "Number of annotated genes/orthologs") r3.add_pair("value", t[1]) r4 = Json("object") r4.add_pair("name", "Number of all pathways") r4.add_pair("value", t[2]) r5 = Json("object") r5.add_pair("name", "Number of active pathways") r5.add_pair("value", t[3]) r = Json("array") r.add_item(r1) r.add_item(r2) r.add_item(r3) r.add_item(r4) r.add_item(r5) elif method == "user_obj_update": # changed key = str(input_params["pk"]) if len(key) < 5: new_key = 'R' + '0' * (5 - len(key)) + key else: new_key = 'R' + key #w = input_params["w"][0].encode('ascii', 'ignore') w = input_params["w"] weight = float(w) pathway.objective[new_key] = weight r = Json() r.add_pair("pk", key) r.add_pair("r", new_key) r.add_pair("w", str(weight)) return r elif method == "user_obj_fetch": # changed objective_json = pathway.json_objective() return objective_json elif method == "model_sv": """ Output the SV=0 equations """ sv = pathway.json_sv() t = len(pathway.sv) input_params['startRows'] = '0' input_params['endRow'] = str(t - 1) input_params['totalRows'] = str(t) # later get_header will use it return "[" + sv + "]" elif method == "model_bound_fetch": bound = pathway.get_bounds_as_json() t = len(pathway.reactions) input_params['startRows'] = '0' input_params['endRow'] = str(t - 1) input_params['totalRows'] = str(t) # later get_header will use it return "[" + bound + "]" elif method == "model_bound_update": bound = pathway.get_bounds() key = str(input_params["pk"][0]) if len(key) < 5: new_key = 'R' + '0' * (5 - len(key)) + key else: new_key = 'R' + key lb = float(input_params["l"][0].encode('ascii', 'ignore')) ub = float(input_params["u"][0].encode('ascii', 'ignore')) bound[new_key][0] = lb bound[new_key][1] = ub r += '"pk":"' + key + '",' r += '"r":"' + new_key + '",' r += '"l":"' + str(lb) + '",' r += '"u":"' + str(ub) + '"' else: r = "" pass return r
def getJson(self): """ Return a JSON object """ r = Json("object") r.add_pair("reactionid", self.name) s = [] for t in self.substrates: s.append(str(self.stoichiometry[t]) + ' ' + self._get_long_name(t)) r.add_pair("reactants", " + ".join(s)) s = [] for t in self.products: s.append(str(self.stoichiometry[t]) + ' ' + self._get_long_name(t)) r.add_pair("products", " + ".join(s)) if self.reversible: r.add_pair("arrow", "<==>") else: r.add_pair("arrow", "===>") ko_label = Json() ko_label.set_label('"ko"') ko_value = Json() if self.ko: ko_value.set_label("true") else: ko_value.set_label("false") r.add_pair(ko_label, ko_value) if self.metabolism: r.add_pair("pathway", self.metabolism) return r