reporting Module#

Report generation for Episia analyses.

This module provides classes and functions for generating structured epidemiological reports in multiple formats (Markdown, HTML, JSON).

Classes#

class episia.api.reporting.EpiReport(title='Epidemiological report', author=None, institution=None, date=None, description=None)[source]#

Bases: object

Structured epidemiological report builder.

Example:

report = EpiReport(title="Analyse SEIR", author="Dr. Ouedraogo")
report.add_text("Introduction...", title="Introduction")
report.add_metrics({"R0": 3.2, "Peak": 42500})
report.add_table(df, title="Results")
report.save_html("rapport.html")
report.save_markdown("rapport.md")
Parameters:
  • title (str)

  • author (Optional[str])

  • institution (Optional[str])

  • date (Optional[str])

  • description (Optional[str])

__init__(title='Epidemiological report', author=None, institution=None, date=None, description=None)[source]#
Parameters:
  • title (str)

  • author (str | None)

  • institution (str | None)

  • date (str | None)

  • description (str | None)

add_divider()[source]#
Return type:

EpiReport

add_figure(figure, title=None, caption=None, width='100%')[source]#
Parameters:
  • figure (Any)

  • title (str | None)

  • caption (str | None)

  • width (str)

Return type:

EpiReport

add_metrics(metrics, title='Key indicators')[source]#
Parameters:
Return type:

EpiReport

add_result(result, title=None)[source]#
Parameters:
  • result (Any)

  • title (str | None)

Return type:

EpiReport

add_table(data, title=None, caption=None, max_rows=100)[source]#
Parameters:
  • data (Any)

  • title (str | None)

  • caption (str | None)

  • max_rows (int)

Return type:

EpiReport

add_text(text, title=None, level=2)[source]#
Parameters:
Return type:

EpiReport

save_html(path)[source]#
Parameters:

path (str | Path)

Return type:

Path

save_json(path)[source]#
Parameters:

path (str | Path)

Return type:

Path

save_markdown(path)[source]#
Parameters:

path (str | Path)

Return type:

Path

to_html()[source]#
Return type:

str

to_json(indent=2)[source]#
Parameters:

indent (int)

Return type:

str

to_markdown()[source]#
Return type:

str

class episia.api.reporting.ReportSection(kind: 'str', content: 'Any', title: 'Optional[str]' = None, level: 'int' = 2, caption: 'Optional[str]' = None)[source]#

Bases: object

Parameters:
  • kind (str)

  • content (Any)

  • title (str | None)

  • level (int)

  • caption (str | None)

__init__(kind, content, title=None, level=2, caption=None)#
Parameters:
  • kind (str)

  • content (Any)

  • title (str | None)

  • level (int)

  • caption (str | None)

Return type:

None

caption: str | None = None#
content: Any#
kind: str#
level: int = 2#
title: str | None = None#

Functions#

episia.api.reporting.report_from_result(result, title=None, author=None, backend='plotly', theme='scientific')[source]#

One-line report from any EpiResult.

Parameters:
  • result (Any)

  • title (str | None)

  • author (str | None)

  • backend (str)

  • theme (str)

Return type:

EpiReport

episia.api.reporting.report_from_model(model_result, title=None, author=None, institution=None, sensitivity_result=None, backend='plotly', theme='scientific')[source]#

Full model simulation report (SIR / SEIR / SEIRD).

Parameters:
  • model_result (Any)

  • title (str | None)

  • author (str | None)

  • institution (str | None)

  • sensitivity_result (Any | None)

  • backend (str)

  • theme (str)

Return type:

EpiReport

Examples#

Basic report creation:

from episia.api.reporting import EpiReport

report = EpiReport(
    title="COVID-19 Analysis",
    author="Dr. Ouedraogo",
    institution="Xcept-Health"
)

report.add_text("This is an introduction...", title="Introduction")
report.add_metrics({"R0": 2.5, "Cases": 1500})
report.save_html("report.html")
report.save_markdown("report.md")