featrixsphere 0.2.5978__tar.gz → 0.2.6379__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.
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/PKG-INFO +1 -1
- featrixsphere-0.2.6379/VERSION +1 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere/__init__.py +1 -1
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere/client.py +62 -43
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere.egg-info/PKG-INFO +1 -1
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere.egg-info/SOURCES.txt +40 -2
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/api.py +5 -2
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/celery_app.py +40 -1
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/celery_job_recovery.py +113 -4
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/epoch_projections.py +41 -48
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/es_training.py +221 -4
- featrixsphere-0.2.6379/src/lib/featrix/auto_calibrate.py +924 -0
- featrixsphere-0.2.6379/src/lib/featrix/download-data/build_geo_weather_db.py +445 -0
- featrixsphere-0.2.6379/src/lib/featrix/download-data/download_geographic_data.py +339 -0
- featrixsphere-0.2.6379/src/lib/featrix/download-data/download_road_data.py +408 -0
- featrixsphere-0.2.6379/src/lib/featrix/download-data/download_weather_data.py +404 -0
- featrixsphere-0.2.6379/src/lib/featrix/download-data/install-data.sh +370 -0
- featrixsphere-0.2.6379/src/lib/featrix/neural/auc_animation.py +423 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/calibration_utils.py +218 -146
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/charting.py +167 -52
- featrixsphere-0.2.6379/src/lib/featrix/neural/cluster_cohesion_tracker.py +788 -0
- featrixsphere-0.2.6379/src/lib/featrix/neural/default_training_rules.py +127 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/detect.py +65 -0
- featrixsphere-0.2.6379/src/lib/featrix/neural/domain_codec.py +504 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/dropout_scheduler.py +4 -4
- featrixsphere-0.2.6379/src/lib/featrix/neural/duration_ops.py +455 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/dynamic_relationship_extractor.py +3052 -652
- featrixsphere-0.2.6379/src/lib/featrix/neural/email_codec.py +455 -0
- featrixsphere-0.2.6379/src/lib/featrix/neural/email_domain_ops.py +1342 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/embedded_space.py +2208 -588
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/embedding_utils.py +5 -2
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/encoders.py +1197 -214
- featrixsphere-0.2.6379/src/lib/featrix/neural/es_training_callbacks.py +353 -0
- featrixsphere-0.2.6379/src/lib/featrix/neural/foundation_input_data.py +861 -0
- featrixsphere-0.2.6379/src/lib/featrix/neural/geo_foundation.py +825 -0
- featrixsphere-0.2.6379/src/lib/featrix/neural/geo_ops.py +600 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/gpu_utils.py +22 -3
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/hybrid_encoders.py +3 -3
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/input_data_set.py +53 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/io_utils.py +201 -0
- featrixsphere-0.2.6379/src/lib/featrix/neural/ip_address_ops.py +598 -0
- featrixsphere-0.2.6379/src/lib/featrix/neural/junction_adapter.py +108 -0
- featrixsphere-0.2.6379/src/lib/featrix/neural/loss_framework.py +1294 -0
- featrixsphere-0.2.6379/src/lib/featrix/neural/loss_functions/__init__.py +12 -0
- featrixsphere-0.2.6379/src/lib/featrix/neural/loss_functions/list_versions.py +95 -0
- featrixsphere-0.2.6379/src/lib/featrix/neural/loss_functions/loss_functions_01Jan2026.py +585 -0
- featrixsphere-0.2.6379/src/lib/featrix/neural/loss_functions/loss_functions_01Jul2025.py +633 -0
- featrixsphere-0.2.6379/src/lib/featrix/neural/loss_functions/loss_functions_21Jan2026.py +592 -0
- featrixsphere-0.2.6379/src/lib/featrix/neural/loss_short_embedding.py +696 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/lr_timeline.py +6 -3
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/mask_bias_tracker.py +93 -25
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/model_config.py +4 -1
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/movie_frame_task.py +2 -2
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_adaptive_loss_benchmark.py +3 -3
- featrixsphere-0.2.6379/src/lib/featrix/neural/qa/test_all_codecs.py +663 -0
- featrixsphere-0.2.6379/src/lib/featrix/neural/qa/test_cls_vs_mean_pooling.py +259 -0
- featrixsphere-0.2.6379/src/lib/featrix/neural/qa/test_training_data_timeline.py +93 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/scalar_codec.py +102 -25
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/scalar_scalar_ops.py +20 -1
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/scalar_timestamp_ops.py +110 -19
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/set_codec.py +658 -91
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/set_timestamp_ops.py +85 -16
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/setlist_codec.py +3 -2
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/simple_mlp.py +160 -53
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/single_predictor.py +1502 -349
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/sphere_config.py +273 -57
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/sqlite_utils.py +64 -3
- featrixsphere-0.2.6379/src/lib/featrix/neural/strategy_scalar_scalar_ops.py +341 -0
- featrixsphere-0.2.6379/src/lib/featrix/neural/strategy_set_scalar_ops.py +249 -0
- featrixsphere-0.2.6379/src/lib/featrix/neural/strategy_string_scalar_ops.py +244 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/string_codec.py +173 -22
- featrixsphere-0.2.6379/src/lib/featrix/neural/string_scalar_ops.py +211 -0
- featrixsphere-0.2.6379/src/lib/featrix/neural/string_set_ops.py +217 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/temporal_relationship_ops.py +195 -26
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/timestamp_codec.py +8 -6
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/training_banner.py +19 -21
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/training_context_manager.py +33 -0
- featrixsphere-0.2.6379/src/lib/featrix/neural/training_data_timeline.py +777 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/training_history_db.py +33 -13
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/training_logger.py +262 -8
- featrixsphere-0.2.6379/src/lib/featrix/neural/training_rules.py +672 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/transformer_encoder.py +509 -76
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/type_aware_ops_config.py +43 -0
- featrixsphere-0.2.6379/src/lib/featrix/neural/url_ops.py +1271 -0
- featrixsphere-0.2.6379/src/lib/featrix/neural/us_holidays.py +322 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/utils.py +15 -2
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/vector_codec.py +3 -2
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/weight_timeline.py +210 -13
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/world_data.py +108 -0
- featrixsphere-0.2.6379/src/lib/featrix/neural/xgboost_classifier.py +336 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/session_manager.py +10 -3
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/structureddata.py +98 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/utils.py +2 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/weightwatcher_tracking.py +18 -1
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/regenerate_training_movie.py +2 -2
- featrixsphere-0.2.6379/tests/test_foundation_mode_local.py +374 -0
- featrixsphere-0.2.5978/VERSION +0 -1
- featrixsphere-0.2.5978/src/lib/featrix/neural/domain_codec.py +0 -471
- featrixsphere-0.2.5978/src/lib/featrix/neural/random_utils.py +0 -412
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/MANIFEST.in +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/README.md +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrix-update.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere/api/__init__.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere/api/api_endpoint.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere/api/client.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere/api/foundational_model.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere/api/http_client.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere/api/notebook_helper.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere/api/prediction_result.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere/api/predictor.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere/api/reference_record.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere/api/vector_database.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere.egg-info/dependency_links.txt +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere.egg-info/entry_points.txt +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere.egg-info/not-zip-safe +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere.egg-info/requires.txt +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere.egg-info/top_level.txt +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/nv-install.sh +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/requirements.txt +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/setup.cfg +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/setup.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/auto_upgrade_monitor.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/build_version.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/cluster_movie_renderer.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/config.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/demo_existing_model.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/demo_label_updates.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/deploy.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/deploy_cache_debug.sh +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/ensure_watchdog_running.sh +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/error_tracker.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/event_log.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/example_api_usage.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/example_prediction_feedback.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/example_train_predictor.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/featrix_watchdog.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/gc_cleanup.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/api_event_retry.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/backing_db.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/convergence_monitor.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/crash_tracker.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/distribution_shift_detector.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/embedding_space_io.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/es_projections.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/es_training_wrapper.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/__init__.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/__init__.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/adaptive_event_log.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/causal_relationship_scorer.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/classification_metrics.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/config.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/curve_plots_example.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/customer_quality_tracker.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/data_frame_data_set.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/dataloader_utils.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/dimension_validator.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/embedding_lr_scheduler.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/embedding_quality.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/embedding_space_utils.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/enrich.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/es_projection.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/exceptions.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/featrix_csv.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/featrix_json.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/featrix_module_dict.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/featrix_token.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/feature_effectiveness_tracker.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/feature_engineer.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/feature_suggestion_tracker.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/gradient_flow.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/graph_encoder.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/graph_encoder_training.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/guardrails.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/host_memory_tracker.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/hubspot_free_domains_list_may_2025.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/hybrid_column_detector.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/hyperparam_search.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/input_data_file.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/integrity.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/json_cache.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/json_codec.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/llm/__init__.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/llm/schema_analyzer.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/local_string_cache.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/logging_config.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/mask_tracker.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/model_hash.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/multi_table_dataset.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/multi_table_embedding_space.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/network_viz.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/pair_scorer.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/per_epoch_quality.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/platform_utils.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/prng_control.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/demo_advisor_decisions.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/example_complete_workflow.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/generate_focal_report.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/model_advisor.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/show_results.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_adaptive_training.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_checkpoint_dict_reconstruction.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_confusion_matrix_metadata.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_data_timestamps.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_embedding_quality.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_embedding_space.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_epoch_class_separation.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_extend_embedding_space.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_feature_engineering_prediction.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_focal_comparison.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_focal_comparison_enhanced.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_focal_loss_single_predictor.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_hybrid_columns.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_label_smoothing.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_lift_measurement_validation.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_lr_timeline_smoothness.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_min_support_rank_scaling.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_monitor_integration.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_multi_dataset.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_piecewise_epochs.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_predict_during_training.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_relationship_extractor_integration.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_relationship_extractor_mixed_types.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_set_encoder_strategies.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_temporal_relationships.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_timeline_quick.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_training_monitor.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_warning_tracking.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/visualize_training_timeline.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/relationship_complexity.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/relationship_estimator.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/relationship_extractor.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/relationship_importance_validator.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/relationship_performance.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/relationship_preanalysis.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/relationship_search.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/schema_history.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/set_scalar_ops.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/set_set_ops.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/simple_string_cache.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/single_predictor_mlp.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/stopwatch.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/string_analysis.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/string_cache.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/string_list_codec.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/timeline_events.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/tools/__init__.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/tools/compare_clusters.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/training_event.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/training_exceptions.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/training_movie_writer.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/training_timeline.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/url_codec.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/url_parser.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/webhooks.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix_debug.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/job_manager.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/json_encoder_cache.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/knn_training.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/meta_learning_client.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/model_card_repair.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/model_repair.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/pre_analysis_wrapper.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/queue_manager.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/quick_architecture_search.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/session_chains.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/single_predictor_cv.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/single_predictor_training.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/sp_training_wrapper.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/sphere_config.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/system_health_monitor.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/training_monitor.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/vector_db.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/webhook_helpers.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/llm_client.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/load_and_test_model.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/manage_churro.sh +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/migrate_string_cache_naming.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/neural.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/node-install.sh +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/prediction_client.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/prediction_drift_monitor.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/prediction_persistence_worker.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/prediction_server.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/query_schema_worker.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/quick_test_deployment.sh +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/recreate_session.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/redis_job_progress.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/redis_prediction_cli.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/redis_prediction_store.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/render_sphere.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/repair_checkpoint.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/repair_model.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/resubmit_es_completion.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/run_api_server.sh +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/send_email.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/slack.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/standalone_prediction.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/start_celery_cpu_worker.sh +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/start_celery_gpu_worker.sh +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/start_celery_movie_worker.sh +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/tail-watch.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/test_api_client.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/tree.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/upgrade-taco-python312.sh +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/utils.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/version.py +0 -0
- {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/system_monitor.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.2.6379
|
|
@@ -137,22 +137,24 @@ class SessionInfo:
|
|
|
137
137
|
class PredictionBatch:
|
|
138
138
|
"""
|
|
139
139
|
Cached prediction batch that allows instant lookups after initial batch processing.
|
|
140
|
-
|
|
140
|
+
|
|
141
141
|
Usage:
|
|
142
142
|
# First run - populate cache
|
|
143
143
|
batch = client.predict_batch(session_id, records)
|
|
144
|
-
|
|
144
|
+
|
|
145
145
|
# Second run - instant cache lookups
|
|
146
146
|
for i in values1:
|
|
147
147
|
for j in values2:
|
|
148
148
|
record = {"param1": i, "param2": j}
|
|
149
149
|
result = batch.predict(record) # Instant!
|
|
150
150
|
"""
|
|
151
|
-
|
|
152
|
-
def __init__(self, session_id: str, client: 'FeatrixSphereClient', target_column: str = None
|
|
151
|
+
|
|
152
|
+
def __init__(self, session_id: str, client: 'FeatrixSphereClient', target_column: str = None,
|
|
153
|
+
best_metric_preference: str = None):
|
|
153
154
|
self.session_id = session_id
|
|
154
155
|
self.client = client
|
|
155
156
|
self.target_column = target_column
|
|
157
|
+
self.best_metric_preference = best_metric_preference
|
|
156
158
|
self._cache = {} # record_hash -> prediction_result
|
|
157
159
|
self._stats = {'hits': 0, 'misses': 0, 'populated': 0}
|
|
158
160
|
|
|
@@ -203,14 +205,15 @@ class PredictionBatch:
|
|
|
203
205
|
"""Populate the cache with batch predictions."""
|
|
204
206
|
if not records:
|
|
205
207
|
return {'summary': {'total_records': 0, 'successful': 0, 'failed': 0}}
|
|
206
|
-
|
|
208
|
+
|
|
207
209
|
print(f"🚀 Creating prediction batch for {len(records)} records...")
|
|
208
|
-
|
|
210
|
+
|
|
209
211
|
# Use existing batch prediction system
|
|
210
212
|
batch_results = self.client.predict_records(
|
|
211
213
|
session_id=self.session_id,
|
|
212
214
|
records=records,
|
|
213
215
|
target_column=self.target_column,
|
|
216
|
+
best_metric_preference=self.best_metric_preference,
|
|
214
217
|
show_progress_bar=True
|
|
215
218
|
)
|
|
216
219
|
|
|
@@ -1958,7 +1961,7 @@ class FeatrixSphereClient:
|
|
|
1958
1961
|
ax.text(0.5, 0.5, f'Error plotting embedding: {e}',
|
|
1959
1962
|
transform=ax.transAxes, ha='center', va='center')
|
|
1960
1963
|
|
|
1961
|
-
def create_embedding_space(self, name: str, s3_training_dataset: str, s3_validation_dataset: str, s3_visualization_dataset: str = None, webhooks: Dict[str, str] = None, user_metadata: Dict[str, Any] = None) -> SessionInfo:
|
|
1964
|
+
def create_embedding_space(self, name: str, s3_training_dataset: str, s3_validation_dataset: str, s3_visualization_dataset: str = None, webhooks: Dict[str, str] = None, user_metadata: Dict[str, Any] = None, foundation_mode: bool = None) -> SessionInfo:
|
|
1962
1965
|
"""
|
|
1963
1966
|
Create a new embedding space from S3 training and validation datasets.
|
|
1964
1967
|
|
|
@@ -1969,6 +1972,9 @@ class FeatrixSphereClient:
|
|
|
1969
1972
|
s3_visualization_dataset: Optional S3 URL for visualization dataset for epoch projection animations (must start with 's3://')
|
|
1970
1973
|
webhooks: Optional dict with webhook configuration keys (webhook_callback_secret, s3_backup_url, model_id_update_url)
|
|
1971
1974
|
user_metadata: Optional user metadata for ES/SP identification (max 32KB)
|
|
1975
|
+
foundation_mode: Force foundation training mode for large datasets. If True, uses foundation
|
|
1976
|
+
training (chunked iteration, SQLite-backed splits). If False, uses standard
|
|
1977
|
+
training. If None (default), auto-detects based on dataset size (>=100k rows).
|
|
1972
1978
|
|
|
1973
1979
|
Returns:
|
|
1974
1980
|
SessionInfo for the newly created embedding space session
|
|
@@ -1989,6 +1995,8 @@ class FeatrixSphereClient:
|
|
|
1989
1995
|
print(f" Validation: {s3_validation_dataset}")
|
|
1990
1996
|
if s3_visualization_dataset:
|
|
1991
1997
|
print(f" Visualization: {s3_visualization_dataset}")
|
|
1998
|
+
if foundation_mode is not None:
|
|
1999
|
+
print(f" Foundation mode: {'enabled' if foundation_mode else 'disabled'}")
|
|
1992
2000
|
|
|
1993
2001
|
data = {
|
|
1994
2002
|
"name": name,
|
|
@@ -2003,6 +2011,8 @@ class FeatrixSphereClient:
|
|
|
2003
2011
|
import json
|
|
2004
2012
|
data['user_metadata'] = json.dumps(user_metadata)
|
|
2005
2013
|
print(f"User metadata: {user_metadata}")
|
|
2014
|
+
if foundation_mode is not None:
|
|
2015
|
+
data['foundation_mode'] = foundation_mode
|
|
2006
2016
|
|
|
2007
2017
|
response_data = self._post_json("/compute/create-embedding-space", data)
|
|
2008
2018
|
|
|
@@ -7737,23 +7747,25 @@ class FeatrixSphereClient:
|
|
|
7737
7747
|
else:
|
|
7738
7748
|
return data
|
|
7739
7749
|
|
|
7740
|
-
def predict_csv_file(self, session_id: str, file_path: Path
|
|
7750
|
+
def predict_csv_file(self, session_id: str, file_path: Path,
|
|
7751
|
+
best_metric_preference: str = None) -> Dict[str, Any]:
|
|
7741
7752
|
"""
|
|
7742
7753
|
Make batch predictions on a CSV file.
|
|
7743
|
-
|
|
7754
|
+
|
|
7744
7755
|
Args:
|
|
7745
7756
|
session_id: ID of session with trained predictor
|
|
7746
7757
|
file_path: Path to CSV file
|
|
7747
|
-
|
|
7758
|
+
best_metric_preference: Which metric checkpoint to use: "roc_auc", "pr_auc", or None (default)
|
|
7759
|
+
|
|
7748
7760
|
Returns:
|
|
7749
7761
|
Batch prediction results
|
|
7750
7762
|
"""
|
|
7751
7763
|
import pandas as pd
|
|
7752
7764
|
from jsontables import JSONTablesEncoder
|
|
7753
|
-
|
|
7765
|
+
|
|
7754
7766
|
if not file_path.exists():
|
|
7755
7767
|
raise FileNotFoundError(f"File not found: {file_path}")
|
|
7756
|
-
|
|
7768
|
+
|
|
7757
7769
|
# Support CSV, Parquet, JSON, and JSONL files
|
|
7758
7770
|
file_path_str = str(file_path).lower()
|
|
7759
7771
|
if file_path_str.endswith('.parquet'):
|
|
@@ -7772,29 +7784,31 @@ class FeatrixSphereClient:
|
|
|
7772
7784
|
df = pd.read_json(file_path)
|
|
7773
7785
|
else:
|
|
7774
7786
|
df = pd.read_csv(file_path)
|
|
7775
|
-
|
|
7787
|
+
|
|
7776
7788
|
# Convert to JSON Tables format and clean NaNs
|
|
7777
7789
|
table_data = JSONTablesEncoder.from_dataframe(df)
|
|
7778
7790
|
cleaned_table_data = self.replace_nans_with_nulls(table_data)
|
|
7779
|
-
|
|
7780
|
-
return self.predict_table(session_id, cleaned_table_data)
|
|
7781
7791
|
|
|
7782
|
-
|
|
7792
|
+
return self.predict_table(session_id, cleaned_table_data, best_metric_preference=best_metric_preference)
|
|
7793
|
+
|
|
7794
|
+
def run_predictions(self, session_id: str, records: List[Dict[str, Any]],
|
|
7795
|
+
best_metric_preference: str = None) -> Dict[str, Any]:
|
|
7783
7796
|
"""
|
|
7784
7797
|
Run predictions on provided records. Clean and fast for production use.
|
|
7785
|
-
|
|
7798
|
+
|
|
7786
7799
|
Args:
|
|
7787
7800
|
session_id: ID of session with trained predictor
|
|
7788
7801
|
records: List of record dictionaries
|
|
7789
|
-
|
|
7802
|
+
best_metric_preference: Which metric checkpoint to use: "roc_auc", "pr_auc", or None (default)
|
|
7803
|
+
|
|
7790
7804
|
Returns:
|
|
7791
7805
|
Dictionary with prediction results
|
|
7792
7806
|
"""
|
|
7793
7807
|
# Clean NaNs for JSON encoding
|
|
7794
7808
|
cleaned_records = self.replace_nans_with_nulls(records)
|
|
7795
|
-
|
|
7809
|
+
|
|
7796
7810
|
# Make batch predictions
|
|
7797
|
-
batch_results = self.predict_records(session_id, cleaned_records)
|
|
7811
|
+
batch_results = self.predict_records(session_id, cleaned_records, best_metric_preference=best_metric_preference)
|
|
7798
7812
|
predictions = batch_results['predictions']
|
|
7799
7813
|
|
|
7800
7814
|
# Process predictions into clean format
|
|
@@ -8510,32 +8524,33 @@ class FeatrixSphereClient:
|
|
|
8510
8524
|
|
|
8511
8525
|
return cleared_counts
|
|
8512
8526
|
|
|
8513
|
-
def predict_batch(self, session_id: str, records: List[Dict[str, Any]],
|
|
8514
|
-
|
|
8527
|
+
def predict_batch(self, session_id: str, records: List[Dict[str, Any]],
|
|
8528
|
+
target_column: str = None, best_metric_preference: str = None) -> PredictionBatch:
|
|
8515
8529
|
"""
|
|
8516
8530
|
Create a prediction batch for instant cached lookups.
|
|
8517
|
-
|
|
8531
|
+
|
|
8518
8532
|
Perfect for parameter sweeps, grid searches, and exploring prediction surfaces.
|
|
8519
8533
|
Run your loops twice with identical code - first populates cache, second gets instant results.
|
|
8520
|
-
|
|
8534
|
+
|
|
8521
8535
|
Args:
|
|
8522
8536
|
session_id: ID of session with trained predictor
|
|
8523
8537
|
records: List of all records you'll want to predict on
|
|
8524
8538
|
target_column: Specific target column predictor to use
|
|
8525
|
-
|
|
8539
|
+
best_metric_preference: Which metric checkpoint to use: "roc_auc", "pr_auc", or None (default)
|
|
8540
|
+
|
|
8526
8541
|
Returns:
|
|
8527
8542
|
PredictionBatch object with instant predict() method
|
|
8528
|
-
|
|
8543
|
+
|
|
8529
8544
|
Example:
|
|
8530
8545
|
# Generate all combinations you'll need
|
|
8531
8546
|
records = []
|
|
8532
8547
|
for i in range(10):
|
|
8533
8548
|
for j in range(10):
|
|
8534
8549
|
records.append({"param1": i, "param2": j})
|
|
8535
|
-
|
|
8550
|
+
|
|
8536
8551
|
# First run - populate cache with batch processing
|
|
8537
8552
|
batch = client.predict_batch(session_id, records)
|
|
8538
|
-
|
|
8553
|
+
|
|
8539
8554
|
# Second run - same loops but instant cache lookups
|
|
8540
8555
|
results = []
|
|
8541
8556
|
for i in range(10):
|
|
@@ -8545,50 +8560,52 @@ class FeatrixSphereClient:
|
|
|
8545
8560
|
results.append(result)
|
|
8546
8561
|
"""
|
|
8547
8562
|
# Create batch object
|
|
8548
|
-
batch = PredictionBatch(session_id, self, target_column)
|
|
8549
|
-
|
|
8563
|
+
batch = PredictionBatch(session_id, self, target_column, best_metric_preference)
|
|
8564
|
+
|
|
8550
8565
|
# Populate cache with batch predictions
|
|
8551
8566
|
batch._populate_cache(records)
|
|
8552
|
-
|
|
8567
|
+
|
|
8553
8568
|
return batch
|
|
8554
8569
|
|
|
8555
|
-
def predict_grid(self, session_id: str, degrees_of_freedom: int,
|
|
8556
|
-
|
|
8570
|
+
def predict_grid(self, session_id: str, degrees_of_freedom: int,
|
|
8571
|
+
grid_shape: tuple = None, target_column: str = None,
|
|
8572
|
+
best_metric_preference: str = None) -> 'PredictionGrid':
|
|
8557
8573
|
"""
|
|
8558
8574
|
Create a prediction grid for exploring parameter surfaces with automatic visualization.
|
|
8559
|
-
|
|
8575
|
+
|
|
8560
8576
|
Perfect for 1D curves, 2D heatmaps, and 3D surfaces with built-in plotting functions.
|
|
8561
|
-
|
|
8577
|
+
|
|
8562
8578
|
Args:
|
|
8563
8579
|
session_id: ID of session with trained predictor
|
|
8564
8580
|
degrees_of_freedom: Number of dimensions (1, 2, or 3)
|
|
8565
8581
|
grid_shape: Custom grid shape tuple (default: auto-sized)
|
|
8566
8582
|
target_column: Specific target column predictor to use
|
|
8567
|
-
|
|
8583
|
+
best_metric_preference: Which metric checkpoint to use: "roc_auc", "pr_auc", or None (default)
|
|
8584
|
+
|
|
8568
8585
|
Returns:
|
|
8569
8586
|
PredictionGrid object with predict() and plotting methods
|
|
8570
|
-
|
|
8587
|
+
|
|
8571
8588
|
Example:
|
|
8572
8589
|
# 2D parameter sweep with automatic plotting
|
|
8573
8590
|
grid = client.predict_grid(session_id, degrees_of_freedom=2)
|
|
8574
8591
|
grid.set_axis_labels(["Spend", "Campaign Type"])
|
|
8575
8592
|
grid.set_axis_values(0, [100, 250, 500])
|
|
8576
8593
|
grid.set_axis_values(1, ["search", "display", "social"])
|
|
8577
|
-
|
|
8594
|
+
|
|
8578
8595
|
for i, spend in enumerate([100, 250, 500]):
|
|
8579
8596
|
for j, campaign in enumerate(["search", "display", "social"]):
|
|
8580
8597
|
record = {"spend": spend, "campaign_type": campaign}
|
|
8581
8598
|
grid.predict(record, grid_position=(i, j))
|
|
8582
|
-
|
|
8599
|
+
|
|
8583
8600
|
# Automatic visualization
|
|
8584
8601
|
grid.plot_heatmap() # 2D heatmap
|
|
8585
8602
|
grid.plot_3d() # 3D surface
|
|
8586
|
-
|
|
8603
|
+
|
|
8587
8604
|
# Find optimal parameters
|
|
8588
8605
|
optimal_pos = grid.get_optimal_position()
|
|
8589
8606
|
print(f"Optimal parameters at grid position: {optimal_pos}")
|
|
8590
8607
|
"""
|
|
8591
|
-
return PredictionGrid(session_id, self, degrees_of_freedom, grid_shape, target_column)
|
|
8608
|
+
return PredictionGrid(session_id, self, degrees_of_freedom, grid_shape, target_column, best_metric_preference)
|
|
8592
8609
|
|
|
8593
8610
|
def get_embedding_space_columns(self, session_id: str) -> Dict[str, Any]:
|
|
8594
8611
|
"""
|
|
@@ -8665,12 +8682,13 @@ class PredictionGrid:
|
|
|
8665
8682
|
grid.plot_3d() # 3D surface plot
|
|
8666
8683
|
"""
|
|
8667
8684
|
|
|
8668
|
-
def __init__(self, session_id: str, client: 'FeatrixSphereClient', degrees_of_freedom: int,
|
|
8669
|
-
grid_shape: tuple = None, target_column: str = None):
|
|
8685
|
+
def __init__(self, session_id: str, client: 'FeatrixSphereClient', degrees_of_freedom: int,
|
|
8686
|
+
grid_shape: tuple = None, target_column: str = None, best_metric_preference: str = None):
|
|
8670
8687
|
self.session_id = session_id
|
|
8671
8688
|
self.client = client
|
|
8672
8689
|
self.degrees_of_freedom = degrees_of_freedom
|
|
8673
8690
|
self.target_column = target_column
|
|
8691
|
+
self.best_metric_preference = best_metric_preference
|
|
8674
8692
|
|
|
8675
8693
|
# Initialize grid matrix based on degrees of freedom
|
|
8676
8694
|
if grid_shape:
|
|
@@ -8762,6 +8780,7 @@ class PredictionGrid:
|
|
|
8762
8780
|
session_id=self.session_id,
|
|
8763
8781
|
records=records_list,
|
|
8764
8782
|
target_column=self.target_column,
|
|
8783
|
+
best_metric_preference=self.best_metric_preference,
|
|
8765
8784
|
show_progress_bar=show_progress
|
|
8766
8785
|
)
|
|
8767
8786
|
|
|
@@ -112,22 +112,34 @@ src/lib/vector_db.py
|
|
|
112
112
|
src/lib/webhook_helpers.py
|
|
113
113
|
src/lib/weightwatcher_tracking.py
|
|
114
114
|
src/lib/featrix/__init__.py
|
|
115
|
+
src/lib/featrix/auto_calibrate.py
|
|
116
|
+
src/lib/featrix/download-data/build_geo_weather_db.py
|
|
117
|
+
src/lib/featrix/download-data/download_geographic_data.py
|
|
118
|
+
src/lib/featrix/download-data/download_road_data.py
|
|
119
|
+
src/lib/featrix/download-data/download_weather_data.py
|
|
120
|
+
src/lib/featrix/download-data/install-data.sh
|
|
115
121
|
src/lib/featrix/neural/__init__.py
|
|
116
122
|
src/lib/featrix/neural/adaptive_event_log.py
|
|
123
|
+
src/lib/featrix/neural/auc_animation.py
|
|
117
124
|
src/lib/featrix/neural/calibration_utils.py
|
|
118
125
|
src/lib/featrix/neural/causal_relationship_scorer.py
|
|
119
126
|
src/lib/featrix/neural/charting.py
|
|
120
127
|
src/lib/featrix/neural/classification_metrics.py
|
|
128
|
+
src/lib/featrix/neural/cluster_cohesion_tracker.py
|
|
121
129
|
src/lib/featrix/neural/config.py
|
|
122
130
|
src/lib/featrix/neural/curve_plots_example.py
|
|
123
131
|
src/lib/featrix/neural/customer_quality_tracker.py
|
|
124
132
|
src/lib/featrix/neural/data_frame_data_set.py
|
|
125
133
|
src/lib/featrix/neural/dataloader_utils.py
|
|
134
|
+
src/lib/featrix/neural/default_training_rules.py
|
|
126
135
|
src/lib/featrix/neural/detect.py
|
|
127
136
|
src/lib/featrix/neural/dimension_validator.py
|
|
128
137
|
src/lib/featrix/neural/domain_codec.py
|
|
129
138
|
src/lib/featrix/neural/dropout_scheduler.py
|
|
139
|
+
src/lib/featrix/neural/duration_ops.py
|
|
130
140
|
src/lib/featrix/neural/dynamic_relationship_extractor.py
|
|
141
|
+
src/lib/featrix/neural/email_codec.py
|
|
142
|
+
src/lib/featrix/neural/email_domain_ops.py
|
|
131
143
|
src/lib/featrix/neural/embedded_space.py
|
|
132
144
|
src/lib/featrix/neural/embedding_lr_scheduler.py
|
|
133
145
|
src/lib/featrix/neural/embedding_quality.py
|
|
@@ -136,6 +148,7 @@ src/lib/featrix/neural/embedding_utils.py
|
|
|
136
148
|
src/lib/featrix/neural/encoders.py
|
|
137
149
|
src/lib/featrix/neural/enrich.py
|
|
138
150
|
src/lib/featrix/neural/es_projection.py
|
|
151
|
+
src/lib/featrix/neural/es_training_callbacks.py
|
|
139
152
|
src/lib/featrix/neural/exceptions.py
|
|
140
153
|
src/lib/featrix/neural/featrix_csv.py
|
|
141
154
|
src/lib/featrix/neural/featrix_json.py
|
|
@@ -144,6 +157,9 @@ src/lib/featrix/neural/featrix_token.py
|
|
|
144
157
|
src/lib/featrix/neural/feature_effectiveness_tracker.py
|
|
145
158
|
src/lib/featrix/neural/feature_engineer.py
|
|
146
159
|
src/lib/featrix/neural/feature_suggestion_tracker.py
|
|
160
|
+
src/lib/featrix/neural/foundation_input_data.py
|
|
161
|
+
src/lib/featrix/neural/geo_foundation.py
|
|
162
|
+
src/lib/featrix/neural/geo_ops.py
|
|
147
163
|
src/lib/featrix/neural/gpu_utils.py
|
|
148
164
|
src/lib/featrix/neural/gradient_flow.py
|
|
149
165
|
src/lib/featrix/neural/graph_encoder.py
|
|
@@ -158,10 +174,14 @@ src/lib/featrix/neural/input_data_file.py
|
|
|
158
174
|
src/lib/featrix/neural/input_data_set.py
|
|
159
175
|
src/lib/featrix/neural/integrity.py
|
|
160
176
|
src/lib/featrix/neural/io_utils.py
|
|
177
|
+
src/lib/featrix/neural/ip_address_ops.py
|
|
161
178
|
src/lib/featrix/neural/json_cache.py
|
|
162
179
|
src/lib/featrix/neural/json_codec.py
|
|
180
|
+
src/lib/featrix/neural/junction_adapter.py
|
|
163
181
|
src/lib/featrix/neural/local_string_cache.py
|
|
164
182
|
src/lib/featrix/neural/logging_config.py
|
|
183
|
+
src/lib/featrix/neural/loss_framework.py
|
|
184
|
+
src/lib/featrix/neural/loss_short_embedding.py
|
|
165
185
|
src/lib/featrix/neural/lr_timeline.py
|
|
166
186
|
src/lib/featrix/neural/mask_bias_tracker.py
|
|
167
187
|
src/lib/featrix/neural/mask_tracker.py
|
|
@@ -175,7 +195,6 @@ src/lib/featrix/neural/pair_scorer.py
|
|
|
175
195
|
src/lib/featrix/neural/per_epoch_quality.py
|
|
176
196
|
src/lib/featrix/neural/platform_utils.py
|
|
177
197
|
src/lib/featrix/neural/prng_control.py
|
|
178
|
-
src/lib/featrix/neural/random_utils.py
|
|
179
198
|
src/lib/featrix/neural/relationship_complexity.py
|
|
180
199
|
src/lib/featrix/neural/relationship_estimator.py
|
|
181
200
|
src/lib/featrix/neural/relationship_extractor.py
|
|
@@ -199,32 +218,47 @@ src/lib/featrix/neural/single_predictor_mlp.py
|
|
|
199
218
|
src/lib/featrix/neural/sphere_config.py
|
|
200
219
|
src/lib/featrix/neural/sqlite_utils.py
|
|
201
220
|
src/lib/featrix/neural/stopwatch.py
|
|
221
|
+
src/lib/featrix/neural/strategy_scalar_scalar_ops.py
|
|
222
|
+
src/lib/featrix/neural/strategy_set_scalar_ops.py
|
|
223
|
+
src/lib/featrix/neural/strategy_string_scalar_ops.py
|
|
202
224
|
src/lib/featrix/neural/string_analysis.py
|
|
203
225
|
src/lib/featrix/neural/string_cache.py
|
|
204
226
|
src/lib/featrix/neural/string_codec.py
|
|
205
227
|
src/lib/featrix/neural/string_list_codec.py
|
|
228
|
+
src/lib/featrix/neural/string_scalar_ops.py
|
|
229
|
+
src/lib/featrix/neural/string_set_ops.py
|
|
206
230
|
src/lib/featrix/neural/temporal_relationship_ops.py
|
|
207
231
|
src/lib/featrix/neural/timeline_events.py
|
|
208
232
|
src/lib/featrix/neural/timestamp_codec.py
|
|
209
233
|
src/lib/featrix/neural/training_banner.py
|
|
210
234
|
src/lib/featrix/neural/training_context_manager.py
|
|
235
|
+
src/lib/featrix/neural/training_data_timeline.py
|
|
211
236
|
src/lib/featrix/neural/training_event.py
|
|
212
237
|
src/lib/featrix/neural/training_exceptions.py
|
|
213
238
|
src/lib/featrix/neural/training_history_db.py
|
|
214
239
|
src/lib/featrix/neural/training_logger.py
|
|
215
240
|
src/lib/featrix/neural/training_movie_writer.py
|
|
241
|
+
src/lib/featrix/neural/training_rules.py
|
|
216
242
|
src/lib/featrix/neural/training_timeline.py
|
|
217
243
|
src/lib/featrix/neural/transformer_encoder.py
|
|
218
244
|
src/lib/featrix/neural/type_aware_ops_config.py
|
|
219
245
|
src/lib/featrix/neural/url_codec.py
|
|
246
|
+
src/lib/featrix/neural/url_ops.py
|
|
220
247
|
src/lib/featrix/neural/url_parser.py
|
|
248
|
+
src/lib/featrix/neural/us_holidays.py
|
|
221
249
|
src/lib/featrix/neural/utils.py
|
|
222
250
|
src/lib/featrix/neural/vector_codec.py
|
|
223
251
|
src/lib/featrix/neural/webhooks.py
|
|
224
252
|
src/lib/featrix/neural/weight_timeline.py
|
|
225
253
|
src/lib/featrix/neural/world_data.py
|
|
254
|
+
src/lib/featrix/neural/xgboost_classifier.py
|
|
226
255
|
src/lib/featrix/neural/llm/__init__.py
|
|
227
256
|
src/lib/featrix/neural/llm/schema_analyzer.py
|
|
257
|
+
src/lib/featrix/neural/loss_functions/__init__.py
|
|
258
|
+
src/lib/featrix/neural/loss_functions/list_versions.py
|
|
259
|
+
src/lib/featrix/neural/loss_functions/loss_functions_01Jan2026.py
|
|
260
|
+
src/lib/featrix/neural/loss_functions/loss_functions_01Jul2025.py
|
|
261
|
+
src/lib/featrix/neural/loss_functions/loss_functions_21Jan2026.py
|
|
228
262
|
src/lib/featrix/neural/qa/demo_advisor_decisions.py
|
|
229
263
|
src/lib/featrix/neural/qa/example_complete_workflow.py
|
|
230
264
|
src/lib/featrix/neural/qa/generate_focal_report.py
|
|
@@ -232,7 +266,9 @@ src/lib/featrix/neural/qa/model_advisor.py
|
|
|
232
266
|
src/lib/featrix/neural/qa/show_results.py
|
|
233
267
|
src/lib/featrix/neural/qa/test_adaptive_loss_benchmark.py
|
|
234
268
|
src/lib/featrix/neural/qa/test_adaptive_training.py
|
|
269
|
+
src/lib/featrix/neural/qa/test_all_codecs.py
|
|
235
270
|
src/lib/featrix/neural/qa/test_checkpoint_dict_reconstruction.py
|
|
271
|
+
src/lib/featrix/neural/qa/test_cls_vs_mean_pooling.py
|
|
236
272
|
src/lib/featrix/neural/qa/test_confusion_matrix_metadata.py
|
|
237
273
|
src/lib/featrix/neural/qa/test_data_timestamps.py
|
|
238
274
|
src/lib/featrix/neural/qa/test_embedding_quality.py
|
|
@@ -257,8 +293,10 @@ src/lib/featrix/neural/qa/test_relationship_extractor_mixed_types.py
|
|
|
257
293
|
src/lib/featrix/neural/qa/test_set_encoder_strategies.py
|
|
258
294
|
src/lib/featrix/neural/qa/test_temporal_relationships.py
|
|
259
295
|
src/lib/featrix/neural/qa/test_timeline_quick.py
|
|
296
|
+
src/lib/featrix/neural/qa/test_training_data_timeline.py
|
|
260
297
|
src/lib/featrix/neural/qa/test_training_monitor.py
|
|
261
298
|
src/lib/featrix/neural/qa/test_warning_tracking.py
|
|
262
299
|
src/lib/featrix/neural/qa/visualize_training_timeline.py
|
|
263
300
|
src/lib/featrix/neural/tools/__init__.py
|
|
264
|
-
src/lib/featrix/neural/tools/compare_clusters.py
|
|
301
|
+
src/lib/featrix/neural/tools/compare_clusters.py
|
|
302
|
+
tests/test_foundation_mode_local.py
|
|
@@ -3031,10 +3031,11 @@ def create_app() -> FastAPI:
|
|
|
3031
3031
|
predictor_dir = Path(predictor_path).parent
|
|
3032
3032
|
if predictor_dir.exists():
|
|
3033
3033
|
# Look for best checkpoint files
|
|
3034
|
+
# Filename format: {timestamp}_best_single_predictor_auc_roc_{value}_epoch_{N}.pickle
|
|
3034
3035
|
if best_metric_preference.lower() in ['roc_auc', 'roc-auc', 'auc']:
|
|
3035
3036
|
# Look for ROC-AUC best checkpoint
|
|
3036
3037
|
roc_auc_checkpoints = sorted(
|
|
3037
|
-
predictor_dir.glob("
|
|
3038
|
+
predictor_dir.glob("*best_single_predictor_auc_roc*.pickle"),
|
|
3038
3039
|
key=lambda p: p.stat().st_mtime,
|
|
3039
3040
|
reverse=True
|
|
3040
3041
|
)
|
|
@@ -3046,7 +3047,7 @@ def create_app() -> FastAPI:
|
|
|
3046
3047
|
elif best_metric_preference.lower() in ['pr_auc', 'pr-auc', 'precision_recall']:
|
|
3047
3048
|
# Look for PR-AUC best checkpoint
|
|
3048
3049
|
pr_auc_checkpoints = sorted(
|
|
3049
|
-
predictor_dir.glob("
|
|
3050
|
+
predictor_dir.glob("*best_single_predictor_auc_pr*.pickle"),
|
|
3050
3051
|
key=lambda p: p.stat().st_mtime,
|
|
3051
3052
|
reverse=True
|
|
3052
3053
|
)
|
|
@@ -4550,6 +4551,7 @@ def create_app() -> FastAPI:
|
|
|
4550
4551
|
s3_file_data_set_validation: str
|
|
4551
4552
|
s3_file_data_set_visualization: str | None = None # Optional separate dataset for training animation projections
|
|
4552
4553
|
user_metadata: dict | None = None # User metadata for identification (max 32KB)
|
|
4554
|
+
foundation_mode: bool | None = None # Force foundation training mode (auto-detected if None)
|
|
4553
4555
|
|
|
4554
4556
|
class CloneEmbeddingSpaceRequest(BaseModel):
|
|
4555
4557
|
model_config = ConfigDict(
|
|
@@ -4620,6 +4622,7 @@ def create_app() -> FastAPI:
|
|
|
4620
4622
|
s3_validation_path=request.s3_file_data_set_validation,
|
|
4621
4623
|
s3_visualization_path=request.s3_file_data_set_visualization,
|
|
4622
4624
|
user_metadata=request.user_metadata,
|
|
4625
|
+
foundation_mode=request.foundation_mode,
|
|
4623
4626
|
)
|
|
4624
4627
|
|
|
4625
4628
|
# CRITICAL: Save session to Redis BEFORE dispatching jobs
|
|
@@ -2122,7 +2122,46 @@ def create_structured_data(self, job_spec: dict, job_id: str, data_file: str = N
|
|
|
2122
2122
|
|
|
2123
2123
|
logger.info(f"📊 Processing data file (reading, parsing, cleaning, expanding JSON columns, writing to SQLite)...")
|
|
2124
2124
|
logger.info(f" This may take a while for large files - watch for progress updates below...")
|
|
2125
|
-
|
|
2125
|
+
|
|
2126
|
+
# Check if we should use foundation mode (large datasets >= 50k rows)
|
|
2127
|
+
# Foundation mode creates train/validation/test/warmup splits directly in SQLite
|
|
2128
|
+
# This enables chunked iteration, SQLite-backed splits, and better memory efficiency
|
|
2129
|
+
FOUNDATION_THRESHOLD = 50_000
|
|
2130
|
+
foundation_mode_setting = job_spec.get("foundation_mode") # None = auto-detect, True = force, False = disable
|
|
2131
|
+
use_foundation_mode = foundation_mode_setting is True # Explicitly True means force it
|
|
2132
|
+
|
|
2133
|
+
# Check row count to auto-enable foundation mode (only if not explicitly disabled)
|
|
2134
|
+
if foundation_mode_setting is None: # Auto-detect mode
|
|
2135
|
+
try:
|
|
2136
|
+
# Quick row count check based on file type
|
|
2137
|
+
file_ext = data_file_path.suffix.lower()
|
|
2138
|
+
if file_ext == '.parquet':
|
|
2139
|
+
import pyarrow.parquet as pq
|
|
2140
|
+
parquet_file = pq.ParquetFile(str(data_file_path))
|
|
2141
|
+
row_count = parquet_file.metadata.num_rows
|
|
2142
|
+
elif file_ext in ['.csv', '.gz']:
|
|
2143
|
+
# For CSV, estimate row count from file size (rough estimate)
|
|
2144
|
+
# More accurate: count newlines, but that's slow for large files
|
|
2145
|
+
# Use file size heuristic: ~100 bytes per row on average
|
|
2146
|
+
estimated_rows = int(file_size_mb * 1024 * 1024 / 100)
|
|
2147
|
+
row_count = estimated_rows
|
|
2148
|
+
else:
|
|
2149
|
+
# For JSON/JSONL, estimate similarly
|
|
2150
|
+
estimated_rows = int(file_size_mb * 1024 * 1024 / 200)
|
|
2151
|
+
row_count = estimated_rows
|
|
2152
|
+
|
|
2153
|
+
logger.info(f" Estimated row count: {row_count:,}")
|
|
2154
|
+
if row_count >= FOUNDATION_THRESHOLD:
|
|
2155
|
+
logger.info(f"🏛️ Large dataset detected ({row_count:,} rows >= {FOUNDATION_THRESHOLD:,}) - enabling foundation mode")
|
|
2156
|
+
use_foundation_mode = True
|
|
2157
|
+
except Exception as row_count_err:
|
|
2158
|
+
logger.warning(f" Could not estimate row count: {row_count_err} - using standard mode")
|
|
2159
|
+
|
|
2160
|
+
if use_foundation_mode:
|
|
2161
|
+
logger.info(f"🏛️ Using FOUNDATION MODE for large dataset processing")
|
|
2162
|
+
c2d.csv_to_foundation_sqlite(csv_path=str(data_file_path))
|
|
2163
|
+
else:
|
|
2164
|
+
c2d.csv_to_sqlite(csv_path=str(data_file_path))
|
|
2126
2165
|
|
|
2127
2166
|
logger.info(f"✅ STEP 2/3 COMPLETE: CSV to SQLite conversion finished")
|
|
2128
2167
|
|