sinapsis-data-tools 0.2.28__tar.gz → 0.2.31__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/PKG-INFO +2 -1
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/README.md +1 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_analysis/src/sinapsis_data_analysis/helpers/excluded_models.py +13 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_analysis/src/sinapsis_data_analysis/helpers/tags.py +1 -1
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_analysis/src/sinapsis_data_analysis/templates/__init__.py +1 -2
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_analysis/src/sinapsis_data_analysis/templates/inference/ml_base_inference.py +4 -3
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_analysis/src/sinapsis_data_analysis/templates/inference/xgboost_inference.py +3 -1
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_analysis/src/sinapsis_data_analysis/templates/training/ml_base_training.py +20 -19
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_analysis/src/sinapsis_data_analysis/templates/training/sklearn_manifold.py +9 -9
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_analysis/src/sinapsis_data_analysis/templates/training/sklearn_train.py +43 -5
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_analysis/src/sinapsis_data_analysis/templates/training/xgboost_train.py +2 -3
- sinapsis_data_tools-0.2.31/packages/sinapsis_data_analysis/src/sinapsis_data_analysis/templates/transformation/categorical_to_numerical.py +43 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/helpers/tags.py +1 -1
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/templates/__init__.py +1 -2
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/templates/audio_readers/audio_reader_pydub.py +8 -5
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/templates/audio_readers/audio_reader_soundfile.py +8 -4
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/templates/audio_readers/base_audio_reader.py +6 -5
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/templates/base_file_data_loader.py +8 -7
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/templates/datasets_readers/csv_datasets.py +6 -4
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/templates/datasets_readers/dataset_splitter.py +15 -19
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/templates/datasets_readers/sklearn_datasets.py +30 -19
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/templates/datasets_readers/sktime_datasets.py +61 -55
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/templates/image_readers/base_image_folder_data_loader.py +3 -1
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/templates/image_readers/coco_dataset_reader.py +23 -9
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/templates/image_readers/csv_dataset_reader.py +8 -5
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/templates/image_readers/image_folder_reader_cv2.py +2 -1
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/templates/image_readers/image_folder_reader_kornia.py +2 -1
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/templates/text_readers/text_input.py +1 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/templates/video_readers/base_video_reader.py +12 -5
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/templates/video_readers/video_reader_cv2.py +7 -5
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/templates/video_readers/video_reader_dali.py +11 -6
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/templates/video_readers/video_reader_ffmpeg.py +10 -4
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/templates/video_readers/video_reader_torchcodec.py +9 -4
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_tools.egg-info/PKG-INFO +2 -1
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_tools.egg-info/SOURCES.txt +3 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_visualization/src/sinapsis_data_visualization/helpers/annotation_drawer_tools.py +14 -13
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_visualization/src/sinapsis_data_visualization/helpers/plot_distributions.py +4 -3
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_visualization/src/sinapsis_data_visualization/helpers/scikit_pca_analysis.py +1 -1
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_visualization/src/sinapsis_data_visualization/helpers/tags.py +1 -1
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_visualization/src/sinapsis_data_visualization/templates/__init__.py +1 -1
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_visualization/src/sinapsis_data_visualization/templates/base_annotation_drawer.py +4 -2
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_visualization/src/sinapsis_data_visualization/templates/base_visualization_template.py +11 -10
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_visualization/src/sinapsis_data_visualization/templates/bbox_drawer.py +2 -1
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_visualization/src/sinapsis_data_visualization/templates/data_distribution_visualization.py +17 -10
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_visualization/src/sinapsis_data_visualization/templates/key_points_drawer.py +2 -1
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_visualization/src/sinapsis_data_visualization/templates/label_drawer.py +5 -2
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_visualization/src/sinapsis_data_visualization/templates/oriented_bbox_drawer.py +2 -1
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_visualization/src/sinapsis_data_visualization/templates/segmentation_mask_drawer.py +4 -1
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_visualization/src/sinapsis_data_visualization/templates/tabular_data_visualization.py +29 -25
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_writers/src/sinapsis_data_writers/helpers/tags.py +1 -1
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_writers/src/sinapsis_data_writers/templates/annotation_writers/base_annotation_writer.py +14 -9
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_writers/src/sinapsis_data_writers/templates/annotation_writers/coco_annotation_writer.py +2 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_writers/src/sinapsis_data_writers/templates/audio_writers/audio_writer_soundfile.py +6 -5
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_writers/src/sinapsis_data_writers/templates/generic_data_writers/generic_data_json_writer.py +6 -4
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_writers/src/sinapsis_data_writers/templates/image_writers/image_saver.py +18 -15
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_writers/src/sinapsis_data_writers/templates/image_writers/pdf_to_image_converter.py +5 -3
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_writers/src/sinapsis_data_writers/templates/video_writers/base_video_writer.py +8 -6
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_writers/src/sinapsis_data_writers/templates/video_writers/video_writer_cv2.py +7 -3
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_writers/src/sinapsis_data_writers/templates/video_writers/video_writer_ffmpeg.py +8 -4
- sinapsis_data_tools-0.2.31/packages/sinapsis_generic_data_tools/src/sinapsis_generic_data_tools/helpers/__init__.py +0 -0
- sinapsis_data_tools-0.2.31/packages/sinapsis_generic_data_tools/src/sinapsis_generic_data_tools/helpers/image_color_space_converter.py +139 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_generic_data_tools/src/sinapsis_generic_data_tools/helpers/tags.py +1 -1
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_generic_data_tools/src/sinapsis_generic_data_tools/templates/__init__.py +2 -1
- sinapsis_data_tools-0.2.31/packages/sinapsis_generic_data_tools/src/sinapsis_generic_data_tools/templates/context_chunker.py +58 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_generic_data_tools/src/sinapsis_generic_data_tools/templates/image_color_conversion_np.py +2 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_generic_data_tools/src/sinapsis_generic_data_tools/templates/mask_non_roi.py +28 -7
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_generic_data_tools/src/sinapsis_generic_data_tools/templates/packet_buffer_queue.py +3 -1
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_generic_data_tools/src/sinapsis_generic_data_tools/templates/source_history_aggregator.py +2 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_generic_data_tools/src/sinapsis_generic_data_tools/templates/text_content_filter.py +13 -14
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/pyproject.toml +2 -1
- sinapsis_data_tools-0.2.28/packages/sinapsis_data_analysis/src/sinapsis_data_analysis/templates/transformation/categorical_to_numerical.py +0 -45
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/LICENSE +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_analysis/__init__.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_analysis/src/__init__.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_analysis/src/sinapsis_data_analysis/__init__.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_analysis/src/sinapsis_data_analysis/helpers/__init__.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_analysis/src/sinapsis_data_analysis/helpers/model_metrics.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_analysis/src/sinapsis_data_analysis/templates/inference/__init__.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_analysis/src/sinapsis_data_analysis/templates/inference/sklearn_inference.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_analysis/src/sinapsis_data_analysis/templates/training/__init__.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/__init__.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/helpers/__init__.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/helpers/coco_dataclasses.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/helpers/csv_reader.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/helpers/file_path_helpers.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/helpers/sklearn_dataset_subset.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/helpers/sktime_datasets_subset.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/helpers/text_input_helpers.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/templates/audio_readers/__init__.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/templates/audio_readers/audio_reader_to_bytes.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/templates/datasets_readers/__init__.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/templates/image_readers/__init__.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/templates/text_readers/__init__.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_readers/src/sinapsis_data_readers/templates/video_readers/__init__.py +0 -0
- /sinapsis_data_tools-0.2.28/packages/sinapsis_data_visualization/src/__init__.py → /sinapsis_data_tools-0.2.31/packages/sinapsis_data_readers/src/test_gradio_client.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_tools.egg-info/dependency_links.txt +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_tools.egg-info/requires.txt +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_tools.egg-info/top_level.txt +0 -0
- {sinapsis_data_tools-0.2.28/packages/sinapsis_data_visualization/src/sinapsis_data_visualization → sinapsis_data_tools-0.2.31/packages/sinapsis_data_visualization/src}/__init__.py +0 -0
- {sinapsis_data_tools-0.2.28/packages/sinapsis_data_visualization/src/sinapsis_data_visualization/helpers → sinapsis_data_tools-0.2.31/packages/sinapsis_data_visualization/src/sinapsis_data_visualization}/__init__.py +0 -0
- {sinapsis_data_tools-0.2.28/packages/sinapsis_data_writers/src/sinapsis_data_writers → sinapsis_data_tools-0.2.31/packages/sinapsis_data_visualization/src/sinapsis_data_visualization/helpers}/__init__.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_visualization/src/sinapsis_data_visualization/helpers/annotation_drawer_types.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_visualization/src/sinapsis_data_visualization/helpers/color_utils.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_visualization/src/sinapsis_data_visualization/helpers/detection_utils.py +0 -0
- {sinapsis_data_tools-0.2.28/packages/sinapsis_data_writers/src/sinapsis_data_writers/helpers → sinapsis_data_tools-0.2.31/packages/sinapsis_data_writers/src/sinapsis_data_writers}/__init__.py +0 -0
- {sinapsis_data_tools-0.2.28/packages/sinapsis_data_writers/src/sinapsis_data_writers/templates/annotation_writers → sinapsis_data_tools-0.2.31/packages/sinapsis_data_writers/src/sinapsis_data_writers/helpers}/__init__.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_data_writers/src/sinapsis_data_writers/templates/__init__.py +0 -0
- {sinapsis_data_tools-0.2.28/packages/sinapsis_data_writers/src/sinapsis_data_writers/templates/audio_writers → sinapsis_data_tools-0.2.31/packages/sinapsis_data_writers/src/sinapsis_data_writers/templates/annotation_writers}/__init__.py +0 -0
- {sinapsis_data_tools-0.2.28/packages/sinapsis_data_writers/src/sinapsis_data_writers/templates/image_writers → sinapsis_data_tools-0.2.31/packages/sinapsis_data_writers/src/sinapsis_data_writers/templates/audio_writers}/__init__.py +0 -0
- {sinapsis_data_tools-0.2.28/packages/sinapsis_data_writers/src/sinapsis_data_writers/templates/video_writers → sinapsis_data_tools-0.2.31/packages/sinapsis_data_writers/src/sinapsis_data_writers/templates/image_writers}/__init__.py +0 -0
- {sinapsis_data_tools-0.2.28/packages/sinapsis_generic_data_tools/src/sinapsis_generic_data_tools/helpers → sinapsis_data_tools-0.2.31/packages/sinapsis_data_writers/src/sinapsis_data_writers/templates/video_writers}/__init__.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_generic_data_tools/src/sinapsis_generic_data_tools/__init__.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_generic_data_tools/src/sinapsis_generic_data_tools/helpers/audio_encoder.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_generic_data_tools/src/sinapsis_generic_data_tools/helpers/encode_img_base64.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_generic_data_tools/src/sinapsis_generic_data_tools/helpers/file_downloader.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_generic_data_tools/src/sinapsis_generic_data_tools/helpers/image_color_space_converter_cv.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/packages/sinapsis_generic_data_tools/src/sinapsis_generic_data_tools/helpers/image_color_space_converter_torch.py +0 -0
- {sinapsis_data_tools-0.2.28 → sinapsis_data_tools-0.2.31}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sinapsis-data-tools
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.31
|
|
4
4
|
Summary: Module that contains different packages to perform data-related operations through Sinapsis templates.
|
|
5
5
|
Author-email: SinapsisAI <dev@sinapsis.tech>
|
|
6
6
|
Project-URL: Homepage, https://sinapsis.tech
|
|
@@ -22,6 +22,7 @@ Requires-Dist: sinapsis-data-visualization[all]; extra == "all"
|
|
|
22
22
|
Requires-Dist: sinapsis-generic-data-tools[all]; extra == "all"
|
|
23
23
|
Dynamic: license-file
|
|
24
24
|
|
|
25
|
+
[](https://github.com/Sinapsis-AI/sinapsis-data-tools/blob/main/README.es.md)
|
|
25
26
|
<h1 align="center">
|
|
26
27
|
<br>
|
|
27
28
|
<a href="https://sinapsis.tech/">
|
|
@@ -25,3 +25,16 @@ excluded_neighbors_models = [
|
|
|
25
25
|
]
|
|
26
26
|
excluded_tree_models = ["plot_tree", "export_text", "export_graphviz", "BaseDecisionTree"]
|
|
27
27
|
excluded_svm_models = ["l1_min_c"]
|
|
28
|
+
excluded_cluster_models = ["affinity_propagation",
|
|
29
|
+
"cluster_optics_dbscan",
|
|
30
|
+
"cluster_optics_xi",
|
|
31
|
+
"compute_optics_graph",
|
|
32
|
+
"dbscan",
|
|
33
|
+
"estimate_bandwidth",
|
|
34
|
+
"get_bin_seeds",
|
|
35
|
+
"k_means",
|
|
36
|
+
"kmeans_plusplus",
|
|
37
|
+
"linkage_tree",
|
|
38
|
+
"mean_shift",
|
|
39
|
+
"spectral_clustering",
|
|
40
|
+
"ward_tree"]
|
|
@@ -10,7 +10,6 @@ _ADDITIONAL_TEMPLATE_MODULES = [
|
|
|
10
10
|
f"{_root_lib_path}.training.sklearn_manifold",
|
|
11
11
|
f"{_root_lib_path}.training.sklearn_train",
|
|
12
12
|
f"{_root_lib_path}.training.xgboost_train",
|
|
13
|
-
|
|
14
13
|
]
|
|
15
14
|
_template_lookup: dict = {
|
|
16
15
|
"SKLearnInference": f"{_root_lib_path}.inference.sklearn_inference",
|
|
@@ -21,7 +20,7 @@ for t_module in _ADDITIONAL_TEMPLATE_MODULES:
|
|
|
21
20
|
_template_lookup |= _import_template_package(t_module)
|
|
22
21
|
|
|
23
22
|
|
|
24
|
-
def __getattr__(name: str) -> Template:
|
|
23
|
+
def __getattr__(name: str) -> Template | None:
|
|
25
24
|
if name in _template_lookup:
|
|
26
25
|
module = importlib.import_module(_template_lookup[name])
|
|
27
26
|
return getattr(module, name)
|
|
@@ -26,14 +26,15 @@ class MLBaseInference(Template):
|
|
|
26
26
|
"""
|
|
27
27
|
|
|
28
28
|
model_path: str
|
|
29
|
-
root_dir
|
|
29
|
+
root_dir: str = WORKING_DIR
|
|
30
30
|
generic_field_key: str
|
|
31
|
-
target_key
|
|
31
|
+
target_key: str
|
|
32
|
+
|
|
33
|
+
attributes: AttributesBaseModel
|
|
32
34
|
|
|
33
35
|
def __init__(self, attributes: TemplateAttributes) -> None:
|
|
34
36
|
super().__init__(attributes)
|
|
35
37
|
|
|
36
|
-
|
|
37
38
|
def get_data(self, container: DataContainer) -> Any:
|
|
38
39
|
"""Get the data from the data container
|
|
39
40
|
|
|
@@ -5,6 +5,8 @@ from sinapsis_core.template_base.base_models import UIPropertiesMetadata
|
|
|
5
5
|
from sinapsis_data_analysis.helpers.tags import Tags
|
|
6
6
|
from sinapsis_data_analysis.templates.inference.sklearn_inference import SKLearnInference
|
|
7
7
|
|
|
8
|
+
tags = SKLearnInference.UIProperties.tags if SKLearnInference.UIProperties.tags is not None else []
|
|
9
|
+
|
|
8
10
|
|
|
9
11
|
class XGBoostInference(SKLearnInference):
|
|
10
12
|
"""Dynamic templates to perform inference using XGBoost models.
|
|
@@ -27,4 +29,4 @@ class XGBoostInference(SKLearnInference):
|
|
|
27
29
|
|
|
28
30
|
"""
|
|
29
31
|
|
|
30
|
-
UIProperties = UIPropertiesMetadata(category="XGBoost", tags=[Tags.XGBOOST, *
|
|
32
|
+
UIProperties = UIPropertiesMetadata(category="XGBoost", tags=[Tags.XGBOOST, *tags])
|
|
@@ -31,7 +31,7 @@ class MLBaseAttributes(TemplateAttributes):
|
|
|
31
31
|
model_save_path (str): Path where the trained model will be saved.
|
|
32
32
|
"""
|
|
33
33
|
|
|
34
|
-
root_dir
|
|
34
|
+
root_dir: str = WORKING_DIR
|
|
35
35
|
model_save_path: str
|
|
36
36
|
|
|
37
37
|
|
|
@@ -45,6 +45,7 @@ class MLBaseTraining(BaseDynamicWrapperTemplate):
|
|
|
45
45
|
"""
|
|
46
46
|
|
|
47
47
|
AttributesBaseModel = MLBaseAttributes
|
|
48
|
+
attributes: MLBaseAttributes
|
|
48
49
|
|
|
49
50
|
def __init__(self, attributes: TemplateAttributes) -> None:
|
|
50
51
|
"""Initialize the MLBase template.
|
|
@@ -66,7 +67,6 @@ class MLBaseTraining(BaseDynamicWrapperTemplate):
|
|
|
66
67
|
Any: The dataset from the generic field.
|
|
67
68
|
"""
|
|
68
69
|
|
|
69
|
-
|
|
70
70
|
return container.data_frames
|
|
71
71
|
|
|
72
72
|
@staticmethod
|
|
@@ -93,20 +93,21 @@ class MLBaseTraining(BaseDynamicWrapperTemplate):
|
|
|
93
93
|
or None if the dataset doesn't have the expected attributes
|
|
94
94
|
"""
|
|
95
95
|
x_train, y_train, x_test, y_test = None, None, None, None
|
|
96
|
-
for
|
|
97
|
-
if
|
|
98
|
-
x_train
|
|
99
|
-
|
|
100
|
-
x_test
|
|
101
|
-
|
|
102
|
-
y_train
|
|
103
|
-
|
|
104
|
-
y_test
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
96
|
+
for data_set in dataset:
|
|
97
|
+
if data_set.source:
|
|
98
|
+
if "x_train" in data_set.source:
|
|
99
|
+
x_train = data_set.content
|
|
100
|
+
elif "x_test" in data_set.source:
|
|
101
|
+
x_test = data_set.content
|
|
102
|
+
elif "y_train" in data_set.source:
|
|
103
|
+
y_train = data_set.content
|
|
104
|
+
elif "y_test" in data_set.source:
|
|
105
|
+
y_test = data_set.content
|
|
106
|
+
else:
|
|
107
|
+
if "x_dataset" in data_set.source:
|
|
108
|
+
x_train = data_set.content
|
|
109
|
+
elif "y_dataset" in data_set.source:
|
|
110
|
+
y_train = data_set.content
|
|
110
111
|
|
|
111
112
|
return x_train, y_train, x_test, y_test
|
|
112
113
|
|
|
@@ -118,7 +119,7 @@ class MLBaseTraining(BaseDynamicWrapperTemplate):
|
|
|
118
119
|
y_train (Any): The training targets
|
|
119
120
|
"""
|
|
120
121
|
|
|
121
|
-
self.trained_model = self.model.fit(x_train, y_train)
|
|
122
|
+
self.trained_model = self.model.fit(x_train, y_train) # ty: ignore[unresolved-attribute]
|
|
122
123
|
|
|
123
124
|
@staticmethod
|
|
124
125
|
def calculate_classification_metrics(y_true: np.ndarray, y_pred: np.ndarray) -> ModelMetrics:
|
|
@@ -191,8 +192,8 @@ class MLBaseTraining(BaseDynamicWrapperTemplate):
|
|
|
191
192
|
predictions = self.trained_model.predict(x_test)
|
|
192
193
|
|
|
193
194
|
metrics = self.calculate_metrics(y_test, predictions)
|
|
194
|
-
|
|
195
|
-
|
|
195
|
+
if metrics is not None:
|
|
196
|
+
return ModelPredictionResults(predictions=predictions, metrics=metrics)
|
|
196
197
|
return None
|
|
197
198
|
|
|
198
199
|
def handle_model_training(self, processed_data: tuple) -> ModelPredictionResults | None:
|
|
@@ -4,7 +4,6 @@ import numpy as np
|
|
|
4
4
|
import pandas as pd
|
|
5
5
|
from pydantic import BaseModel, ConfigDict
|
|
6
6
|
from sinapsis_core.data_containers.data_packet import DataContainer
|
|
7
|
-
from sinapsis_core.template_base import Template
|
|
8
7
|
from sinapsis_core.template_base.base_models import TemplateAttributes, UIPropertiesMetadata
|
|
9
8
|
from sinapsis_core.template_base.dynamic_template import (
|
|
10
9
|
BaseDynamicWrapperTemplate,
|
|
@@ -44,7 +43,8 @@ class SKLearnManifold(BaseDynamicWrapperTemplate):
|
|
|
44
43
|
target_key (str): Key of the generic field where data is stored.
|
|
45
44
|
"""
|
|
46
45
|
|
|
47
|
-
target_key
|
|
46
|
+
target_key: str = "target"
|
|
47
|
+
|
|
48
48
|
WrapperEntry = WrapperEntryConfig(
|
|
49
49
|
wrapped_object=manifold,
|
|
50
50
|
signature_from_doc_string=True,
|
|
@@ -56,7 +56,7 @@ class SKLearnManifold(BaseDynamicWrapperTemplate):
|
|
|
56
56
|
category="SKLearn",
|
|
57
57
|
tags=[Tags.DATA_ANALYSIS, Tags.DYNAMIC, Tags.MANIFOLD, Tags.SKLEARN, Tags.MODELS],
|
|
58
58
|
)
|
|
59
|
-
|
|
59
|
+
attributes: AttributesBaseModel
|
|
60
60
|
|
|
61
61
|
def __init__(self, attributes: TemplateAttributes) -> None:
|
|
62
62
|
super().__init__(attributes)
|
|
@@ -89,7 +89,6 @@ class SKLearnManifold(BaseDynamicWrapperTemplate):
|
|
|
89
89
|
"""
|
|
90
90
|
return container.data_frames
|
|
91
91
|
|
|
92
|
-
|
|
93
92
|
def process_dataset(self, dataset: list) -> ManifoldResults | None:
|
|
94
93
|
"""
|
|
95
94
|
Extracts the training data, reshapes it, and applies the
|
|
@@ -113,11 +112,12 @@ class SKLearnManifold(BaseDynamicWrapperTemplate):
|
|
|
113
112
|
y_train = set.content[self.attributes.target_key]
|
|
114
113
|
x_train = set.content.pop(self.attributes.target_key)
|
|
115
114
|
|
|
115
|
+
if x_train is not None and y_train is not None:
|
|
116
|
+
x_train_reshaped = self.reshape_arrays(x_train)
|
|
117
|
+
x_transformed = self.manifold_model.fit_transform(x_train_reshaped) # ty: ignore[unresolved-attribute]
|
|
116
118
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
return ManifoldResults(labels=y_train, x_transformed=x_transformed)
|
|
119
|
+
return ManifoldResults(labels=y_train, x_transformed=x_transformed)
|
|
120
|
+
return None
|
|
121
121
|
|
|
122
122
|
def execute(self, container: DataContainer) -> DataContainer:
|
|
123
123
|
"""
|
|
@@ -143,7 +143,7 @@ class SKLearnManifold(BaseDynamicWrapperTemplate):
|
|
|
143
143
|
return container
|
|
144
144
|
|
|
145
145
|
|
|
146
|
-
def __getattr__(name: str) ->
|
|
146
|
+
def __getattr__(name: str) -> type[BaseDynamicWrapperTemplate]:
|
|
147
147
|
"""
|
|
148
148
|
Only create a template if it's imported, this avoids creating all the base models for all templates
|
|
149
149
|
and potential import errors due to not available packages.
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
import joblib
|
|
3
|
-
from sinapsis_core.template_base import Template
|
|
4
3
|
from sinapsis_core.template_base.base_models import UIPropertiesMetadata
|
|
5
4
|
from sinapsis_core.template_base.dynamic_template import WrapperEntryConfig
|
|
6
|
-
from sinapsis_core.template_base.dynamic_template_factory import make_dynamic_template
|
|
5
|
+
from sinapsis_core.template_base.dynamic_template_factory import BaseDynamicWrapperTemplate, make_dynamic_template
|
|
7
6
|
from sinapsis_core.utils.env_var_keys import SINAPSIS_BUILD_DOCS
|
|
8
7
|
from sinapsis_data_analysis.helpers.excluded_models import (
|
|
8
|
+
excluded_cluster_models,
|
|
9
9
|
excluded_linear_models,
|
|
10
10
|
excluded_neighbors_models,
|
|
11
11
|
excluded_svm_models,
|
|
@@ -13,7 +13,7 @@ from sinapsis_data_analysis.helpers.excluded_models import (
|
|
|
13
13
|
)
|
|
14
14
|
from sinapsis_data_analysis.helpers.tags import Tags
|
|
15
15
|
from sinapsis_data_analysis.templates.training.ml_base_training import MLBaseTraining
|
|
16
|
-
from sklearn import linear_model, neighbors, neural_network, svm, tree
|
|
16
|
+
from sklearn import cluster, linear_model, neighbors, neural_network, svm, tree
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
class SKLearnLinearModelsTrain(MLBaseTraining):
|
|
@@ -53,7 +53,7 @@ class SKLearnLinearModelsTrain(MLBaseTraining):
|
|
|
53
53
|
category="SKLearn", tags=[Tags.DATA_ANALYSIS, Tags.LINEAR_REGRESSION, Tags.MODELS, Tags.SKLEARN, Tags.TRAINING]
|
|
54
54
|
)
|
|
55
55
|
|
|
56
|
-
def _save_model_implementation(self, full_path:str) -> None:
|
|
56
|
+
def _save_model_implementation(self, full_path: str) -> None:
|
|
57
57
|
"""
|
|
58
58
|
Implements the abstract method from the base class to
|
|
59
59
|
save the model to the path specified in attributes.
|
|
@@ -212,7 +212,42 @@ class SKLearnSVMModelsTrain(SKLearnLinearModelsTrain):
|
|
|
212
212
|
)
|
|
213
213
|
|
|
214
214
|
|
|
215
|
-
|
|
215
|
+
class SKLearnClusterModelsTrain(SKLearnLinearModelsTrain):
|
|
216
|
+
"""
|
|
217
|
+
This template dynamically wraps sklearn's svm module,
|
|
218
|
+
providing access to models like SVC, SVR, LinearSVC,
|
|
219
|
+
LinearSVR, NuSVC, NuSVR, and OneClassSVM.
|
|
220
|
+
|
|
221
|
+
Usage example:
|
|
222
|
+
|
|
223
|
+
agent:
|
|
224
|
+
name: my_test_agent
|
|
225
|
+
templates:
|
|
226
|
+
- template_name: InputTemplate
|
|
227
|
+
class_name: InputTemplate
|
|
228
|
+
attributes: {}
|
|
229
|
+
- template_name: SVCWrapper
|
|
230
|
+
class_name: SVCWrapper
|
|
231
|
+
template_input: DataLoaderTemplate
|
|
232
|
+
attributes:
|
|
233
|
+
generic_field_key: 'data_loader_key'
|
|
234
|
+
model_save_path: 'artifacts/svc_model.joblib'
|
|
235
|
+
svc_init:
|
|
236
|
+
C: 1.0
|
|
237
|
+
kernel: rbf
|
|
238
|
+
random_state: 42
|
|
239
|
+
|
|
240
|
+
"""
|
|
241
|
+
|
|
242
|
+
WrapperEntry = WrapperEntryConfig(
|
|
243
|
+
wrapped_object=cluster,
|
|
244
|
+
signature_from_doc_string=True,
|
|
245
|
+
exclude_module_atts=excluded_cluster_models,
|
|
246
|
+
force_init_as_method=False,
|
|
247
|
+
)
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
def __getattr__(name: str) -> type[BaseDynamicWrapperTemplate]:
|
|
216
251
|
"""
|
|
217
252
|
Only create a template if it's imported, this avoids creating all the base models for all templates
|
|
218
253
|
and potential import errors due to not available packages.
|
|
@@ -227,6 +262,8 @@ def __getattr__(name: str) -> Template:
|
|
|
227
262
|
return make_dynamic_template(name, SKLearnTreeModelsTrain)
|
|
228
263
|
if name in SKLearnSVMModelsTrain.WrapperEntry.module_att_names:
|
|
229
264
|
return make_dynamic_template(name, SKLearnSVMModelsTrain)
|
|
265
|
+
if name in SKLearnClusterModelsTrain.WrapperEntry.module_att_names:
|
|
266
|
+
return make_dynamic_template(name, SKLearnClusterModelsTrain)
|
|
230
267
|
raise AttributeError(f"template `{name}` not found in {__name__}")
|
|
231
268
|
|
|
232
269
|
|
|
@@ -236,6 +273,7 @@ __all__ = (
|
|
|
236
273
|
+ SKLearnNNModelsTrain.WrapperEntry.module_att_names
|
|
237
274
|
+ SKLearnTreeModelsTrain.WrapperEntry.module_att_names
|
|
238
275
|
+ SKLearnSVMModelsTrain.WrapperEntry.module_att_names
|
|
276
|
+
+ SKLearnClusterModelsTrain.WrapperEntry.module_att_names
|
|
239
277
|
)
|
|
240
278
|
|
|
241
279
|
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
import xgboost as xgb
|
|
3
|
-
from sinapsis_core.template_base import Template
|
|
4
3
|
from sinapsis_core.template_base.base_models import UIPropertiesMetadata
|
|
5
4
|
from sinapsis_core.template_base.dynamic_template import WrapperEntryConfig
|
|
6
|
-
from sinapsis_core.template_base.dynamic_template_factory import make_dynamic_template
|
|
5
|
+
from sinapsis_core.template_base.dynamic_template_factory import BaseDynamicWrapperTemplate, make_dynamic_template
|
|
7
6
|
from sinapsis_core.utils.env_var_keys import SINAPSIS_BUILD_DOCS
|
|
8
7
|
from sinapsis_data_analysis.helpers.tags import Tags
|
|
9
8
|
from sinapsis_data_analysis.templates.training.sklearn_train import SKLearnLinearModelsTrain
|
|
@@ -61,7 +60,7 @@ class XGBoostModelsTraining(SKLearnLinearModelsTrain):
|
|
|
61
60
|
)
|
|
62
61
|
|
|
63
62
|
|
|
64
|
-
def __getattr__(name: str) ->
|
|
63
|
+
def __getattr__(name: str) -> type[BaseDynamicWrapperTemplate]:
|
|
65
64
|
if name in XGBoostModelsTraining.WrapperEntry.module_att_names:
|
|
66
65
|
return make_dynamic_template(name, XGBoostModelsTraining)
|
|
67
66
|
raise AttributeError(f"template `{name}` not found in {__name__}")
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
import pandas as pd
|
|
3
|
+
from sinapsis_core.data_containers.data_packet import DataContainer, DataFramePacket
|
|
4
|
+
from sinapsis_core.template_base.base_models import TemplateAttributes
|
|
5
|
+
from sinapsis_core.template_base.template import Template
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class CategoricalToNumerical(Template):
|
|
9
|
+
class AttributesBaseModel(TemplateAttributes):
|
|
10
|
+
generic_key: str
|
|
11
|
+
|
|
12
|
+
attributes: AttributesBaseModel
|
|
13
|
+
|
|
14
|
+
@staticmethod
|
|
15
|
+
def map_categorical_to_numerical(df: pd.DataFrame | pd.Series) -> tuple:
|
|
16
|
+
if isinstance(df, pd.Series):
|
|
17
|
+
categorical_cols = [df.name] if df.dtype in ["object", "string", "category"] else []
|
|
18
|
+
else:
|
|
19
|
+
categorical_cols = df.select_dtypes(include=["object", "string", "category"]).columns.tolist()
|
|
20
|
+
|
|
21
|
+
category_maps = {}
|
|
22
|
+
|
|
23
|
+
for col in categorical_cols:
|
|
24
|
+
categories = df[col].astype("string").unique()
|
|
25
|
+
category_maps[col] = {cat: idx for idx, cat in enumerate(categories)}
|
|
26
|
+
for col, mapping in category_maps.items():
|
|
27
|
+
df[col] = df[col].map(mapping)
|
|
28
|
+
return df, category_maps
|
|
29
|
+
|
|
30
|
+
@staticmethod
|
|
31
|
+
def unmap_numerical_to_categorical(df: pd.DataFrame | pd.Series, categories: dict) -> pd.DataFrame | pd.Series:
|
|
32
|
+
inverse_maps = {col: {v: k for k, v in mapping.items()} for col, mapping in categories.items()}
|
|
33
|
+
|
|
34
|
+
for col in inverse_maps:
|
|
35
|
+
df[col] = df[col].map(inverse_maps[col])
|
|
36
|
+
return df
|
|
37
|
+
|
|
38
|
+
def execute(self, container: DataContainer) -> DataContainer:
|
|
39
|
+
for data_frame in container.data_frames:
|
|
40
|
+
transformed_dataset, labels = self.map_categorical_to_numerical(data_frame.content)
|
|
41
|
+
container.data_frames.append(DataFramePacket(content=transformed_dataset, generic_data=labels))
|
|
42
|
+
|
|
43
|
+
return container
|
|
@@ -20,7 +20,6 @@ _template_lookup = {
|
|
|
20
20
|
"ExecuteNTimesLazyAudioReaderPydub": f"{_root_lib_path}.audio_readers.audio_reader_pydub",
|
|
21
21
|
"ExecuteNTimesLazyAudioReaderSoundfile": f"{_root_lib_path}.audio_readers.audio_reader_soundfile",
|
|
22
22
|
"FolderImageDatasetCV2": f"{_root_lib_path}.image_readers.image_folder_reader_cv2",
|
|
23
|
-
"ImageDatasetSplitter": f"{_root_lib_path}.datasets_readers.dataset_splitter",
|
|
24
23
|
"LazyAudioReaderPydub": f"{_root_lib_path}.audio_readers.audio_reader_pydub",
|
|
25
24
|
"LazyAudioReaderSoundfile": f"{_root_lib_path}.audio_readers.audio_reader_soundfile",
|
|
26
25
|
"LiveVideoReaderCV2": f"{_root_lib_path}.video_readers.video_reader_cv2",
|
|
@@ -29,7 +28,7 @@ _template_lookup = {
|
|
|
29
28
|
"MultiVideoReaderPytorch": f"{_root_lib_path}.video_readers.video_reader_dali",
|
|
30
29
|
"MultiVideoReaderFFMPEG": f"{_root_lib_path}.video_readers.video_reader_ffmpeg",
|
|
31
30
|
"MultiVideoReaderTorchCodec": f"{_root_lib_path}.video_readers.video_reader_torchcodec",
|
|
32
|
-
"
|
|
31
|
+
"CSVDatasetSplitter": f"{_root_lib_path}.datasets_readers.dataset_splitter",
|
|
33
32
|
"TextInput": f"{_root_lib_path}.text_readers.text_input",
|
|
34
33
|
"VideoReaderCV2": f"{_root_lib_path}.video_readers.video_reader_cv2",
|
|
35
34
|
"VideoReaderDali": f"{_root_lib_path}.video_readers.video_reader_dali",
|
|
@@ -17,7 +17,8 @@ from sinapsis_data_readers.templates.audio_readers.base_audio_reader import (
|
|
|
17
17
|
)
|
|
18
18
|
|
|
19
19
|
AudioReaderPydubUIProperties = _AudioBaseReader.UIProperties
|
|
20
|
-
AudioReaderPydubUIProperties.tags
|
|
20
|
+
if AudioReaderPydubUIProperties.tags is not None:
|
|
21
|
+
AudioReaderPydubUIProperties.tags.extend([Tags.PYDUB])
|
|
21
22
|
|
|
22
23
|
|
|
23
24
|
class AudioReaderPydub(_AudioBaseReader):
|
|
@@ -66,6 +67,7 @@ class AudioReaderPydub(_AudioBaseReader):
|
|
|
66
67
|
audio_reader_format: Literal["wav", "raw", "pcm"] | None = None
|
|
67
68
|
|
|
68
69
|
UIProperties = AudioReaderPydubUIProperties
|
|
70
|
+
attributes: AttributesBaseModel
|
|
69
71
|
|
|
70
72
|
def read_file(self) -> AudioPacket | None:
|
|
71
73
|
"""Reads audio data from a file path or bytes and returns an AudioPacket.
|
|
@@ -84,9 +86,7 @@ class AudioReaderPydub(_AudioBaseReader):
|
|
|
84
86
|
audio_segment = AudioSegment.from_file(io.BytesIO(audio_bytes))
|
|
85
87
|
|
|
86
88
|
else:
|
|
87
|
-
|
|
88
89
|
audio_file_path = self.get_full_path()
|
|
89
|
-
#audio_file_path = os.path.join(self.attributes.root_dir, audio_file_path)
|
|
90
90
|
if os.path.exists(audio_file_path):
|
|
91
91
|
audio_segment = AudioSegment.from_file(audio_file_path, format=self.attributes.audio_reader_format)
|
|
92
92
|
|
|
@@ -138,7 +138,9 @@ class LazyAudioReaderPydub(AudioReaderPydub):
|
|
|
138
138
|
|
|
139
139
|
class AttributesBaseModel(AudioReaderPydub.AttributesBaseModel):
|
|
140
140
|
generic_key: str
|
|
141
|
-
audio_file_path: str | None = None
|
|
141
|
+
audio_file_path: str | None = None
|
|
142
|
+
|
|
143
|
+
attributes: AttributesBaseModel
|
|
142
144
|
|
|
143
145
|
def get_file_path_from_generic_data(self, container: DataContainer) -> None:
|
|
144
146
|
"""Method to retrieve the file path from the genetic data field of DataContainer.
|
|
@@ -148,7 +150,8 @@ class LazyAudioReaderPydub(AudioReaderPydub):
|
|
|
148
150
|
container (DataContainer): The DataContainer to extract the file path from
|
|
149
151
|
"""
|
|
150
152
|
if self.attributes.generic_key:
|
|
151
|
-
|
|
153
|
+
generic_data = self._get_generic_data(container)
|
|
154
|
+
file_path = getattr(generic_data, self.attributes.generic_key, None)
|
|
152
155
|
if file_path:
|
|
153
156
|
self.attributes.audio_file_path = file_path
|
|
154
157
|
else:
|
|
@@ -14,7 +14,8 @@ from sinapsis_data_readers.templates.audio_readers.base_audio_reader import (
|
|
|
14
14
|
)
|
|
15
15
|
|
|
16
16
|
AudioReaderSoundfileUIProperties = _AudioBaseReader.UIProperties
|
|
17
|
-
AudioReaderSoundfileUIProperties.tags
|
|
17
|
+
if AudioReaderSoundfileUIProperties.tags is not None:
|
|
18
|
+
AudioReaderSoundfileUIProperties.tags.extend([Tags.SOUNDFILE])
|
|
18
19
|
|
|
19
20
|
|
|
20
21
|
class AudioReaderSoundfile(_AudioBaseReader):
|
|
@@ -111,7 +112,9 @@ class LazyAudioReaderSoundfile(AudioReaderSoundfile):
|
|
|
111
112
|
|
|
112
113
|
class AttributesBaseModel(_AudioBaseReader.AttributesBaseModel):
|
|
113
114
|
generic_key: str
|
|
114
|
-
audio_file_path: str | None = None
|
|
115
|
+
audio_file_path: str | None = None
|
|
116
|
+
|
|
117
|
+
attributes: AttributesBaseModel
|
|
115
118
|
|
|
116
119
|
def get_file_path_from_generic_data(self, container: DataContainer) -> None:
|
|
117
120
|
"""Method to retrieve the file path from the genetic data field of DataContainer.
|
|
@@ -121,8 +124,9 @@ class LazyAudioReaderSoundfile(AudioReaderSoundfile):
|
|
|
121
124
|
container (DataContainer): The DataContainer to extract the file path from
|
|
122
125
|
"""
|
|
123
126
|
if self.attributes.generic_key:
|
|
124
|
-
|
|
125
|
-
|
|
127
|
+
generic_data = self._get_generic_data(container)
|
|
128
|
+
file_path = getattr(generic_data, self.attributes.generic_key, None)
|
|
129
|
+
if file_path is not None:
|
|
126
130
|
self.attributes.audio_file_path = file_path
|
|
127
131
|
else:
|
|
128
132
|
self.logger.warning("No audio path in the existing container")
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
import abc
|
|
4
4
|
import os
|
|
5
|
-
from typing import cast
|
|
6
5
|
from uuid import uuid4
|
|
7
6
|
|
|
8
7
|
from sinapsis_core.data_containers.data_packet import AudioPacket, DataContainer
|
|
@@ -30,11 +29,12 @@ class _AudioBaseReader(_BaseDataReader):
|
|
|
30
29
|
The source identifier, defaults to "streamlit".
|
|
31
30
|
"""
|
|
32
31
|
|
|
33
|
-
|
|
34
32
|
root_dir: str | None = None
|
|
35
33
|
audio_file_path: str
|
|
36
34
|
source: str = str(uuid4())
|
|
37
35
|
|
|
36
|
+
attributes: AttributesBaseModel
|
|
37
|
+
|
|
38
38
|
@abc.abstractmethod
|
|
39
39
|
def read_file(self) -> AudioPacket | None:
|
|
40
40
|
"""Abstract method to read the audio data.
|
|
@@ -46,9 +46,10 @@ class _AudioBaseReader(_BaseDataReader):
|
|
|
46
46
|
Returns:
|
|
47
47
|
AudioPacket: The audio data wrapped in an AudioPacket.
|
|
48
48
|
"""
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
|
|
50
|
+
def get_full_path(self) -> str:
|
|
51
|
+
audio_file_path = self.attributes.audio_file_path
|
|
52
|
+
full_path = os.path.join(self.root_dir, audio_file_path)
|
|
52
53
|
return full_path
|
|
53
54
|
|
|
54
55
|
def has_elements(self) -> bool:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
import abc
|
|
3
|
-
from typing import Generator
|
|
3
|
+
from typing import Any, Generator
|
|
4
4
|
|
|
5
5
|
from sinapsis_core.data_containers.data_packet import DataContainer, Packet
|
|
6
6
|
from sinapsis_core.template_base import Template
|
|
@@ -81,7 +81,7 @@ class _BaseDataReader(Template, abc.ABC):
|
|
|
81
81
|
__doc__ = f"""
|
|
82
82
|
{base_attributes_documentation()}
|
|
83
83
|
"""
|
|
84
|
-
root_dir
|
|
84
|
+
root_dir: str | None = None
|
|
85
85
|
data_dir: str
|
|
86
86
|
pattern: str = "**/*"
|
|
87
87
|
batch_size: int = 1
|
|
@@ -89,17 +89,18 @@ class _BaseDataReader(Template, abc.ABC):
|
|
|
89
89
|
samples_to_load: int = -1
|
|
90
90
|
load_on_init: bool = False
|
|
91
91
|
|
|
92
|
+
attributes: AttributesBaseModel
|
|
93
|
+
|
|
92
94
|
PACKET_ATT_NAME: str
|
|
93
95
|
|
|
94
96
|
def __init__(self, attributes: TemplateAttributeType) -> None:
|
|
95
97
|
super().__init__(attributes)
|
|
96
98
|
self.counter = 0
|
|
97
|
-
self.
|
|
99
|
+
self.root_dir = self.attributes.root_dir or SINAPSIS_CACHE_DIR
|
|
98
100
|
self.data_collection = self.make_data_entries()
|
|
99
101
|
|
|
100
|
-
|
|
101
102
|
@abc.abstractmethod
|
|
102
|
-
def make_data_entries(self) -> list[
|
|
103
|
+
def make_data_entries(self) -> list[Any]:
|
|
103
104
|
"""
|
|
104
105
|
This method creates the data entries for this template. Each data entry
|
|
105
106
|
consists of a `Packet` type.
|
|
@@ -109,7 +110,7 @@ class _BaseDataReader(Template, abc.ABC):
|
|
|
109
110
|
list[Packet]: list of ImagePacket
|
|
110
111
|
"""
|
|
111
112
|
|
|
112
|
-
def read_packet_content(self, data_packet:
|
|
113
|
+
def read_packet_content(self, data_packet: Any) -> None:
|
|
113
114
|
"""
|
|
114
115
|
Sets the value for data_packet.content where data packets can be ImagePacket|TextPacket...
|
|
115
116
|
|
|
@@ -142,7 +143,7 @@ class _BaseDataReader(Template, abc.ABC):
|
|
|
142
143
|
)
|
|
143
144
|
yield image_packets
|
|
144
145
|
|
|
145
|
-
def __next__(self) -> StopIteration | Generator:
|
|
146
|
+
def __next__(self) -> StopIteration | Generator:
|
|
146
147
|
if not self.has_elements():
|
|
147
148
|
raise StopIteration("No more data to load")
|
|
148
149
|
if self.attributes.batch_size == -1:
|
|
@@ -11,21 +11,23 @@ from sinapsis_data_readers.helpers.csv_reader import read_file
|
|
|
11
11
|
|
|
12
12
|
class CSVDatasetReader(Template):
|
|
13
13
|
class AttributesBaseModel(TemplateAttributes):
|
|
14
|
-
root_dir
|
|
14
|
+
root_dir: str | None = None
|
|
15
15
|
path_to_csv: str
|
|
16
16
|
store_as_time_series: bool = False
|
|
17
17
|
|
|
18
|
+
attributes: AttributesBaseModel
|
|
19
|
+
|
|
18
20
|
def __init__(self, attributes: TemplateAttributeType) -> None:
|
|
19
21
|
super().__init__(attributes)
|
|
20
|
-
self.
|
|
21
|
-
self.csv_file = read_file(os.path.join(self.
|
|
22
|
+
self.root_dir = self.attributes.root_dir or SINAPSIS_CACHE_DIR
|
|
23
|
+
self.csv_file = read_file(os.path.join(self.root_dir, self.attributes.path_to_csv))
|
|
22
24
|
|
|
23
25
|
def execute(self, container: DataContainer) -> DataContainer:
|
|
24
26
|
if self.attributes.store_as_time_series:
|
|
25
27
|
packet = TimeSeriesPacket(content=self.csv_file)
|
|
26
28
|
container.time_series.append(packet)
|
|
27
29
|
else:
|
|
28
|
-
packet = DataFramePacket(content=self.csv_file)
|
|
30
|
+
packet = DataFramePacket(content=self.csv_file, source=f"{self.instance_name}_x_dataset")
|
|
29
31
|
container.data_frames.append(packet)
|
|
30
32
|
|
|
31
33
|
return container
|