def get_kgml(username): """ main function to visualize network return json encoded graph """ pathway_id = request.args.get('pathway_id') if pathway_id is None: return json.dumps([]) analysis_id = request.args.get('analysis_id') analysis = Analysis.query.filter(Analysis.id == analysis_id).first_or_404() # retrieve file data from s3 filename = '{}/{}/{}'.format(username, analysis.project_id, analysis_id) try: resp = requests.get(S3_URL + filename) except ConnectionError: return render_template('errors/server_error.html', form=LoginForm()) # return error code if request failed if resp.status_code != 200: return render_template('errors/server_error.html', form=LoginForm()) # load fba analysis results results = json.loads(resp.text) # get the sbml model model = analysis.model.get_cobra_model() if model is None: return render_template('errors/server_error.html') if pathway_id == 'whole': # whole drawing requested cytoscape_formatted = _build_genome_scale_network(model, results) else: kegg_model = Kegg.get_kgml_obj(pathway_id) if model is None or kegg_model is None: return render_template('errors/page_not_found.html', form=LoginForm()) kegg_model_name = request.args.get('pathway_name') cytoscape_formatted = build_kegg_network_mixed(kegg_model, kegg_model_name, model, results) return json.dumps(cytoscape_formatted)