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.
Files changed (307) hide show
  1. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/PKG-INFO +1 -1
  2. featrixsphere-0.2.6379/VERSION +1 -0
  3. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere/__init__.py +1 -1
  4. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere/client.py +62 -43
  5. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere.egg-info/PKG-INFO +1 -1
  6. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere.egg-info/SOURCES.txt +40 -2
  7. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/api.py +5 -2
  8. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/celery_app.py +40 -1
  9. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/celery_job_recovery.py +113 -4
  10. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/epoch_projections.py +41 -48
  11. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/es_training.py +221 -4
  12. featrixsphere-0.2.6379/src/lib/featrix/auto_calibrate.py +924 -0
  13. featrixsphere-0.2.6379/src/lib/featrix/download-data/build_geo_weather_db.py +445 -0
  14. featrixsphere-0.2.6379/src/lib/featrix/download-data/download_geographic_data.py +339 -0
  15. featrixsphere-0.2.6379/src/lib/featrix/download-data/download_road_data.py +408 -0
  16. featrixsphere-0.2.6379/src/lib/featrix/download-data/download_weather_data.py +404 -0
  17. featrixsphere-0.2.6379/src/lib/featrix/download-data/install-data.sh +370 -0
  18. featrixsphere-0.2.6379/src/lib/featrix/neural/auc_animation.py +423 -0
  19. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/calibration_utils.py +218 -146
  20. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/charting.py +167 -52
  21. featrixsphere-0.2.6379/src/lib/featrix/neural/cluster_cohesion_tracker.py +788 -0
  22. featrixsphere-0.2.6379/src/lib/featrix/neural/default_training_rules.py +127 -0
  23. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/detect.py +65 -0
  24. featrixsphere-0.2.6379/src/lib/featrix/neural/domain_codec.py +504 -0
  25. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/dropout_scheduler.py +4 -4
  26. featrixsphere-0.2.6379/src/lib/featrix/neural/duration_ops.py +455 -0
  27. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/dynamic_relationship_extractor.py +3052 -652
  28. featrixsphere-0.2.6379/src/lib/featrix/neural/email_codec.py +455 -0
  29. featrixsphere-0.2.6379/src/lib/featrix/neural/email_domain_ops.py +1342 -0
  30. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/embedded_space.py +2208 -588
  31. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/embedding_utils.py +5 -2
  32. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/encoders.py +1197 -214
  33. featrixsphere-0.2.6379/src/lib/featrix/neural/es_training_callbacks.py +353 -0
  34. featrixsphere-0.2.6379/src/lib/featrix/neural/foundation_input_data.py +861 -0
  35. featrixsphere-0.2.6379/src/lib/featrix/neural/geo_foundation.py +825 -0
  36. featrixsphere-0.2.6379/src/lib/featrix/neural/geo_ops.py +600 -0
  37. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/gpu_utils.py +22 -3
  38. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/hybrid_encoders.py +3 -3
  39. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/input_data_set.py +53 -0
  40. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/io_utils.py +201 -0
  41. featrixsphere-0.2.6379/src/lib/featrix/neural/ip_address_ops.py +598 -0
  42. featrixsphere-0.2.6379/src/lib/featrix/neural/junction_adapter.py +108 -0
  43. featrixsphere-0.2.6379/src/lib/featrix/neural/loss_framework.py +1294 -0
  44. featrixsphere-0.2.6379/src/lib/featrix/neural/loss_functions/__init__.py +12 -0
  45. featrixsphere-0.2.6379/src/lib/featrix/neural/loss_functions/list_versions.py +95 -0
  46. featrixsphere-0.2.6379/src/lib/featrix/neural/loss_functions/loss_functions_01Jan2026.py +585 -0
  47. featrixsphere-0.2.6379/src/lib/featrix/neural/loss_functions/loss_functions_01Jul2025.py +633 -0
  48. featrixsphere-0.2.6379/src/lib/featrix/neural/loss_functions/loss_functions_21Jan2026.py +592 -0
  49. featrixsphere-0.2.6379/src/lib/featrix/neural/loss_short_embedding.py +696 -0
  50. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/lr_timeline.py +6 -3
  51. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/mask_bias_tracker.py +93 -25
  52. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/model_config.py +4 -1
  53. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/movie_frame_task.py +2 -2
  54. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_adaptive_loss_benchmark.py +3 -3
  55. featrixsphere-0.2.6379/src/lib/featrix/neural/qa/test_all_codecs.py +663 -0
  56. featrixsphere-0.2.6379/src/lib/featrix/neural/qa/test_cls_vs_mean_pooling.py +259 -0
  57. featrixsphere-0.2.6379/src/lib/featrix/neural/qa/test_training_data_timeline.py +93 -0
  58. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/scalar_codec.py +102 -25
  59. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/scalar_scalar_ops.py +20 -1
  60. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/scalar_timestamp_ops.py +110 -19
  61. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/set_codec.py +658 -91
  62. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/set_timestamp_ops.py +85 -16
  63. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/setlist_codec.py +3 -2
  64. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/simple_mlp.py +160 -53
  65. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/single_predictor.py +1502 -349
  66. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/sphere_config.py +273 -57
  67. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/sqlite_utils.py +64 -3
  68. featrixsphere-0.2.6379/src/lib/featrix/neural/strategy_scalar_scalar_ops.py +341 -0
  69. featrixsphere-0.2.6379/src/lib/featrix/neural/strategy_set_scalar_ops.py +249 -0
  70. featrixsphere-0.2.6379/src/lib/featrix/neural/strategy_string_scalar_ops.py +244 -0
  71. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/string_codec.py +173 -22
  72. featrixsphere-0.2.6379/src/lib/featrix/neural/string_scalar_ops.py +211 -0
  73. featrixsphere-0.2.6379/src/lib/featrix/neural/string_set_ops.py +217 -0
  74. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/temporal_relationship_ops.py +195 -26
  75. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/timestamp_codec.py +8 -6
  76. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/training_banner.py +19 -21
  77. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/training_context_manager.py +33 -0
  78. featrixsphere-0.2.6379/src/lib/featrix/neural/training_data_timeline.py +777 -0
  79. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/training_history_db.py +33 -13
  80. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/training_logger.py +262 -8
  81. featrixsphere-0.2.6379/src/lib/featrix/neural/training_rules.py +672 -0
  82. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/transformer_encoder.py +509 -76
  83. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/type_aware_ops_config.py +43 -0
  84. featrixsphere-0.2.6379/src/lib/featrix/neural/url_ops.py +1271 -0
  85. featrixsphere-0.2.6379/src/lib/featrix/neural/us_holidays.py +322 -0
  86. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/utils.py +15 -2
  87. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/vector_codec.py +3 -2
  88. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/weight_timeline.py +210 -13
  89. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/world_data.py +108 -0
  90. featrixsphere-0.2.6379/src/lib/featrix/neural/xgboost_classifier.py +336 -0
  91. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/session_manager.py +10 -3
  92. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/structureddata.py +98 -0
  93. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/utils.py +2 -0
  94. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/weightwatcher_tracking.py +18 -1
  95. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/regenerate_training_movie.py +2 -2
  96. featrixsphere-0.2.6379/tests/test_foundation_mode_local.py +374 -0
  97. featrixsphere-0.2.5978/VERSION +0 -1
  98. featrixsphere-0.2.5978/src/lib/featrix/neural/domain_codec.py +0 -471
  99. featrixsphere-0.2.5978/src/lib/featrix/neural/random_utils.py +0 -412
  100. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/MANIFEST.in +0 -0
  101. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/README.md +0 -0
  102. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrix-update.py +0 -0
  103. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere/api/__init__.py +0 -0
  104. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere/api/api_endpoint.py +0 -0
  105. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere/api/client.py +0 -0
  106. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere/api/foundational_model.py +0 -0
  107. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere/api/http_client.py +0 -0
  108. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere/api/notebook_helper.py +0 -0
  109. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere/api/prediction_result.py +0 -0
  110. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere/api/predictor.py +0 -0
  111. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere/api/reference_record.py +0 -0
  112. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere/api/vector_database.py +0 -0
  113. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere.egg-info/dependency_links.txt +0 -0
  114. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere.egg-info/entry_points.txt +0 -0
  115. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere.egg-info/not-zip-safe +0 -0
  116. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere.egg-info/requires.txt +0 -0
  117. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/featrixsphere.egg-info/top_level.txt +0 -0
  118. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/nv-install.sh +0 -0
  119. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/requirements.txt +0 -0
  120. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/setup.cfg +0 -0
  121. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/setup.py +0 -0
  122. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/auto_upgrade_monitor.py +0 -0
  123. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/build_version.py +0 -0
  124. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/cluster_movie_renderer.py +0 -0
  125. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/config.py +0 -0
  126. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/demo_existing_model.py +0 -0
  127. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/demo_label_updates.py +0 -0
  128. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/deploy.py +0 -0
  129. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/deploy_cache_debug.sh +0 -0
  130. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/ensure_watchdog_running.sh +0 -0
  131. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/error_tracker.py +0 -0
  132. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/event_log.py +0 -0
  133. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/example_api_usage.py +0 -0
  134. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/example_prediction_feedback.py +0 -0
  135. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/example_train_predictor.py +0 -0
  136. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/featrix_watchdog.py +0 -0
  137. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/gc_cleanup.py +0 -0
  138. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/api_event_retry.py +0 -0
  139. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/backing_db.py +0 -0
  140. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/convergence_monitor.py +0 -0
  141. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/crash_tracker.py +0 -0
  142. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/distribution_shift_detector.py +0 -0
  143. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/embedding_space_io.py +0 -0
  144. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/es_projections.py +0 -0
  145. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/es_training_wrapper.py +0 -0
  146. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/__init__.py +0 -0
  147. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/__init__.py +0 -0
  148. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/adaptive_event_log.py +0 -0
  149. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/causal_relationship_scorer.py +0 -0
  150. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/classification_metrics.py +0 -0
  151. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/config.py +0 -0
  152. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/curve_plots_example.py +0 -0
  153. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/customer_quality_tracker.py +0 -0
  154. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/data_frame_data_set.py +0 -0
  155. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/dataloader_utils.py +0 -0
  156. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/dimension_validator.py +0 -0
  157. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/embedding_lr_scheduler.py +0 -0
  158. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/embedding_quality.py +0 -0
  159. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/embedding_space_utils.py +0 -0
  160. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/enrich.py +0 -0
  161. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/es_projection.py +0 -0
  162. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/exceptions.py +0 -0
  163. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/featrix_csv.py +0 -0
  164. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/featrix_json.py +0 -0
  165. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/featrix_module_dict.py +0 -0
  166. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/featrix_token.py +0 -0
  167. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/feature_effectiveness_tracker.py +0 -0
  168. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/feature_engineer.py +0 -0
  169. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/feature_suggestion_tracker.py +0 -0
  170. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/gradient_flow.py +0 -0
  171. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/graph_encoder.py +0 -0
  172. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/graph_encoder_training.py +0 -0
  173. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/guardrails.py +0 -0
  174. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/host_memory_tracker.py +0 -0
  175. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/hubspot_free_domains_list_may_2025.py +0 -0
  176. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/hybrid_column_detector.py +0 -0
  177. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/hyperparam_search.py +0 -0
  178. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/input_data_file.py +0 -0
  179. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/integrity.py +0 -0
  180. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/json_cache.py +0 -0
  181. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/json_codec.py +0 -0
  182. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/llm/__init__.py +0 -0
  183. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/llm/schema_analyzer.py +0 -0
  184. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/local_string_cache.py +0 -0
  185. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/logging_config.py +0 -0
  186. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/mask_tracker.py +0 -0
  187. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/model_hash.py +0 -0
  188. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/multi_table_dataset.py +0 -0
  189. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/multi_table_embedding_space.py +0 -0
  190. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/network_viz.py +0 -0
  191. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/pair_scorer.py +0 -0
  192. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/per_epoch_quality.py +0 -0
  193. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/platform_utils.py +0 -0
  194. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/prng_control.py +0 -0
  195. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/demo_advisor_decisions.py +0 -0
  196. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/example_complete_workflow.py +0 -0
  197. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/generate_focal_report.py +0 -0
  198. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/model_advisor.py +0 -0
  199. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/show_results.py +0 -0
  200. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_adaptive_training.py +0 -0
  201. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_checkpoint_dict_reconstruction.py +0 -0
  202. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_confusion_matrix_metadata.py +0 -0
  203. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_data_timestamps.py +0 -0
  204. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_embedding_quality.py +0 -0
  205. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_embedding_space.py +0 -0
  206. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_epoch_class_separation.py +0 -0
  207. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_extend_embedding_space.py +0 -0
  208. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_feature_engineering_prediction.py +0 -0
  209. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_focal_comparison.py +0 -0
  210. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_focal_comparison_enhanced.py +0 -0
  211. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_focal_loss_single_predictor.py +0 -0
  212. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_hybrid_columns.py +0 -0
  213. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_label_smoothing.py +0 -0
  214. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_lift_measurement_validation.py +0 -0
  215. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_lr_timeline_smoothness.py +0 -0
  216. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_min_support_rank_scaling.py +0 -0
  217. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_monitor_integration.py +0 -0
  218. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_multi_dataset.py +0 -0
  219. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_piecewise_epochs.py +0 -0
  220. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_predict_during_training.py +0 -0
  221. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_relationship_extractor_integration.py +0 -0
  222. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_relationship_extractor_mixed_types.py +0 -0
  223. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_set_encoder_strategies.py +0 -0
  224. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_temporal_relationships.py +0 -0
  225. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_timeline_quick.py +0 -0
  226. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_training_monitor.py +0 -0
  227. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/test_warning_tracking.py +0 -0
  228. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/qa/visualize_training_timeline.py +0 -0
  229. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/relationship_complexity.py +0 -0
  230. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/relationship_estimator.py +0 -0
  231. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/relationship_extractor.py +0 -0
  232. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/relationship_importance_validator.py +0 -0
  233. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/relationship_performance.py +0 -0
  234. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/relationship_preanalysis.py +0 -0
  235. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/relationship_search.py +0 -0
  236. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/schema_history.py +0 -0
  237. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/set_scalar_ops.py +0 -0
  238. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/set_set_ops.py +0 -0
  239. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/simple_string_cache.py +0 -0
  240. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/single_predictor_mlp.py +0 -0
  241. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/stopwatch.py +0 -0
  242. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/string_analysis.py +0 -0
  243. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/string_cache.py +0 -0
  244. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/string_list_codec.py +0 -0
  245. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/timeline_events.py +0 -0
  246. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/tools/__init__.py +0 -0
  247. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/tools/compare_clusters.py +0 -0
  248. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/training_event.py +0 -0
  249. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/training_exceptions.py +0 -0
  250. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/training_movie_writer.py +0 -0
  251. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/training_timeline.py +0 -0
  252. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/url_codec.py +0 -0
  253. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/url_parser.py +0 -0
  254. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix/neural/webhooks.py +0 -0
  255. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/featrix_debug.py +0 -0
  256. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/job_manager.py +0 -0
  257. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/json_encoder_cache.py +0 -0
  258. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/knn_training.py +0 -0
  259. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/meta_learning_client.py +0 -0
  260. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/model_card_repair.py +0 -0
  261. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/model_repair.py +0 -0
  262. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/pre_analysis_wrapper.py +0 -0
  263. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/queue_manager.py +0 -0
  264. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/quick_architecture_search.py +0 -0
  265. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/session_chains.py +0 -0
  266. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/single_predictor_cv.py +0 -0
  267. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/single_predictor_training.py +0 -0
  268. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/sp_training_wrapper.py +0 -0
  269. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/sphere_config.py +0 -0
  270. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/system_health_monitor.py +0 -0
  271. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/training_monitor.py +0 -0
  272. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/vector_db.py +0 -0
  273. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/lib/webhook_helpers.py +0 -0
  274. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/llm_client.py +0 -0
  275. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/load_and_test_model.py +0 -0
  276. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/manage_churro.sh +0 -0
  277. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/migrate_string_cache_naming.py +0 -0
  278. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/neural.py +0 -0
  279. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/node-install.sh +0 -0
  280. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/prediction_client.py +0 -0
  281. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/prediction_drift_monitor.py +0 -0
  282. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/prediction_persistence_worker.py +0 -0
  283. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/prediction_server.py +0 -0
  284. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/query_schema_worker.py +0 -0
  285. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/quick_test_deployment.sh +0 -0
  286. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/recreate_session.py +0 -0
  287. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/redis_job_progress.py +0 -0
  288. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/redis_prediction_cli.py +0 -0
  289. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/redis_prediction_store.py +0 -0
  290. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/render_sphere.py +0 -0
  291. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/repair_checkpoint.py +0 -0
  292. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/repair_model.py +0 -0
  293. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/resubmit_es_completion.py +0 -0
  294. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/run_api_server.sh +0 -0
  295. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/send_email.py +0 -0
  296. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/slack.py +0 -0
  297. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/standalone_prediction.py +0 -0
  298. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/start_celery_cpu_worker.sh +0 -0
  299. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/start_celery_gpu_worker.sh +0 -0
  300. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/start_celery_movie_worker.sh +0 -0
  301. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/tail-watch.py +0 -0
  302. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/test_api_client.py +0 -0
  303. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/tree.py +0 -0
  304. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/upgrade-taco-python312.sh +0 -0
  305. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/utils.py +0 -0
  306. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/src/version.py +0 -0
  307. {featrixsphere-0.2.5978 → featrixsphere-0.2.6379}/system_monitor.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: featrixsphere
3
- Version: 0.2.5978
3
+ Version: 0.2.6379
4
4
  Summary: Transform any CSV into a production-ready ML model in minutes, not months.
5
5
  Home-page: https://github.com/Featrix/sphere
6
6
  Author: Featrix
@@ -0,0 +1 @@
1
+ 0.2.6379
@@ -57,7 +57,7 @@ TWO API OPTIONS:
57
57
  >>> print(result['prediction'])
58
58
  """
59
59
 
60
- __version__ = "0.2.5978"
60
+ __version__ = "0.2.6379"
61
61
  __author__ = "Featrix"
62
62
  __email__ = "support@featrix.com"
63
63
  __license__ = "MIT"
@@ -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) -> Dict[str, Any]:
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
- def run_predictions(self, session_id: str, records: List[Dict[str, Any]]) -> Dict[str, Any]:
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
- target_column: str = None) -> PredictionBatch:
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
- grid_shape: tuple = None, target_column: str = None) -> 'PredictionGrid':
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
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: featrixsphere
3
- Version: 0.2.5978
3
+ Version: 0.2.6379
4
4
  Summary: Transform any CSV into a production-ready ML model in minutes, not months.
5
5
  Home-page: https://github.com/Featrix/sphere
6
6
  Author: Featrix
@@ -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("best_single_predictor_roc_auc*.pickle"),
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("best_single_predictor_pr_auc*.pickle"),
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
- c2d.csv_to_sqlite(csv_path=str(data_file_path))
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