def get(self): # Builder options builder_kwargs = {} for a in ['starting_reaction', 'model_name', 'map_name', 'map_json', 'reaction_no_data_color', 'reaction_no_data_size', 'metabolite_no_data_color', 'metabolite_no_data_size', 'hide_secondary_nodes']: args = self.get_arguments(a) if len(args)==1: builder_kwargs[a] = (True if args[0].lower()=='true' else (False if args[0].lower()=='false' else args[0])) # array args for a in ['quick_jump', 'metabolite_size_range', 'metabolite_color_range', 'reaction_size_range', 'reaction_color_range', 'gene_styles']: args = self.get_arguments(a + '[]') if len(args) > 0: builder_kwargs[a] = args # js source args = self.get_arguments('js_source') js_source = args[0] if len(args) == 1 else 'web' # example data def load_data_file(rel_path): """Load a JSON file with relative path.""" try: with open(join(root_directory, rel_path), 'r') as f: return json.load(f) except: logging.warn('Could not load testing_data file: %s' % rel_path) if len(self.get_arguments('testing_data')) > 0: r_filepath = 'escher/testing_data/reaction_data_iJO1366.json' builder_kwargs['reaction_data'] = load_data_file(r_filepath) m_filepath = 'escher/testing_data/metabolite_data_iJO1366.json' builder_kwargs['metabolite_data'] = load_data_file(m_filepath) # display options display_kwargs = {'minified_js': True, 'scroll_behavior': 'pan', 'menu': 'all'} # keyword for a in ['menu', 'scroll_behavior', 'minified_js', 'auto_set_data_domain', 'never_ask_before_quit', 'enable_editing']: args = self.get_arguments(a) if len(args)==1: display_kwargs[a] = (True if args[0].lower()=='true' else (False if args[0].lower()=='false' else args[0])) # make the builder builder = Builder(safe=True, **builder_kwargs) html = builder._get_html(js_source=js_source, enable_keys=True, html_wrapper=True, fill_screen=True, height='100%', **display_kwargs) self.set_header("Content-Type", "text/html") self.serve(html)
def get(self): # Builder options builder_kwargs = {} for a in ['starting_reaction', 'model_name', 'map_name', 'map_json', 'reaction_no_data_color', 'reaction_no_data_size', 'metabolite_no_data_color', 'metabolite_no_data_size', 'hide_secondary_nodes']: args = self.get_arguments(a) if len(args)==1: builder_kwargs[a] = (True if args[0].lower()=='true' else (False if args[0].lower()=='false' else args[0])) # array args for a in ['quick_jump', 'metabolite_size_range', 'metabolite_color_range', 'reaction_size_range', 'reaction_color_range', 'gene_styles']: args = self.get_arguments(a + '[]') if len(args) > 0: builder_kwargs[a] = args # js source args = self.get_arguments('js_source') js_source = args[0] if len(args) == 1 else 'web' # example data def load_data_file(rel_path): """Load a JSON file with relative path.""" try: with open(join(root_directory, rel_path), 'r') as f: return json.load(f) except: logging.warn('Could not load example_data file: %s' % rel_path) if len(self.get_arguments('example_data')) > 0: r_filepath = 'escher/example_data/reaction_data_iJO1366.json' builder_kwargs['reaction_data'] = load_data_file(r_filepath) m_filepath = 'escher/example_data/metabolite_data_iJO1366.json' builder_kwargs['metabolite_data'] = load_data_file(m_filepath) # display options display_kwargs = {'minified_js': True, 'scroll_behavior': 'pan', 'menu': 'all'} # keyword for a in ['menu', 'scroll_behavior', 'minified_js', 'auto_set_data_domain', 'never_ask_before_quit', 'enable_editing']: args = self.get_arguments(a) if len(args)==1: display_kwargs[a] = (True if args[0].lower()=='true' else (False if args[0].lower()=='false' else args[0])) # make the builder builder = Builder(safe=True, **builder_kwargs) html = builder._get_html(js_source=js_source, enable_keys=True, html_wrapper=True, fill_screen=True, height='100%', **display_kwargs) self.set_header("Content-Type", "text/html") self.serve(html)
def get(self, dev_path, offline_path, kind, path): # builder vs. viewer & dev vs. not dev js_source = ('dev' if (dev_path is not None) else ('local' if (offline_path is not None) else 'web')) enable_editing = (kind=='builder') # Builder options builder_kwargs = {} for a in ['starting_reaction', 'model_name', 'map_name', 'map_json']: args = self.get_arguments(a) if len(args)==1: builder_kwargs[a] = args[0] # make the builder builder = Builder(safe=True, **builder_kwargs) # display options display_kwargs = {'minified_js': True, 'scroll_behavior': 'pan', 'menu': 'all'} # keyword for a in ['menu', 'scroll_behavior', 'minified_js']: args = self.get_arguments(a) if len(args)==1: display_kwargs[a] = args[0] # get the html html = builder._get_html(js_source=js_source, enable_editing=enable_editing, enable_keys=True, html_wrapper=True, fill_screen=True, height='100%', **display_kwargs) self.set_header("Content-Type", "text/html") self.serve(html)
def get(self, kind, path): # builder vs. viewer enable_editing = (kind=='builder') # Builder options builder_kwargs = {} for a in ['starting_reaction', 'model_name', 'map_name', 'map_json', 'reaction_no_data_color', 'reaction_no_data_size', 'metabolite_no_data_color', 'metabolite_no_data_size', 'hide_secondary_nodes']: args = self.get_arguments(a) if len(args)==1: builder_kwargs[a] = (True if args[0].lower()=='true' else (False if args[0].lower()=='false' else args[0])) # array args for a in ['quick_jump', 'metabolite_size_range', 'metabolite_color_range', 'reaction_size_range', 'reaction_color_range', 'gene_styles']: args = self.get_arguments(a + '[]') if len(args) > 0: builder_kwargs[a] = args # js source args = self.get_arguments('js_source') js_source = args[0] if len(args) == 1 else 'web' # if the server is running locally, then the embedded css must be loaded # asynchronously using the same server thread. if js_source in ['dev', 'local']: global PORT url = get_url('builder_embed_css', source='local', local_host='http://localhost:%d' % PORT) response = yield gen.Task(AsyncHTTPClient().fetch, url) if response.code != 200 or response.body is None: raise Exception('Could not load embedded_css from %s' % url) builder_kwargs['embedded_css'] = (response.body .decode('utf-8') .replace('\n', ' ')) # example data def load_data_file(rel_path): """Load a JSON file with relative path.""" try: with open(join(root_directory, rel_path), 'r') as f: return json.load(f) except: logging.warn('Could not load example_data file: %s' % rel_path) if len(self.get_arguments('example_data')) > 0: r_filepath = 'escher/example_data/reaction_data_iJO1366.json' builder_kwargs['reaction_data'] = load_data_file(r_filepath) m_filepath = 'escher/example_data/metabolite_data_iJO1366.json' builder_kwargs['metabolite_data'] = load_data_file(m_filepath) # make the builder builder = Builder(safe=True, **builder_kwargs) # display options display_kwargs = {'minified_js': True, 'scroll_behavior': 'pan', 'menu': 'all'} # keyword for a in ['menu', 'scroll_behavior', 'minified_js', 'auto_set_data_domain', 'never_ask_before_quit']: args = self.get_arguments(a) if len(args)==1: display_kwargs[a] = (True if args[0].lower()=='true' else (False if args[0].lower()=='false' else args[0])) html = builder._get_html(js_source=js_source, enable_editing=enable_editing, enable_keys=True, html_wrapper=True, fill_screen=True, height='100%', **display_kwargs) self.set_header("Content-Type", "text/html") self.serve(html)
def get(self, dev_path, offline_path, kind, path): # builder vs. viewer & dev vs. not dev js_source = ('dev' if (dev_path is not None) else ('local' if (offline_path is not None) else 'web')) enable_editing = (kind=='builder') # Builder options builder_kwargs = {} for a in ['starting_reaction', 'model_name', 'map_name', 'map_json']: args = self.get_arguments(a) if len(args)==1: builder_kwargs[a] = (True if args[0].lower()=='true' else (False if args[0].lower()=='false' else args[0])) # if the server is running locally, then the embedded css must be loaded # asynchronously using the same server thread. if js_source in ['dev', 'local']: global PORT response = yield gen.Task(AsyncHTTPClient().fetch, join('http://localhost:%d' % PORT, urls.builder_embed_css_local)) print response builder_kwargs['embedded_css'] = response.body.replace('\n', ' ') # example data def load_data_file(rel_path): """Load a JSON file with relative path.""" try: with open(join(directory, rel_path), 'r') as f: return json.load(f) except: logging.warn('Could not load example_data file: %s' % rel_path) if len(self.get_arguments('example_data')) > 0: r_filepath = 'example_data/reaction_data_iJO1366.json' builder_kwargs['reaction_data'] = load_data_file(r_filepath) m_filepath = 'example_data/metabolite_data_iJO1366.json' builder_kwargs['metabolite_data'] = load_data_file(m_filepath) # make the builder builder = Builder(safe=True, **builder_kwargs) # display options display_kwargs = {'minified_js': True, 'scroll_behavior': 'pan', 'menu': 'all'} # keyword for a in ['menu', 'scroll_behavior', 'minified_js', 'auto_set_data_domain']: args = self.get_arguments(a) if len(args)==1: display_kwargs[a] = (True if args[0].lower()=='true' else (False if args[0].lower()=='false' else args[0])) html = builder._get_html(js_source=js_source, enable_editing=enable_editing, enable_keys=True, html_wrapper=True, fill_screen=True, height='100%', **display_kwargs) self.set_header("Content-Type", "text/html") self.serve(html)