matrice-analytics


Namematrice-analytics JSON
Version 0.1.0 PyPI version JSON
download
home_pageNone
SummaryCommon utilities for Matrice.ai services
upload_time2025-08-19 12:10:56
maintainerNone
docs_urlNone
authorNone
requires_python<4,>=3.7
licenseNone
keywords matrice analytics utilities cython postprocessing usecases
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Post-Processing Module - Refactored Architecture

## Overview

This module provides a comprehensive, refactored post-processing system for the Matrice Python SDK. The system has been completely redesigned to be more pythonic, maintainable, and extensible while providing powerful analytics capabilities for various use cases.

## ๐Ÿš€ Key Features

### โœ… **Unified Architecture**
- **Single Entry Point**: `PostProcessor` class handles all processing needs
- **Standardized Results**: All operations return `ProcessingResult` objects
- **Consistent Configuration**: Type-safe configuration system with validation
- **Registry Pattern**: Easy registration and discovery of use cases

### โœ… **Separate Use Case Classes**
- **People Counting**: Advanced people counting with zone analysis and tracking
- **Customer Service**: Comprehensive customer service analytics with business intelligence
- **Extensible Design**: Easy to add new use cases

### โœ… **Pythonic Configuration Management**
- **Dataclass-based**: Type-safe configurations using dataclasses
- **Nested Configurations**: Support for complex nested config structures
- **File Support**: JSON/YAML configuration file loading and saving
- **Validation**: Built-in validation with detailed error messages

### โœ… **Comprehensive Error Handling**
- **Standardized Errors**: All errors return structured `ProcessingResult` objects
- **Detailed Information**: Error messages include type, context, and debugging info
- **Graceful Degradation**: System continues operating even with partial failures

### โœ… **Processing Statistics**
- **Performance Tracking**: Automatic processing time measurement
- **Success Metrics**: Success/failure rates and statistics
- **Insights Generation**: Automatic generation of actionable insights

## ๐Ÿ“ Architecture

```
post_processing/
โ”œโ”€โ”€ __init__.py              # Main exports and convenience functions
โ”œโ”€โ”€ processor.py             # Main PostProcessor class
โ”œโ”€โ”€ README.md               # This documentation
โ”‚
โ”œโ”€โ”€ core/                   # Core system components
โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”œโ”€โ”€ base.py            # Base classes, enums, and protocols
โ”‚   โ”œโ”€โ”€ config.py          # Configuration system
โ”‚   โ””โ”€โ”€ advanced_usecases.py # Advanced use case implementations
โ”‚
โ”œโ”€โ”€ usecases/              # Separate use case implementations
โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”œโ”€โ”€ people_counting.py # People counting use case
โ”‚   โ””โ”€โ”€ customer_service.py # Customer service use case
โ”‚
โ””โ”€โ”€ utils/                 # Utility functions organized by category
    โ”œโ”€โ”€ __init__.py
    โ”œโ”€โ”€ geometry_utils.py  # Geometric calculations
    โ”œโ”€โ”€ format_utils.py    # Format detection and conversion
    โ”œโ”€โ”€ filter_utils.py    # Filtering and cleaning operations
    โ”œโ”€โ”€ counting_utils.py  # Counting and aggregation
    โ””โ”€โ”€ tracking_utils.py  # Tracking and movement analysis
```

## ๐Ÿ›  Quick Start

### Basic Usage

```python
from matrice.deploy.utils.post_processing import PostProcessor, process_simple

# Method 1: Simple processing (recommended for quick tasks)
result = process_simple(
    raw_results,
    usecase="people_counting",
    confidence_threshold=0.5
)

# Method 2: Using PostProcessor class (recommended for complex workflows)
processor = PostProcessor()
result = processor.process_simple(
    raw_results,
    usecase="people_counting", 
    confidence_threshold=0.5,
    enable_tracking=True
)

print(f"Status: {result.status.value}")
print(f"Summary: {result.summary}")
print(f"Insights: {len(result.insights)} generated")
```

### Advanced Configuration

```python
# Create complex configuration
config = processor.create_config(
    'people_counting',
    confidence_threshold=0.6,
    enable_tracking=True,
    person_categories=['person', 'people', 'human'],
    zone_config={
        'zones': {
            'entrance': [[0, 0], [100, 0], [100, 100], [0, 100]],
            'checkout': [[200, 200], [300, 200], [300, 300], [200, 300]]
        }
    },
    alert_config={
        'count_thresholds': {'all': 10},
        'occupancy_thresholds': {'entrance': 5}
    }
)

# Process with configuration
result = processor.process(raw_results, config)
```

### Configuration File Support

```python
# Save configuration to file
processor.save_config(config, "people_counting_config.json")

# Load and use configuration from file
result = processor.process_from_file(raw_results, "people_counting_config.json")
```

## ๐Ÿ“Š Use Cases

### 1. People Counting (`people_counting`)

Advanced people counting with comprehensive analytics:

```python
result = process_simple(
    raw_results,
    usecase="people_counting",
    confidence_threshold=0.5,
    enable_tracking=True,
    person_categories=['person', 'people'],
    zone_config={
        'zones': {
            'entrance': [[0, 0], [100, 0], [100, 100], [0, 100]]
        }
    }
)
```

**Features:**
- Multi-category person detection
- Zone-based counting and analysis
- Unique person tracking
- Occupancy analysis
- Alert generation based on thresholds
- Temporal analysis and trends

### 2. Customer Service (`customer_service`)

Comprehensive customer service analytics:

```python
result = process_simple(
    raw_results,
    usecase="customer_service",
    confidence_threshold=0.6,
    service_proximity_threshold=50.0,
    staff_categories=['staff', 'employee'],
    customer_categories=['customer', 'person']
)
```

**Features:**
- Staff utilization analysis
- Customer-staff interaction detection
- Service quality metrics
- Area occupancy analysis
- Queue management insights
- Business intelligence metrics

## ๐Ÿ”ง Configuration System

### Configuration Classes

All configurations are type-safe dataclasses with built-in validation:

```python
from matrice.deploy.utils.post_processing import PeopleCountingConfig, ZoneConfig

# Create configuration programmatically
config = PeopleCountingConfig(
    confidence_threshold=0.5,
    enable_tracking=True,
    zone_config=ZoneConfig(
        zones={
            'entrance': [[0, 0], [100, 0], [100, 100], [0, 100]]
        }
    )
)

# Validate configuration
errors = config.validate()
if errors:
    print(f"Configuration errors: {errors}")
```

### Configuration Templates

```python
# Get configuration template for a use case
template = processor.get_config_template('people_counting')
print(f"Available options: {list(template.keys())}")

# List all available use cases
use_cases = processor.list_available_usecases()
print(f"Available use cases: {use_cases}")
```

## ๐Ÿ“ˆ Processing Results

All processing operations return a standardized `ProcessingResult` object:

```python
class ProcessingResult:
    data: Any                           # Processed data
    status: ProcessingStatus           # SUCCESS, ERROR, WARNING, PARTIAL
    usecase: str                       # Use case name
    category: str                      # Use case category
    processing_time: float             # Processing time in seconds
    summary: str                       # Human-readable summary
    insights: List[str]                # Generated insights
    warnings: List[str]                # Warning messages
    error_message: Optional[str]       # Error message if failed
    predictions: List[Dict[str, Any]]  # Detailed predictions
    metrics: Dict[str, Any]            # Performance metrics
```

### Working with Results

```python
result = processor.process_simple(data, "people_counting")

# Check status
if result.is_success():
    print(f"โœ… {result.summary}")
    
    # Access insights
    for insight in result.insights:
        print(f"๐Ÿ’ก {insight}")
    
    # Access metrics
    print(f"๐Ÿ“Š Metrics: {result.metrics}")
    
    # Access processed data
    processed_data = result.data
else:
    print(f"โŒ Processing failed: {result.error_message}")
```

## ๐Ÿ“Š Statistics and Monitoring

```python
# Get processing statistics
stats = processor.get_statistics()
print(f"Total processed: {stats['total_processed']}")
print(f"Success rate: {stats['success_rate']:.2%}")
print(f"Average processing time: {stats['average_processing_time']:.3f}s")

# Reset statistics
processor.reset_statistics()
```

## ๐Ÿ”Œ Extensibility

### Adding New Use Cases

1. **Create Use Case Class**:

```python
from matrice.deploy.utils.post_processing.core.base import BaseProcessor

class MyCustomUseCase(BaseProcessor):
    def __init__(self):
        super().__init__("my_custom_usecase")
        self.category = "custom"
    
    def process(self, data, config, context=None):
        # Implement your processing logic
        return self.create_result(processed_data, "my_custom_usecase", "custom")
```

2. **Register Use Case**:

```python
from matrice.deploy.utils.post_processing.core.base import registry

registry.register_use_case("custom", "my_custom_usecase", MyCustomUseCase)
```

### Adding New Utility Functions

Add utility functions to the appropriate module in the `utils/` directory and export them in `utils/__init__.py`.

## ๐Ÿงช Testing

The system includes comprehensive error handling and validation. Here's how to test your implementations:

```python
# Test configuration validation
errors = processor.validate_config({
    'usecase': 'people_counting',
    'confidence_threshold': 0.5
})

# Test with sample data
sample_data = [
    {'category': 'person', 'confidence': 0.8, 'bbox': [10, 10, 50, 50]}
]

result = process_simple(sample_data, 'people_counting')
assert result.is_success()
```

## ๐Ÿ”„ Migration from Old System

If you're migrating from the old post-processing system:

1. **Update Imports**:
   ```python
   # Old
   from matrice.deploy.utils.old_post_processing import some_function
   
   # New
   from matrice.deploy.utils.post_processing import PostProcessor, process_simple
   ```

2. **Update Processing Calls**:
   ```python
   # Old
   result = old_process_function(data, config_dict)
   
   # New
   result = process_simple(data, "usecase_name", **config_dict)
   ```

3. **Update Configuration**:
   ```python
   # Old
   config = {"threshold": 0.5, "enable_tracking": True}
   
   # New
   config = processor.create_config("people_counting", 
                                   confidence_threshold=0.5, 
                                   enable_tracking=True)
   ```

## ๐Ÿ› Troubleshooting

### Common Issues

1. **Use Case Not Found**:
   ```python
   # Check available use cases
   print(processor.list_available_usecases())
   ```

2. **Configuration Validation Errors**:
   ```python
   # Validate configuration
   errors = processor.validate_config(config)
   if errors:
       print(f"Validation errors: {errors}")
   ```

3. **Processing Failures**:
   ```python
   # Check result status and error details
   if not result.is_success():
       print(f"Error: {result.error_message}")
       print(f"Error type: {result.error_type}")
       print(f"Error details: {result.error_details}")
   ```

## ๐Ÿ“ API Reference

### Main Classes

- **`PostProcessor`**: Main processing class
- **`ProcessingResult`**: Standardized result container
- **`BaseConfig`**: Base configuration class
- **`PeopleCountingConfig`**: People counting configuration
- **`CustomerServiceConfig`**: Customer service configuration

### Convenience Functions

- **`process_simple()`**: Simple processing function
- **`create_config_template()`**: Get configuration template
- **`list_available_usecases()`**: List available use cases
- **`validate_config()`**: Validate configuration

### Utility Functions

The system provides comprehensive utility functions organized by category:

- **Geometry**: Point-in-polygon, distance calculations, IoU
- **Format**: Format detection and conversion
- **Filter**: Confidence filtering, deduplication
- **Counting**: Object counting, zone analysis
- **Tracking**: Movement analysis, line crossing detection

## ๐ŸŽฏ Best Practices

1. **Use Simple Processing for Quick Tasks**:
   ```python
   result = process_simple(data, "people_counting", confidence_threshold=0.5)
   ```

2. **Use PostProcessor Class for Complex Workflows**:
   ```python
   processor = PostProcessor()
   config = processor.create_config("people_counting", **params)
   result = processor.process(data, config)
   ```

3. **Always Check Result Status**:
   ```python
   if result.is_success():
       # Process successful result
   else:
       # Handle error
   ```

4. **Use Configuration Files for Complex Setups**:
   ```python
   processor.save_config(config, "config.json")
   result = processor.process_from_file(data, "config.json")
   ```

5. **Monitor Processing Statistics**:
   ```python
   stats = processor.get_statistics()
   # Monitor success rates and performance
   ```

## ๐Ÿ”ฎ Future Enhancements

The refactored system is designed for easy extension. Planned enhancements include:

- Additional use cases (security monitoring, retail analytics)
- Advanced tracking algorithms
- Real-time processing capabilities
- Integration with external analytics platforms
- Machine learning-based insights generation

---

**The refactored post-processing system provides a solid foundation for scalable, maintainable, and powerful analytics capabilities. The clean architecture makes it easy to extend and customize for specific use cases while maintaining consistency and reliability.** 

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "matrice-analytics",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4,>=3.7",
    "maintainer_email": null,
    "keywords": "matrice, analytics, utilities, cython, postprocessing, usecases",
    "author": null,
    "author_email": "\"Matrice.ai\" <dipendra@matrice.ai>",
    "download_url": "https://files.pythonhosted.org/packages/e7/fd/731e662a17d8e3aa65a86df1da88cded3d2311b109bc98ff66ccbf5973fe/matrice_analytics-0.1.0.tar.gz",
    "platform": null,
    "description": "# Post-Processing Module - Refactored Architecture\n\n## Overview\n\nThis module provides a comprehensive, refactored post-processing system for the Matrice Python SDK. The system has been completely redesigned to be more pythonic, maintainable, and extensible while providing powerful analytics capabilities for various use cases.\n\n## \ud83d\ude80 Key Features\n\n### \u2705 **Unified Architecture**\n- **Single Entry Point**: `PostProcessor` class handles all processing needs\n- **Standardized Results**: All operations return `ProcessingResult` objects\n- **Consistent Configuration**: Type-safe configuration system with validation\n- **Registry Pattern**: Easy registration and discovery of use cases\n\n### \u2705 **Separate Use Case Classes**\n- **People Counting**: Advanced people counting with zone analysis and tracking\n- **Customer Service**: Comprehensive customer service analytics with business intelligence\n- **Extensible Design**: Easy to add new use cases\n\n### \u2705 **Pythonic Configuration Management**\n- **Dataclass-based**: Type-safe configurations using dataclasses\n- **Nested Configurations**: Support for complex nested config structures\n- **File Support**: JSON/YAML configuration file loading and saving\n- **Validation**: Built-in validation with detailed error messages\n\n### \u2705 **Comprehensive Error Handling**\n- **Standardized Errors**: All errors return structured `ProcessingResult` objects\n- **Detailed Information**: Error messages include type, context, and debugging info\n- **Graceful Degradation**: System continues operating even with partial failures\n\n### \u2705 **Processing Statistics**\n- **Performance Tracking**: Automatic processing time measurement\n- **Success Metrics**: Success/failure rates and statistics\n- **Insights Generation**: Automatic generation of actionable insights\n\n## \ud83d\udcc1 Architecture\n\n```\npost_processing/\n\u251c\u2500\u2500 __init__.py              # Main exports and convenience functions\n\u251c\u2500\u2500 processor.py             # Main PostProcessor class\n\u251c\u2500\u2500 README.md               # This documentation\n\u2502\n\u251c\u2500\u2500 core/                   # Core system components\n\u2502   \u251c\u2500\u2500 __init__.py\n\u2502   \u251c\u2500\u2500 base.py            # Base classes, enums, and protocols\n\u2502   \u251c\u2500\u2500 config.py          # Configuration system\n\u2502   \u2514\u2500\u2500 advanced_usecases.py # Advanced use case implementations\n\u2502\n\u251c\u2500\u2500 usecases/              # Separate use case implementations\n\u2502   \u251c\u2500\u2500 __init__.py\n\u2502   \u251c\u2500\u2500 people_counting.py # People counting use case\n\u2502   \u2514\u2500\u2500 customer_service.py # Customer service use case\n\u2502\n\u2514\u2500\u2500 utils/                 # Utility functions organized by category\n    \u251c\u2500\u2500 __init__.py\n    \u251c\u2500\u2500 geometry_utils.py  # Geometric calculations\n    \u251c\u2500\u2500 format_utils.py    # Format detection and conversion\n    \u251c\u2500\u2500 filter_utils.py    # Filtering and cleaning operations\n    \u251c\u2500\u2500 counting_utils.py  # Counting and aggregation\n    \u2514\u2500\u2500 tracking_utils.py  # Tracking and movement analysis\n```\n\n## \ud83d\udee0 Quick Start\n\n### Basic Usage\n\n```python\nfrom matrice.deploy.utils.post_processing import PostProcessor, process_simple\n\n# Method 1: Simple processing (recommended for quick tasks)\nresult = process_simple(\n    raw_results,\n    usecase=\"people_counting\",\n    confidence_threshold=0.5\n)\n\n# Method 2: Using PostProcessor class (recommended for complex workflows)\nprocessor = PostProcessor()\nresult = processor.process_simple(\n    raw_results,\n    usecase=\"people_counting\", \n    confidence_threshold=0.5,\n    enable_tracking=True\n)\n\nprint(f\"Status: {result.status.value}\")\nprint(f\"Summary: {result.summary}\")\nprint(f\"Insights: {len(result.insights)} generated\")\n```\n\n### Advanced Configuration\n\n```python\n# Create complex configuration\nconfig = processor.create_config(\n    'people_counting',\n    confidence_threshold=0.6,\n    enable_tracking=True,\n    person_categories=['person', 'people', 'human'],\n    zone_config={\n        'zones': {\n            'entrance': [[0, 0], [100, 0], [100, 100], [0, 100]],\n            'checkout': [[200, 200], [300, 200], [300, 300], [200, 300]]\n        }\n    },\n    alert_config={\n        'count_thresholds': {'all': 10},\n        'occupancy_thresholds': {'entrance': 5}\n    }\n)\n\n# Process with configuration\nresult = processor.process(raw_results, config)\n```\n\n### Configuration File Support\n\n```python\n# Save configuration to file\nprocessor.save_config(config, \"people_counting_config.json\")\n\n# Load and use configuration from file\nresult = processor.process_from_file(raw_results, \"people_counting_config.json\")\n```\n\n## \ud83d\udcca Use Cases\n\n### 1. People Counting (`people_counting`)\n\nAdvanced people counting with comprehensive analytics:\n\n```python\nresult = process_simple(\n    raw_results,\n    usecase=\"people_counting\",\n    confidence_threshold=0.5,\n    enable_tracking=True,\n    person_categories=['person', 'people'],\n    zone_config={\n        'zones': {\n            'entrance': [[0, 0], [100, 0], [100, 100], [0, 100]]\n        }\n    }\n)\n```\n\n**Features:**\n- Multi-category person detection\n- Zone-based counting and analysis\n- Unique person tracking\n- Occupancy analysis\n- Alert generation based on thresholds\n- Temporal analysis and trends\n\n### 2. Customer Service (`customer_service`)\n\nComprehensive customer service analytics:\n\n```python\nresult = process_simple(\n    raw_results,\n    usecase=\"customer_service\",\n    confidence_threshold=0.6,\n    service_proximity_threshold=50.0,\n    staff_categories=['staff', 'employee'],\n    customer_categories=['customer', 'person']\n)\n```\n\n**Features:**\n- Staff utilization analysis\n- Customer-staff interaction detection\n- Service quality metrics\n- Area occupancy analysis\n- Queue management insights\n- Business intelligence metrics\n\n## \ud83d\udd27 Configuration System\n\n### Configuration Classes\n\nAll configurations are type-safe dataclasses with built-in validation:\n\n```python\nfrom matrice.deploy.utils.post_processing import PeopleCountingConfig, ZoneConfig\n\n# Create configuration programmatically\nconfig = PeopleCountingConfig(\n    confidence_threshold=0.5,\n    enable_tracking=True,\n    zone_config=ZoneConfig(\n        zones={\n            'entrance': [[0, 0], [100, 0], [100, 100], [0, 100]]\n        }\n    )\n)\n\n# Validate configuration\nerrors = config.validate()\nif errors:\n    print(f\"Configuration errors: {errors}\")\n```\n\n### Configuration Templates\n\n```python\n# Get configuration template for a use case\ntemplate = processor.get_config_template('people_counting')\nprint(f\"Available options: {list(template.keys())}\")\n\n# List all available use cases\nuse_cases = processor.list_available_usecases()\nprint(f\"Available use cases: {use_cases}\")\n```\n\n## \ud83d\udcc8 Processing Results\n\nAll processing operations return a standardized `ProcessingResult` object:\n\n```python\nclass ProcessingResult:\n    data: Any                           # Processed data\n    status: ProcessingStatus           # SUCCESS, ERROR, WARNING, PARTIAL\n    usecase: str                       # Use case name\n    category: str                      # Use case category\n    processing_time: float             # Processing time in seconds\n    summary: str                       # Human-readable summary\n    insights: List[str]                # Generated insights\n    warnings: List[str]                # Warning messages\n    error_message: Optional[str]       # Error message if failed\n    predictions: List[Dict[str, Any]]  # Detailed predictions\n    metrics: Dict[str, Any]            # Performance metrics\n```\n\n### Working with Results\n\n```python\nresult = processor.process_simple(data, \"people_counting\")\n\n# Check status\nif result.is_success():\n    print(f\"\u2705 {result.summary}\")\n    \n    # Access insights\n    for insight in result.insights:\n        print(f\"\ud83d\udca1 {insight}\")\n    \n    # Access metrics\n    print(f\"\ud83d\udcca Metrics: {result.metrics}\")\n    \n    # Access processed data\n    processed_data = result.data\nelse:\n    print(f\"\u274c Processing failed: {result.error_message}\")\n```\n\n## \ud83d\udcca Statistics and Monitoring\n\n```python\n# Get processing statistics\nstats = processor.get_statistics()\nprint(f\"Total processed: {stats['total_processed']}\")\nprint(f\"Success rate: {stats['success_rate']:.2%}\")\nprint(f\"Average processing time: {stats['average_processing_time']:.3f}s\")\n\n# Reset statistics\nprocessor.reset_statistics()\n```\n\n## \ud83d\udd0c Extensibility\n\n### Adding New Use Cases\n\n1. **Create Use Case Class**:\n\n```python\nfrom matrice.deploy.utils.post_processing.core.base import BaseProcessor\n\nclass MyCustomUseCase(BaseProcessor):\n    def __init__(self):\n        super().__init__(\"my_custom_usecase\")\n        self.category = \"custom\"\n    \n    def process(self, data, config, context=None):\n        # Implement your processing logic\n        return self.create_result(processed_data, \"my_custom_usecase\", \"custom\")\n```\n\n2. **Register Use Case**:\n\n```python\nfrom matrice.deploy.utils.post_processing.core.base import registry\n\nregistry.register_use_case(\"custom\", \"my_custom_usecase\", MyCustomUseCase)\n```\n\n### Adding New Utility Functions\n\nAdd utility functions to the appropriate module in the `utils/` directory and export them in `utils/__init__.py`.\n\n## \ud83e\uddea Testing\n\nThe system includes comprehensive error handling and validation. Here's how to test your implementations:\n\n```python\n# Test configuration validation\nerrors = processor.validate_config({\n    'usecase': 'people_counting',\n    'confidence_threshold': 0.5\n})\n\n# Test with sample data\nsample_data = [\n    {'category': 'person', 'confidence': 0.8, 'bbox': [10, 10, 50, 50]}\n]\n\nresult = process_simple(sample_data, 'people_counting')\nassert result.is_success()\n```\n\n## \ud83d\udd04 Migration from Old System\n\nIf you're migrating from the old post-processing system:\n\n1. **Update Imports**:\n   ```python\n   # Old\n   from matrice.deploy.utils.old_post_processing import some_function\n   \n   # New\n   from matrice.deploy.utils.post_processing import PostProcessor, process_simple\n   ```\n\n2. **Update Processing Calls**:\n   ```python\n   # Old\n   result = old_process_function(data, config_dict)\n   \n   # New\n   result = process_simple(data, \"usecase_name\", **config_dict)\n   ```\n\n3. **Update Configuration**:\n   ```python\n   # Old\n   config = {\"threshold\": 0.5, \"enable_tracking\": True}\n   \n   # New\n   config = processor.create_config(\"people_counting\", \n                                   confidence_threshold=0.5, \n                                   enable_tracking=True)\n   ```\n\n## \ud83d\udc1b Troubleshooting\n\n### Common Issues\n\n1. **Use Case Not Found**:\n   ```python\n   # Check available use cases\n   print(processor.list_available_usecases())\n   ```\n\n2. **Configuration Validation Errors**:\n   ```python\n   # Validate configuration\n   errors = processor.validate_config(config)\n   if errors:\n       print(f\"Validation errors: {errors}\")\n   ```\n\n3. **Processing Failures**:\n   ```python\n   # Check result status and error details\n   if not result.is_success():\n       print(f\"Error: {result.error_message}\")\n       print(f\"Error type: {result.error_type}\")\n       print(f\"Error details: {result.error_details}\")\n   ```\n\n## \ud83d\udcdd API Reference\n\n### Main Classes\n\n- **`PostProcessor`**: Main processing class\n- **`ProcessingResult`**: Standardized result container\n- **`BaseConfig`**: Base configuration class\n- **`PeopleCountingConfig`**: People counting configuration\n- **`CustomerServiceConfig`**: Customer service configuration\n\n### Convenience Functions\n\n- **`process_simple()`**: Simple processing function\n- **`create_config_template()`**: Get configuration template\n- **`list_available_usecases()`**: List available use cases\n- **`validate_config()`**: Validate configuration\n\n### Utility Functions\n\nThe system provides comprehensive utility functions organized by category:\n\n- **Geometry**: Point-in-polygon, distance calculations, IoU\n- **Format**: Format detection and conversion\n- **Filter**: Confidence filtering, deduplication\n- **Counting**: Object counting, zone analysis\n- **Tracking**: Movement analysis, line crossing detection\n\n## \ud83c\udfaf Best Practices\n\n1. **Use Simple Processing for Quick Tasks**:\n   ```python\n   result = process_simple(data, \"people_counting\", confidence_threshold=0.5)\n   ```\n\n2. **Use PostProcessor Class for Complex Workflows**:\n   ```python\n   processor = PostProcessor()\n   config = processor.create_config(\"people_counting\", **params)\n   result = processor.process(data, config)\n   ```\n\n3. **Always Check Result Status**:\n   ```python\n   if result.is_success():\n       # Process successful result\n   else:\n       # Handle error\n   ```\n\n4. **Use Configuration Files for Complex Setups**:\n   ```python\n   processor.save_config(config, \"config.json\")\n   result = processor.process_from_file(data, \"config.json\")\n   ```\n\n5. **Monitor Processing Statistics**:\n   ```python\n   stats = processor.get_statistics()\n   # Monitor success rates and performance\n   ```\n\n## \ud83d\udd2e Future Enhancements\n\nThe refactored system is designed for easy extension. Planned enhancements include:\n\n- Additional use cases (security monitoring, retail analytics)\n- Advanced tracking algorithms\n- Real-time processing capabilities\n- Integration with external analytics platforms\n- Machine learning-based insights generation\n\n---\n\n**The refactored post-processing system provides a solid foundation for scalable, maintainable, and powerful analytics capabilities. The clean architecture makes it easy to extend and customize for specific use cases while maintaining consistency and reliability.** \n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Common utilities for Matrice.ai services",
    "version": "0.1.0",
    "project_urls": null,
    "split_keywords": [
        "matrice",
        " analytics",
        " utilities",
        " cython",
        " postprocessing",
        " usecases"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "db1bdca8a01485e793ae9aa7948d9115f1785271a8f50dca6d513db25cd27b1e",
                "md5": "d5a201047e83183758011dba5d05436c",
                "sha256": "075f81460eb3f9bd9ab06102b6fe98c14a544c7a66718078e8aa06e00c2f3dd6"
            },
            "downloads": -1,
            "filename": "matrice_analytics-0.1.0-py3-none-manylinux_2_17_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d5a201047e83183758011dba5d05436c",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4,>=3.7",
            "size": 81200352,
            "upload_time": "2025-08-19T12:10:50",
            "upload_time_iso_8601": "2025-08-19T12:10:50.907641Z",
            "url": "https://files.pythonhosted.org/packages/db/1b/dca8a01485e793ae9aa7948d9115f1785271a8f50dca6d513db25cd27b1e/matrice_analytics-0.1.0-py3-none-manylinux_2_17_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e7fd731e662a17d8e3aa65a86df1da88cded3d2311b109bc98ff66ccbf5973fe",
                "md5": "c3b0013d6dcca85078dfca7607f7e627",
                "sha256": "4dd827a5c239f0e9e08662f663d95562bc002ece76a1d2d466404b2938872b03"
            },
            "downloads": -1,
            "filename": "matrice_analytics-0.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "c3b0013d6dcca85078dfca7607f7e627",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4,>=3.7",
            "size": 80609965,
            "upload_time": "2025-08-19T12:10:56",
            "upload_time_iso_8601": "2025-08-19T12:10:56.666577Z",
            "url": "https://files.pythonhosted.org/packages/e7/fd/731e662a17d8e3aa65a86df1da88cded3d2311b109bc98ff66ccbf5973fe/matrice_analytics-0.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-19 12:10:56",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "matrice-analytics"
}
        
Elapsed time: 0.61437s