def view(organism, symbol): # if we came from the search page then we know the symbol has been # found already, othwerise was entered in the URL so do search if not request.referrer or not request.referrer.endswith('search'): genes = pd.find_gene(symbol, org_util.get_name(organism)) if len(genes) == 1: symbol = genes[0][0] else: flash('Could not find gene: ' + symbol + ' in organism ' + organism) return redirect(url_for('search')) org_full_name = org_util.get_name(organism) homologs = pd.get_homologs_for_gene(symbol, org_full_name) # include starting gene in search all_orgs = dict(homologs) if not org_full_name in all_orgs: all_orgs[org_full_name] = {} all_orgs[org_full_name][symbol] = None # fetch pathways pathways = [] for org in all_orgs: for gene in all_orgs[org]: for pws in pd.get_pathways(gene, org): pathways.append(pws) # re-organise for display: {pathway: {organisms: [genes]}} table = defaultdict(lambda: defaultdict(list)) for row in pathways: table[row[0]][row[1]].append(row[2]) return render_template('view.html', symbol=symbol, organism=org_full_name, org_abbrev=organism, orgs=all_orgs, homologs=homologs, table=table)
def view(organism, symbol): # if we came from the search page then we know the symbol has been # found already, othwerise was entered in the URL so do search if not request.referrer or not request.referrer.endswith('search'): genes = pd.find_gene(symbol, org_util.get_name(organism)) if len(genes) == 1: symbol = genes[0][0] else: flash('Could not find gene: ' + symbol + ' in organism ' + organism) return redirect(url_for('search')) org_full_name = org_util.get_name(organism) homologs = pd.get_homologs_for_gene(symbol, org_full_name) # include starting gene in search all_orgs = dict(homologs) if not org_full_name in all_orgs: all_orgs[org_full_name] = {} all_orgs[org_full_name][symbol] = None # fetch pathways pathways = [] for org in all_orgs: for gene in all_orgs[org]: for gene_pathways in pd.get_pathways(gene, org): pathways.append(gene_pathways) # re-organise for display: {pathway: {organisms: [genes]}} table = defaultdict(lambda: defaultdict(list)) for row in pathways: table[row[0]][row[1]].append(row[2]) return render_template('view.html', symbol=symbol, organism=org_full_name, org_abbrev=organism, orgs=all_orgs, homologs=homologs, table=table)
def search(): if request.method == 'POST': symbol = request.form['symbol'] org = request.form['organism'] if symbol: genes = pd.find_gene(symbol, org_util.get_name(org)) if len(genes) == 1: symbol = genes[0][0] return redirect(url_for('view', symbol=symbol, organism=org)) flash('Could not find gene: ' + symbol + ' in organism ' + org) return redirect(url_for('search')) else: orgs = org_util.get_abbrevs() return render_template('search.html', organisms=orgs)