# LabChain [](https://github.com/manucouto1/LabChain/actions/workflows/test_on_push_pull.yml)
LabChain is an innovative platform designed to simplify and accelerate the development of machine learning models. It provides data scientists and machine learning engineers with a flexible and powerful tool to create, experiment with, and deploy models efficiently and in a structured manner. [https://manucouto1.github.io/LabChain](https://manucouto1.github.io/LabChain)
## Key Features
- Modular and flexible architecture
- Customizable pipelines for ML workflows
- Extensible plugin system for filters, metrics, and storage
- Support for distributed processing with MapReduce
- Integrated model evaluation and optimization tools
## Diagram
```mermaid
classDiagram
class BasePlugin {
<<abstract>>
+item_dump() : Dict
+build_from_dump(dump_dict: Dict, factory: BaseFactory) : BasePlugin
}
class BaseFilter {
<<abstract>>
+fit(x: XYData, y: XYData|None) : float|None
+predict(x: XYData) : XYData
+evaluate(x_data: XYData, y_true: XYData|None, y_pred: XYData) : Dict[str, Any]
}
class BasePipeline {
<<abstract>>
-filters: List[BaseFilter]
+evaluate(x_data: XYData, y_true: XYData|None, y_pred: XYData) : Dict[str, Any]
+start(x: XYData, y: XYData|None, X_: XYData|None) : XYData|None
+init()
+get_types() : List[Type[BaseFilter]]
+optimizer(optimizer: BaseOptimizer) : BaseOptimizer|None
+splitter(splitter: BaseSplitter) : BaseSplitter|None
}
class BaseSplitter {
<<abstract>>
-pipeline: BasePipeline
+split(pipeline: BasePipeline)
+evaluate(x_data: XYData, y_true: XYData|None, y_pred: XYData) : Dict[str, Any]
+start(x: XYData, y: XYData|None, X_: XYData|None) : XYData|None
+unwrap() : BasePipeline
}
class BaseOptimizer {
<<abstract>>
-pipeline: BasePipeline
+start(x: XYData, y: XYData|None, X_: XYData|None) : XYData|None
+optimize(pipeline: BasePipeline)
}
class BaseMetric {
<<abstract>>
+evaluate(x_data: XYData, y_true: XYData|None, y_pred: XYData) : float
}
class BaseStorer {
<<abstract>>
+get_root_path() : str
+upload_file(file_path: str, destination_path: str)
+list_stored_files() : List[str]
+get_file_by_hashcode(hashcode: str) : str
+check_if_exists(file_path: str) : bool
+download_file(file_path: str, destination_path: str)
+delete_file(file_path: str)
}
class ParallelPipeline {
<<abstract>>
}
class SequentialPipeline {
<<abstract>>
}
class MonoPipeline {
}
class LocalThreadPipeline {
}
class HPCPipeline {
}
class F3Pipeline {
}
class KFoldSplitter {
}
class OptunaOptimizer {
}
class SklearnOptimizer {
}
class WandbOptimizer {
}
class LocalStorer {
}
class S3Storer {
}
class Container {
+bind()
+get()
}
BasePlugin <|-- BaseFilter
BasePlugin <|-- BaseMetric
BaseFilter <|-- BasePipeline
BaseFilter <|-- BaseSplitter
BaseFilter <|-- BaseOptimizer
BasePlugin <|-- BaseStorer
BasePipeline <|-- ParallelPipeline
BasePipeline <|-- SequentialPipeline
ParallelPipeline <|-- MonoPipeline
ParallelPipeline <|-- LocalThreadPipeline
ParallelPipeline <|-- HPCPipeline
SequentialPipeline <|-- F3Pipeline
BaseSplitter <|-- KFoldSplitter
BaseOptimizer <|-- OptunaOptimizer
BaseOptimizer <|-- SklearnOptimizer
BaseOptimizer <|-- WandbOptimizer
BaseStorer <|-- LocalStorer
BaseStorer <|-- S3Storer
BasePipeline "1" *-- "1..*" BaseFilter : contains
BaseSplitter "1" *-- "1" BaseFilter : contains
BaseOptimizer "1" *-- "1" BaseFilter : contains
BasePipeline "1" *-- "0..*" BaseMetric : uses
Container --> BasePlugin : contains
```
## Prerequisites
Before installing LabChain, ensure you have the following prerequisites:
1. Python 3.11 or higher
2. pip (Python package installer)
## Installation Options
You have two options to install LabChain:
### Option 1: Install from PyPI
The easiest way to install LabChain is directly from PyPI using pip:
```bash
pip install framework3
```
This will install the latest stable version of LabChain and its dependencies.
### Option 2: Install from Source
2. Clone the repository:
```
git clone https://github.com/manucouto1/LabChain.git
```
3. Navigate to the project directory:
```
cd LabChain
```
4. Install the dependencies using pip:
```
pip install -r requirements.txt
```
## Basic Usage
Here's a basic example of how to use LabChain:
```python
from framework3.plugins.pipelines import F3Pipeline
from framework3.plugins.filters import KnnFilter
from framework3.plugins.metrics import F1, Precision, Recall
# Create a pipeline
pipeline = F3Pipeline(
plugins=[KnnFilter()],
metrics=[F1(), Precision(), Recall()]
)
# Fit the model
pipeline.fit(X_train, y_train)
# Make predictions
predictions = pipeline.predict(X_test)
# Evaluate the model
evaluation = pipeline.evaluate(X_test, y_test, y_pred=predictions)
print(evaluation)
```
## Documentation
For more detailed information on how to use Framework3, check out our complete documentation at:
[https://manucouto1.github.io/LabChain](https://manucouto1.github.io/LabChain)
## Contributing
Contributions are welcome. Please read our contribution guidelines before submitting pull requests.
## License
This project is licensed under the AGPL-3.0 license. See the `LICENSE` file for more details.
## Contact
If you have any questions or suggestions, don't hesitate to open an issue in this repository or contact the development team.
---
Thank you for your interest in LabChain! We hope this tool will be useful in your machine learning projects.
Raw data
{
"_id": null,
"home_page": null,
"name": "framework3",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.11",
"maintainer_email": null,
"keywords": "machine learning, framework, pipeline, ML, AI, data science",
"author": "Manuel Couto Pintos",
"author_email": "manuel.couto.pintos@usc.es",
"download_url": "https://files.pythonhosted.org/packages/87/8c/909106a49600a4b0ca7bffa0b38f417e9e1f43cce663b72cea04d14f275f/framework3-1.0.20.tar.gz",
"platform": null,
"description": "# LabChain [](https://github.com/manucouto1/LabChain/actions/workflows/test_on_push_pull.yml)\nLabChain is an innovative platform designed to simplify and accelerate the development of machine learning models. It provides data scientists and machine learning engineers with a flexible and powerful tool to create, experiment with, and deploy models efficiently and in a structured manner. [https://manucouto1.github.io/LabChain](https://manucouto1.github.io/LabChain)\n\n## Key Features\n\n- Modular and flexible architecture\n- Customizable pipelines for ML workflows\n- Extensible plugin system for filters, metrics, and storage\n- Support for distributed processing with MapReduce\n- Integrated model evaluation and optimization tools\n\n## Diagram\n```mermaid\n classDiagram\n class BasePlugin {\n <<abstract>>\n +item_dump() : Dict\n +build_from_dump(dump_dict: Dict, factory: BaseFactory) : BasePlugin\n }\n\n class BaseFilter {\n <<abstract>>\n +fit(x: XYData, y: XYData|None) : float|None\n +predict(x: XYData) : XYData\n +evaluate(x_data: XYData, y_true: XYData|None, y_pred: XYData) : Dict[str, Any]\n }\n\n class BasePipeline {\n <<abstract>>\n -filters: List[BaseFilter]\n +evaluate(x_data: XYData, y_true: XYData|None, y_pred: XYData) : Dict[str, Any]\n +start(x: XYData, y: XYData|None, X_: XYData|None) : XYData|None\n +init()\n +get_types() : List[Type[BaseFilter]]\n +optimizer(optimizer: BaseOptimizer) : BaseOptimizer|None\n +splitter(splitter: BaseSplitter) : BaseSplitter|None\n }\n\n class BaseSplitter {\n <<abstract>>\n -pipeline: BasePipeline\n +split(pipeline: BasePipeline)\n +evaluate(x_data: XYData, y_true: XYData|None, y_pred: XYData) : Dict[str, Any]\n +start(x: XYData, y: XYData|None, X_: XYData|None) : XYData|None\n +unwrap() : BasePipeline\n }\n\n class BaseOptimizer {\n <<abstract>>\n -pipeline: BasePipeline\n +start(x: XYData, y: XYData|None, X_: XYData|None) : XYData|None\n +optimize(pipeline: BasePipeline)\n }\n\n class BaseMetric {\n <<abstract>>\n +evaluate(x_data: XYData, y_true: XYData|None, y_pred: XYData) : float\n }\n\n class BaseStorer {\n <<abstract>>\n +get_root_path() : str\n +upload_file(file_path: str, destination_path: str)\n +list_stored_files() : List[str]\n +get_file_by_hashcode(hashcode: str) : str\n +check_if_exists(file_path: str) : bool\n +download_file(file_path: str, destination_path: str)\n +delete_file(file_path: str)\n }\n\n class ParallelPipeline {\n <<abstract>>\n }\n\n class SequentialPipeline {\n <<abstract>>\n }\n\n class MonoPipeline {\n }\n\n class LocalThreadPipeline {\n }\n\n class HPCPipeline {\n }\n\n class F3Pipeline {\n }\n\n class KFoldSplitter {\n }\n\n class OptunaOptimizer {\n }\n\n class SklearnOptimizer {\n }\n\n class WandbOptimizer {\n }\n\n class LocalStorer {\n }\n\n class S3Storer {\n }\n\n class Container {\n +bind()\n +get()\n }\n\n BasePlugin <|-- BaseFilter\n BasePlugin <|-- BaseMetric\n BaseFilter <|-- BasePipeline\n BaseFilter <|-- BaseSplitter\n BaseFilter <|-- BaseOptimizer\n BasePlugin <|-- BaseStorer\n BasePipeline <|-- ParallelPipeline\n BasePipeline <|-- SequentialPipeline\n ParallelPipeline <|-- MonoPipeline\n ParallelPipeline <|-- LocalThreadPipeline\n ParallelPipeline <|-- HPCPipeline\n SequentialPipeline <|-- F3Pipeline\n BaseSplitter <|-- KFoldSplitter\n BaseOptimizer <|-- OptunaOptimizer\n BaseOptimizer <|-- SklearnOptimizer\n BaseOptimizer <|-- WandbOptimizer\n BaseStorer <|-- LocalStorer\n BaseStorer <|-- S3Storer\n\n BasePipeline \"1\" *-- \"1..*\" BaseFilter : contains\n BaseSplitter \"1\" *-- \"1\" BaseFilter : contains\n BaseOptimizer \"1\" *-- \"1\" BaseFilter : contains\n BasePipeline \"1\" *-- \"0..*\" BaseMetric : uses\n\n Container --> BasePlugin : contains\n```\n\n## Prerequisites\n\nBefore installing LabChain, ensure you have the following prerequisites:\n\n1. Python 3.11 or higher\n2. pip (Python package installer)\n\n## Installation Options\n\nYou have two options to install LabChain:\n\n### Option 1: Install from PyPI\n\nThe easiest way to install LabChain is directly from PyPI using pip:\n\n```bash\npip install framework3\n```\n\nThis will install the latest stable version of LabChain and its dependencies.\n\n### Option 2: Install from Source\n\n2. Clone the repository:\n ```\n git clone https://github.com/manucouto1/LabChain.git\n ```\n\n3. Navigate to the project directory:\n ```\n cd LabChain\n ```\n\n4. Install the dependencies using pip:\n ```\n pip install -r requirements.txt\n ```\n\n## Basic Usage\n\nHere's a basic example of how to use LabChain:\n\n```python\nfrom framework3.plugins.pipelines import F3Pipeline\nfrom framework3.plugins.filters import KnnFilter\nfrom framework3.plugins.metrics import F1, Precision, Recall\n\n# Create a pipeline\npipeline = F3Pipeline(\n plugins=[KnnFilter()],\n metrics=[F1(), Precision(), Recall()]\n)\n\n# Fit the model\npipeline.fit(X_train, y_train)\n\n# Make predictions\npredictions = pipeline.predict(X_test)\n\n# Evaluate the model\nevaluation = pipeline.evaluate(X_test, y_test, y_pred=predictions)\nprint(evaluation)\n```\n\n## Documentation\n\nFor more detailed information on how to use Framework3, check out our complete documentation at:\n\n[https://manucouto1.github.io/LabChain](https://manucouto1.github.io/LabChain)\n\n## Contributing\n\nContributions are welcome. Please read our contribution guidelines before submitting pull requests.\n\n## License\n\nThis project is licensed under the AGPL-3.0 license. See the `LICENSE` file for more details.\n\n## Contact\n\nIf you have any questions or suggestions, don't hesitate to open an issue in this repository or contact the development team.\n\n---\n\nThank you for your interest in LabChain! We hope this tool will be useful in your machine learning projects.\n",
"bugtrack_url": null,
"license": "AGPL-3.0-or-later",
"summary": "A flexible framework for machine learning pipelines",
"version": "1.0.20",
"project_urls": {
"Documentation": "https://manucouto1.github.io/framework3/",
"Homepage": "https://github.com/manucouto1/framework3",
"Repository": "https://github.com/manucouto1/framework3.git"
},
"split_keywords": [
"machine learning",
" framework",
" pipeline",
" ml",
" ai",
" data science"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "f8b1313e68da838d9a5578253d949e1a8181e3e92c93dcf0c4e759242f0d4c62",
"md5": "f112fdebfd100e69ac6ffc83c871426b",
"sha256": "a16b058214c25678d86db427c2687339068ba3da03c4b398e65f3e9ff491f946"
},
"downloads": -1,
"filename": "framework3-1.0.20-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f112fdebfd100e69ac6ffc83c871426b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.11",
"size": 117374,
"upload_time": "2025-09-06T21:00:46",
"upload_time_iso_8601": "2025-09-06T21:00:46.084183Z",
"url": "https://files.pythonhosted.org/packages/f8/b1/313e68da838d9a5578253d949e1a8181e3e92c93dcf0c4e759242f0d4c62/framework3-1.0.20-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "878c909106a49600a4b0ca7bffa0b38f417e9e1f43cce663b72cea04d14f275f",
"md5": "3be1e9c6209dfbc60fd90269354c3040",
"sha256": "a61a74608d53224821301c441912e5bb15ac1cec0acfd67a536855e3deba43a4"
},
"downloads": -1,
"filename": "framework3-1.0.20.tar.gz",
"has_sig": false,
"md5_digest": "3be1e9c6209dfbc60fd90269354c3040",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.11",
"size": 77090,
"upload_time": "2025-09-06T21:00:47",
"upload_time_iso_8601": "2025-09-06T21:00:47.393069Z",
"url": "https://files.pythonhosted.org/packages/87/8c/909106a49600a4b0ca7bffa0b38f417e9e1f43cce663b72cea04d14f275f/framework3-1.0.20.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-06 21:00:47",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "manucouto1",
"github_project": "framework3",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "typeguard",
"specs": [
[
"==",
"4.4.1"
]
]
},
{
"name": "multimethod",
"specs": [
[
"==",
"1.12"
]
]
},
{
"name": "pyspark",
"specs": [
[
"==",
"3.5.3"
]
]
},
{
"name": "fastapi",
"specs": [
[
"==",
"0.115.5"
]
]
},
{
"name": "pandas",
"specs": [
[
"==",
"2.2.3"
]
]
},
{
"name": "torch",
"specs": [
[
"==",
"2.5.1"
]
]
},
{
"name": "scipy",
"specs": [
[
"==",
"1.13.1"
]
]
},
{
"name": "rich",
"specs": [
[
"==",
"13.9.4"
]
]
},
{
"name": "boto3",
"specs": [
[
"==",
"1.35.73"
]
]
},
{
"name": "scikit-learn",
"specs": [
[
"==",
"1.5.2"
]
]
},
{
"name": "cloudpickle",
"specs": [
[
"==",
"3.1.0"
]
]
},
{
"name": "tqdm",
"specs": [
[
"==",
"4.67.1"
]
]
},
{
"name": "nltk",
"specs": [
[
"==",
"3.9.1"
]
]
},
{
"name": "transformers",
"specs": [
[
"==",
"4.46.3"
]
]
},
{
"name": "gensim",
"specs": [
[
"==",
"4.3.3"
]
]
},
{
"name": "wandb",
"specs": [
[
"==",
"0.18.7"
]
]
},
{
"name": "optuna",
"specs": [
[
"==",
"4.2.1"
]
]
},
{
"name": "sentence-transformers",
"specs": [
[
"==",
"4.0.2"
]
]
}
],
"lcname": "framework3"
}