Report Generation Examples ======================= This section demonstrates how to create compliance and audit reports with SecureML. Reports are critical for documenting privacy and compliance measures for regulators, auditors, and stakeholders. Basic Compliance Reports ---------------------- The simplest way to generate a compliance report is from an existing ComplianceReport object: .. code-block:: python from secureml.reporting import ReportGenerator from secureml.compliance import ComplianceReport # Create a compliance report report = ComplianceReport("GDPR") # Add passed checks report.add_passed_check("Data minimization principle") report.add_passed_check("Explicit consent obtained") # Add warnings report.add_warning( component="Data Storage", warning="Data retention period not specified", recommendation="Define explicit data retention periods" ) # Add issues report.add_issue( component="Sensitive Data", issue="Email addresses not encrypted", severity="medium", recommendation="Apply encryption to email fields" ) # Create a report generator generator = ReportGenerator() # Generate HTML report output_file = "compliance_report.html" report_path = generator.generate_compliance_report( report=report, output_file=output_file, include_charts=True ) print(f"HTML report generated and saved to: {output_file}") The generated HTML report includes: - A summary of the compliance status - Charts showing issues by severity - Lists of passed checks, warnings, and issues - Recommendations for addressing each issue Reports From Compliance Checks ---------------------------- You can generate reports directly from compliance checks on datasets: .. code-block:: python import pandas as pd from secureml.compliance import check_compliance from secureml.reporting import ReportGenerator # Sample data with sensitive information data = pd.DataFrame({ 'name': ['John Smith', 'Jane Doe'], 'age': [34, 29], 'email': ['john.smith@example.com', 'jane.doe@example.com'], 'phone': ['555-123-4567', '555-234-5678'], 'ssn': ['123-45-6789', '234-56-7890'], 'medical_condition': ['Diabetes', 'None'], 'income': [65000, 72000] }) # Check compliance with GDPR report = check_compliance( data=data, regulation="GDPR", max_samples=10 ) # Create a report generator generator = ReportGenerator() # Generate HTML report output_file = "dataset_compliance_report.html" report_path = generator.generate_compliance_report( report=report, output_file=output_file, include_charts=True ) This workflow is particularly useful for: - Documenting dataset compliance before ML model training - Regular compliance audits of data processing systems - Demonstrating compliance to privacy officers and regulators Audit Reports ----------- You can generate reports from audit logs to track data processing operations: .. code-block:: python from secureml.reporting import ReportGenerator from secureml.audit import get_audit_logs # Retrieve audit logs logs = get_audit_logs( operation_name="model_training", start_time="2023-01-01T00:00:00", end_time="2023-01-31T23:59:59" ) # Create a report generator generator = ReportGenerator() # Generate HTML report output_file = "audit_report.html" report_path = generator.generate_audit_report( logs=logs, output_file=output_file, title="ML Model Training Audit Report", include_charts=True, additional_context={ "regulations": ["GDPR", "HIPAA"], "data_owner": "Research Department", "report_purpose": "Regulatory compliance verification" } ) For a complete audit trail workflow, you can create an audit trail, log events, and then generate a report: .. code-block:: python from secureml.audit import AuditTrail, get_audit_logs from secureml.reporting import ReportGenerator # Create an audit trail audit = AuditTrail( operation_name="model_training", regulations=["GDPR", "HIPAA"] ) # Log events audit.log_data_access( dataset_name="patient_data", columns_accessed=["age", "gender", "blood_pressure"], num_records=1000, purpose="Training disease prediction model" ) audit.log_model_training( model_type="RandomForest", dataset_name="patient_data_anonymized", parameters={"n_estimators": 100, "max_depth": 10}, metrics={"accuracy": 0.85, "auc": 0.91}, privacy_parameters={"anonymization": "k_anonymity_5"} ) # Close the audit trail audit.close() # Retrieve the audit logs logs = get_audit_logs(operation_name="model_training") # Generate a report generator = ReportGenerator() generator.generate_audit_report( logs=logs, output_file="model_training_audit.html", title="Model Training Audit Report", include_charts=True ) Customizing Reports ----------------- You can customize reports with logos and custom CSS: .. code-block:: python # Define custom CSS custom_css = """ body { font-family: Arial, sans-serif; line-height: 1.6; color: #333; max-width: 1200px; margin: 0 auto; padding: 20px; background-color: #f9f9f9; } .report-header { background-color: #3498db; color: white; padding: 20px; border-radius: 5px; margin-bottom: 30px; } .high { color: #e74c3c; font-weight: bold; } .medium { color: #f39c12; font-weight: bold; } .low { color: #3498db; font-weight: bold; } """ # Create a report generator with custom CSS generator = ReportGenerator(custom_css=custom_css) # Generate report with a logo report_path = generator.generate_compliance_report( report=compliance_report, output_file="custom_report.html", logo_path="company_logo.png", include_charts=True, additional_context={ "organization": "Example Corporation", "department": "Data Science Team", "project": "Customer Behavior Analysis" } ) Combined Reports ------------- You can create combined reports that include both compliance and audit information: .. code-block:: python import os from datetime import datetime from secureml.reporting import ReportGenerator # First, create separate reports generator = ReportGenerator() # Generate compliance report to a temporary file compliance_file = "temp_compliance.html" generator.generate_compliance_report( report=compliance_report, output_file=compliance_file, include_charts=True ) # Generate audit report to a temporary file audit_file = "temp_audit.html" generator.generate_audit_report( logs=audit_logs, output_file=audit_file, title="ML Operation Audit Trail", include_charts=True ) # Read the contents of both files with open(compliance_file, 'r') as f: compliance_content = f.read() with open(audit_file, 'r') as f: audit_content = f.read() # Extract the main content from each compliance_body = compliance_content.split('
')[1].split('')[0] audit_body = audit_content.split('')[1].split('')[0] # Create a combined HTML file combined_html = f"""Generated on {datetime.now().strftime("%Y-%m-%d %H:%M:%S")}