solarwindpy 0.0.1.dev0__py3-none-any.whl → 0.1.0__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.0.dist-info/METADATA +181 -0
- solarwindpy-0.1.0.dist-info/RECORD +409 -0
- {solarwindpy-0.0.1.dev0.dist-info → solarwindpy-0.1.0.dist-info}/WHEEL +1 -1
- solarwindpy-0.1.0.dist-info/licenses/LICENSE.rst +32 -0
- solarwindpy-0.1.0.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,419 @@
|
|
|
1
|
+
# Contributing to SolarWindPy
|
|
2
|
+
|
|
3
|
+
Thank you for considering contributing to SolarWindPy. This guide ensures that contributions maintain the high standards of scientific accuracy and numerical stability required for plasma physics research.
|
|
4
|
+
|
|
5
|
+
## Development Workflow
|
|
6
|
+
|
|
7
|
+
### 1. Environment Setup
|
|
8
|
+
|
|
9
|
+
Create a virtual environment and install dependencies:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# Create conda environment
|
|
13
|
+
conda env create -f solarwindpy-20250403.yml
|
|
14
|
+
conda activate solarwindpy-20250403
|
|
15
|
+
pip install -e .
|
|
16
|
+
|
|
17
|
+
# Or generate environment from requirements
|
|
18
|
+
python scripts/requirements_to_conda_env.py --name solarwindpy-dev
|
|
19
|
+
conda env create -f solarwindpy-dev.yml
|
|
20
|
+
conda activate solarwindpy-dev
|
|
21
|
+
pip install -e .
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### 2. Physics Validation Requirements (MANDATORY)
|
|
25
|
+
|
|
26
|
+
All contributions involving physics calculations must meet rigorous validation standards:
|
|
27
|
+
|
|
28
|
+
#### 2.1 Parameter Validation Standards
|
|
29
|
+
Every physics function MUST validate inputs for:
|
|
30
|
+
|
|
31
|
+
```python
|
|
32
|
+
# REQUIRED: Input validation pattern
|
|
33
|
+
def your_physics_function(temperature, density, magnetic_field):
|
|
34
|
+
"""Your physics calculation with required validation."""
|
|
35
|
+
|
|
36
|
+
# 1. Check for positive physical quantities
|
|
37
|
+
if np.any(temperature <= 0):
|
|
38
|
+
raise ValueError("Temperature must be positive")
|
|
39
|
+
|
|
40
|
+
if np.any(density <= 0):
|
|
41
|
+
raise ValueError("Density must be positive")
|
|
42
|
+
|
|
43
|
+
# 2. Check for reasonable physical ranges
|
|
44
|
+
if np.any(temperature > 1e8): # K
|
|
45
|
+
warnings.warn("Temperature exceeds typical solar wind range")
|
|
46
|
+
|
|
47
|
+
if np.any(density < 1e-25): # kg/m³
|
|
48
|
+
warnings.warn("Density below numerical precision threshold")
|
|
49
|
+
|
|
50
|
+
# 3. Perform calculation with error handling
|
|
51
|
+
try:
|
|
52
|
+
result = your_calculation(temperature, density, magnetic_field)
|
|
53
|
+
except (OverflowError, ZeroDivisionError) as e:
|
|
54
|
+
raise RuntimeError(f"Numerical error in calculation: {e}")
|
|
55
|
+
|
|
56
|
+
# 4. Validate results are physical
|
|
57
|
+
if np.any(~np.isfinite(result)):
|
|
58
|
+
raise RuntimeError("Calculation produced non-finite results")
|
|
59
|
+
|
|
60
|
+
return result
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
#### 2.2 Critical Physics Error Prevention
|
|
64
|
+
|
|
65
|
+
Based on comprehensive numerical stability analysis, the following patterns are **PROHIBITED**:
|
|
66
|
+
|
|
67
|
+
```python
|
|
68
|
+
# ❌ PROHIBITED: Zero density vulnerability (causes infinite Alfvén speeds)
|
|
69
|
+
alfven_speed = rho.pow(-0.5) * magnetic_field_coefficient
|
|
70
|
+
|
|
71
|
+
# ✅ REQUIRED: Protected calculation
|
|
72
|
+
def safe_alfven_speed(density, magnetic_field):
|
|
73
|
+
min_density = 1e-23 # kg/m³
|
|
74
|
+
if np.any(density <= min_density):
|
|
75
|
+
raise ValueError(f"Density must be > {min_density} kg/m³ for reliable Alfvén speed")
|
|
76
|
+
|
|
77
|
+
return magnetic_field / np.sqrt(mu0 * density)
|
|
78
|
+
|
|
79
|
+
# ❌ PROHIBITED: Negative energy vulnerability (causes NaN thermal speeds)
|
|
80
|
+
thermal_speed = thermal_energy.pow(0.5)
|
|
81
|
+
|
|
82
|
+
# ✅ REQUIRED: Protected calculation
|
|
83
|
+
def safe_thermal_speed(thermal_energy):
|
|
84
|
+
if np.any(thermal_energy <= 0):
|
|
85
|
+
raise ValueError("Thermal energy must be positive")
|
|
86
|
+
|
|
87
|
+
return np.sqrt(thermal_energy)
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
#### 2.3 Numerical Stability Testing (MANDATORY)
|
|
91
|
+
|
|
92
|
+
Every physics function requires numerical stability tests:
|
|
93
|
+
|
|
94
|
+
```python
|
|
95
|
+
# tests/test_your_module.py
|
|
96
|
+
import pytest
|
|
97
|
+
import numpy as np
|
|
98
|
+
from solarwindpy.your_module import your_physics_function
|
|
99
|
+
|
|
100
|
+
class TestNumericalStability:
|
|
101
|
+
"""Mandatory numerical stability tests for physics calculations."""
|
|
102
|
+
|
|
103
|
+
def test_zero_density_protection(self):
|
|
104
|
+
"""Test protection against zero density singularities."""
|
|
105
|
+
with pytest.raises(ValueError, match="Density must be positive"):
|
|
106
|
+
your_physics_function(temperature=1e5, density=0.0, magnetic_field=5e-9)
|
|
107
|
+
|
|
108
|
+
def test_negative_temperature_protection(self):
|
|
109
|
+
"""Test protection against negative temperatures."""
|
|
110
|
+
with pytest.raises(ValueError, match="Temperature must be positive"):
|
|
111
|
+
your_physics_function(temperature=-1000, density=1e-21, magnetic_field=5e-9)
|
|
112
|
+
|
|
113
|
+
def test_extreme_parameter_handling(self):
|
|
114
|
+
"""Test behavior at parameter boundaries."""
|
|
115
|
+
# Test very small values
|
|
116
|
+
result_small = your_physics_function(
|
|
117
|
+
temperature=1e3, density=1e-24, magnetic_field=0.1e-9
|
|
118
|
+
)
|
|
119
|
+
assert np.all(np.isfinite(result_small))
|
|
120
|
+
|
|
121
|
+
# Test very large values
|
|
122
|
+
result_large = your_physics_function(
|
|
123
|
+
temperature=1e8, density=1e-15, magnetic_field=100e-9
|
|
124
|
+
)
|
|
125
|
+
assert np.all(np.isfinite(result_large))
|
|
126
|
+
|
|
127
|
+
def test_precision_preservation(self):
|
|
128
|
+
"""Test numerical precision is maintained."""
|
|
129
|
+
# Use high-precision reference values
|
|
130
|
+
temp, density, b_field = 1e6, 1e-20, 5e-9
|
|
131
|
+
result = your_physics_function(temp, density, b_field)
|
|
132
|
+
|
|
133
|
+
# Verify precision (adapt expected_value to your calculation)
|
|
134
|
+
expected_value = calculate_reference_value(temp, density, b_field)
|
|
135
|
+
relative_error = np.abs((result - expected_value) / expected_value)
|
|
136
|
+
assert np.all(relative_error < 1e-12), "Precision loss detected"
|
|
137
|
+
|
|
138
|
+
def test_vector_operations_stability(self):
|
|
139
|
+
"""Test vector operations don't lose precision."""
|
|
140
|
+
# Test with nearly parallel vectors (catastrophic cancellation risk)
|
|
141
|
+
large_component = 1e6
|
|
142
|
+
small_components = [1e-3, 1e-3]
|
|
143
|
+
|
|
144
|
+
# Your vector calculation should handle this robustly
|
|
145
|
+
result = your_vector_function(large_component, small_components)
|
|
146
|
+
assert np.all(np.isfinite(result))
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### 3. Code Quality Standards
|
|
150
|
+
|
|
151
|
+
#### 3.1 Formatting and Linting
|
|
152
|
+
Format code with `black` and lint with `flake8`:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
black solarwindpy/ tests/
|
|
156
|
+
flake8 solarwindpy/ tests/
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
#### 3.2 Documentation Requirements
|
|
160
|
+
Ensure all docstrings follow NumPy style with physics-specific additions:
|
|
161
|
+
|
|
162
|
+
```python
|
|
163
|
+
def physics_function(parameter1, parameter2):
|
|
164
|
+
"""
|
|
165
|
+
Brief description of the physics calculation.
|
|
166
|
+
|
|
167
|
+
Parameters
|
|
168
|
+
----------
|
|
169
|
+
parameter1 : float or array-like
|
|
170
|
+
Description including physical units and valid range
|
|
171
|
+
parameter2 : float or array-like
|
|
172
|
+
Description including physical units and valid range
|
|
173
|
+
|
|
174
|
+
Returns
|
|
175
|
+
-------
|
|
176
|
+
result : float or array-like
|
|
177
|
+
Description with units and expected range
|
|
178
|
+
|
|
179
|
+
Raises
|
|
180
|
+
------
|
|
181
|
+
ValueError
|
|
182
|
+
When input parameters are non-physical or outside valid ranges
|
|
183
|
+
RuntimeError
|
|
184
|
+
When calculation encounters numerical instabilities
|
|
185
|
+
|
|
186
|
+
Notes
|
|
187
|
+
-----
|
|
188
|
+
Physics theory explanation and assumptions.
|
|
189
|
+
|
|
190
|
+
.. warning::
|
|
191
|
+
Description of numerical limitations and edge cases.
|
|
192
|
+
|
|
193
|
+
Examples
|
|
194
|
+
--------
|
|
195
|
+
>>> # Example with parameter validation
|
|
196
|
+
>>> import numpy as np
|
|
197
|
+
>>> temp = np.array([1e5, 2e5, 1e6]) # K
|
|
198
|
+
>>> result = physics_function(temp, other_params)
|
|
199
|
+
"""
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### 4. Testing Requirements
|
|
203
|
+
|
|
204
|
+
#### 4.1 Comprehensive Test Coverage
|
|
205
|
+
Run the complete test suite:
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
pytest -q --cov=solarwindpy --cov-report=html
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
**Minimum coverage requirements:**
|
|
212
|
+
- Overall coverage: ≥95%
|
|
213
|
+
- Physics modules: ≥98%
|
|
214
|
+
- Numerical stability tests: 100% for critical functions
|
|
215
|
+
|
|
216
|
+
#### 4.2 Physics Validation Tests
|
|
217
|
+
Every physics function requires:
|
|
218
|
+
|
|
219
|
+
1. **Domain validation tests** - verify input parameter ranges
|
|
220
|
+
2. **Edge case tests** - test behavior at calculation boundaries
|
|
221
|
+
3. **Precision tests** - verify numerical accuracy preservation
|
|
222
|
+
4. **Cross-validation tests** - compare with analytical solutions where possible
|
|
223
|
+
|
|
224
|
+
#### 4.3 Integration Tests
|
|
225
|
+
Test interaction between modules:
|
|
226
|
+
|
|
227
|
+
```python
|
|
228
|
+
def test_multi_module_consistency():
|
|
229
|
+
"""Test consistency across physics modules."""
|
|
230
|
+
plasma = create_test_plasma()
|
|
231
|
+
|
|
232
|
+
# Calculate same quantity using different approaches
|
|
233
|
+
thermal_speed_1 = plasma.thermal_speed()
|
|
234
|
+
thermal_speed_2 = alternative_thermal_speed_calculation(plasma)
|
|
235
|
+
|
|
236
|
+
# Verify consistency within numerical precision
|
|
237
|
+
np.testing.assert_allclose(thermal_speed_1, thermal_speed_2, rtol=1e-12)
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
### 5. Documentation Standards
|
|
241
|
+
|
|
242
|
+
#### 5.1 Sphinx Documentation
|
|
243
|
+
Build documentation and ensure no warnings:
|
|
244
|
+
|
|
245
|
+
```bash
|
|
246
|
+
cd docs
|
|
247
|
+
make clean
|
|
248
|
+
make html SPHINXOPTS=-W
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
#### 5.2 Physics Documentation Requirements
|
|
252
|
+
New physics functions must include:
|
|
253
|
+
|
|
254
|
+
1. **Theoretical foundation** - mathematical derivation
|
|
255
|
+
2. **Valid parameter ranges** - explicit bounds for reliable calculation
|
|
256
|
+
3. **Numerical considerations** - precision limitations and edge cases
|
|
257
|
+
4. **Example usage** - with proper parameter validation
|
|
258
|
+
5. **Literature references** - scientific validation sources
|
|
259
|
+
|
|
260
|
+
#### 5.3 User Safety Documentation
|
|
261
|
+
Critical functions must include user warnings:
|
|
262
|
+
|
|
263
|
+
```rst
|
|
264
|
+
.. danger::
|
|
265
|
+
This calculation has known numerical instabilities.
|
|
266
|
+
Always validate input parameters are within specified ranges.
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
### 6. Scientific Validation Checklist
|
|
270
|
+
|
|
271
|
+
Before submitting physics-related contributions:
|
|
272
|
+
|
|
273
|
+
- [ ] **Input validation implemented** for all parameters
|
|
274
|
+
- [ ] **Edge case protection** against singularities and mathematical errors
|
|
275
|
+
- [ ] **Numerical stability tests** covering boundary conditions
|
|
276
|
+
- [ ] **Results validation** against expected physical ranges
|
|
277
|
+
- [ ] **Cross-validation** with literature values or alternative methods
|
|
278
|
+
- [ ] **Documentation includes** physics theory and limitations
|
|
279
|
+
- [ ] **User warnings** documented for numerical limitations
|
|
280
|
+
- [ ] **Performance tested** with large-scale realistic datasets
|
|
281
|
+
|
|
282
|
+
### 7. Git Workflow Standards
|
|
283
|
+
|
|
284
|
+
#### 7.1 Branch Organization
|
|
285
|
+
- **Feature branches**: `feature/description-of-change`
|
|
286
|
+
- **Bug fixes**: `fix/issue-description`
|
|
287
|
+
- **Physics enhancements**: `physics/calculation-improvement`
|
|
288
|
+
|
|
289
|
+
#### 7.2 Commit Standards
|
|
290
|
+
Use conventional commit format with physics context:
|
|
291
|
+
|
|
292
|
+
```
|
|
293
|
+
feat(plasma): add robust Alfvén speed calculation with zero-density protection
|
|
294
|
+
|
|
295
|
+
- Implement minimum density threshold validation
|
|
296
|
+
- Add comprehensive numerical stability tests
|
|
297
|
+
- Include physics theory documentation
|
|
298
|
+
- Prevent infinite speed calculation errors
|
|
299
|
+
|
|
300
|
+
Fixes critical numerical vulnerability in plasma.alfven_speed()
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
#### 7.3 Pre-commit Validation
|
|
304
|
+
Install pre-commit hooks for automatic validation:
|
|
305
|
+
|
|
306
|
+
```bash
|
|
307
|
+
pre-commit install
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
This runs automatic checks for:
|
|
311
|
+
- Code formatting (black)
|
|
312
|
+
- Linting (flake8)
|
|
313
|
+
- Basic test execution
|
|
314
|
+
- Documentation link validation
|
|
315
|
+
|
|
316
|
+
### 8. Physics-Specific Contribution Guidelines
|
|
317
|
+
|
|
318
|
+
#### 8.1 New Physics Calculations
|
|
319
|
+
When adding new plasma physics calculations:
|
|
320
|
+
|
|
321
|
+
1. **Literature review** - verify calculation method against established sources
|
|
322
|
+
2. **Mathematical validation** - confirm derivation and assumptions
|
|
323
|
+
3. **Parameter space analysis** - identify valid input ranges
|
|
324
|
+
4. **Edge case identification** - determine potential numerical issues
|
|
325
|
+
5. **Reference implementation** - compare with established codes when possible
|
|
326
|
+
|
|
327
|
+
#### 8.2 Existing Function Modifications
|
|
328
|
+
When modifying physics functions:
|
|
329
|
+
|
|
330
|
+
1. **Backward compatibility** - ensure existing valid usage continues to work
|
|
331
|
+
2. **Performance regression testing** - verify modifications don't degrade performance
|
|
332
|
+
3. **Scientific accuracy validation** - confirm modifications preserve physics correctness
|
|
333
|
+
4. **Cross-module impact assessment** - check effects on dependent calculations
|
|
334
|
+
|
|
335
|
+
#### 8.3 Numerical Algorithm Updates
|
|
336
|
+
When changing numerical approaches:
|
|
337
|
+
|
|
338
|
+
1. **Precision comparison** - benchmark new vs old algorithm accuracy
|
|
339
|
+
2. **Stability analysis** - test robustness across full parameter space
|
|
340
|
+
3. **Performance analysis** - measure computational efficiency changes
|
|
341
|
+
4. **Scientific validation** - confirm physics results remain consistent
|
|
342
|
+
|
|
343
|
+
### 9. Review Process
|
|
344
|
+
|
|
345
|
+
#### 9.1 Physics Review Requirements
|
|
346
|
+
All physics-related contributions require:
|
|
347
|
+
|
|
348
|
+
- **Code review** by maintainer with plasma physics expertise
|
|
349
|
+
- **Numerical validation** of test coverage and stability
|
|
350
|
+
- **Documentation review** for scientific accuracy
|
|
351
|
+
- **Integration testing** with existing physics modules
|
|
352
|
+
|
|
353
|
+
#### 9.2 Quality Gates
|
|
354
|
+
Contributions must pass:
|
|
355
|
+
|
|
356
|
+
1. **Automated testing** - all tests passing with required coverage
|
|
357
|
+
2. **Physics validation** - numerical stability and accuracy verified
|
|
358
|
+
3. **Documentation build** - complete documentation without warnings
|
|
359
|
+
4. **Performance benchmarks** - no significant regression in calculation speed
|
|
360
|
+
|
|
361
|
+
### 10. Common Issues and Solutions
|
|
362
|
+
|
|
363
|
+
#### 10.1 Numerical Instability Debugging
|
|
364
|
+
If you encounter numerical issues:
|
|
365
|
+
|
|
366
|
+
```python
|
|
367
|
+
# Debug numerical problems systematically
|
|
368
|
+
import numpy as np
|
|
369
|
+
|
|
370
|
+
def debug_calculation(function, *args):
|
|
371
|
+
"""Debug helper for numerical issues."""
|
|
372
|
+
|
|
373
|
+
# Check inputs
|
|
374
|
+
for i, arg in enumerate(args):
|
|
375
|
+
print(f"Arg {i}: min={np.min(arg)}, max={np.max(arg)}, "
|
|
376
|
+
f"has_nan={np.any(np.isnan(arg))}, has_inf={np.any(np.isinf(arg))}")
|
|
377
|
+
|
|
378
|
+
# Perform calculation
|
|
379
|
+
try:
|
|
380
|
+
result = function(*args)
|
|
381
|
+
print(f"Result: min={np.min(result)}, max={np.max(result)}, "
|
|
382
|
+
f"has_nan={np.any(np.isnan(result))}, has_inf={np.any(np.isinf(result))}")
|
|
383
|
+
return result
|
|
384
|
+
except Exception as e:
|
|
385
|
+
print(f"Calculation failed: {e}")
|
|
386
|
+
return None
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
#### 10.2 Performance vs. Precision Trade-offs
|
|
390
|
+
When optimizing calculations:
|
|
391
|
+
|
|
392
|
+
1. **Profile before optimizing** - identify actual bottlenecks
|
|
393
|
+
2. **Preserve numerical accuracy** - don't sacrifice precision for minor speed gains
|
|
394
|
+
3. **Test edge cases thoroughly** - optimization often affects stability
|
|
395
|
+
4. **Document trade-offs** - explain any precision limitations introduced
|
|
396
|
+
|
|
397
|
+
### 11. Getting Help
|
|
398
|
+
|
|
399
|
+
#### 11.1 Development Questions
|
|
400
|
+
- **Physics questions**: Consult plasma physics literature or domain experts
|
|
401
|
+
- **Numerical issues**: Review numerical stability guide and common patterns
|
|
402
|
+
- **Testing questions**: Examine existing test patterns in similar modules
|
|
403
|
+
|
|
404
|
+
#### 11.2 Community Resources
|
|
405
|
+
- **GitHub Issues**: Report bugs or request features
|
|
406
|
+
- **Discussions**: Ask questions about contribution process
|
|
407
|
+
- **Documentation**: Comprehensive guides for common tasks
|
|
408
|
+
|
|
409
|
+
## Summary
|
|
410
|
+
|
|
411
|
+
Contributing to SolarWindPy requires attention to both software engineering best practices and scientific rigor. The physics validation requirements ensure that the library maintains its reliability for scientific research while the testing standards guarantee long-term maintainability.
|
|
412
|
+
|
|
413
|
+
**Key Principles:**
|
|
414
|
+
1. **Scientific accuracy first** - physics correctness takes priority over performance
|
|
415
|
+
2. **Systematic validation** - comprehensive testing prevents numerical errors
|
|
416
|
+
3. **Clear documentation** - users must understand limitations and proper usage
|
|
417
|
+
4. **Defensive programming** - validate inputs and handle edge cases gracefully
|
|
418
|
+
|
|
419
|
+
Thank you for helping maintain SolarWindPy as a reliable tool for solar wind plasma physics research!
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# Coverage Gap Analysis - Physics-Focused Test Suite Audit
|
|
2
|
+
|
|
3
|
+
## Current Coverage Status
|
|
4
|
+
|
|
5
|
+
**Total Coverage**: 77.1% (5,372/6,966 lines covered, 1,594 lines missing)
|
|
6
|
+
**Target Coverage**: ≥95% (requires reducing missing lines from 1,594 to ≤349)
|
|
7
|
+
**Gap to Close**: 1,245 additional lines of coverage needed
|
|
8
|
+
|
|
9
|
+
## Module-Level Coverage Analysis
|
|
10
|
+
|
|
11
|
+
### High-Priority Coverage Gaps
|
|
12
|
+
|
|
13
|
+
#### 1. Core Physics Modules (Significant Gaps)
|
|
14
|
+
- **`solarwindpy/core/plasma.py`**: 86% (71/82 lines) - **Priority: CRITICAL**
|
|
15
|
+
- Missing: 11 lines in plasma physics calculations
|
|
16
|
+
- Need: Boundary condition tests, complex plasma parameter validation
|
|
17
|
+
|
|
18
|
+
- **`solarwindpy/core/ions.py`**: 62% (107/173 lines) - **Priority: CRITICAL**
|
|
19
|
+
- Missing: 66 lines in ion physics calculations
|
|
20
|
+
- Need: Ion species interaction tests, mass/charge ratio edge cases
|
|
21
|
+
|
|
22
|
+
#### 2. Instabilities Module (Major Gap)
|
|
23
|
+
- **`solarwindpy/instabilities/`**: 0% coverage - **Priority: CRITICAL**
|
|
24
|
+
- Estimated: ~500-800 lines missing (no test files found)
|
|
25
|
+
- Need: Complete test suite for plasma instability calculations
|
|
26
|
+
|
|
27
|
+
#### 3. Tools Module (Major Gap)
|
|
28
|
+
- **`solarwindpy/tools/__init__.py`**: 15% (6/40 lines) - **Priority: HIGH**
|
|
29
|
+
- Missing: 34 lines of utility functions
|
|
30
|
+
- Need: Comprehensive utility function validation
|
|
31
|
+
|
|
32
|
+
#### 4. Numerical/Scientific Computing Gaps
|
|
33
|
+
- **`solarwindpy/core/quantities.py`**: 93% (55/59 lines) - **Priority: MEDIUM**
|
|
34
|
+
- Missing: 4 lines in unit conversion edge cases
|
|
35
|
+
- Need: SI unit consistency validation
|
|
36
|
+
|
|
37
|
+
- **`solarwindpy/fitfunctions/core.py`**: 82% (55/67 lines) - **Priority: MEDIUM**
|
|
38
|
+
- Missing: 12 lines in statistical fitting algorithms
|
|
39
|
+
- Need: Numerical stability tests for curve fitting
|
|
40
|
+
|
|
41
|
+
### Physics-Specific Coverage Gaps
|
|
42
|
+
|
|
43
|
+
#### Plasma Physics Calculations
|
|
44
|
+
**Current Physics Test Coverage**: 316/1,128 functions (28%)
|
|
45
|
+
**Physics Code Coverage**: Estimated ~70% (below overall 77.1%)
|
|
46
|
+
|
|
47
|
+
Critical missing validations:
|
|
48
|
+
1. **Thermal Speed Convention**: mw² = 2kT
|
|
49
|
+
- Only 3 explicit tests found
|
|
50
|
+
- Need: Systematic validation across all species and temperature ranges
|
|
51
|
+
|
|
52
|
+
2. **Alfvén Speed Formula**: V_A = B/√(μ₀ρ)
|
|
53
|
+
- Only 8 validation tests found
|
|
54
|
+
- Need: Ion composition dependency testing, magnetic field edge cases
|
|
55
|
+
|
|
56
|
+
3. **Conservation Laws**:
|
|
57
|
+
- Energy conservation: 2 tests
|
|
58
|
+
- Momentum conservation: 2 tests
|
|
59
|
+
- Mass conservation: 1 test
|
|
60
|
+
- Need: Comprehensive conservation validation across all physics calculations
|
|
61
|
+
|
|
62
|
+
4. **Boundary Conditions**:
|
|
63
|
+
- B≈0 (near-zero magnetic field): 5 tests
|
|
64
|
+
- n→0 (low density): 3 tests
|
|
65
|
+
- Extreme temperatures: 8 tests
|
|
66
|
+
- Need: Systematic edge case coverage for all physical parameters
|
|
67
|
+
|
|
68
|
+
## Specific Test Requirements for ≥95% Coverage
|
|
69
|
+
|
|
70
|
+
### Estimated Additional Tests Needed: ~200 functions
|
|
71
|
+
|
|
72
|
+
#### By Priority Category:
|
|
73
|
+
|
|
74
|
+
**CRITICAL (Est. 80 tests)**
|
|
75
|
+
- Instabilities module: 50 tests (complete new test suite)
|
|
76
|
+
- Ion physics edge cases: 15 tests
|
|
77
|
+
- Plasma parameter boundaries: 15 tests
|
|
78
|
+
|
|
79
|
+
**HIGH (Est. 70 tests)**
|
|
80
|
+
- Tools module utilities: 25 tests
|
|
81
|
+
- MultiIndex DataFrame edge cases: 20 tests
|
|
82
|
+
- Numerical stability enhancements: 15 tests
|
|
83
|
+
- Unit conversion validation: 10 tests
|
|
84
|
+
|
|
85
|
+
**MEDIUM (Est. 50 tests)**
|
|
86
|
+
- Plotting edge cases: 20 tests
|
|
87
|
+
- Solar activity boundary conditions: 15 tests
|
|
88
|
+
- Fitting function stability: 10 tests
|
|
89
|
+
- Documentation and integration: 5 tests
|
|
90
|
+
|
|
91
|
+
### Physics Constraint Validation Tests
|
|
92
|
+
|
|
93
|
+
#### SI Unit Consistency (15 additional tests needed)
|
|
94
|
+
- Plasma pressure calculations: 5 tests
|
|
95
|
+
- Velocity moment calculations: 5 tests
|
|
96
|
+
- Energy density calculations: 5 tests
|
|
97
|
+
|
|
98
|
+
#### Thermal Speed Convention (12 additional tests needed)
|
|
99
|
+
- Proton thermal speeds: 4 tests
|
|
100
|
+
- Alpha particle thermal speeds: 4 tests
|
|
101
|
+
- Multi-species thermal calculations: 4 tests
|
|
102
|
+
|
|
103
|
+
#### Conservation Law Validation (18 additional tests needed)
|
|
104
|
+
- Energy conservation in transformations: 6 tests
|
|
105
|
+
- Momentum conservation in coordinate systems: 6 tests
|
|
106
|
+
- Mass conservation in species calculations: 6 tests
|
|
107
|
+
|
|
108
|
+
## Implementation Strategy for Phase 2-4
|
|
109
|
+
|
|
110
|
+
### Phase 2: Physics Validation Focus
|
|
111
|
+
**Target**: Add 60 physics-focused tests
|
|
112
|
+
**Coverage Impact**: +8-10% total coverage
|
|
113
|
+
**Focus**: Critical physics calculations and constraint validation
|
|
114
|
+
|
|
115
|
+
### Phase 3: Architecture Compliance
|
|
116
|
+
**Target**: Add 40 MultiIndex and architecture tests
|
|
117
|
+
**Coverage Impact**: +5-6% total coverage
|
|
118
|
+
**Focus**: DataFrame operations, memory efficiency, edge cases
|
|
119
|
+
|
|
120
|
+
### Phase 4: Numerical Stability
|
|
121
|
+
**Target**: Add 45 numerical stability tests
|
|
122
|
+
**Coverage Impact**: +6-7% total coverage
|
|
123
|
+
**Focus**: Boundary conditions, floating-point edge cases, overflow protection
|
|
124
|
+
|
|
125
|
+
### Phases 5-6: Integration and Documentation
|
|
126
|
+
**Target**: Add 55 integration, documentation, and delivery tests
|
|
127
|
+
**Coverage Impact**: +4-5% total coverage
|
|
128
|
+
**Focus**: Cross-module integration, comprehensive test documentation
|
|
129
|
+
|
|
130
|
+
## Risk Assessment
|
|
131
|
+
|
|
132
|
+
### High Risk Coverage Gaps
|
|
133
|
+
1. **Instabilities Module**: Complete absence of tests for critical plasma physics
|
|
134
|
+
2. **Ion Edge Cases**: Insufficient validation for multi-species calculations
|
|
135
|
+
3. **Numerical Boundaries**: Limited testing of B≈0, n→0 conditions
|
|
136
|
+
|
|
137
|
+
### Medium Risk Areas
|
|
138
|
+
1. **Tools Utilities**: Core utility functions lack comprehensive testing
|
|
139
|
+
2. **Unit Conversions**: SI consistency not systematically validated
|
|
140
|
+
3. **MultiIndex Operations**: Complex DataFrame patterns need more coverage
|
|
141
|
+
|
|
142
|
+
### Success Metrics for ≥95% Target
|
|
143
|
+
- **Total Coverage**: 95.0% (6,617/6,966 lines covered)
|
|
144
|
+
- **Physics Coverage**: 90%+ for core physics modules
|
|
145
|
+
- **Edge Case Coverage**: 95%+ for boundary conditions
|
|
146
|
+
- **Integration Coverage**: 85%+ for cross-module interactions
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
**Next Actions**: Phase 2 will use PhysicsValidator agent to systematically address the critical physics validation gaps identified in this analysis.
|
|
151
|
+
|
|
152
|
+
*Generated during Phase 1: Discovery & Inventory - Physics-Focused Test Suite Audit*
|