Metadata-Version: 2.5
Name: scientific-computing-system
Version: 2.2.3
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.
Project-URL: Homepage, https://github.com/Furox-Art/scientific-computing-system
Project-URL: Repository, https://github.com/Furox-Art/scientific-computing-system
Project-URL: Documentation, https://furox-art.github.io/scientific-computing-system/
Project-URL: PyPI, https://pypi.org/project/scientific-computing-system/
Project-URL: Issues, https://github.com/Furox-Art/scientific-computing-system/issues
Project-URL: Changelog, https://github.com/Furox-Art/scientific-computing-system/releases
Author-email: Furox-Art <furkanarkn1451@gmail.com>
License-Expression: MIT
License-File: LICENSE
Keywords: data-analysis,differential-equations,dimensional-analysis,graph-theory,hypothesis-generation,knowledge-graph,linear-algebra,machine-learning,monte-carlo,nlp,numerical-integration,numerical-methods,ode,optimization,pde,physics,probability,pure-python,quantum,reproducibility,scientific-computing,scientific-workflows,sensitivity-analysis,signal-processing,statistics,symbolic-math,uncertainty-quantification
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Scientific/Engineering :: Mathematics
Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Requires-Python: >=3.10
Provides-Extra: all
Requires-Dist: build; extra == 'all'
Requires-Dist: h5py>=3.10; extra == 'all'
Requires-Dist: hypothesis>=6.100; extra == 'all'
Requires-Dist: ipykernel; extra == 'all'
Requires-Dist: matplotlib>=3.8.0; extra == 'all'
Requires-Dist: mkdocs-material>=9.0.0; extra == 'all'
Requires-Dist: mkdocs>=1.5.0; extra == 'all'
Requires-Dist: mkdocstrings[python]>=0.24.0; extra == 'all'
Requires-Dist: mypy>=1.10; extra == 'all'
Requires-Dist: netcdf4>=1.6; extra == 'all'
Requires-Dist: notebook; extra == 'all'
Requires-Dist: numpy>=1.26; extra == 'all'
Requires-Dist: pandas>=2.0; extra == 'all'
Requires-Dist: pre-commit; extra == 'all'
Requires-Dist: pytest-cov; extra == 'all'
Requires-Dist: pytest>=8.0; extra == 'all'
Requires-Dist: ruff>=0.4; extra == 'all'
Requires-Dist: scikit-learn>=1.4; extra == 'all'
Requires-Dist: scipy>=1.11; extra == 'all'
Requires-Dist: statsmodels>=0.14; extra == 'all'
Requires-Dist: streamlit>=1.30.0; extra == 'all'
Requires-Dist: sympy>=1.12; extra == 'all'
Requires-Dist: z3-solver>=4.12.2; extra == 'all'
Provides-Extra: dashboard
Requires-Dist: pandas; extra == 'dashboard'
Requires-Dist: streamlit>=1.30.0; extra == 'dashboard'
Provides-Extra: dev
Requires-Dist: build; extra == 'dev'
Requires-Dist: ipykernel; extra == 'dev'
Requires-Dist: mypy>=1.10; extra == 'dev'
Requires-Dist: notebook; extra == 'dev'
Requires-Dist: numpy<2.5,>=2.0; extra == 'dev'
Requires-Dist: pandas-stubs>=2.0; extra == 'dev'
Requires-Dist: pre-commit; extra == 'dev'
Requires-Dist: ruff>=0.4; extra == 'dev'
Provides-Extra: docs
Requires-Dist: mkdocs-material>=9.0.0; extra == 'docs'
Requires-Dist: mkdocs>=1.5.0; extra == 'docs'
Requires-Dist: mkdocstrings[python]>=0.24.0; extra == 'docs'
Provides-Extra: io
Requires-Dist: h5py>=3.10; extra == 'io'
Requires-Dist: netcdf4>=1.6; extra == 'io'
Provides-Extra: pandas
Requires-Dist: pandas>=2.0; extra == 'pandas'
Provides-Extra: plot
Requires-Dist: matplotlib>=3.8.0; extra == 'plot'
Provides-Extra: promo
Requires-Dist: imageio-ffmpeg>=0.5.1; extra == 'promo'
Requires-Dist: matplotlib>=3.8.0; extra == 'promo'
Requires-Dist: numpy>=1.26.0; extra == 'promo'
Requires-Dist: pillow>=10.0.0; extra == 'promo'
Provides-Extra: property
Requires-Dist: hypothesis>=6.100; extra == 'property'
Provides-Extra: scientific
Requires-Dist: numpy>=1.26; extra == 'scientific'
Requires-Dist: scikit-learn>=1.4; extra == 'scientific'
Requires-Dist: scipy>=1.11; extra == 'scientific'
Requires-Dist: statsmodels>=0.14; extra == 'scientific'
Requires-Dist: sympy>=1.12; extra == 'scientific'
Requires-Dist: z3-solver>=4.12.2; extra == 'scientific'
Provides-Extra: test
Requires-Dist: pytest-cov; extra == 'test'
Requires-Dist: pytest>=8.0; extra == 'test'
Description-Content-Type: text/markdown

<p align="center">
  <img src="assets/logo.svg" alt="scientific-computing-system" width="640">
</p>

<h1 align="center">scientific-computing-system</h1>

<p align="center"><b>A pure-Python computational science platform for numerical methods, modeling, validation, uncertainty, scientific workflows, dimensional analysis, and reproducible research.</b></p>

<p align="center">
  <a href="https://pypi.org/project/scientific-computing-system/"><img src="https://img.shields.io/pypi/v/scientific-computing-system.svg" alt="PyPI version"></a>
  <a href="https://www.npmjs.com/package/scientific-computing-system"><img src="https://img.shields.io/npm/v/scientific-computing-system.svg" alt="npm version"></a>
  <a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/python-3.10+-green.svg" alt="Python 3.10+"></a>
  <a href="https://codecov.io/gh/Furox-Art/scientific-computing-system"><img src="https://codecov.io/gh/Furox-Art/scientific-computing-system/branch/main/graph/badge.svg" alt="codecov"></a>
  <a href="https://github.com/Furox-Art/scientific-computing-system/actions/workflows/tests.yml"><img src="https://github.com/Furox-Art/scientific-computing-system/actions/workflows/tests.yml/badge.svg" alt="CI"></a>
  <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="License: MIT"></a>
  <a href="https://furox-art.github.io/scientific-computing-system/"><img src="https://img.shields.io/badge/docs-mkdocs-teal.svg" alt="Docs"></a>
  <a href="https://github.com/Furox-Art/scientific-computing-system/releases"><img src="https://img.shields.io/github/v/release/Furox-Art/scientific-computing-system.svg" alt="GitHub release"></a>
</p>

<p align="center">
  <b>Docs</b> ·
  <a href="https://furox-art.github.io/scientific-computing-system/getting-started/">Getting Started</a> ·
  <a href="https://furox-art.github.io/scientific-computing-system/api/">API Reference</a> ·
  <a href="https://furox-art.github.io/scientific-computing-system/cookbook/">Cookbook</a> ·
  <a href="https://furox-art.github.io/scientific-computing-system/benchmarks/">Benchmarks</a> ·
  <b>Project</b> ·
  <a href="https://github.com/Furox-Art/scientific-computing-system/blob/main/CHANGELOG.md">Changelog</a> ·
  <a href="https://github.com/Furox-Art/scientific-computing-system/blob/main/CONTRIBUTING.md">Contributing</a> ·
  <a href="https://github.com/Furox-Art/scientific-computing-system/blob/main/SECURITY.md">Security</a> ·
  <a href="https://github.com/Furox-Art/scientific-computing-system/blob/main/CODE_OF_CONDUCT.md">Code of Conduct</a> ·
  <a href="https://github.com/Furox-Art/scientific-computing-system/blob/main/CITATION.cff">Citation</a> ·
  <a href="https://github.com/Furox-Art/scientific-computing-system/blob/main/paper.md">Paper (JOSS)</a> ·
  <a href="https://github.com/Furox-Art/scientific-computing-system/discussions">Discussions</a> ·
  <a href="https://github.com/Furox-Art/scientific-computing-system/issues">Issues</a>
</p>

I wrote this because NumPy and SciPy are incredible, but they're also 20 years old and carry two decades of design decisions that don't always make sense anymore.

Download counts: [PyPI stats](https://pypi.org/project/scientific-computing-system/)

This is a from-scratch rethinking of what scientific computing in Python could look like if we started today. No C extensions, no Fortran legacy, no dependency hell. Just Python, type hints, and algorithms that are actually readable.

The import name is **`cds`** (the distribution is `scientific-computing-system`). The zero-dependency core needs nothing but the standard library. The sibling NumPy build of this work is [`scientific-computing-system-2.0`](https://github.com/Furox-Art/scientific-computing-system-2.0); related projects are listed in [docs/related.md](docs/related.md).

## Install

| Channel | Command | What you get |
|---|---|---|
| **PyPI** (the library) | `pip install scientific-computing-system` | The actual Python package. Zero runtime dependencies. This is what you want. |
| **npm** (a launcher shim) | `npm i -g scientific-computing-system` | A thin Node wrapper that runs `python -m cds`. It ships no Python and needs the Python distribution installed so that `python -m cds` resolves. |

Both channels are published at the same version. They are **not** equally
verifiable:

- **PyPI** — carries a **PEP 740 provenance attestation** (Sigstore-signed,
  binding the file digest to the publishing workflow). Verified on 2.2.1.
- **npm** — carries **no** attestation; the npmjs.com trusted publisher is not
  registered yet, so its publish path cannot mint one. npm does expose
  `dist.integrity` (sha512), which is a content pin, not proof of origin, and
  `dist.signatures`, which is npm's registry transport signature, not build
  provenance.

Prefer PyPI for anything security-sensitive.
[SECURITY.md](SECURITY.md#distribution-channels-and-provenance) has the
per-channel table, the published digests to pin, the commands to verify them,
and what to register to close the npm gap.

## What's inside

`src/cds/` holds **34 subpackages plus `causal.py` and `sensitivity.py`**. That is
35 public feature modules — the `cds` CLI entry point is the 36th subpackage —
exporting **505 names** (342 functions, 163 classes), all pure standard library.
`tests/test_readme_surface.py` derives these numbers from the package, so they
cannot drift silently.

| Area | Modules | What you get |
|---|---|---|
| Core models | `cds.core` | Shared `Domain`, `Hypothesis`, `HypothesisStatus` types |
| Linear algebra & calculus | `cds.math_utils`, `cds.interpolate` | SVD, QR, Cholesky, LU, power iteration, derivatives, integrals |
| ODE / PDE | `cds.diffeq`, `cds.pde` | Euler, RK4, adaptive RK45, implicit stiff methods, symplectic integrators; 1-D heat & wave equations |
| Quadrature | `cds.numerical_integration` | Trapezoid, Simpson 1/3 & 3/8, Romberg, Gauss-Legendre, adaptive Simpson, 2-D tensor rules |
| Optimization | `cds.optimization` | Gradient descent, Newton, Adam, Nelder-Mead, annealing, constrained search |
| Statistics | `cds.stats`, `cds.probability`, `cds.bayes` | Descriptive stats, regression, t/chi-square/ANOVA, effect sizes, nonparametric ranks, time series, multiple testing, Bayesian conjugate updates |
| Monte Carlo | `cds.montecarlo` | π estimation, Monte-Carlo integration, random walks |
| Machine learning | `cds.ml` | MLP, k-NN, k-means, CART, random forest, boosting, PCA (educational, not production) |
| Signal processing | `cds.signals`, `cds.wavelets` | DFT/FFT/IFFT, convolution, Butterworth design, STFT, Haar DWT |
| Quantum | `cds.quantum` | Single & multi-qubit state-vector circuits, Bell/GHZ states, entanglement |
| Graphs | `cds.graph` | BFS, DFS, Dijkstra shortest paths, Kruskal MST, topological sort, cycle detection |
| Scientific domains | `cds.scientific`, `cds.genetics`, `cds.fractals`, `cds.infotheory` | Physical constants & formulas, DNA analysis & alignment, fractal sets, entropy/divergence/mutual information |
| Symbolic modeling | `cds.modeling` | Expression trees, symbolic differentiation, LaTeX export, `MathModel` systems, root finding, fitting |
| Uncertainty & sensitivity | `cds.uncertainty`, `cds.sensitivity` | Analytic + correlated Monte-Carlo propagation, local & variance-based global sensitivity, identifiability |
| Validation & causality | `cds.validation`, `cds.causal` | Cross-method checks, drift/OOD reports, assumption-gated causal estimators |
| Units | `cds.units` | SI quantities, conversions, dimensional compatibility checks |
| Workflow & provenance | `cds.workflow`, `cds.provenance` | Approval-gated orchestration, run manifests, hashes, checkpoints |
| Data | `cds.data_analysis`, `cds.data_io` | CSV/tabular analysis, streaming I/O, optional HDF5/NetCDF |
| Knowledge & hypothesis | `cds.knowledge`, `cds.hypothesis` | Concept graphs, research notes, structured hypothesis generation & evaluation |
| NLP (educational) | `cds.nlp` | BPE, embeddings, attention, autograd, MiniGPT |
| Plotting | `cds.plot` | Optional matplotlib helpers (`[plot]` extra) |
| Backend adapters | `cds.tools` | Lazy discovery for NumPy/SciPy/statsmodels/scikit-learn/SymPy/Z3 |

The authoritative per-module list is the [API reference](https://furox-art.github.io/scientific-computing-system/api/).

!!! note "`cds modules` is a curated subset"
    `cds modules` prints 26 entries. It is **not** the full catalog: it omits
    `bayes`, `causal`, `core`, `fractals`, `genetics`, `infotheory`, `interpolate`,
    `pde`, and `wavelets`. Use the [API reference](https://furox-art.github.io/scientific-computing-system/api/)
    or `src/cds/` for the complete set.

### Runnable examples and the dashboard

- **[`examples/`](examples/)** — 35 runnable scripts and notebooks (33 `.py`, 2
  `.ipynb`), each self-contained and dependency-free unless noted. Every tutorial
  page in the docs has a matching example.
- **[`dashboard/app.py`](dashboard/app.py)** — a Streamlit dashboard:
  `cds dashboard`, or `pip install "scientific-computing-system[dashboard]"`.

## Quick Start

```bash
pip install scientific-computing-system
```

```python
from cds.math_utils import svd
from cds.diffeq import solve_system
from cds.stats import linear_regression

# 1. SVD — result is an SVDResult, not a tuple
result = svd([[1.0, 2.0], [3.0, 4.0]])
print("singular_values =", [round(v, 6) for v in result.singular_values])


# 2. Damped harmonic oscillator: y'' = -y - 0.1 y'
def rhs(t, y):
    return [y[1], -y[0] - 0.1 * y[1]]


t, y = solve_system(rhs, 0.0, [1.0, 0.0], 50.0, dt=0.01)
print("final t =", round(t[-1], 2), "| final y =", [round(v, 8) for v in y[-1]])

# 3. Least-squares line fit
fit = linear_regression([1.0, 2.0, 3.0, 4.0, 5.0], [2.1, 3.9, 6.2, 7.8, 10.1])
print(f"slope = {fit.slope:.4f} | intercept = {fit.intercept:.4f} | r^2 = {fit.r_squared:.4f}")
```

Real output (executed verbatim; pasted from an actual run):

```text
singular_values = [5.464986, 0.365966]
final t = 50.0 | final y = [0.07638443, 0.0264785]
slope = 1.9900 | intercept = 0.0500 | r^2 = 0.9973
```

## CLI

The package installs a `cds` command with 13 subcommands:

| Command | Purpose |
|---|---|
| `cds --help` | Full command list |
| `cds modules` | Curated module catalog (see the caveat above) |
| `cds info` | Version, module status, health summary |
| `cds constants` | Table of physical constants |
| `cds calc <formula>` | Quick physics calculation (`ke`, `gravity`, `wave`, `gas`) |
| `cds stats <numbers>` | Descriptive statistics for a comma-separated list |
| `cds sample <dist>` | Draw samples from a probability distribution |
| `cds integrate <fn>` | Integrate a built-in function over `[a, b]` |
| `cds hypothesis <q>` | Generate scientific hypotheses for a question |
| `cds prompt` | Prompt text for a custom hypothesis generator |
| `cds benchmark` | Run the built-in benchmarks |
| `cds plot <numbers>` | ASCII plot, or PNG with `--file` when `[plot]` is installed |
| `cds dashboard` | Launch the Streamlit dashboard (needs `[dashboard]`) |

```console
$ cds --version
System version 2.2.3
$ cds constants        # physical constants table
```

## Optional extras

The core is zero-dependency. Everything below is opt-in:

```bash
pip install "scientific-computing-system[scientific]"  # NumPy, SciPy, statsmodels, scikit-learn, SymPy, Z3
pip install "scientific-computing-system[io]"          # HDF5 + NetCDF
pip install "scientific-computing-system[plot]"        # matplotlib
pip install "scientific-computing-system[pandas]"      # DataFrame bridge: cds.data_analysis.pandas_io
pip install "scientific-computing-system[dashboard]"   # Streamlit dashboard
```

## The catch

Pure Python is slower than NumPy on dense numerics: the committed benchmark
artifact records 100×100 matrix multiplication at 0.0696 s against NumPy's
0.000060 s, about **1155× slower**. Those numbers are from one CI run whose
platform, CPU, and library versions were not recorded, so treat them as
order-of-magnitude only — [docs/benchmarks.md](docs/benchmarks.md) states exactly
what that artifact does and does not support, and
[docs/why-pure-python.md](docs/why-pure-python.md) covers when to reach for
NumPy or the 2.0 build instead.

## Contributing

```bash
pip install -e ".[dev]"
pytest            # CI also enforces 100% blended coverage (statement + branch)
mkdocs serve      # docs at http://127.0.0.1:8000/
```

Issues and PRs welcome; see [CONTRIBUTING.md](CONTRIBUTING.md) and
[CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md).

## License

MIT — see [LICENSE](LICENSE).

Cite via [`CITATION.cff`](CITATION.cff). [`codemeta.json`](codemeta.json) carries
the same metadata in codemeta form, and [`paper.md`](paper.md) /
[`paper.bib`](paper.bib) are the JOSS manuscript.
