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")