Spaces:
Running
Running
from shiny import render | |
from shiny.express import input, ui | |
import plotly.express as px | |
import pandas as pd | |
import matplotlib.pyplot as plt | |
ui.page_opts(fillable=True) | |
ui.panel_title("Kmer Analysis") | |
with ui.layout_columns(): | |
with ui.card(): | |
ui.input_slider("kmer", "kmer", 0, 10, 5) | |
ui.input_slider("top_k", "top:", 0, 1000, 15) | |
ui.input_selectize( | |
"plot_type", | |
"Select Metric:", | |
["percentage", "count"], | |
multiple=False, | |
) | |
def plot(): | |
df = pd.read_csv('kmers.csv') | |
k = input.kmer() | |
top_k = input.top_k() | |
fig = None | |
if input.plot_type() == "count": | |
df = df[df['k'] == k] | |
df = df.head(top_k) | |
fig, ax = plt.subplots() | |
ax.bar(df['kmer'], df['count']) | |
ax.set_title(f"Most common {k}-mers") | |
ax.set_xlabel("K-mer") | |
ax.set_ylabel("Count") | |
ax.set_xticklabels(df['kmer'], rotation=90) | |
if input.plot_type() == "percentage": | |
df = df[df['k'] == k] | |
df = df.head(top_k) | |
fig, ax = plt.subplots() | |
ax.bar(df['kmer'], df['percent']*100) | |
ax.set_title(f"Most common {k}-mers") | |
ax.set_xlabel("K-mer") | |
ax.set_ylabel("Percentage") | |
ax.set_xticklabels(df['kmer'], rotation=90) | |
return fig | |