scientific-computing-system 2.0.1__tar.gz → 2.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/CITATION.cff +9 -9
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/PKG-INFO +35 -2
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/README.md +33 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/index.md +8 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/mkdocs.yml +4 -3
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/pyproject.toml +9 -8
- scientific_computing_system-2.1.0/requirements-build.lock +17 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/requirements-dev.lock +7 -7
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/__init__.py +6 -2
- scientific_computing_system-2.1.0/src/cds/_version.py +9 -0
- scientific_computing_system-2.1.0/src/cds/causal.py +210 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/data_io/__init__.py +16 -0
- scientific_computing_system-2.1.0/src/cds/data_io/scientific.py +228 -0
- scientific_computing_system-2.1.0/src/cds/sensitivity.py +425 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/stats/__init__.py +18 -0
- scientific_computing_system-2.1.0/src/cds/stats/multiple_testing.py +189 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/validation/__init__.py +20 -0
- scientific_computing_system-2.1.0/src/cds/validation/drift.py +217 -0
- scientific_computing_system-2.1.0/tests/test_causal.py +150 -0
- scientific_computing_system-2.1.0/tests/test_data_io_optional_backends.py +44 -0
- scientific_computing_system-2.1.0/tests/test_data_io_scientific.py +197 -0
- scientific_computing_system-2.1.0/tests/test_dev_numpy_pin_contract.py +193 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_release_contract.py +77 -0
- scientific_computing_system-2.1.0/tests/test_sensitivity.py +166 -0
- scientific_computing_system-2.1.0/tests/test_stats_multiple_testing.py +85 -0
- scientific_computing_system-2.1.0/tests/test_validation_drift.py +116 -0
- scientific_computing_system-2.0.1/src/cds/_version.py +0 -12
- scientific_computing_system-2.0.1/src/cds/sensitivity.py +0 -204
- scientific_computing_system-2.0.1/tests/test_sensitivity.py +0 -59
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/.gitignore +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/CHANGELOG.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/CONTRIBUTING.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/LICENSE +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/SECURITY.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/benchmarks/results.json +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/benchmarks/robust_runner.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/benchmarks/run_benchmarks.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/dashboard/app.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/ARCHITECTURE.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/CASE_STUDY_HUBBLE.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/CASE_STUDY_QUANTUM_ML.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/api.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/assets/icon.svg +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/assets/logo.svg +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/benchmarks.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/cookbook.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/getting-started.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/maintenance.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/ml_reference.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/research-workflows.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/stylesheets/extra.css +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tour_of_numerical_methods.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tutorials/core_demo.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tutorials/data_analysis_demo.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tutorials/diffeq_demo.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tutorials/fft2_demo.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tutorials/graph_demo.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tutorials/hypothesis_demo.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tutorials/hypothesis_tests_demo.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tutorials/hypothesis_with_stats_demo.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tutorials/knowledge_demo.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tutorials/linalg_demo.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tutorials/math_utils_demo.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tutorials/ml_advanced_demo.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tutorials/ml_and_viz_demo.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tutorials/ml_demo.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tutorials/modeling_demo.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tutorials/montecarlo_demo.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tutorials/nlp_attention_demo.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tutorials/nlp_bpe_demo.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tutorials/nlp_mini_gpt_demo.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tutorials/nlp_viz.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tutorials/numerical_integration_demo.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tutorials/optimization_demo.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tutorials/pandas_io_demo.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tutorials/pca_demo.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tutorials/probability_demo.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tutorials/quantum_demo.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tutorials/quick_start.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tutorials/scientific_demo.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tutorials/signals_demo.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tutorials/stats_demo.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tutorials/stiff_ode_demo.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/tutorials/time_series_demo.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/docs/why-pure-python.md +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/core_demo.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/data_analysis_demo.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/diffeq_demo.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/discovery_pipeline_demo.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/ensemble_showcase.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/fft2_demo.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/graph_demo.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/hypothesis_custom_generator.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/hypothesis_demo.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/hypothesis_tests_demo.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/hypothesis_with_stats_demo.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/interpolate_demo.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/knowledge_demo.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/linalg_demo.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/math_utils_demo.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/ml_and_viz_demo.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/modeling_demo.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/montecarlo_demo.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/nlp_attention_demo.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/nlp_bpe_demo.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/nlp_mini_gpt_demo.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/nlp_viz_demo.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/numerical_integration_demo.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/optimization_demo.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/pca_demo.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/pde_demo.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/plot_demo.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/plotting_notebook.ipynb +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/probability_demo.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/quantum_demo.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/scientific_demo.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/signals_demo.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/stats_demo.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/examples/tour_of_numerical_methods.ipynb +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/requirements.lock +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/scripts/publish.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/scripts/verify_cli_install.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/__main__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/bayes/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/bayes/conjugate.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/cli/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/cli/__main__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/cli/_handlers.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/cli/_parser.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/cli/_style.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/cli/_system_info.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/core/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/core/_numeric.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/core/models.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/data_analysis/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/data_analysis/dataset.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/data_analysis/loader.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/data_analysis/pandas_io.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/data_analysis/transform.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/data_analysis/viz.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/data_io/streaming.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/diffeq/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/diffeq/_implicit.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/diffeq/solvers.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/diffeq/symplectic.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/fractals/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/fractals/sets.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/genetics/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/genetics/sequence.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/graph/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/graph/algorithms.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/hypothesis/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/hypothesis/evaluator.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/hypothesis/generator.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/hypothesis/mining.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/infotheory/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/infotheory/measures.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/interpolate/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/knowledge/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/knowledge/graph.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/knowledge/notes.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/knowledge/retrieval.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/math_utils/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/math_utils/calculus.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/math_utils/linalg.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/math_utils/special.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/math_utils/svd.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/ml/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/ml/boosting.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/ml/clustering.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/ml/decomposition.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/ml/ensemble.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/ml/linear_models.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/ml/metrics.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/ml/model_selection.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/ml/naive_bayes.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/ml/neighbors.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/ml/neural.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/ml/preprocessing.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/ml/tree.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/ml/voting.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/modeling/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/modeling/_base.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/modeling/_nodes.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/modeling/expression.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/modeling/fitting.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/modeling/model.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/modeling/solver.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/montecarlo/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/montecarlo/markov.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/montecarlo/methods.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/nlp/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/nlp/attention.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/nlp/autograd/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/nlp/autograd/_grad.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/nlp/autograd/ops.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/nlp/autograd/tensor.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/nlp/bpe.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/nlp/data.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/nlp/embed.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/nlp/layers.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/nlp/model.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/nlp/optim.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/nlp/training.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/nlp/viz.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/numerical_integration/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/numerical_integration/quadrature.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/optimization/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/optimization/_metaheuristics.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/optimization/constrained.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/optimization/minimize.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/pde/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/plot/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/plot/_backend.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/plot/charts.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/probability/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/probability/_advanced.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/probability/distributions.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/probability/extra_distributions.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/provenance/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/provenance/manifest.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/py.typed +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/quantum/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/quantum/circuit.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/quantum/multi_qubit.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/quantum/simulator.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/scientific/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/scientific/constants.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/scientific/formulas.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/signals/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/signals/filters.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/signals/processing.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/signals/stft.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/signals/wavelet.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/stats/_distributions.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/stats/bootstrap.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/stats/descriptive.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/stats/hypothesis_tests.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/stats/nonparametric.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/stats/power.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/stats/regression.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/stats/time_series.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/tools/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/tools/adapters.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/tools/registry.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/uncertainty/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/uncertainty/propagation.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/units/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/units/core.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/validation/adequacy.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/validation/checks.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/validation/report.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/wavelets/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/wavelets/haar.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/workflow/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/workflow/engine.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/workflow/gates.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/workflow/orchestrator.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/workflow/selection.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/workflow/tooling.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/workflow/types.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/__init__.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/conftest.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_advanced_fitting.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_audit_completion_coverage.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_audit_guard_coverage.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_audit_hardening.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_audit_hardening_coverage.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_bayes_v2.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_benchmarks.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_bootstrap.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_cli.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_cli_color.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_cli_extended.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_cli_system_info.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_constrained_opt.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_core.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_data_analysis.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_data_analysis_lazy_bridge.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_data_analysis_pandas_io.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_data_io.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_dataset.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_diffeq.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_diffeq_implicit.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_domain_validation.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_edge_misc_numerical.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_edge_ml_quantum_linalg.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_edge_nlp.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_edge_quantum_evaluator_cli.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_edge_stats_optimization_signals.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_extra_distributions.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_fft2.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_fitting_bootstrap.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_fractals.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_genetics.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_graph.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_hardening_privacy_provenance.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_hypothesis.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_hypothesis_engine.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_hypothesis_mining.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_hypothesis_tests.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_infotheory.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_interpolate.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_knowledge.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_layering.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_linalg_extended.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_linalg_qr_cholesky.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_markov.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_math_utils.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_ml_boosting.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_ml_clustering.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_ml_ensemble.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_ml_knn.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_ml_linreg.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_ml_logreg.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_ml_metrics.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_ml_model_selection.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_ml_naive_bayes.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_ml_pca.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_ml_preprocessing.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_ml_tree.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_ml_viz.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_ml_voting.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_modeling.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_modeling_fit_validation.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_montecarlo.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_multi_qubit.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_nlp_attention.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_nlp_autograd.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_nlp_bpe.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_nlp_embed.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_nlp_layers.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_nlp_model.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_nlp_training.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_nlp_viz.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_numerical_integration.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_numerical_invariants.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_numerical_oracles.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_optimization.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_optimization_metaheuristics.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_pde.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_plot_charts.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_plot_lazy.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_power.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_probability.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_probability_advanced.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_property_invariants.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_provenance.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_provenance_audit_hardening.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_public_api.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_quantum.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_retrieval.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_scientific.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_selection_audit_hardening.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_sensitivity_global.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_signals.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_signals_filters.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_special_invariants.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_special_numerics.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_statistical_audit.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_stats.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_stats_audit_coverage.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_stats_nonparametric.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_stats_time_series.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_stft.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_streaming_analytics.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_svd.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_symplectic.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_tool_adapters.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_tools_registry.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_uncertainty.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_units.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_validation.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_validation_adequacy.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_validation_advanced.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_wavelet.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_wavelets_v2.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_workflow.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_workflow_gates.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_workflow_orchestrator.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_workflow_orchestrator_blocked_review.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_workflow_selection.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_workflow_selection_coverage.py +0 -0
- {scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/tests/test_workflow_tooling.py +0 -0
|
@@ -2,28 +2,28 @@ cff-version: 1.2.0
|
|
|
2
2
|
message: "If you use this software, please cite it using the metadata from this file."
|
|
3
3
|
type: software
|
|
4
4
|
title: "scientific-computing-system"
|
|
5
|
-
version: 2.0
|
|
5
|
+
version: 2.1.0
|
|
6
6
|
authors:
|
|
7
7
|
- name: "Furox-Art"
|
|
8
8
|
email: "furkanarkn1451@gmail.com"
|
|
9
|
-
abstract: "Pure Python computational science system
|
|
9
|
+
abstract: "Pure Python computational science system with numerical methods, statistical validation, global sensitivity and identifiability analysis, conservative causal estimation, distribution-shift checks, memory-bounded scientific I/O, workflow orchestration, and optional scientific backends."
|
|
10
10
|
license: MIT
|
|
11
11
|
repository-code: "https://github.com/Furox-Art/scientific-computing-system"
|
|
12
12
|
url: "https://github.com/Furox-Art/scientific-computing-system"
|
|
13
|
-
date-released: "2026-09-
|
|
13
|
+
date-released: "2026-09-30"
|
|
14
14
|
keywords:
|
|
15
15
|
- "pure python"
|
|
16
16
|
- "scientific computing"
|
|
17
|
-
- "
|
|
18
|
-
- "
|
|
19
|
-
- "
|
|
20
|
-
- "
|
|
21
|
-
- "
|
|
17
|
+
- "model validation"
|
|
18
|
+
- "sensitivity analysis"
|
|
19
|
+
- "causal inference"
|
|
20
|
+
- "out-of-distribution detection"
|
|
21
|
+
- "scientific workflows"
|
|
22
22
|
preferred-citation:
|
|
23
23
|
type: software
|
|
24
24
|
title: "scientific-computing-system"
|
|
25
25
|
authors:
|
|
26
26
|
- name: "Furox-Art"
|
|
27
27
|
year: 2026
|
|
28
|
-
version: 2.0
|
|
28
|
+
version: 2.1.0
|
|
29
29
|
url: "https://github.com/Furox-Art/scientific-computing-system"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: scientific-computing-system
|
|
3
|
-
Version: 2.0
|
|
3
|
+
Version: 2.1.0
|
|
4
4
|
Summary: A pure-Python computational science platform for numerical methods, modeling, validation, uncertainty, scientific workflows, dimensional analysis, and optional research-data backends. Zero runtime dependencies.
|
|
5
5
|
Project-URL: Homepage, https://github.com/Furox-Art/scientific-computing-system
|
|
6
6
|
Project-URL: Repository, https://github.com/Furox-Art/scientific-computing-system
|
|
@@ -128,6 +128,39 @@ This is a from-scratch rethinking of what scientific computing in Python could l
|
|
|
128
128
|
- **Signal processing**: filters, wavelets, STFT
|
|
129
129
|
- **ODE/PDE solvers**: stiff and non-stiff, symplectic integrators
|
|
130
130
|
|
|
131
|
+
## Quick Start
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
pip install scientific-computing-system
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
```python
|
|
138
|
+
from scs.linear_algebra import svd
|
|
139
|
+
from scs.ode import solve_ivp
|
|
140
|
+
from scs.stats import bayesian_posterior
|
|
141
|
+
|
|
142
|
+
# every algorithm is readable pure Python — open the source, see the math
|
|
143
|
+
U, S, Vt = svd(matrix, full_matrices=False)
|
|
144
|
+
|
|
145
|
+
solution = solve_ivp(
|
|
146
|
+
lambda t, y: [y[1], -y[0] - 0.1 * y[1]], # damped oscillator
|
|
147
|
+
t_span=(0, 50),
|
|
148
|
+
y0=[1.0, 0.0],
|
|
149
|
+
method="rk45",
|
|
150
|
+
rtol=1e-8,
|
|
151
|
+
)
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Also on npm: `npm i scientific-computing-system`. Full docs: [furox-art.github.io/scientific-computing-system](https://furox-art.github.io/scientific-computing-system/).
|
|
155
|
+
|
|
156
|
+
## Common use cases
|
|
157
|
+
|
|
158
|
+
- Learn and inspect **numerical methods in pure Python** without compiled extensions.
|
|
159
|
+
- Prototype **scientific computing** workflows with transparent implementations.
|
|
160
|
+
- Explore **ODE/PDE solvers**, numerical integration, optimization, Monte Carlo, signal processing, and linear algebra.
|
|
161
|
+
- Run **statistics, uncertainty quantification, sensitivity analysis, dimensional analysis, and reproducible research** workflows.
|
|
162
|
+
- Teach or audit algorithms where readable source code matters more than raw NumPy/SciPy performance.
|
|
163
|
+
|
|
131
164
|
## The catch
|
|
132
165
|
|
|
133
166
|
It's slower than NumPy. Sometimes 10x slower, sometimes 100x. That's the price of pure Python. But it's also completely transparent-you can read every algorithm, understand every step, and modify anything without compiling C.
|
|
@@ -32,6 +32,39 @@ This is a from-scratch rethinking of what scientific computing in Python could l
|
|
|
32
32
|
- **Signal processing**: filters, wavelets, STFT
|
|
33
33
|
- **ODE/PDE solvers**: stiff and non-stiff, symplectic integrators
|
|
34
34
|
|
|
35
|
+
## Quick Start
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
pip install scientific-computing-system
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
```python
|
|
42
|
+
from scs.linear_algebra import svd
|
|
43
|
+
from scs.ode import solve_ivp
|
|
44
|
+
from scs.stats import bayesian_posterior
|
|
45
|
+
|
|
46
|
+
# every algorithm is readable pure Python — open the source, see the math
|
|
47
|
+
U, S, Vt = svd(matrix, full_matrices=False)
|
|
48
|
+
|
|
49
|
+
solution = solve_ivp(
|
|
50
|
+
lambda t, y: [y[1], -y[0] - 0.1 * y[1]], # damped oscillator
|
|
51
|
+
t_span=(0, 50),
|
|
52
|
+
y0=[1.0, 0.0],
|
|
53
|
+
method="rk45",
|
|
54
|
+
rtol=1e-8,
|
|
55
|
+
)
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Also on npm: `npm i scientific-computing-system`. Full docs: [furox-art.github.io/scientific-computing-system](https://furox-art.github.io/scientific-computing-system/).
|
|
59
|
+
|
|
60
|
+
## Common use cases
|
|
61
|
+
|
|
62
|
+
- Learn and inspect **numerical methods in pure Python** without compiled extensions.
|
|
63
|
+
- Prototype **scientific computing** workflows with transparent implementations.
|
|
64
|
+
- Explore **ODE/PDE solvers**, numerical integration, optimization, Monte Carlo, signal processing, and linear algebra.
|
|
65
|
+
- Run **statistics, uncertainty quantification, sensitivity analysis, dimensional analysis, and reproducible research** workflows.
|
|
66
|
+
- Teach or audit algorithms where readable source code matters more than raw NumPy/SciPy performance.
|
|
67
|
+
|
|
35
68
|
## The catch
|
|
36
69
|
|
|
37
70
|
It's slower than NumPy. Sometimes 10x slower, sometimes 100x. That's the price of pure Python. But it's also completely transparent-you can read every algorithm, understand every step, and modify anything without compiling C.
|
|
@@ -64,6 +64,14 @@ Module dependency graph and data flow, for contributors and auditors.
|
|
|
64
64
|
[Statistics](tutorials/stats_demo.md),
|
|
65
65
|
[Machine Learning](tutorials/ml_demo.md), then branch out.
|
|
66
66
|
|
|
67
|
+
## What people use CDS for
|
|
68
|
+
|
|
69
|
+
CDS is designed for searchable, practical scientific-Python tasks such as
|
|
70
|
+
**numerical methods**, **ODE and PDE solving**, **Monte Carlo simulation**,
|
|
71
|
+
**statistics and hypothesis testing**, **uncertainty quantification**,
|
|
72
|
+
**sensitivity analysis**, **signal processing**, **linear algebra**,
|
|
73
|
+
**symbolic mathematics**, and **reproducible computational research**.
|
|
74
|
+
|
|
67
75
|
## Key Features
|
|
68
76
|
|
|
69
77
|
- **Pure Python:** Every module is implemented from scratch using the Python standard library. No heavy dependencies like NumPy or SciPy required.
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
site_name: Scientific Computing System
|
|
2
2
|
site_url: https://furox-art.github.io/scientific-computing-system/
|
|
3
3
|
site_description: >-
|
|
4
|
-
Pure-Python
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
Pure-Python scientific computing and numerical methods platform for ODE/PDE
|
|
5
|
+
solvers, statistics, uncertainty quantification, sensitivity analysis,
|
|
6
|
+
signal processing, Monte Carlo, linear algebra, symbolic math and reproducible
|
|
7
|
+
computational research, with zero runtime dependencies.
|
|
7
8
|
site_author: Furox-Art
|
|
8
9
|
repo_url: https://github.com/Furox-Art/scientific-computing-system
|
|
9
10
|
repo_name: Furox-Art/scientific-computing-system
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# Distribution name. Formerly published as "cognitive-discovery-system";
|
|
3
3
|
# the import name stays `cds`. Keep the old PyPI project alive as an alias.
|
|
4
4
|
name = "scientific-computing-system"
|
|
5
|
-
version = "2.0
|
|
5
|
+
version = "2.1.0"
|
|
6
6
|
description = "A pure-Python computational science platform for numerical methods, modeling, validation, uncertainty, scientific workflows, dimensional analysis, and optional research-data backends. Zero runtime dependencies."
|
|
7
7
|
readme = "README.md"
|
|
8
8
|
license = "MIT"
|
|
@@ -153,7 +153,7 @@ Issues = "https://github.com/Furox-Art/scientific-computing-system/issues"
|
|
|
153
153
|
Changelog = "https://github.com/Furox-Art/scientific-computing-system/releases"
|
|
154
154
|
|
|
155
155
|
[build-system]
|
|
156
|
-
requires = ["hatchling"]
|
|
156
|
+
requires = ["hatchling==1.31.0"]
|
|
157
157
|
build-backend = "hatchling.build"
|
|
158
158
|
|
|
159
159
|
[tool.hatch.build.targets.wheel]
|
|
@@ -190,19 +190,20 @@ only-include = [
|
|
|
190
190
|
"pyproject.toml",
|
|
191
191
|
"requirements.lock",
|
|
192
192
|
"requirements-dev.lock",
|
|
193
|
+
"requirements-build.lock",
|
|
193
194
|
"mkdocs.yml",
|
|
194
195
|
]
|
|
195
196
|
|
|
196
|
-
# Static versioning: `version` above
|
|
197
|
-
#
|
|
198
|
-
#
|
|
199
|
-
#
|
|
197
|
+
# Static versioning: `version` above, `src/cds/_version.py`, and both version
|
|
198
|
+
# fields in `CITATION.cff` are release metadata sources and must stay in
|
|
199
|
+
# lockstep. scripts/check_version_discipline.py additionally requires a
|
|
200
|
+
# monotonic version bump whenever package-affecting source changes occur.
|
|
200
201
|
#
|
|
201
202
|
# Release checklist:
|
|
202
|
-
# 1. Bump
|
|
203
|
+
# 1. Bump all three version metadata sources together
|
|
203
204
|
# 2. Commit, push, and wait for CI + Installed CLI Smoke to be green
|
|
204
205
|
# 3. Merge the verified version bump to `main`; release.yml builds the wheel
|
|
205
|
-
#
|
|
206
|
+
# from a hash-locked, non-isolated build toolchain
|
|
206
207
|
# 4. Trusted Publishing uploads the verified build to PyPI; the GitHub Release
|
|
207
208
|
# contains release metadata only, never wheel/sdist distribution assets
|
|
208
209
|
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Hash-locked Python 3.12 release-build environment.
|
|
2
|
+
# Regenerate deliberately; release.yml installs this file with --require-hashes
|
|
3
|
+
# and --only-binary=:all:, then runs `python -m build --no-isolation`.
|
|
4
|
+
build==1.5.0 \
|
|
5
|
+
--hash=sha256:13f3eecb844759ab66efec90ca17639bbf14dc06cb2fdf37a9010322d9c50a6f
|
|
6
|
+
hatchling==1.31.0 \
|
|
7
|
+
--hash=sha256:aac80bec8b6fe35e8480f1c335be8910fa210a0e6f735a139be205dadcacb544
|
|
8
|
+
packaging==26.3 \
|
|
9
|
+
--hash=sha256:d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c
|
|
10
|
+
pathspec==1.1.1 \
|
|
11
|
+
--hash=sha256:a00ce642f577bf7f473932318056212bc4f8bfdf53128c78bbd5af0b9b20b189
|
|
12
|
+
pluggy==1.6.0 \
|
|
13
|
+
--hash=sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746
|
|
14
|
+
pyproject-hooks==1.2.0 \
|
|
15
|
+
--hash=sha256:9e5c6bfa8dcc30091c74b0cf803c81fdd29d94f01992a7707bc97babb1141913
|
|
16
|
+
trove-classifiers==2026.6.1.19 \
|
|
17
|
+
--hash=sha256:ab4c4ec93cc4a4e7815fa759906e05e6bb3f2fbd92ea0f897288c6a43efd15b3
|
{scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/requirements-dev.lock
RENAMED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
#
|
|
5
5
|
# pip-compile --extra=dev --extra=docs --extra=test --output-file=requirements-dev.lock pyproject.toml
|
|
6
6
|
#
|
|
7
|
-
anyio==4.
|
|
7
|
+
anyio==4.15.1
|
|
8
8
|
# via
|
|
9
9
|
# httpx
|
|
10
10
|
# jupyter-server
|
|
@@ -143,7 +143,7 @@ jupyter-events==0.12.1
|
|
|
143
143
|
# via jupyter-server
|
|
144
144
|
jupyter-lsp==2.3.1
|
|
145
145
|
# via jupyterlab
|
|
146
|
-
jupyter-server==2.21.
|
|
146
|
+
jupyter-server==2.21.1
|
|
147
147
|
# via
|
|
148
148
|
# jupyter-lsp
|
|
149
149
|
# jupyterlab
|
|
@@ -314,7 +314,7 @@ python-dateutil==2.9.0.post0
|
|
|
314
314
|
# arrow
|
|
315
315
|
# ghp-import
|
|
316
316
|
# jupyter-client
|
|
317
|
-
python-discovery==1.
|
|
317
|
+
python-discovery==1.6.1
|
|
318
318
|
# via virtualenv
|
|
319
319
|
python-json-logger==4.1.0
|
|
320
320
|
# via jupyter-events
|
|
@@ -364,7 +364,7 @@ six==1.17.0
|
|
|
364
364
|
# via
|
|
365
365
|
# python-dateutil
|
|
366
366
|
# rfc3339-validator
|
|
367
|
-
soupsieve==2.9.
|
|
367
|
+
soupsieve==2.9.2
|
|
368
368
|
# via beautifulsoup4
|
|
369
369
|
stack-data==0.6.3
|
|
370
370
|
# via ipython
|
|
@@ -395,7 +395,7 @@ traitlets==5.15.1
|
|
|
395
395
|
# nbclient
|
|
396
396
|
# nbconvert
|
|
397
397
|
# nbformat
|
|
398
|
-
typing-extensions==4.
|
|
398
|
+
typing-extensions==4.16.0
|
|
399
399
|
# via
|
|
400
400
|
# anyio
|
|
401
401
|
# beautifulsoup4
|
|
@@ -406,9 +406,9 @@ tzdata==2026.2
|
|
|
406
406
|
# via arrow
|
|
407
407
|
uri-template==1.3.0
|
|
408
408
|
# via jsonschema
|
|
409
|
-
urllib3==2.
|
|
409
|
+
urllib3==2.8.0
|
|
410
410
|
# via requests
|
|
411
|
-
virtualenv==21.
|
|
411
|
+
virtualenv==21.7.13
|
|
412
412
|
# via pre-commit
|
|
413
413
|
watchdog==6.0.0
|
|
414
414
|
# via mkdocs
|
|
@@ -9,10 +9,12 @@ Key features:
|
|
|
9
9
|
- Quantum simulation (single & multi-qubit with entanglement)
|
|
10
10
|
- Signal processing (FFT, 2D FFT, convolution, filtering)
|
|
11
11
|
- Optimization, statistics, probability, linear algebra
|
|
12
|
+
- Multiple-testing/FDR corrections and conservative causal estimators
|
|
12
13
|
- Hypothesis generation for structured research ideas
|
|
13
14
|
- Workflow orchestration with approval gates and validation
|
|
14
|
-
- Uncertainty propagation, sensitivity
|
|
15
|
-
-
|
|
15
|
+
- Uncertainty propagation, local/global sensitivity, and identifiability analysis
|
|
16
|
+
- Distribution-drift and out-of-distribution validation
|
|
17
|
+
- SI units, dimensional analysis, and memory-bounded scientific data I/O
|
|
16
18
|
- Optional scientific-tool capability discovery and normalized adapters
|
|
17
19
|
- CLI for quick calculations and discovery workflows
|
|
18
20
|
|
|
@@ -32,6 +34,7 @@ Usage:
|
|
|
32
34
|
# Scientific computing modules
|
|
33
35
|
from cds import (
|
|
34
36
|
bayes,
|
|
37
|
+
causal,
|
|
35
38
|
core,
|
|
36
39
|
data_analysis,
|
|
37
40
|
data_io,
|
|
@@ -98,6 +101,7 @@ __all__ = [
|
|
|
98
101
|
"pendulum_period",
|
|
99
102
|
"doppler_frequency",
|
|
100
103
|
"bayes",
|
|
104
|
+
"causal",
|
|
101
105
|
"core",
|
|
102
106
|
"data_analysis",
|
|
103
107
|
"data_io",
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Static version source. Kept in lockstep with `version` in pyproject.toml and
|
|
2
|
+
# version metadata in CITATION.cff. Package-affecting changes require a
|
|
3
|
+
# synchronized monotonic bump; scripts/check_version_discipline.py enforces it.
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
__all__ = ["__version__", "version", "__version_tuple__", "version_tuple"]
|
|
7
|
+
|
|
8
|
+
__version__ = version = "2.1.0"
|
|
9
|
+
__version_tuple__ = version_tuple = (2, 1, 0)
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
"""Conservative, assumption-gated causal effect estimators.
|
|
2
|
+
|
|
3
|
+
This module does not infer causal structure from observational correlations.
|
|
4
|
+
Callers must declare causal assumptions explicitly and, for observational
|
|
5
|
+
back-door adjustment, provide the adjustment covariates themselves.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import math
|
|
11
|
+
from collections.abc import Sequence
|
|
12
|
+
from dataclasses import dataclass
|
|
13
|
+
|
|
14
|
+
from cds.validation import CheckStatus, ValidationCheck, ValidationReport
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@dataclass(frozen=True)
|
|
18
|
+
class CausalAssumptions:
|
|
19
|
+
"""Core identification assumptions that must be justified outside the estimator."""
|
|
20
|
+
|
|
21
|
+
temporal_order: bool | None
|
|
22
|
+
no_unmeasured_confounding: bool | None
|
|
23
|
+
positivity: bool | None
|
|
24
|
+
consistency: bool | None
|
|
25
|
+
|
|
26
|
+
@property
|
|
27
|
+
def identified(self) -> bool:
|
|
28
|
+
"""Whether every required assumption is explicitly declared true."""
|
|
29
|
+
return all(
|
|
30
|
+
value is True
|
|
31
|
+
for value in (
|
|
32
|
+
self.temporal_order,
|
|
33
|
+
self.no_unmeasured_confounding,
|
|
34
|
+
self.positivity,
|
|
35
|
+
self.consistency,
|
|
36
|
+
)
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
@dataclass(frozen=True)
|
|
41
|
+
class CausalEffectEstimate:
|
|
42
|
+
"""Point estimate from an explicitly identified causal design."""
|
|
43
|
+
|
|
44
|
+
effect: float
|
|
45
|
+
method: str
|
|
46
|
+
n_observations: int
|
|
47
|
+
adjustment_count: int
|
|
48
|
+
assumptions: CausalAssumptions | None
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def audit_causal_assumptions(assumptions: CausalAssumptions) -> ValidationReport:
|
|
52
|
+
"""Convert explicit causal assumptions into PASS/WARNING/FAIL checks."""
|
|
53
|
+
report = ValidationReport()
|
|
54
|
+
for name, value in (
|
|
55
|
+
("temporal_order", assumptions.temporal_order),
|
|
56
|
+
("no_unmeasured_confounding", assumptions.no_unmeasured_confounding),
|
|
57
|
+
("positivity", assumptions.positivity),
|
|
58
|
+
("consistency", assumptions.consistency),
|
|
59
|
+
):
|
|
60
|
+
if value is True:
|
|
61
|
+
report.add(ValidationCheck(name, CheckStatus.PASS, f"{name} explicitly supported"))
|
|
62
|
+
elif value is False:
|
|
63
|
+
report.add(ValidationCheck(name, CheckStatus.FAIL, f"{name} explicitly violated"))
|
|
64
|
+
else:
|
|
65
|
+
report.add(ValidationCheck(name, CheckStatus.WARNING, f"{name} not established"))
|
|
66
|
+
return report
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def _finite_vector(values: Sequence[float], *, name: str) -> tuple[float, ...]:
|
|
70
|
+
result = tuple(float(value) for value in values)
|
|
71
|
+
if any(not math.isfinite(value) for value in result):
|
|
72
|
+
raise ValueError(f"{name} must contain only finite values")
|
|
73
|
+
return result
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def _invert(matrix: Sequence[Sequence[float]], *, tolerance: float = 1e-12) -> list[list[float]]:
|
|
77
|
+
size = len(matrix)
|
|
78
|
+
augmented = [
|
|
79
|
+
[float(value) for value in row]
|
|
80
|
+
+ [1.0 if row_index == column else 0.0 for column in range(size)]
|
|
81
|
+
for row_index, row in enumerate(matrix)
|
|
82
|
+
]
|
|
83
|
+
for column in range(size):
|
|
84
|
+
pivot = max(range(column, size), key=lambda row: abs(augmented[row][column]))
|
|
85
|
+
if abs(augmented[pivot][column]) <= tolerance:
|
|
86
|
+
raise ValueError("causal adjustment design matrix is singular")
|
|
87
|
+
if pivot != column:
|
|
88
|
+
augmented[column], augmented[pivot] = augmented[pivot], augmented[column]
|
|
89
|
+
scale = augmented[column][column]
|
|
90
|
+
augmented[column] = [value / scale for value in augmented[column]]
|
|
91
|
+
for row in range(size):
|
|
92
|
+
if row == column:
|
|
93
|
+
continue
|
|
94
|
+
factor = augmented[row][column]
|
|
95
|
+
if factor == 0.0:
|
|
96
|
+
continue
|
|
97
|
+
augmented[row] = [
|
|
98
|
+
value - factor * pivot_value
|
|
99
|
+
for value, pivot_value in zip(augmented[row], augmented[column], strict=True)
|
|
100
|
+
]
|
|
101
|
+
return [row[size:] for row in augmented]
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
def _ols_coefficients(
|
|
105
|
+
design: Sequence[Sequence[float]], outcome: Sequence[float]
|
|
106
|
+
) -> tuple[float, ...]:
|
|
107
|
+
if not design:
|
|
108
|
+
raise ValueError("causal estimator requires at least one observation")
|
|
109
|
+
columns = len(design[0])
|
|
110
|
+
if columns == 0 or any(len(row) != columns for row in design):
|
|
111
|
+
raise ValueError("causal design matrix must be rectangular and non-empty")
|
|
112
|
+
if len(design) < columns:
|
|
113
|
+
raise ValueError("causal design needs at least as many observations as coefficients")
|
|
114
|
+
|
|
115
|
+
gram = [[0.0] * columns for _ in range(columns)]
|
|
116
|
+
rhs = [0.0] * columns
|
|
117
|
+
for row, target in zip(design, outcome, strict=True):
|
|
118
|
+
for left in range(columns):
|
|
119
|
+
rhs[left] += row[left] * target
|
|
120
|
+
for right in range(columns):
|
|
121
|
+
gram[left][right] += row[left] * row[right]
|
|
122
|
+
inverse = _invert(gram)
|
|
123
|
+
return tuple(
|
|
124
|
+
sum(inverse[row][column] * rhs[column] for column in range(columns))
|
|
125
|
+
for row in range(columns)
|
|
126
|
+
)
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
def linear_backdoor_effect(
|
|
130
|
+
outcome: Sequence[float],
|
|
131
|
+
treatment: Sequence[float],
|
|
132
|
+
covariates: Sequence[Sequence[float]],
|
|
133
|
+
*,
|
|
134
|
+
assumptions: CausalAssumptions,
|
|
135
|
+
) -> CausalEffectEstimate:
|
|
136
|
+
"""Estimate a linear back-door-adjusted treatment effect.
|
|
137
|
+
|
|
138
|
+
Identification is fail-closed: every assumption must be explicitly true.
|
|
139
|
+
The estimator fits ``outcome ~ 1 + treatment + covariates`` and returns the
|
|
140
|
+
treatment coefficient. The caller remains responsible for supplying a
|
|
141
|
+
causally valid adjustment set; this function never discovers one from data.
|
|
142
|
+
"""
|
|
143
|
+
report = audit_causal_assumptions(assumptions)
|
|
144
|
+
if not assumptions.identified:
|
|
145
|
+
failures = [check.name for check in report.failures]
|
|
146
|
+
warnings = [check.name for check in report.warnings]
|
|
147
|
+
unresolved = failures + warnings
|
|
148
|
+
raise ValueError(
|
|
149
|
+
"causal effect is not identified; unresolved assumptions: " + ", ".join(unresolved)
|
|
150
|
+
)
|
|
151
|
+
|
|
152
|
+
y = _finite_vector(outcome, name="outcome")
|
|
153
|
+
treatment_values = _finite_vector(treatment, name="treatment")
|
|
154
|
+
if len(y) != len(treatment_values):
|
|
155
|
+
raise ValueError("outcome and treatment must have equal length")
|
|
156
|
+
if not y:
|
|
157
|
+
raise ValueError("causal estimator requires at least one observation")
|
|
158
|
+
if len(set(treatment_values)) < 2:
|
|
159
|
+
raise ValueError("treatment must vary across observations")
|
|
160
|
+
if len(covariates) != len(y):
|
|
161
|
+
raise ValueError("covariates must have one row per observation")
|
|
162
|
+
|
|
163
|
+
width = len(covariates[0]) if covariates else 0
|
|
164
|
+
rows: list[list[float]] = []
|
|
165
|
+
for index, raw_row in enumerate(covariates):
|
|
166
|
+
if len(raw_row) != width:
|
|
167
|
+
raise ValueError("covariate rows must have equal width")
|
|
168
|
+
row = _finite_vector(raw_row, name=f"covariates row {index}")
|
|
169
|
+
rows.append([1.0, treatment_values[index], *row])
|
|
170
|
+
|
|
171
|
+
coefficients = _ols_coefficients(rows, y)
|
|
172
|
+
return CausalEffectEstimate(
|
|
173
|
+
effect=coefficients[1],
|
|
174
|
+
method="linear-backdoor-adjustment",
|
|
175
|
+
n_observations=len(y),
|
|
176
|
+
adjustment_count=width,
|
|
177
|
+
assumptions=assumptions,
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
def randomized_mean_effect(
|
|
182
|
+
treated_outcomes: Sequence[float],
|
|
183
|
+
control_outcomes: Sequence[float],
|
|
184
|
+
*,
|
|
185
|
+
randomized: bool,
|
|
186
|
+
) -> CausalEffectEstimate:
|
|
187
|
+
"""Estimate an average treatment effect from a declared randomized design."""
|
|
188
|
+
if not randomized:
|
|
189
|
+
raise ValueError("randomized_mean_effect requires an explicitly randomized design")
|
|
190
|
+
treated = _finite_vector(treated_outcomes, name="treated_outcomes")
|
|
191
|
+
control = _finite_vector(control_outcomes, name="control_outcomes")
|
|
192
|
+
if not treated or not control:
|
|
193
|
+
raise ValueError("treated and control groups must both be non-empty")
|
|
194
|
+
effect = sum(treated) / len(treated) - sum(control) / len(control)
|
|
195
|
+
return CausalEffectEstimate(
|
|
196
|
+
effect=effect,
|
|
197
|
+
method="randomized-difference-in-means",
|
|
198
|
+
n_observations=len(treated) + len(control),
|
|
199
|
+
adjustment_count=0,
|
|
200
|
+
assumptions=None,
|
|
201
|
+
)
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
__all__ = [
|
|
205
|
+
"CausalAssumptions",
|
|
206
|
+
"CausalEffectEstimate",
|
|
207
|
+
"audit_causal_assumptions",
|
|
208
|
+
"linear_backdoor_effect",
|
|
209
|
+
"randomized_mean_effect",
|
|
210
|
+
]
|
{scientific_computing_system-2.0.1 → scientific_computing_system-2.1.0}/src/cds/data_io/__init__.py
RENAMED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
"""Streaming file I/O and lazy optional scientific data backends."""
|
|
2
2
|
|
|
3
|
+
from cds.data_io.scientific import (
|
|
4
|
+
ArrayChunk,
|
|
5
|
+
ScientificArrayProfile,
|
|
6
|
+
iter_array_chunks,
|
|
7
|
+
iter_hdf5_chunks,
|
|
8
|
+
iter_netcdf_chunks,
|
|
9
|
+
profile_scientific_array,
|
|
10
|
+
reduce_chunks,
|
|
11
|
+
)
|
|
3
12
|
from cds.data_io.streaming import (
|
|
4
13
|
FileProfile,
|
|
5
14
|
OnlineMoments,
|
|
@@ -14,14 +23,21 @@ from cds.data_io.streaming import (
|
|
|
14
23
|
)
|
|
15
24
|
|
|
16
25
|
__all__ = [
|
|
26
|
+
"ArrayChunk",
|
|
17
27
|
"FileProfile",
|
|
18
28
|
"OnlineMoments",
|
|
29
|
+
"ScientificArrayProfile",
|
|
19
30
|
"StreamingLinearAccumulator",
|
|
20
31
|
"StreamingLinearFit",
|
|
21
32
|
"fit_linear_csv_streaming",
|
|
33
|
+
"iter_array_chunks",
|
|
22
34
|
"iter_csv_batches",
|
|
23
35
|
"iter_file_blocks",
|
|
36
|
+
"iter_hdf5_chunks",
|
|
37
|
+
"iter_netcdf_chunks",
|
|
24
38
|
"open_hdf5",
|
|
25
39
|
"open_netcdf",
|
|
26
40
|
"profile_file",
|
|
41
|
+
"profile_scientific_array",
|
|
42
|
+
"reduce_chunks",
|
|
27
43
|
]
|