Orange3 MLflow Export
====================
An Orange3 add-on that provides seamless export of complete machine learning workflows to MLflow format, including preprocessing pipelines and dependency management for reproducible deployment.
## Overview
Export your Orange3 models with all preprocessing steps intact! This add-on bridges the gap between Orange3's visual machine learning environment and MLflow's production deployment capabilities.
## Key Features
### Complete Pipeline Export
- **Preprocessing Included**: Unlike basic model saving, captures entire preprocessing pipelines (normalization, imputation, feature selection, etc.)
- **Domain Transformations**: Preserves Orange's automatic domain handling for seamless prediction
- **Zero Information Loss**: Everything needed for prediction is included
### Production-Ready Deployment
- **MLflow Standard Format**: Exports to industry-standard MLflow model format
- **Dependency Management**: Automatically includes Orange3, scikit-learn, pandas, numpy, and all dependencies
- **Cross-Platform**: Deploy on any platform supporting MLflow (local, cloud, containers)
- **Serving Ready**: Use `mlflow models serve` immediately after export
### Smart Input Handling
- **Flexible DataFrames**: Accepts pandas DataFrames with automatic type conversion
- **Column Name Mapping**: Intelligently handles feature name mismatches through positional mapping
- **Signature Inference**: Automatically generates input/output schemas from sample data
### Universal Compatibility
- **All Orange Models**: Works with any Orange learner (classification, regression, clustering)
- **Any Preprocessing**: Supports all Orange preprocessing widgets and operations
- **Version Independent**: Models work across different Orange and Python versions
## Quick Start
### Installation
```bash
pip install orange3-mlflow-export
# or from source
pip install .
```
### Basic Usage
**In Orange GUI:**
1. Build your workflow (File → Preprocess → Model)
2. Add MLflow Export widget (Example section)
3. Connect your trained model
4. Set export path and save
**Programmatically:**
```python
from orangecontrib.example.widgets.owmlflowexport import OWMLFlowExport
import Orange
# Train model with preprocessing
data = Orange.data.Table("iris")
preprocessor = Orange.preprocess.preprocess.PreprocessorList([
Orange.preprocess.Normalize(),
Orange.preprocess.Impute()
])
processed_data = preprocessor(data)
model = Orange.classification.LogisticRegressionLearner()(processed_data)
# Export to MLflow
widget = OWMLFlowExport()
widget.set_model(model)
widget.filename = "model.mlflow"
widget.do_save()
```
**Deploy and Serve:**
```bash
mlflow models serve -m ./model.mlflow -p 8080
```
## Why Choose This Over Standard Orange Model Saving?
| Feature | Orange Save Model | MLflow Export |
|---------|-------------------|---------------|
| Preprocessing | ❌ Lost | ✅ Preserved |
| Dependencies | ❌ Manual | ✅ Automatic |
| Deployment | ❌ Complex | ✅ One Command |
| Portability | ❌ Limited | ✅ Universal |
| Production Use | ❌ Difficult | ✅ Seamless |
## Use Cases
- **Model Deployment**: Export Orange models for production serving
- **Reproducible Research**: Share complete workflows with dependencies
- **Cross-Platform Models**: Train in Orange, deploy anywhere
- **MLOps Integration**: Integrate Orange models into MLflow tracking and serving
- **Educational**: Demonstrate complete ML pipeline deployment
## Supported Orange Components
**Models:** All Orange learners (Tree, SVM, Neural Network, Linear, etc.)
**Preprocessing:** Normalize, Impute, Continuize, Feature Selection, PCA, etc.
**Data Types:** Tabular, spectroscopic, time series, text (with appropriate preprocessing)
## Testing
Verify your exported models with included test scripts:
```bash
python test_spectra_model.py ./your_model.mlflow
python load_predictor.py
```
## Requirements
- Python 3.8+
- Orange3
- MLflow
- pandas, numpy, scikit-learn
- cloudpickle
## Documentation
See the [complete documentation](README_MLFLOW_WIDGET.md) for detailed usage, architecture, and troubleshooting.
## License
GPL-3.0 (same as Orange3)
Raw data
{
"_id": null,
"home_page": "https://github.com/NIRLab-com/mlflow-model-widget",
"name": "Orange3-MLflow-Export",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "orange3 add-on, mlflow, machine learning, model export, data science, deployment, preprocessing",
"author": "NIRLAB AG",
"author_email": "dev@nirlab.com",
"download_url": "https://files.pythonhosted.org/packages/8d/ab/82ee2cec99c77a590f3a9c8780cc07dd6b3eff2f5274314fe29a37f12464/orange3_mlflow_export-0.1.1.tar.gz",
"platform": null,
"description": "Orange3 MLflow Export\n====================\n\nAn Orange3 add-on that provides seamless export of complete machine learning workflows to MLflow format, including preprocessing pipelines and dependency management for reproducible deployment.\n\n## Overview\n\nExport your Orange3 models with all preprocessing steps intact! This add-on bridges the gap between Orange3's visual machine learning environment and MLflow's production deployment capabilities.\n\n## Key Features\n\n### Complete Pipeline Export\n- **Preprocessing Included**: Unlike basic model saving, captures entire preprocessing pipelines (normalization, imputation, feature selection, etc.)\n- **Domain Transformations**: Preserves Orange's automatic domain handling for seamless prediction\n- **Zero Information Loss**: Everything needed for prediction is included\n\n### Production-Ready Deployment\n- **MLflow Standard Format**: Exports to industry-standard MLflow model format\n- **Dependency Management**: Automatically includes Orange3, scikit-learn, pandas, numpy, and all dependencies\n- **Cross-Platform**: Deploy on any platform supporting MLflow (local, cloud, containers)\n- **Serving Ready**: Use `mlflow models serve` immediately after export\n\n### Smart Input Handling\n- **Flexible DataFrames**: Accepts pandas DataFrames with automatic type conversion\n- **Column Name Mapping**: Intelligently handles feature name mismatches through positional mapping\n- **Signature Inference**: Automatically generates input/output schemas from sample data\n\n### Universal Compatibility\n- **All Orange Models**: Works with any Orange learner (classification, regression, clustering)\n- **Any Preprocessing**: Supports all Orange preprocessing widgets and operations\n- **Version Independent**: Models work across different Orange and Python versions\n\n## Quick Start\n\n### Installation\n```bash\npip install orange3-mlflow-export\n# or from source\npip install .\n```\n\n### Basic Usage\n\n**In Orange GUI:**\n1. Build your workflow (File \u2192 Preprocess \u2192 Model)\n2. Add MLflow Export widget (Example section)\n3. Connect your trained model\n4. Set export path and save\n\n**Programmatically:**\n```python\nfrom orangecontrib.example.widgets.owmlflowexport import OWMLFlowExport\nimport Orange\n\n# Train model with preprocessing\ndata = Orange.data.Table(\"iris\")\npreprocessor = Orange.preprocess.preprocess.PreprocessorList([\n Orange.preprocess.Normalize(),\n Orange.preprocess.Impute()\n])\nprocessed_data = preprocessor(data)\nmodel = Orange.classification.LogisticRegressionLearner()(processed_data)\n\n# Export to MLflow\nwidget = OWMLFlowExport()\nwidget.set_model(model)\nwidget.filename = \"model.mlflow\"\nwidget.do_save()\n```\n\n**Deploy and Serve:**\n```bash\nmlflow models serve -m ./model.mlflow -p 8080\n```\n\n## Why Choose This Over Standard Orange Model Saving?\n\n| Feature | Orange Save Model | MLflow Export |\n|---------|-------------------|---------------|\n| Preprocessing | \u274c Lost | \u2705 Preserved |\n| Dependencies | \u274c Manual | \u2705 Automatic |\n| Deployment | \u274c Complex | \u2705 One Command |\n| Portability | \u274c Limited | \u2705 Universal |\n| Production Use | \u274c Difficult | \u2705 Seamless |\n\n## Use Cases\n\n- **Model Deployment**: Export Orange models for production serving\n- **Reproducible Research**: Share complete workflows with dependencies\n- **Cross-Platform Models**: Train in Orange, deploy anywhere\n- **MLOps Integration**: Integrate Orange models into MLflow tracking and serving\n- **Educational**: Demonstrate complete ML pipeline deployment\n\n## Supported Orange Components\n\n**Models:** All Orange learners (Tree, SVM, Neural Network, Linear, etc.) \n**Preprocessing:** Normalize, Impute, Continuize, Feature Selection, PCA, etc. \n**Data Types:** Tabular, spectroscopic, time series, text (with appropriate preprocessing)\n\n## Testing\n\nVerify your exported models with included test scripts:\n```bash\npython test_spectra_model.py ./your_model.mlflow\npython load_predictor.py\n```\n\n## Requirements\n\n- Python 3.8+\n- Orange3\n- MLflow\n- pandas, numpy, scikit-learn\n- cloudpickle\n\n## Documentation\n\nSee the [complete documentation](README_MLFLOW_WIDGET.md) for detailed usage, architecture, and troubleshooting.\n\n## License\n\nGPL-3.0 (same as Orange3)\n",
"bugtrack_url": null,
"license": "GPL-3.0",
"summary": "Export Orange3 models with preprocessing pipelines to MLflow format for production deployment.",
"version": "0.1.1",
"project_urls": {
"Bug Reports": "https://github.com/NIRLab-com/mlflow-model-widget/issues",
"Documentation": "https://github.com/NIRLab-com/mlflow-model-widget/blob/main/README_MLFLOW_WIDGET.md",
"Homepage": "https://github.com/NIRLab-com/mlflow-model-widget",
"Source": "https://github.com/NIRLab-com/mlflow-model-widget"
},
"split_keywords": [
"orange3 add-on",
" mlflow",
" machine learning",
" model export",
" data science",
" deployment",
" preprocessing"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "87563fb12aeca7a2ab826bfb18350ed3fc6888dde61cb161ef66704a85059f00",
"md5": "1fbdfdccb73b41e779088db2bd80a231",
"sha256": "84f8a2135273df729431559a4b1180ebb6a8110a40c878f081067321c5ef0cef"
},
"downloads": -1,
"filename": "orange3_mlflow_export-0.1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "1fbdfdccb73b41e779088db2bd80a231",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 10661,
"upload_time": "2025-09-15T10:31:30",
"upload_time_iso_8601": "2025-09-15T10:31:30.770762Z",
"url": "https://files.pythonhosted.org/packages/87/56/3fb12aeca7a2ab826bfb18350ed3fc6888dde61cb161ef66704a85059f00/orange3_mlflow_export-0.1.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8dab82ee2cec99c77a590f3a9c8780cc07dd6b3eff2f5274314fe29a37f12464",
"md5": "ab34238756508485240f580afbf91a6f",
"sha256": "a5c7fbf96e4f49940c47738fd308477d7b21622ec683708ff0d79faac83e40e2"
},
"downloads": -1,
"filename": "orange3_mlflow_export-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "ab34238756508485240f580afbf91a6f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 11531,
"upload_time": "2025-09-15T10:31:31",
"upload_time_iso_8601": "2025-09-15T10:31:31.641705Z",
"url": "https://files.pythonhosted.org/packages/8d/ab/82ee2cec99c77a590f3a9c8780cc07dd6b3eff2f5274314fe29a37f12464/orange3_mlflow_export-0.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-15 10:31:31",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "NIRLab-com",
"github_project": "mlflow-model-widget",
"github_not_found": true,
"lcname": "orange3-mlflow-export"
}