solarwindpy 0.0.1.dev0__py3-none-any.whl â 0.1.1__py3-none-any.whl
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.
Potentially problematic release.
This version of solarwindpy might be problematic. Click here for more details.
- plans/.velocity/metrics.json +96 -0
- plans/0-overview-template.md +268 -0
- plans/N-phase-template.md +106 -0
- plans/PLAN_AUDIT_SUMMARY.md +173 -0
- plans/TEMPLATE-USAGE-GUIDE.md +198 -0
- plans/__init__.py +1 -0
- plans/abandoned/compaction-agent-system/0-Overview.md +123 -0
- plans/abandoned/compaction-agent-system/agents-index-update-plan.md +109 -0
- plans/abandoned/compaction-agent-system/compacted_state.md +85 -0
- plans/abandoned/compaction-agent-system/implementation-plan.md +107 -0
- plans/abandoned/compaction-agent-system/system-validation-report.md +159 -0
- plans/abandoned/compaction-agent-system/usage-guide.md +210 -0
- plans/abandoned/hook-system-enhancement/0-Overview.md +214 -0
- plans/abandoned/hook-system-enhancement/1-Phase1-Core-Infrastructure.md +313 -0
- plans/abandoned/hook-system-enhancement/2-Phase2-Intelligent-Testing.md +385 -0
- plans/abandoned/hook-system-enhancement/3-Phase3-Physics-Validation.md +444 -0
- plans/abandoned/hook-system-enhancement/4-Phase4-Performance-Monitoring.md +458 -0
- plans/abandoned/hook-system-enhancement/5-Phase5-Developer-Experience.md +532 -0
- plans/abandoned/hook-system-enhancement/6-Implementation-Timeline.md +274 -0
- plans/abandoned/hook-system-enhancement/7-Risk-Management.md +376 -0
- plans/abandoned/hook-system-enhancement/8-Testing-Strategy.md +579 -0
- plans/abandoned/readthedocs-automation/0-Overview.md +247 -0
- plans/abandoned/readthedocs-automation/1-Emergency-Documentation-Fixes.md +270 -0
- plans/abandoned/readthedocs-automation/2-Template-System-Enhancement.md +811 -0
- plans/abandoned/readthedocs-automation/3-Quality-Audit-ReadTheDocs-Integration.md +844 -0
- plans/abandoned/readthedocs-automation/4-Plan-Consolidation-Cleanup.md +632 -0
- plans/abandoned/readthedocs-automation/9-Closeout.md +207 -0
- plans/abandoned/readthedocs-automation/ABANDONMENT_REASON.md +72 -0
- plans/cicd-architecture-redesign/0-Overview.md +193 -0
- plans/cicd-architecture-redesign/1-Workflow-Creation.md +103 -0
- plans/cicd-architecture-redesign/2-Version-Detection.md +123 -0
- plans/cicd-architecture-redesign/3-Deployment-Gates.md +169 -0
- plans/cicd-architecture-redesign/4-RC-Testing.md +194 -0
- plans/cicd-architecture-redesign/5-TestPyPI-Validation.md +264 -0
- plans/cicd-architecture-redesign/6-Production-Release.md +263 -0
- plans/cicd-architecture-redesign/7-Cleanup.md +243 -0
- plans/cicd-architecture-redesign/8-Documentation.md +285 -0
- plans/cicd-architecture-redesign/Closeout.md +225 -0
- plans/closeout-template.md +259 -0
- plans/completed/circular-import-audit/0-Overview.md +152 -0
- plans/completed/circular-import-audit/1-Static-Dependency-Analysis.md +62 -0
- plans/completed/circular-import-audit/2-Dynamic-Import-Testing.md +56 -0
- plans/completed/circular-import-audit/3-Performance-Impact-Assessment.md +56 -0
- plans/completed/circular-import-audit/4-Issue-Remediation.md +78 -0
- plans/completed/circular-import-audit/5-Preventive-Infrastructure.md +89 -0
- plans/completed/claude-settings-ecosystem-alignment/0-Overview.md +162 -0
- plans/completed/claude-settings-ecosystem-alignment/1-Security-Foundation.md +148 -0
- plans/completed/claude-settings-ecosystem-alignment/2-Hook-Integration.md +158 -0
- plans/completed/claude-settings-ecosystem-alignment/3-Agent-System-Integration.md +177 -0
- plans/completed/claude-settings-ecosystem-alignment/4-Enhanced-Workflow-Automation.md +159 -0
- plans/completed/claude-settings-ecosystem-alignment/5-Validation-Monitoring.md +181 -0
- plans/completed/claude-settings-ecosystem-alignment/compacted_session_state.md +290 -0
- plans/completed/combined_plan_with_checklist_documentation/1-Overview-and-Goals.md +51 -0
- plans/completed/combined_plan_with_checklist_documentation/2-Toolchain-and-Hosting.md +69 -0
- plans/completed/combined_plan_with_checklist_documentation/3-Repository-Structure.md +61 -0
- plans/completed/combined_plan_with_checklist_documentation/4-Configuration-and-Standards.md +70 -0
- plans/completed/combined_plan_with_checklist_documentation/5-Documentation-Content.md +62 -0
- plans/completed/combined_plan_with_checklist_documentation/6-CI-CD-and-Validation.md +58 -0
- plans/completed/combined_plan_with_checklist_documentation/7-Maintenance.md +55 -0
- plans/completed/combined_test_plan_with_checklist_fitfunctions/0-Overview.md +135 -0
- plans/completed/combined_test_plan_with_checklist_fitfunctions/1-Common-fixtures.md +59 -0
- plans/completed/combined_test_plan_with_checklist_fitfunctions/10-power_laws.md +56 -0
- plans/completed/combined_test_plan_with_checklist_fitfunctions/2-core.py-FitFunction.md +118 -0
- plans/completed/combined_test_plan_with_checklist_fitfunctions/3-gaussians.py-Gaussian-GaussianNormalized-GaussianLn.md +69 -0
- plans/completed/combined_test_plan_with_checklist_fitfunctions/4-trend_fits.py-TrendFit.md +99 -0
- plans/completed/combined_test_plan_with_checklist_fitfunctions/5-plots.py-FFPlot.md +98 -0
- plans/completed/combined_test_plan_with_checklist_fitfunctions/6-tex_info.py-TeXinfo.md +79 -0
- plans/completed/combined_test_plan_with_checklist_fitfunctions/7-Justification.md +49 -0
- plans/completed/combined_test_plan_with_checklist_fitfunctions/8-exponentials.md +64 -0
- plans/completed/combined_test_plan_with_checklist_fitfunctions/9-lines.md +58 -0
- plans/completed/combined_test_plan_with_checklist_plotting/0-Overview.md +142 -0
- plans/completed/combined_test_plan_with_checklist_plotting/1-base.py.md +90 -0
- plans/completed/combined_test_plan_with_checklist_plotting/10-labels-special.py.md +102 -0
- plans/completed/combined_test_plan_with_checklist_plotting/11-labels-chemistry.py.md +212 -0
- plans/completed/combined_test_plan_with_checklist_plotting/12-labels-composition.py.md +242 -0
- plans/completed/combined_test_plan_with_checklist_plotting/13-labels-datetime.py.md +247 -0
- plans/completed/combined_test_plan_with_checklist_plotting/14-labels-elemental_abundance.py.md +274 -0
- plans/completed/combined_test_plan_with_checklist_plotting/15-visual-validation.md +256 -0
- plans/completed/combined_test_plan_with_checklist_plotting/16-integration-testing.md +266 -0
- plans/completed/combined_test_plan_with_checklist_plotting/17-performance-benchmarks.md +267 -0
- plans/completed/combined_test_plan_with_checklist_plotting/18-Fixtures-and-Utilities.md +86 -0
- plans/completed/combined_test_plan_with_checklist_plotting/2-agg_plot.py.md +90 -0
- plans/completed/combined_test_plan_with_checklist_plotting/3-histograms.py.md +201 -0
- plans/completed/combined_test_plan_with_checklist_plotting/4-scatter.py.md +167 -0
- plans/completed/combined_test_plan_with_checklist_plotting/5-spiral.py.md +216 -0
- plans/completed/combined_test_plan_with_checklist_plotting/6-orbits.py.md +108 -0
- plans/completed/combined_test_plan_with_checklist_plotting/7-tools.py.md +86 -0
- plans/completed/combined_test_plan_with_checklist_plotting/8-select_data_from_figure.py.md +97 -0
- plans/completed/combined_test_plan_with_checklist_plotting/9-labels-base.py.md +88 -0
- plans/completed/combined_test_plan_with_checklist_solar_activity/.gitkeep +0 -0
- plans/completed/combined_test_plan_with_checklist_solar_activity/0-Overview.md +170 -0
- plans/completed/combined_test_plan_with_checklist_solar_activity/1-Package-Entry-Point-__init__.py.md +121 -0
- plans/completed/combined_test_plan_with_checklist_solar_activity/2-Core-Base-Classes-base.py.md +142 -0
- plans/completed/combined_test_plan_with_checklist_solar_activity/3-Plotting-Helpers-plots.py.md +123 -0
- plans/completed/combined_test_plan_with_checklist_solar_activity/4-LISIRD-Sub-package.md +119 -0
- plans/completed/combined_test_plan_with_checklist_solar_activity/5-Extrema-Calculator.md +103 -0
- plans/completed/combined_test_plan_with_checklist_solar_activity/6-Sunspot-Number-Sub-package.md +163 -0
- plans/completed/combined_test_plan_with_checklist_solar_activity/7-Sunspot-Number-Init.py.md +217 -0
- plans/completed/combined_test_plan_with_checklist_solar_activity/compacted_state.md +52 -0
- plans/completed/compaction-agent-modernization/0-Overview.md +156 -0
- plans/completed/compaction-agent-modernization/1-Architecture-Audit-Gap-Analysis.md +132 -0
- plans/completed/compaction-agent-modernization/2-Token-Baseline-Recalibration.md +153 -0
- plans/completed/compaction-agent-modernization/3-Agent-Reference-Updates.md +184 -0
- plans/completed/compaction-agent-modernization/4-Compression-Algorithm-Modernization.md +238 -0
- plans/completed/compaction-agent-modernization/5-Workflow-Integration-Streamlining.md +252 -0
- plans/completed/compaction-agent-modernization/6-Template-Structure-Optimization.md +240 -0
- plans/completed/compaction-agent-modernization/7-Integration-Testing-Validation.md +292 -0
- plans/completed/compaction-hook-enhancement/0-Overview.md +150 -0
- plans/completed/compaction-hook-enhancement/1-Token-Estimation-Enhancement.md +179 -0
- plans/completed/compaction-hook-enhancement/2-Compression-Intelligence.md +294 -0
- plans/completed/compaction-hook-enhancement/3-Git-Integration-Metadata.md +310 -0
- plans/completed/compaction-hook-enhancement/4-Session-Continuity-Features.md +358 -0
- plans/completed/compaction-hook-enhancement/5-Testing-Strategy.md +404 -0
- plans/completed/compaction-hook-enhancement/6-Integration-Roadmap.md +319 -0
- plans/completed/compaction-hook-enhancement/compacted_state.md +142 -0
- plans/completed/docstring-audit-enhancement/0-Overview.md +274 -0
- plans/completed/docstring-audit-enhancement/1-Infrastructure-Setup-and-Validation-Tools.md +206 -0
- plans/completed/docstring-audit-enhancement/2-Core-Physics-Modules-Enhancement.md +237 -0
- plans/completed/docstring-audit-enhancement/3-Fitfunctions-Mathematical-Modules-Enhancement.md +188 -0
- plans/completed/docstring-audit-enhancement/4-Plotting-Visualization-Modules-Enhancement.md +243 -0
- plans/completed/docstring-audit-enhancement/5-Specialized-Modules-Enhancement.md +216 -0
- plans/completed/docstring-audit-enhancement/6-Validation-and-Integration.md +216 -0
- plans/completed/fitfunctions-testing-implementation/0-Overview.md +130 -0
- plans/completed/fitfunctions-testing-implementation/1-Test-Infrastructure-Setup.md +79 -0
- plans/completed/fitfunctions-testing-implementation/2-Common-Fixtures-Test-Utilities.md +104 -0
- plans/completed/fitfunctions-testing-implementation/3-Core-FitFunction-Testing.md +168 -0
- plans/completed/fitfunctions-testing-implementation/4-Specialized-Function-Classes.md +210 -0
- plans/completed/fitfunctions-testing-implementation/5-Advanced-Classes-Testing.md +214 -0
- plans/completed/fitfunctions-testing-implementation/6-Plotting-Integration-Testing.md +231 -0
- plans/completed/fitfunctions-testing-implementation/7-Extended-Coverage-BONUS.md +184 -0
- plans/completed/numpy-docstring-conversion-plan/numpy-docstring-conversion-plan.md +118 -0
- plans/completed/pr-review-remediation/0-Overview.md +138 -0
- plans/completed/pr-review-remediation/1-Critical-Safety-Improvements.md +179 -0
- plans/completed/pr-review-remediation/2-Smart-Timeouts-Validation.md +399 -0
- plans/completed/pr-review-remediation/3-Enhanced-GitHub-Integration.md +258 -0
- plans/completed/pr-review-remediation/compacted_state.md +66 -0
- plans/completed/python-310-migration/0-Overview.md +390 -0
- plans/completed/python-310-migration/1-Planning-Setup.md +164 -0
- plans/completed/python-310-migration/2-Implementation.md +256 -0
- plans/completed/python-310-migration/3-Testing-Validation.md +335 -0
- plans/completed/python-310-migration/4-Documentation-Release.md +274 -0
- plans/completed/python-310-migration/5-Closeout.md +252 -0
- plans/completed/requirements-management-consolidation/0-Overview.md +118 -0
- plans/completed/requirements-management-consolidation/1-Documentation-Validation-Environment-Setup.md +116 -0
- plans/completed/requirements-management-consolidation/2-Requirements-Consolidation.md +161 -0
- plans/completed/requirements-management-consolidation/3-Workflow-Automation-Final-Integration.md +196 -0
- plans/completed/single-ecosystem-plan-implementation/0-Overview.md +83 -0
- plans/completed/single-ecosystem-plan-implementation/1-Plan-Preservation-Session-Management.md +38 -0
- plans/completed/single-ecosystem-plan-implementation/2-File-Structure-Optimization.md +43 -0
- plans/completed/single-ecosystem-plan-implementation/3-Plan-Migration-Archive-Setup.md +82 -0
- plans/completed/single-ecosystem-plan-implementation/4-Agent-System-Transformation.md +108 -0
- plans/completed/single-ecosystem-plan-implementation/5-Template-System-Enhancement.md +131 -0
- plans/completed/single-ecosystem-plan-implementation/6-Final-Validation-Testing.md +120 -0
- plans/completed/test-directory-consolidation/0-Overview.md +51 -0
- plans/completed/test-directory-consolidation/1-Structure-Preparation.md +82 -0
- plans/completed/test-directory-consolidation/2-File-Migration.md +100 -0
- plans/completed/test-directory-consolidation/3-Import-Transformation.md +117 -0
- plans/completed/test-directory-consolidation/4-Configuration-Consolidation.md +140 -0
- plans/completed/test-directory-consolidation/5-Validation.md +152 -0
- plans/completed/test-directory-consolidation/6-Cleanup.md +156 -0
- plans/completed/test-planning-agents-architecture/0-Overview.md +79 -0
- plans/completed/test-planning-agents-architecture/1-Branch-Isolation-Testing.md +49 -0
- plans/completed/test-planning-agents-architecture/2-Cross-Branch-Coordination.md +51 -0
- plans/completed/test-planning-agents-architecture/3-Merge-Workflow-Testing.md +48 -0
- plans/deployment-semver-pypi-rtd/0-Overview.md +463 -0
- plans/deployment-semver-pypi-rtd/1-Semantic-Versioning-Foundation.md +136 -0
- plans/deployment-semver-pypi-rtd/2-PyPI-Deployment-Infrastructure.md +168 -0
- plans/deployment-semver-pypi-rtd/3-Release-Automation.md +214 -0
- plans/deployment-semver-pypi-rtd/4-Plan-Closeout.md +543 -0
- plans/deployment-semver-pypi-rtd/compacted_session_state.md +172 -0
- plans/deployment-semver-pypi-rtd/compacted_state.md +131 -0
- plans/documentation-code-audit/0-Overview.md +393 -0
- plans/documentation-code-audit/1-Discovery-Inventory.md +183 -0
- plans/documentation-code-audit/2-Execution-Environment-Setup.md +263 -0
- plans/documentation-code-audit/3-Systematic-Validation.md +322 -0
- plans/documentation-code-audit/4-Code-Example-Remediation.md +358 -0
- plans/documentation-code-audit/5-Physics-MultiIndex-Compliance.md +464 -0
- plans/documentation-code-audit/6-Doctest-Integration.md +523 -0
- plans/documentation-code-audit/7-Reporting-Documentation.md +498 -0
- plans/documentation-code-audit/8-Closeout.md +456 -0
- plans/documentation-rebuild-session/compacted_state.md +109 -0
- plans/documentation-rendering-fixes/0-Overview.md +104 -0
- plans/documentation-rendering-fixes/1-Sphinx-Build-Diagnostics-Warning-Audit.md +101 -0
- plans/documentation-rendering-fixes/2-Configuration-Infrastructure-Fixes.md +113 -0
- plans/documentation-rendering-fixes/3-Docstring-Syntax-Audit-Repair.md +131 -0
- plans/documentation-rendering-fixes/4-HTML-Page-Rendering-Verification.md +113 -0
- plans/documentation-rendering-fixes/5-Advanced-Documentation-Quality-Assurance.md +119 -0
- plans/documentation-rendering-fixes/6-Documentation-Build-Optimization-Testing.md +129 -0
- plans/documentation-rendering-fixes/compacted_state.md +132 -0
- plans/documentation-template-fix/0-Overview.md +197 -0
- plans/documentation-template-fix/1-Template-System-Analysis.md +269 -0
- plans/documentation-template-fix/2-Template-Modification.md +609 -0
- plans/documentation-template-fix/3-Build-System-Integration.md +766 -0
- plans/documentation-template-fix/4-Testing-Validation.md +1399 -0
- plans/documentation-template-fix/5-Documentation-Training.md +602 -0
- plans/documentation-workflow-fix/0-Overview.md +222 -0
- plans/documentation-workflow-fix/1-Immediate-Fixes.md +238 -0
- plans/documentation-workflow-fix/2-Configuration-Setup.md +298 -0
- plans/documentation-workflow-fix/3-Pre-commit-Integration.md +382 -0
- plans/documentation-workflow-fix/4-Workflow-Improvements.md +446 -0
- plans/documentation-workflow-fix/5-Documentation-and-Training.md +527 -0
- plans/duplicate-object-warnings-fix-plan.md +130 -0
- plans/github-issues-migration/0-Overview.md +510 -0
- plans/github-issues-migration/1-Foundation-Label-System.md +180 -0
- plans/github-issues-migration/2-Migration-Tool-Rewrite.md +235 -0
- plans/github-issues-migration/3-CLI-Integration-Automation.md +169 -0
- plans/github-issues-migration/4-Validated-Migration.md +252 -0
- plans/github-issues-migration/5-Documentation-Training.md +171 -0
- plans/github-issues-migration/6-Closeout.md +179 -0
- plans/github-workflows-repair/repair-plan.md +299 -0
- plans/issues_from_plans.py +342 -0
- plans/pr-270-doc-validation-fixes/0-Overview.md +354 -0
- plans/pr-270-doc-validation-fixes/1-Critical-PR-Fixes.md +117 -0
- plans/pr-270-doc-validation-fixes/2-Framework-Right-Sizing.md +129 -0
- plans/pr-270-doc-validation-fixes/3-Sustainable-Documentation.md +126 -0
- plans/pr-270-doc-validation-fixes/4-Closeout-Migration.md +143 -0
- plans/pr-270-doc-validation-fixes/PLAN_COMPLETED.md +149 -0
- plans/python-310-migration/0-Overview.md +390 -0
- plans/python-310-migration/1-Planning-Setup.md +164 -0
- plans/python-310-migration/2-Implementation.md +256 -0
- plans/python-310-migration/3-Testing-Validation.md +335 -0
- plans/python-310-migration/4-Documentation-Release.md +274 -0
- plans/python-310-migration/5-Closeout.md +252 -0
- plans/readthedocs-simplified/0-Overview.md +243 -0
- plans/readthedocs-simplified/1-Immediate-Fixes.md +216 -0
- plans/readthedocs-simplified/2-Template-Simplification.md +278 -0
- plans/readthedocs-simplified/3-ReadTheDocs-Setup.md +298 -0
- plans/readthedocs-simplified/4-Testing-Validation.md +328 -0
- plans/readthedocs-simplified/5-Closeout.md +231 -0
- plans/readthedocs-simplified/compacted_state.md +127 -0
- plans/session-compaction-2025-08-12/compacted_state.md +114 -0
- plans/session-compaction-2025-08-13/compacted_state.md +145 -0
- plans/session-continuity-protocol/0-Overview.md +35 -0
- plans/session-continuity-protocol/1-Core-Principles-Framework.md +40 -0
- plans/session-continuity-protocol/2-Pre-Session-Validation-System.md +79 -0
- plans/session-continuity-protocol/3-Context-Switching-Prevention.md +87 -0
- plans/session-continuity-protocol/4-Progress-Tracking-Recovery.md +100 -0
- plans/sphinx-warnings-analysis.md +222 -0
- plans/systemprompt-optimization/0-Overview.md +447 -0
- plans/systemprompt-optimization/1-Deploy-SystemPrompt.md +114 -0
- plans/systemprompt-optimization/2-Documentation-Alignment.md +198 -0
- plans/systemprompt-optimization/3-Monitoring-Infrastructure.md +396 -0
- plans/systemprompt-optimization/4-Implementation-Script.md +450 -0
- plans/systemprompt-optimization/9-Closeout.md +165 -0
- plans/systemprompt-optimization/compacted_state.md +143 -0
- plans/template-value-propositions/0-Overview.md +357 -0
- plans/template-value-propositions/1-Value-Proposition-Framework-Design.md +144 -0
- plans/template-value-propositions/2-Plan-Template-Enhancement.md +178 -0
- plans/template-value-propositions/3-Value-Generator-Hook-Implementation.md +291 -0
- plans/template-value-propositions/4-Value-Validator-Hook-Implementation.md +274 -0
- plans/template-value-propositions/5-Documentation-Agent-Updates.md +219 -0
- plans/template-value-propositions/6-Integration-Testing-Validation.md +247 -0
- plans/tests-audit/0-Overview.md +410 -0
- plans/tests-audit/1-Discovery-Inventory.md +170 -0
- plans/tests-audit/2-Physics-Validation-Audit.md +195 -0
- plans/tests-audit/3-Architecture-Compliance.md +195 -0
- plans/tests-audit/4-Numerical-Stability-Analysis.md +203 -0
- plans/tests-audit/5-Documentation-Enhancement.md +220 -0
- plans/tests-audit/6-Audit-Deliverables.md +220 -0
- plans/tests-audit/7-Closeout.md +252 -0
- plans/tests-audit/artifacts/ARCHITECTURE_COMPLIANCE_REPORT.md +315 -0
- plans/tests-audit/artifacts/ARCHITECTURE_RECOMMENDATIONS.md +943 -0
- plans/tests-audit/artifacts/COMPREHENSIVE_AUDIT_REPORT.md +356 -0
- plans/tests-audit/artifacts/CONTRIBUTING_ENHANCED_TEMPLATE.md +419 -0
- plans/tests-audit/artifacts/COVERAGE_GAP_ANALYSIS.md +152 -0
- plans/tests-audit/artifacts/DOCUMENTATION_ENHANCEMENT_REPORT.md +502 -0
- plans/tests-audit/artifacts/EXECUTIVE_AUDIT_SUMMARY.md +129 -0
- plans/tests-audit/artifacts/IMPLEMENTATION_ROADMAP.md +647 -0
- plans/tests-audit/artifacts/NUMERICAL_RECOMMENDATIONS.md +739 -0
- plans/tests-audit/artifacts/NUMERICAL_STABILITY_GUIDE_TEMPLATE.rst +451 -0
- plans/tests-audit/artifacts/NUMERICAL_STABILITY_REPORT.md +301 -0
- plans/tests-audit/artifacts/PHASE_3_SUMMARY.md +280 -0
- plans/tests-audit/artifacts/PHASE_4_SUMMARY.md +229 -0
- plans/tests-audit/artifacts/PHASE_5_SUMMARY.md +292 -0
- plans/tests-audit/artifacts/PHASE_6_CLOSEOUT.md +278 -0
- plans/tests-audit/artifacts/PHYSICS_GUIDE_TEMPLATE.rst +268 -0
- plans/tests-audit/artifacts/PHYSICS_VALIDATION_REPORT.md +235 -0
- plans/tests-audit/artifacts/TECHNICAL_DELIVERABLES_PACKAGE.md +2502 -0
- plans/tests-audit/artifacts/TEST_INVENTORY.csv +1204 -0
- plans/tests-audit/artifacts/TEST_INVENTORY.md +135 -0
- plans/tests-audit/artifacts/test_discovery_analysis.py +231 -0
- plans/tests-audit/artifacts/test_parser.py +395 -0
- solarwindpy/README.md +3 -0
- solarwindpy/Untitled.ipynb +54 -0
- solarwindpy/__init__.py +74 -0
- solarwindpy/core/__init__.py +23 -0
- solarwindpy/core/alfvenic_turbulence.py +804 -0
- solarwindpy/core/base.py +267 -0
- solarwindpy/core/ions.py +309 -0
- solarwindpy/core/plasma.py +2133 -0
- solarwindpy/core/spacecraft.py +256 -0
- solarwindpy/core/tensor.py +90 -0
- solarwindpy/core/units_constants.py +199 -0
- solarwindpy/core/vector.py +328 -0
- solarwindpy/fitfunctions/__init__.py +20 -0
- solarwindpy/fitfunctions/core.py +734 -0
- solarwindpy/fitfunctions/exponentials.py +188 -0
- solarwindpy/fitfunctions/gaussians.py +264 -0
- solarwindpy/fitfunctions/lines.py +116 -0
- solarwindpy/fitfunctions/moyal.py +71 -0
- solarwindpy/fitfunctions/plots.py +751 -0
- solarwindpy/fitfunctions/power_laws.py +209 -0
- solarwindpy/fitfunctions/tex_info.py +568 -0
- solarwindpy/fitfunctions/trend_fits.py +482 -0
- solarwindpy/instabilities/__init__.py +16 -0
- solarwindpy/instabilities/beta_ani.py +82 -0
- solarwindpy/instabilities/verscharen2016.py +631 -0
- solarwindpy/plotting/__init__.py +33 -0
- solarwindpy/plotting/agg_plot.py +489 -0
- solarwindpy/plotting/base.py +465 -0
- solarwindpy/plotting/hist1d.py +405 -0
- solarwindpy/plotting/hist2d.py +1035 -0
- solarwindpy/plotting/histograms.py +1845 -0
- solarwindpy/plotting/labels/__init__.py +104 -0
- solarwindpy/plotting/labels/base.py +686 -0
- solarwindpy/plotting/labels/chemistry.py +19 -0
- solarwindpy/plotting/labels/composition.py +100 -0
- solarwindpy/plotting/labels/datetime.py +235 -0
- solarwindpy/plotting/labels/elemental_abundance.py +73 -0
- solarwindpy/plotting/labels/special.py +794 -0
- solarwindpy/plotting/orbits.py +515 -0
- solarwindpy/plotting/scatter.py +99 -0
- solarwindpy/plotting/select_data_from_figure.py +329 -0
- solarwindpy/plotting/spiral.py +980 -0
- solarwindpy/plotting/tools.py +434 -0
- solarwindpy/scripts/__init__.py +1 -0
- solarwindpy/scripts/logs/.gitignore +1 -0
- solarwindpy/solar_activity/__init__.py +53 -0
- solarwindpy/solar_activity/base.py +605 -0
- solarwindpy/solar_activity/lisird/__init__.py +3 -0
- solarwindpy/solar_activity/lisird/extrema_calculator.py +394 -0
- solarwindpy/solar_activity/lisird/lisird.py +319 -0
- solarwindpy/solar_activity/plots.py +116 -0
- solarwindpy/solar_activity/sunspot_number/.DS_Store +0 -0
- solarwindpy/solar_activity/sunspot_number/__init__.py +3 -0
- solarwindpy/solar_activity/sunspot_number/sidc.py +556 -0
- solarwindpy/solar_activity/sunspot_number/ssn_extrema.csv +72 -0
- solarwindpy/solar_activity/sunspot_number/ssn_extrema.csv.silso +72 -0
- solarwindpy/tools/__init__.py +162 -0
- solarwindpy-0.1.1.dist-info/METADATA +181 -0
- solarwindpy-0.1.1.dist-info/RECORD +409 -0
- {solarwindpy-0.0.1.dev0.dist-info â solarwindpy-0.1.1.dist-info}/WHEEL +1 -1
- solarwindpy-0.1.1.dist-info/licenses/LICENSE.rst +32 -0
- solarwindpy-0.1.1.dist-info/top_level.txt +3 -0
- tests/__init__.py +1 -0
- tests/conftest.py +10 -0
- tests/core/__init__.py +1 -0
- tests/core/test_alfvenic_turbulence.py +544 -0
- tests/core/test_base.py +112 -0
- tests/core/test_base_head_tail.py +29 -0
- tests/core/test_base_mi_tuples.py +11 -0
- tests/core/test_core_verify_datetimeindex.py +32 -0
- tests/core/test_ions.py +325 -0
- tests/core/test_plasma.py +2581 -0
- tests/core/test_plasma_io.py +12 -0
- tests/core/test_quantities.py +507 -0
- tests/core/test_spacecraft.py +210 -0
- tests/core/test_units_constants.py +22 -0
- tests/data/epoch.csv +4 -0
- tests/data/plasma.csv +4 -0
- tests/data/spacecraft.csv +4 -0
- tests/fitfunctions/conftest.py +60 -0
- tests/fitfunctions/test_core.py +193 -0
- tests/fitfunctions/test_exponentials.py +342 -0
- tests/fitfunctions/test_gaussians.py +142 -0
- tests/fitfunctions/test_lines.py +349 -0
- tests/fitfunctions/test_moyal.py +258 -0
- tests/fitfunctions/test_plots.py +258 -0
- tests/fitfunctions/test_power_laws.py +365 -0
- tests/fitfunctions/test_tex_info.py +183 -0
- tests/fitfunctions/test_trend_fit_properties.py +31 -0
- tests/fitfunctions/test_trend_fits.py +244 -0
- tests/plotting/__init__.py +1 -0
- tests/plotting/labels/__init__.py +1 -0
- tests/plotting/labels/test_chemistry.py +243 -0
- tests/plotting/labels/test_composition.py +345 -0
- tests/plotting/labels/test_datetime.py +445 -0
- tests/plotting/labels/test_elemental_abundance.py +366 -0
- tests/plotting/labels/test_init.py +66 -0
- tests/plotting/labels/test_labels_base.py +347 -0
- tests/plotting/labels/test_special.py +550 -0
- tests/plotting/test_agg_plot.py +602 -0
- tests/plotting/test_base.py +752 -0
- tests/plotting/test_fixtures_utilities.py +775 -0
- tests/plotting/test_histograms.py +546 -0
- tests/plotting/test_integration.py +675 -0
- tests/plotting/test_orbits.py +435 -0
- tests/plotting/test_performance.py +708 -0
- tests/plotting/test_scatter.py +752 -0
- tests/plotting/test_select_data_from_figure.py +1209 -0
- tests/plotting/test_spiral.py +573 -0
- tests/plotting/test_tools.py +607 -0
- tests/plotting/test_visual_validation.py +465 -0
- tests/solar_activity/__init__.py +1 -0
- tests/solar_activity/lisird/__init__.py +1 -0
- tests/solar_activity/lisird/test_extrema_calculator.py +593 -0
- tests/solar_activity/lisird/test_lisird_id.py +187 -0
- tests/solar_activity/sunspot_number/__init__.py +1 -0
- tests/solar_activity/sunspot_number/test_init.py +399 -0
- tests/solar_activity/sunspot_number/test_sidc.py +465 -0
- tests/solar_activity/sunspot_number/test_sidc_id.py +223 -0
- tests/solar_activity/sunspot_number/test_sidc_loader.py +275 -0
- tests/solar_activity/sunspot_number/test_ssn_extrema.py +406 -0
- tests/solar_activity/test_base.py +656 -0
- tests/solar_activity/test_init.py +396 -0
- tests/solar_activity/test_plots.py +371 -0
- tests/test_circular_imports.py +408 -0
- tests/test_issue_titles.py +25 -0
- tests/test_statusline.py +298 -0
- solarwindpy-0.0.1.dev0.dist-info/METADATA +0 -14
- solarwindpy-0.0.1.dev0.dist-info/RECORD +0 -4
- solarwindpy-0.0.1.dev0.dist-info/top_level.txt +0 -1
|
@@ -0,0 +1,464 @@
|
|
|
1
|
+
# Phase 5: Physics & MultiIndex Compliance
|
|
2
|
+
|
|
3
|
+
## Phase Metadata
|
|
4
|
+
- **Status**: â
Complete
|
|
5
|
+
- **Estimated Duration**: 2 hours
|
|
6
|
+
- **Actual Duration**: 1.8 hours
|
|
7
|
+
- **Dependencies**: Phase 4 (Code Example Remediation) completed
|
|
8
|
+
- **Git Commit**: <checksum>
|
|
9
|
+
- **Branch**: plan/documentation-code-audit
|
|
10
|
+
|
|
11
|
+
## đŻ Objective
|
|
12
|
+
Ensure all corrected code examples strictly follow SolarWindPy physics rules and MultiIndex data structure conventions, establishing automated validation to prevent future violations.
|
|
13
|
+
|
|
14
|
+
## đ Tasks Checklist
|
|
15
|
+
- [ ] **Physics Rule Validation** (60 min)
|
|
16
|
+
- [ ] Thermal speed convention compliance (mw² = 2kT) (20 min)
|
|
17
|
+
- [ ] SI unit consistency validation (15 min)
|
|
18
|
+
- [ ] Missing data handling verification (NaN vs 0/-999) (15 min)
|
|
19
|
+
- [ ] AlfvĂŠn speed calculation validation (V_A = B/â(ÎźâĎ)) (10 min)
|
|
20
|
+
|
|
21
|
+
- [ ] **MultiIndex Structure Compliance** (45 min)
|
|
22
|
+
- [ ] Column level naming validation (M, C, S) (15 min)
|
|
23
|
+
- [ ] Data access pattern standardization (.xs() usage) (15 min)
|
|
24
|
+
- [ ] DataFrame index requirements (Epoch naming) (10 min)
|
|
25
|
+
- [ ] Species and component consistency (5 min)
|
|
26
|
+
|
|
27
|
+
- [ ] **Automated Validation Integration** (15 min)
|
|
28
|
+
- [ ] Create physics compliance checker script (10 min)
|
|
29
|
+
- [ ] Integrate with example validation framework (5 min)
|
|
30
|
+
|
|
31
|
+
## đ Deliverables
|
|
32
|
+
- [ ] **physics_compliance_validator.py**: Automated physics rule checking
|
|
33
|
+
- [ ] **multiindex_structure_validator.py**: MultiIndex pattern validation
|
|
34
|
+
- [ ] **compliance_report.json**: Complete compliance assessment results
|
|
35
|
+
- [ ] **physics_examples_guide.md**: Best practices documentation
|
|
36
|
+
- [ ] **automated_validation_hooks.py**: CI/CD integration preparation
|
|
37
|
+
|
|
38
|
+
## đŹ Physics Rules Validation
|
|
39
|
+
|
|
40
|
+
### Thermal Speed Convention (mw² = 2kT)
|
|
41
|
+
```python
|
|
42
|
+
class ThermalSpeedValidator:
|
|
43
|
+
def validate_convention(self, thermal_speed, temperature, mass):
|
|
44
|
+
"""
|
|
45
|
+
Validate thermal speed follows mw² = 2kT convention
|
|
46
|
+
|
|
47
|
+
Parameters:
|
|
48
|
+
- thermal_speed: calculated thermal speed [km/s]
|
|
49
|
+
- temperature: temperature [K]
|
|
50
|
+
- mass: particle mass [kg]
|
|
51
|
+
"""
|
|
52
|
+
k_B = 1.380649e-23 # Boltzmann constant [J/K]
|
|
53
|
+
|
|
54
|
+
# Expected thermal speed: w = sqrt(2kT/m)
|
|
55
|
+
expected_w = np.sqrt(2 * k_B * temperature / mass) / 1000 # Convert to km/s
|
|
56
|
+
|
|
57
|
+
relative_error = abs(thermal_speed - expected_w) / expected_w
|
|
58
|
+
|
|
59
|
+
if relative_error > 0.01: # 1% tolerance
|
|
60
|
+
raise PhysicsViolation(
|
|
61
|
+
f"Thermal speed convention violation: {relative_error:.3%} error\n"
|
|
62
|
+
f"Expected: {expected_w:.2f} km/s, Got: {thermal_speed:.2f} km/s"
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
return True
|
|
66
|
+
|
|
67
|
+
def validate_examples_with_thermal_speed(self, examples):
|
|
68
|
+
"""Check all examples that calculate thermal speed"""
|
|
69
|
+
violations = []
|
|
70
|
+
|
|
71
|
+
for example in examples:
|
|
72
|
+
if self.contains_thermal_speed_calculation(example.code):
|
|
73
|
+
try:
|
|
74
|
+
result = execute_example(example.code)
|
|
75
|
+
if 'thermal_speed' in result.outputs and 'temperature' in result.outputs:
|
|
76
|
+
self.validate_convention(
|
|
77
|
+
result.outputs['thermal_speed'],
|
|
78
|
+
result.outputs['temperature'],
|
|
79
|
+
result.outputs.get('mass', 1.67262192e-27) # Default proton mass
|
|
80
|
+
)
|
|
81
|
+
except PhysicsViolation as e:
|
|
82
|
+
violations.append({
|
|
83
|
+
'example_id': example.id,
|
|
84
|
+
'violation': str(e),
|
|
85
|
+
'file': example.file_path
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
return violations
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### SI Units Consistency
|
|
92
|
+
```python
|
|
93
|
+
class SIUnitsValidator:
|
|
94
|
+
def __init__(self):
|
|
95
|
+
self.expected_units = {
|
|
96
|
+
'density': 'cm^-3', # Number density (display unit)
|
|
97
|
+
'velocity': 'km/s', # Velocity (display unit)
|
|
98
|
+
'temperature': 'K', # Temperature
|
|
99
|
+
'magnetic_field': 'nT', # Magnetic field (display unit)
|
|
100
|
+
'thermal_speed': 'km/s', # Thermal speed (display unit)
|
|
101
|
+
'pressure': 'Pa', # Pressure (SI base)
|
|
102
|
+
'energy': 'J', # Energy (SI base)
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
def validate_units_in_example(self, example_code):
|
|
106
|
+
"""Ensure examples use correct units for display vs calculation"""
|
|
107
|
+
# Internal calculations should use SI
|
|
108
|
+
# Display/user interface should use conventional units
|
|
109
|
+
violations = []
|
|
110
|
+
|
|
111
|
+
if self.uses_non_si_in_calculation(example_code):
|
|
112
|
+
violations.append("Non-SI units used in internal calculations")
|
|
113
|
+
|
|
114
|
+
if self.missing_unit_conversions(example_code):
|
|
115
|
+
violations.append("Missing unit conversions for display")
|
|
116
|
+
|
|
117
|
+
return violations
|
|
118
|
+
|
|
119
|
+
def uses_non_si_in_calculation(self, code):
|
|
120
|
+
"""Check if code uses non-SI units in calculations"""
|
|
121
|
+
# Look for calculations with non-SI units
|
|
122
|
+
non_si_patterns = [
|
|
123
|
+
r'\* 1e6', # Converting to cm^-3 in calculation
|
|
124
|
+
r'/ 1000', # Converting to km/s in calculation
|
|
125
|
+
r'\* 1e9', # Converting to nT in calculation
|
|
126
|
+
]
|
|
127
|
+
|
|
128
|
+
for pattern in non_si_patterns:
|
|
129
|
+
if re.search(pattern, code):
|
|
130
|
+
return True
|
|
131
|
+
return False
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Missing Data Handling
|
|
135
|
+
```python
|
|
136
|
+
class MissingDataValidator:
|
|
137
|
+
def validate_nan_usage(self, example_code, example_outputs):
|
|
138
|
+
"""Ensure NaN used for missing data, not 0 or -999"""
|
|
139
|
+
violations = []
|
|
140
|
+
|
|
141
|
+
# Check for problematic missing data indicators
|
|
142
|
+
if '-999' in example_code or '0' in example_code:
|
|
143
|
+
if self.uses_zero_for_missing_data(example_code):
|
|
144
|
+
violations.append("Uses 0 for missing data instead of NaN")
|
|
145
|
+
|
|
146
|
+
if self.uses_fill_values(example_code):
|
|
147
|
+
violations.append("Uses -999 fill values instead of NaN")
|
|
148
|
+
|
|
149
|
+
# Check outputs for proper NaN handling
|
|
150
|
+
if example_outputs:
|
|
151
|
+
for var_name, data in example_outputs.items():
|
|
152
|
+
if hasattr(data, 'isnull'):
|
|
153
|
+
if not self.proper_missing_data_handling(data):
|
|
154
|
+
violations.append(f"Variable {var_name} has improper missing data handling")
|
|
155
|
+
|
|
156
|
+
return violations
|
|
157
|
+
|
|
158
|
+
def proper_missing_data_handling(self, data):
|
|
159
|
+
"""Check if data uses NaN for missing values"""
|
|
160
|
+
if hasattr(data, 'values'):
|
|
161
|
+
# Check pandas Series/DataFrame
|
|
162
|
+
return not np.any((data.values == 0) | (data.values == -999))
|
|
163
|
+
elif isinstance(data, np.ndarray):
|
|
164
|
+
# Check numpy arrays
|
|
165
|
+
return not np.any((data == 0) | (data == -999))
|
|
166
|
+
return True
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## đ MultiIndex Structure Validation
|
|
170
|
+
|
|
171
|
+
### Column Level Naming (M, C, S)
|
|
172
|
+
```python
|
|
173
|
+
class MultiIndexValidator:
|
|
174
|
+
def __init__(self):
|
|
175
|
+
self.required_levels = ['M', 'C', 'S']
|
|
176
|
+
self.valid_measurements = ['n', 'v', 'w', 'b', 'T', 'P']
|
|
177
|
+
self.valid_components = ['x', 'y', 'z', '']
|
|
178
|
+
self.valid_species = ['p1', 'p2', 'a', 'he', '']
|
|
179
|
+
|
|
180
|
+
def validate_column_structure(self, dataframe):
|
|
181
|
+
"""Validate MultiIndex column structure"""
|
|
182
|
+
violations = []
|
|
183
|
+
|
|
184
|
+
if not isinstance(dataframe.columns, pd.MultiIndex):
|
|
185
|
+
violations.append("Columns must be MultiIndex with (M, C, S) levels")
|
|
186
|
+
return violations
|
|
187
|
+
|
|
188
|
+
# Check level names
|
|
189
|
+
if list(dataframe.columns.names) != self.required_levels:
|
|
190
|
+
violations.append(
|
|
191
|
+
f"Column level names must be {self.required_levels}, "
|
|
192
|
+
f"got {list(dataframe.columns.names)}"
|
|
193
|
+
)
|
|
194
|
+
|
|
195
|
+
# Validate measurement types (M level)
|
|
196
|
+
measurements = dataframe.columns.get_level_values('M').unique()
|
|
197
|
+
invalid_measurements = set(measurements) - set(self.valid_measurements)
|
|
198
|
+
if invalid_measurements:
|
|
199
|
+
violations.append(f"Invalid measurements: {invalid_measurements}")
|
|
200
|
+
|
|
201
|
+
# Validate components (C level)
|
|
202
|
+
components = dataframe.columns.get_level_values('C').unique()
|
|
203
|
+
invalid_components = set(components) - set(self.valid_components)
|
|
204
|
+
if invalid_components:
|
|
205
|
+
violations.append(f"Invalid components: {invalid_components}")
|
|
206
|
+
|
|
207
|
+
# Validate species (S level)
|
|
208
|
+
species = dataframe.columns.get_level_values('S').unique()
|
|
209
|
+
invalid_species = set(species) - set(self.valid_species)
|
|
210
|
+
if invalid_species:
|
|
211
|
+
violations.append(f"Invalid species: {invalid_species}")
|
|
212
|
+
|
|
213
|
+
return violations
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### Data Access Pattern Validation
|
|
217
|
+
```python
|
|
218
|
+
class DataAccessValidator:
|
|
219
|
+
def validate_xs_usage(self, example_code):
|
|
220
|
+
"""Ensure examples use .xs() for views, not copies"""
|
|
221
|
+
violations = []
|
|
222
|
+
|
|
223
|
+
# Check for inefficient data access patterns
|
|
224
|
+
inefficient_patterns = [
|
|
225
|
+
r'\.loc\[.*level.*\]', # Should use .xs() instead
|
|
226
|
+
r'\.iloc\[.*\]', # Positional access is fragile
|
|
227
|
+
r'\[\(.*,.*,.*\)\]', # Direct tuple indexing
|
|
228
|
+
]
|
|
229
|
+
|
|
230
|
+
for pattern in inefficient_patterns:
|
|
231
|
+
if re.search(pattern, example_code):
|
|
232
|
+
violations.append(f"Use .xs() for MultiIndex access instead of {pattern}")
|
|
233
|
+
|
|
234
|
+
# Check for proper .xs() usage
|
|
235
|
+
xs_patterns = [
|
|
236
|
+
r"\.xs\('\w+', level='M'\)", # Measurement access
|
|
237
|
+
r"\.xs\('\w+', level='S'\)", # Species access
|
|
238
|
+
r"\.xs\('\w+', level='C'\)", # Component access
|
|
239
|
+
]
|
|
240
|
+
|
|
241
|
+
has_proper_xs = any(re.search(pattern, example_code) for pattern in xs_patterns)
|
|
242
|
+
if '.xs(' in example_code and not has_proper_xs:
|
|
243
|
+
violations.append("Improper .xs() usage - specify level parameter")
|
|
244
|
+
|
|
245
|
+
return violations
|
|
246
|
+
|
|
247
|
+
def validate_index_naming(self, dataframe):
|
|
248
|
+
"""Ensure DataFrame index is named 'Epoch' for time series"""
|
|
249
|
+
violations = []
|
|
250
|
+
|
|
251
|
+
if hasattr(dataframe, 'index'):
|
|
252
|
+
if dataframe.index.name != 'Epoch' and len(dataframe) > 1:
|
|
253
|
+
violations.append("Time series DataFrame index should be named 'Epoch'")
|
|
254
|
+
|
|
255
|
+
return violations
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
## đ§ Automated Validation Framework
|
|
259
|
+
|
|
260
|
+
### Integrated Compliance Checker
|
|
261
|
+
```python
|
|
262
|
+
class ComplianceValidator:
|
|
263
|
+
def __init__(self):
|
|
264
|
+
self.thermal_speed_validator = ThermalSpeedValidator()
|
|
265
|
+
self.si_units_validator = SIUnitsValidator()
|
|
266
|
+
self.missing_data_validator = MissingDataValidator()
|
|
267
|
+
self.multiindex_validator = MultiIndexValidator()
|
|
268
|
+
self.data_access_validator = DataAccessValidator()
|
|
269
|
+
|
|
270
|
+
def validate_example_compliance(self, example):
|
|
271
|
+
"""Comprehensive compliance check for single example"""
|
|
272
|
+
violations = {
|
|
273
|
+
'physics': [],
|
|
274
|
+
'multiindex': [],
|
|
275
|
+
'data_access': [],
|
|
276
|
+
'units': [],
|
|
277
|
+
'missing_data': []
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
# Execute example to get outputs
|
|
281
|
+
try:
|
|
282
|
+
result = execute_example(example.code)
|
|
283
|
+
|
|
284
|
+
# Physics validation
|
|
285
|
+
violations['physics'].extend(
|
|
286
|
+
self.thermal_speed_validator.validate_examples_with_thermal_speed([example])
|
|
287
|
+
)
|
|
288
|
+
|
|
289
|
+
# Units validation
|
|
290
|
+
violations['units'].extend(
|
|
291
|
+
self.si_units_validator.validate_units_in_example(example.code)
|
|
292
|
+
)
|
|
293
|
+
|
|
294
|
+
# Missing data validation
|
|
295
|
+
violations['missing_data'].extend(
|
|
296
|
+
self.missing_data_validator.validate_nan_usage(example.code, result.outputs)
|
|
297
|
+
)
|
|
298
|
+
|
|
299
|
+
# MultiIndex validation
|
|
300
|
+
for output_name, output_data in result.outputs.items():
|
|
301
|
+
if hasattr(output_data, 'columns') and isinstance(output_data.columns, pd.MultiIndex):
|
|
302
|
+
violations['multiindex'].extend(
|
|
303
|
+
self.multiindex_validator.validate_column_structure(output_data)
|
|
304
|
+
)
|
|
305
|
+
violations['multiindex'].extend(
|
|
306
|
+
self.data_access_validator.validate_index_naming(output_data)
|
|
307
|
+
)
|
|
308
|
+
|
|
309
|
+
# Data access pattern validation
|
|
310
|
+
violations['data_access'].extend(
|
|
311
|
+
self.data_access_validator.validate_xs_usage(example.code)
|
|
312
|
+
)
|
|
313
|
+
|
|
314
|
+
except Exception as e:
|
|
315
|
+
violations['physics'].append(f"Example execution failed: {str(e)}")
|
|
316
|
+
|
|
317
|
+
return violations
|
|
318
|
+
|
|
319
|
+
def generate_compliance_report(self, examples):
|
|
320
|
+
"""Generate comprehensive compliance report"""
|
|
321
|
+
report = {
|
|
322
|
+
'timestamp': datetime.now().isoformat(),
|
|
323
|
+
'total_examples': len(examples),
|
|
324
|
+
'compliance_summary': {
|
|
325
|
+
'physics_compliant': 0,
|
|
326
|
+
'multiindex_compliant': 0,
|
|
327
|
+
'fully_compliant': 0
|
|
328
|
+
},
|
|
329
|
+
'violations_by_category': {
|
|
330
|
+
'physics': [],
|
|
331
|
+
'multiindex': [],
|
|
332
|
+
'data_access': [],
|
|
333
|
+
'units': [],
|
|
334
|
+
'missing_data': []
|
|
335
|
+
},
|
|
336
|
+
'example_details': []
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
for example in examples:
|
|
340
|
+
violations = self.validate_example_compliance(example)
|
|
341
|
+
|
|
342
|
+
is_physics_compliant = len(violations['physics']) == 0
|
|
343
|
+
is_multiindex_compliant = (
|
|
344
|
+
len(violations['multiindex']) == 0 and
|
|
345
|
+
len(violations['data_access']) == 0
|
|
346
|
+
)
|
|
347
|
+
is_fully_compliant = all(len(v) == 0 for v in violations.values())
|
|
348
|
+
|
|
349
|
+
# Update summary counts
|
|
350
|
+
if is_physics_compliant:
|
|
351
|
+
report['compliance_summary']['physics_compliant'] += 1
|
|
352
|
+
if is_multiindex_compliant:
|
|
353
|
+
report['compliance_summary']['multiindex_compliant'] += 1
|
|
354
|
+
if is_fully_compliant:
|
|
355
|
+
report['compliance_summary']['fully_compliant'] += 1
|
|
356
|
+
|
|
357
|
+
# Collect violations by category
|
|
358
|
+
for category, violation_list in violations.items():
|
|
359
|
+
report['violations_by_category'][category].extend(violation_list)
|
|
360
|
+
|
|
361
|
+
# Add example details
|
|
362
|
+
report['example_details'].append({
|
|
363
|
+
'example_id': example.id,
|
|
364
|
+
'file_path': example.file_path,
|
|
365
|
+
'violations': violations,
|
|
366
|
+
'physics_compliant': is_physics_compliant,
|
|
367
|
+
'multiindex_compliant': is_multiindex_compliant,
|
|
368
|
+
'fully_compliant': is_fully_compliant
|
|
369
|
+
})
|
|
370
|
+
|
|
371
|
+
return report
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
## đ Success Metrics
|
|
375
|
+
|
|
376
|
+
### Physics Compliance Targets
|
|
377
|
+
- **Thermal Speed Convention**: 100% compliance with mw² = 2kT
|
|
378
|
+
- **SI Units**: 100% internal calculations use SI units
|
|
379
|
+
- **Missing Data**: 100% use NaN for missing data (no 0 or -999)
|
|
380
|
+
- **Scientific Accuracy**: All physics calculations within 1% theoretical values
|
|
381
|
+
|
|
382
|
+
### MultiIndex Compliance Targets
|
|
383
|
+
- **Column Structure**: 100% use (M, C, S) naming convention
|
|
384
|
+
- **Data Access**: 90% use .xs() for MultiIndex access (some .loc acceptable)
|
|
385
|
+
- **Index Naming**: 100% time series use 'Epoch' index name
|
|
386
|
+
- **Consistency**: 100% species and component codes follow standards
|
|
387
|
+
|
|
388
|
+
### Automation Integration Targets
|
|
389
|
+
- **Validation Speed**: <10 seconds for all 47 examples
|
|
390
|
+
- **Error Detection**: 95% accuracy in identifying violations
|
|
391
|
+
- **CI/CD Ready**: Validation hooks prepared for automated testing
|
|
392
|
+
- **Documentation**: Clear guidelines for future example creation
|
|
393
|
+
|
|
394
|
+
## ⥠Execution Strategy
|
|
395
|
+
|
|
396
|
+
### Phase 5 Implementation Order
|
|
397
|
+
1. **Physics Rule Validation** (60 min)
|
|
398
|
+
- Focus on thermal speed and unit conventions first
|
|
399
|
+
- Validate against existing examples with known physics
|
|
400
|
+
- Create automated checking for future examples
|
|
401
|
+
|
|
402
|
+
2. **MultiIndex Structure Validation** (45 min)
|
|
403
|
+
- Ensure all data structures follow established patterns
|
|
404
|
+
- Validate access patterns and naming conventions
|
|
405
|
+
- Document best practices for consistency
|
|
406
|
+
|
|
407
|
+
3. **Automation Integration** (15 min)
|
|
408
|
+
- Create validation scripts for CI/CD integration
|
|
409
|
+
- Prepare hooks for automated checking
|
|
410
|
+
- Test validation speed and accuracy
|
|
411
|
+
|
|
412
|
+
### Risk Mitigation
|
|
413
|
+
- **Physics Expertise**: Validate rules with domain experts
|
|
414
|
+
- **Performance**: Optimize validation scripts for speed
|
|
415
|
+
- **False Positives**: Tune validation thresholds to avoid over-strictness
|
|
416
|
+
- **Backward Compatibility**: Ensure validation doesn't break existing patterns
|
|
417
|
+
|
|
418
|
+
## â
Completion Criteria
|
|
419
|
+
- [ ] All examples validated against physics rules
|
|
420
|
+
- [ ] MultiIndex structure compliance verified
|
|
421
|
+
- [ ] Automated validation framework operational
|
|
422
|
+
- [ ] Compliance report showing >95% rule adherence
|
|
423
|
+
- [ ] CI/CD integration hooks prepared
|
|
424
|
+
- [ ] Best practices documentation created
|
|
425
|
+
|
|
426
|
+
## đ Transition to Phase 6
|
|
427
|
+
**Preparation for Phase 6: Doctest Integration**
|
|
428
|
+
- Physics and MultiIndex compliance established
|
|
429
|
+
- Automated validation framework operational
|
|
430
|
+
- Examples following consistent patterns
|
|
431
|
+
- Ready for doctest automation integration
|
|
432
|
+
|
|
433
|
+
**Next Phase Prerequisites:**
|
|
434
|
+
- Compliant examples as baseline for doctest integration
|
|
435
|
+
- Validation framework ready for CI/CD integration
|
|
436
|
+
- Clear patterns documented for automated testing
|
|
437
|
+
- Physics rules encoded in validation scripts
|
|
438
|
+
|
|
439
|
+
---
|
|
440
|
+
|
|
441
|
+
**đ User Action Required**: After completing this phase, run:
|
|
442
|
+
```bash
|
|
443
|
+
git add plans/documentation-code-audit/5-Physics-MultiIndex-Compliance.md \
|
|
444
|
+
physics_compliance_validator.py multiindex_structure_validator.py \
|
|
445
|
+
compliance_report.json physics_examples_guide.md automated_validation_hooks.py
|
|
446
|
+
git commit -m "docs: complete Phase 5 physics and MultiIndex compliance validation
|
|
447
|
+
|
|
448
|
+
- Established comprehensive physics rule validation (thermal speed, units, missing data)
|
|
449
|
+
- Validated MultiIndex structure compliance across all examples
|
|
450
|
+
- Created automated validation framework for CI/CD integration
|
|
451
|
+
- Achieved >95% compliance with established physics and data conventions
|
|
452
|
+
- Documented best practices for consistent future example creation
|
|
453
|
+
|
|
454
|
+
đ¤ Generated with [Claude Code](https://claude.ai/code)
|
|
455
|
+
|
|
456
|
+
Co-Authored-By: Claude <noreply@anthropic.com>"
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
**Then create compacted state for session continuity:**
|
|
460
|
+
```bash
|
|
461
|
+
python .claude/hooks/create-compaction.py \
|
|
462
|
+
--trigger "Phase 5 completion - physics and MultiIndex compliance validated" \
|
|
463
|
+
--context "Ready for doctest integration in Phase 6"
|
|
464
|
+
```
|