resim.flask package

Submodules

resim.flask.flaskapp module

ReSim Flask App

ReSim GUI powered by Flask app.

resim.flask.flaskapp.create_app(debug=False)

resim.flask.resim_compute module

ReSim: chemoREsistance SIMulator

This is a simplified ReSim version for GUI.

resim.flask.resim_compute.run_web_resim(gr_s=0.015, gr_pr=0.015, gr_ar=0.015, dose=240, ds=0.9, ke=0.7, ki=10, qf=10, total_0=0.5, s_0=0.84, pr_0=0.1, q_0=0.06, t=365, n=20)

Simplified ReSim for GUI

The function receives input params from web form and using resim to compute

Parameters:
  • gr_s (float) –
  • gr_pr (float) –
Returns:

A dictionary of keys ‘ids’ and ‘graphJSON’ back to flask app for plotly.

resim.flask.resim_form module

ReSim Web Form for GUI

Web forms for run_web_resim input params panel.

resim.flask.resim_form.params

list – a list contains the params available in the web form.

resim.flask.resim_form.tooltiplabels

list – a list contains tooltips for the params.

resim.flask.resim_form.unitlabels

list – a list contains the unit for params.

class resim.flask.resim_form.DrugRelatedParamsInput(formdata=None, obj=None, prefix='', data=None, meta=None, **kwargs)

Bases: wtforms.form.Form

Web Form for drug related params input

dose = <UnboundField(FloatField, (), {'default': 240, 'label': 'dose&nbsp;&nbsp;&nbsp;', 'description': '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;', 'validators': [<wtforms.validators.InputRequired object>, <wtforms.validators.NumberRange object>]})>
ds = <UnboundField(FloatField, (), {'default': 0.9, 'label': 'ds&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;', 'description': 'day^-1', 'validators': [<wtforms.validators.InputRequired object>, <wtforms.validators.NumberRange object>]})>
ke = <UnboundField(FloatField, (), {'default': 0.7, 'label': 'ke&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;', 'description': 'day^-1', 'validators': [<wtforms.validators.InputRequired object>, <wtforms.validators.NumberRange object>]})>
ki = <UnboundField(FloatField, (), {'default': 10, 'label': 'ki&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;', 'description': '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;', 'validators': [<wtforms.validators.InputRequired object>, <wtforms.validators.NumberRange object>]})>
qf = <UnboundField(FloatField, (), {'default': 10, 'label': 'qf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;', 'description': '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;', 'validators': [<wtforms.validators.InputRequired object>, <wtforms.validators.NumberRange object>]})>
class resim.flask.resim_form.GrowthRateParamsInput(formdata=None, obj=None, prefix='', data=None, meta=None, **kwargs)

Bases: wtforms.form.Form

Web Form for growth rate params input

gr_ar = <UnboundField(FloatField, (), {'default': 0.015, 'label': 'gr_ar&nbsp;&nbsp;', 'description': 'day^-1', 'validators': [<wtforms.validators.InputRequired object>, <wtforms.validators.NumberRange object>]})>
gr_pr = <UnboundField(FloatField, (), {'default': 0.015, 'label': 'gr_pr&nbsp;&nbsp;', 'description': 'day^-1', 'validators': [<wtforms.validators.InputRequired object>, <wtforms.validators.NumberRange object>]})>
gr_s = <UnboundField(FloatField, (), {'default': 0.015, 'label': 'gr_s&nbsp;&nbsp;&nbsp;', 'description': 'day^-1', 'validators': [<wtforms.validators.InputRequired object>, <wtforms.validators.NumberRange object>]})>
class resim.flask.resim_form.InitialStateParamsInput(formdata=None, obj=None, prefix='', data=None, meta=None, **kwargs)

Bases: wtforms.form.Form

Web Form for initial state params input

pr_0 = <UnboundField(FloatField, (), {'default': 0.1, 'label': 'pr_0&nbsp;&nbsp;&nbsp;', 'description': '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;', 'validators': [<wtforms.validators.InputRequired object>, <wtforms.validators.NumberRange object>, <function check_pr0>]})>
q_0 = <UnboundField(FloatField, (), {'default': 0.06, 'label': 'q_0&nbsp;&nbsp;&nbsp;&nbsp;', 'description': '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;', 'validators': [<wtforms.validators.InputRequired object>, <wtforms.validators.NumberRange object>, <function check_q0>]})>
s_0 = <UnboundField(FloatField, (), {'default': 0.84, 'label': 's_0&nbsp;&nbsp;&nbsp;&nbsp;', 'description': '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;', 'validators': [<wtforms.validators.InputRequired object>, <wtforms.validators.NumberRange object>, <function check_s0>]})>
total_0 = <UnboundField(FloatField, (), {'default': 0.5, 'label': 'total_0', 'description': '10^8&nbsp;&nbsp;', 'validators': [<wtforms.validators.InputRequired object>, <wtforms.validators.NumberRange object>]})>
class resim.flask.resim_form.SimulationParamsInput(formdata=None, obj=None, prefix='', data=None, meta=None, **kwargs)

Bases: wtforms.form.Form

Web Form for simulation params input

n = <UnboundField(IntegerField, (), {'default': 3, 'label': 'n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;', 'description': 'times&nbsp;', 'validators': [<wtforms.validators.InputRequired object>, <wtforms.validators.NumberRange object>]})>
t = <UnboundField(IntegerField, (), {'default': 365, 'label': 't&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;', 'description': 'days&nbsp;&nbsp;', 'validators': [<wtforms.validators.InputRequired object>, <wtforms.validators.NumberRange object>]})>
class resim.flask.resim_form.WholeInputForm(formdata=None, obj=None, prefix='', data=None, meta=None, **kwargs)

Bases: wtforms.form.Form

Web Form of params input panel

Drug = <UnboundField(FormField, (<class 'resim.flask.resim_form.DrugRelatedParamsInput'>,), {})>
GrowthRate = <UnboundField(FormField, (<class 'resim.flask.resim_form.GrowthRateParamsInput'>,), {})>
InitialState = <UnboundField(FormField, (<class 'resim.flask.resim_form.InitialStateParamsInput'>,), {})>
Simulation = <UnboundField(FormField, (<class 'resim.flask.resim_form.SimulationParamsInput'>,), {})>
resim.flask.resim_form.check_pr0(form, field)

Custom Form Validator: raise error if sum of (s_0, pr_0, q_0) =/= 1

resim.flask.resim_form.check_q0(form, field)

Custom Form Validator: raise error if sum of (s_0, pr_0, q_0) =/= 1

resim.flask.resim_form.check_s0(form, field)

Custom Form Validator: raise error if sum of (s_0, pr_0, q_0) =/= 1

resim.flask.resim_form.equal_len(labels)

A function to add whitespace(s) &nbsp; to match labels

resim.flask.resim_plot module

ReSim GUI Plotting Module

Plot the simulation result, including progression free survival estimation and overall dynamics using plotly.

Example

fig_fht = plot_fht(res) fig_od = plot_overalldynamics(res)

resim.flask.resim_plot.colorb

list – rgb codes of blue color.

resim.flask.resim_plot.colorg

list – rgb codes of green color.

resim.flask.resim_plot.coloro

list – rgb codes of orange color.

resim.flask.resim_plot.colorp

list – rgb codes of purple color.

resim.flask.resim_plot.colorr

list – rgb codes of red color.

resim.flask.resim_plot.colors

list – list contains colorb, colorg, coloro, colorp, colorr.

resim.flask.resim_plot.celltypes

list – list with all cell types available in resim model.

resim.flask.resim_plot.plot_allN(res, celltype)

plot all n simulation result for a cell type

Parameters:
  • res – result from resim simulation simulate method (dict).
  • celltype – string specify which cell type to plot.
Returns:

plotly figure

resim.flask.resim_plot.plot_fht(res)

plot first hitting time (progress time)

Parameters:res – result from resim simulation simulate method (dict).
Returns:plotly figure
resim.flask.resim_plot.plot_overalldynamics(res, colorlist=[['rgb(8,81,156)', 'rgb(49,130,189)', 'rgb(107,174,214)', 'rgb(189,215,231)'], ['rgb(0,109,44)', 'rgb(44,162,95)', 'rgb(102,194,164)', 'rgb(186,228,179)'], ['rgb(166,54,3)', 'rgb(230,85,13)', 'rgb(253,141,60)', 'rgb(253,190,133)'], ['rgb(84,39,143)', 'rgb(117,107,177)', 'rgb(158,154,200)', 'rgb(203,201,226)'], ['rgb(165,15,21)', 'rgb(222,45,38)', 'rgb(251,106,74)', 'rgb(252,174,145)']], celltypelist=['sensitive', 'primary resistant', 'acquired resistant', 'quiescent', 'total'])

plot overall subpopulation dynamics with 90 & 95 CI

Parameters:
  • res – result from resim simulation simulate method (dict).
  • colorlist – list with rgb code for plotting (list of lists).
  • celltypelist – list specify which cell type to plot (list).
Returns:

plotly figure

Module contents