kmer_analysis / app.py
Hack90's picture
Update app.py
49e0a3d verified
raw
history blame
1.21 kB
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("slider", "kmer", 0, 10, 5)
ui.input_selectize(
"plot_type",
"Select Metric:",
["percentage", "count"],
multiple=False,
)
@render.plot
def plot():
df = pd.read_csv('kmers.csv')
k = input.slider()
fig = None
if input.plot_type() == "count":
df = df[df['k'] == k]
df = df.head(20)
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(20)
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