Skip to content

ENH: add html report to physioqc #1

@jsheunis

Description

@jsheunis

This issue serves as a discussion point for adding automated html reports to the physioqc pipeline. Please share your thoughts!

The idea

One the physioqc pipeline has done its thing, the output will be a bunch of processed timeseries and summary metric data. It would be great to see all of these presented in an easy to read, visual, and interactive report. The report will probably contain details such as:

  • some metadata about the pipeline run (date-time, name of bids dataset, some other bids metadata..., types of measures)
  • summary metrics in a table (with categorizations, per measure type or whatever other categories exist)
  • interactive graphs
  • any other information that we think is useful (perhaps a description of how each measure was caculated)

Existing work / relevant info

@smoia pointed me to this PR that aims to add html reports to phys2bids. If I understand it correctly, it uses an html template with some basic css, and python code to automate the process of writing the correct string values (mostly relative locations of figures, or strings) to variables in the template.

It could be an idea to make that report (once merged) compatible with the to-be-developed one for physioqc. Or to change the phys2bids one to make it compatible with whatever the physioqc report will become.

Framework suggestions

As simple as possible is probably a good starting point, to keep complexity down and encourage contributions.

  • Minimal would be similar to the phys2bids example: just an html template
  • For a bit better UX, we could add javascript for things like buttons, navbars, etc, and also for some client-side functions if useful.
  • Regarding interactive plots, my personal preference is Plotly, but bokeh seems to be a good alternative too. Plotly graphs can be generated with its Python API and exported to html, although this html (the code behind the graphs) is very very messy, which is why I would suggest generating the graphs in the browser using the Plotly JS API.
  • More complex and probably not needed, but adding a lot more possibilities for complex data, relationships, and reactivity: we could go with a framework such as VueJS (my personal preference) or ReactJS.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    To Do

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions