/ src / evidently / legacy / ui / demo_projects / simple.py
simple.py
 1  from datetime import datetime
 2  from datetime import timedelta
 3  
 4  import pandas as pd
 5  
 6  from evidently.legacy import metrics
 7  from evidently.legacy.pipeline.column_mapping import ColumnMapping
 8  from evidently.legacy.renderers.html_widgets import WidgetSize
 9  from evidently.legacy.report import Report
10  from evidently.legacy.ui.dashboards import CounterAgg
11  from evidently.legacy.ui.dashboards import DashboardPanelCounter
12  from evidently.legacy.ui.dashboards import PanelValue
13  from evidently.legacy.ui.dashboards import ReportFilter
14  from evidently.legacy.ui.demo_projects import DemoProject
15  from evidently.legacy.ui.workspace.base import WorkspaceBase
16  
17  
18  def create_data():
19      current = reference = pd.DataFrame({"a": [0, 1, 2], "b": [1, 2, 3]})
20      column_mapping = ColumnMapping()
21      return current, reference, column_mapping
22  
23  
24  def create_report(i: int, data):
25      current, reference, column_mapping = data
26      report = Report(
27          metrics=[metrics.ColumnDriftMetric("a")],
28          timestamp=datetime(2023, 1, 29) + timedelta(days=i + 1),
29      )
30      report.set_batch_size("daily")
31  
32      report.run(reference_data=reference, current_data=current, column_mapping=column_mapping)
33  
34      return report
35  
36  
37  def create_project(workspace: WorkspaceBase, name: str):
38      project = workspace.create_project(name)
39      project.description = "Simple demo project"
40      # title
41      project.dashboard.add_panel(
42          DashboardPanelCounter(
43              filter=ReportFilter(metadata_values={}, tag_values=[]),
44              agg=CounterAgg.NONE,
45              title="Panels",
46          )
47      )
48      # counters
49      project.dashboard.add_panel(
50          DashboardPanelCounter(
51              title="Model Calls",
52              filter=ReportFilter(metadata_values={}, tag_values=[]),
53              value=PanelValue(
54                  metric_id="ColumnDriftMetric",
55                  field_path=metrics.ColumnDriftMetric.fields.drift_detected,
56                  legend="count",
57              ),
58              text="count",
59              agg=CounterAgg.SUM,
60              size=WidgetSize.HALF,
61          )
62      )
63      project.save()
64      return project
65  
66  
67  simple_demo_project = DemoProject(
68      name="Demo project - Simple",
69      create_snapshot=None,
70      create_data=create_data,
71      create_report=create_report,
72      create_project=create_project,
73      create_test_suite=None,
74      count=2,
75  )
76  
77  if __name__ == "__main__":
78      # create_demo_project("http://localhost:8080")
79      simple_demo_project.create("workspace")