physmap 0.2.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.
- physmap/__init__.py +61 -0
- physmap/_paths.py +69 -0
- physmap/applicability/__init__.py +0 -0
- physmap/applicability/fixtures.py +83 -0
- physmap/applicability/screen.py +99 -0
- physmap/baselines/__init__.py +0 -0
- physmap/benchmarks/__init__.py +0 -0
- physmap/benchmarks/benchmark_report.py +405 -0
- physmap/benchmarks/benchmark_v0_4.py +424 -0
- physmap/benchmarks/compare.py +149 -0
- physmap/benchmarks/registry.py +217 -0
- physmap/benchmarks/report.py +224 -0
- physmap/cli.py +301 -0
- physmap/closures/__init__.py +48 -0
- physmap/closures/data/__init__.py +7 -0
- physmap/closures/data/closure_index.json +2997 -0
- physmap/closures/formulas.py +213 -0
- physmap/closures/geometry_classes.py +109 -0
- physmap/closures/index.py +393 -0
- physmap/closures/registry.py +313 -0
- physmap/compat/__init__.py +0 -0
- physmap/core/__init__.py +0 -0
- physmap/core/mechanism.py +69 -0
- physmap/core/signals.py +50 -0
- physmap/corpus/__init__.py +12 -0
- physmap/corpus/calibration.py +543 -0
- physmap/corpus/data/__init__.py +12 -0
- physmap/corpus/data/corpus_seed.jsonl +15 -0
- physmap/corpus/data/evidence_claims_seed.jsonl +21 -0
- physmap/corpus/data/evidence_sources_seed.jsonl +8 -0
- physmap/corpus/data/premium_coverage.json +60 -0
- physmap/corpus/evidence.py +871 -0
- physmap/explain/__init__.py +0 -0
- physmap/explain/benchmark.py +101 -0
- physmap/explain/causal.py +82 -0
- physmap/guardrail/__init__.py +38 -0
- physmap/guardrail/aggregator_observability.py +187 -0
- physmap/guardrail/classify.py +147 -0
- physmap/guardrail/configs.py +120 -0
- physmap/guardrail/corpus_regimes.py +208 -0
- physmap/guardrail/detector_conformal.py +129 -0
- physmap/guardrail/detector_density.py +74 -0
- physmap/guardrail/enums.py +69 -0
- physmap/guardrail/graph.py +73 -0
- physmap/guardrail/guardrail.py +606 -0
- physmap/guardrail/io.py +201 -0
- physmap/guardrail/regime_observability.py +519 -0
- physmap/guardrail/render.py +159 -0
- physmap/guardrail/weighting_heuristic.py +216 -0
- physmap/infra/__init__.py +23 -0
- physmap/infra/blindspot_oracle.py +356 -0
- physmap/infra/corpus_runtime.py +275 -0
- physmap/integrations/__init__.py +0 -0
- physmap/materiality/__init__.py +0 -0
- physmap/materiality/estimator.py +239 -0
- physmap/materiality/independence.py +92 -0
- physmap/materiality/surrogate_fit.py +293 -0
- physmap/observability/__init__.py +0 -0
- physmap/pipeline/__init__.py +58 -0
- physmap/pipeline/aggregators.py +199 -0
- physmap/pipeline/assessment_v06.py +509 -0
- physmap/pipeline/core.py +442 -0
- physmap/pipeline/defeasible_aggregator.py +324 -0
- physmap/pipeline/detectors.py +309 -0
- physmap/pipeline/observability.py +430 -0
- physmap/pipeline/surrogate.py +251 -0
- physmap/pipeline/validity_signal.py +273 -0
- physmap/pipeline/vehicle_spec.py +287 -0
- physmap/release.py +81 -0
- physmap/stress_tests/__init__.py +9 -0
- physmap/stress_tests/lewis_reuse.py +517 -0
- physmap/substrate/__init__.py +28 -0
- physmap/substrate/corpus_real.py +206 -0
- physmap/substrate/engine.py +209 -0
- physmap/substrate/forrest.py +249 -0
- physmap/substrate/loaders.py +2176 -0
- physmap/substrate/naca_tn1451.py +379 -0
- physmap/substrate/naca_wpd_loader.py +187 -0
- physmap/substrate/stage1_ingest.py +187 -0
- physmap/substrate/vehicle_config.py +407 -0
- physmap-0.2.0.dist-info/METADATA +270 -0
- physmap-0.2.0.dist-info/RECORD +88 -0
- physmap-0.2.0.dist-info/WHEEL +5 -0
- physmap-0.2.0.dist-info/entry_points.txt +2 -0
- physmap-0.2.0.dist-info/licenses/LICENSE +21 -0
- physmap-0.2.0.dist-info/licenses/LICENSE-CORPUS +469 -0
- physmap-0.2.0.dist-info/licenses/NOTICE +77 -0
- physmap-0.2.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: physmap
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: Physics-aware credibility checks for AI surrogates in multiphysics simulation: closure validity, surrogate observability, and causal materiality.
|
|
5
|
+
Author: Vishnu Vettrivel
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/cloudronin/physmap
|
|
8
|
+
Project-URL: Repository, https://github.com/cloudronin/physmap
|
|
9
|
+
Project-URL: Issues, https://github.com/cloudronin/physmap/issues
|
|
10
|
+
Classifier: Development Status :: 3 - Alpha
|
|
11
|
+
Classifier: Intended Audience :: Science/Research
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Topic :: Scientific/Engineering :: Physics
|
|
14
|
+
Requires-Python: >=3.10
|
|
15
|
+
Description-Content-Type: text/markdown
|
|
16
|
+
License-File: LICENSE
|
|
17
|
+
License-File: LICENSE-CORPUS
|
|
18
|
+
License-File: NOTICE
|
|
19
|
+
Requires-Dist: numpy>=1.24
|
|
20
|
+
Requires-Dist: scikit-learn>=1.3
|
|
21
|
+
Requires-Dist: scipy>=1.10
|
|
22
|
+
Requires-Dist: joblib>=1.3
|
|
23
|
+
Requires-Dist: pyyaml>=6.0
|
|
24
|
+
Provides-Extra: jsonld
|
|
25
|
+
Requires-Dist: uofa>=0.10.0; extra == "jsonld"
|
|
26
|
+
Provides-Extra: experiment
|
|
27
|
+
Requires-Dist: matplotlib>=3.5; extra == "experiment"
|
|
28
|
+
Provides-Extra: dev
|
|
29
|
+
Requires-Dist: pytest>=7.4; extra == "dev"
|
|
30
|
+
Requires-Dist: pytest-xdist>=3.5; extra == "dev"
|
|
31
|
+
Dynamic: license-file
|
|
32
|
+
|
|
33
|
+
# PhysMAP
|
|
34
|
+
|
|
35
|
+
Physics-aware credibility checks for AI surrogates in multiphysics simulation.
|
|
36
|
+
|
|
37
|
+
A surrogate trained on `(Re, Pr)` over the fully-developed region of a heated pipe is
|
|
38
|
+
blind to `x/D`, the variable that actually governs the entrance region. So it fails
|
|
39
|
+
there, confidently. And so does an input-based OOD detector, because it sees the
|
|
40
|
+
same two columns the surrogate does — and in those two columns the entrance points look
|
|
41
|
+
perfectly ordinary.
|
|
42
|
+
|
|
43
|
+
PhysMAP reads the bound variable from the test coordinates instead of from the
|
|
44
|
+
surrogate's inputs, checks it against the closure relation's validated range, and knows
|
|
45
|
+
at fit time whether that variable is structurally observable to the surrogate at all.
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
verdicts: {'REJECT': 45}
|
|
49
|
+
rationale: Prediction relies on gnielinski-1976 beyond its validated x_over_D bound
|
|
50
|
+
(x_over_D >= 10); x_over_D is not a surrogate input (unobservable to
|
|
51
|
+
input-based OOD detectors), and the literature (Tam & Ghajar 1998) reports
|
|
52
|
+
divergence up to -63% past this bound. Input-based OOD detectors are silent
|
|
53
|
+
because they cannot observe x_over_D.
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
No LLM is in any path. Every explanation is a deterministic rendered template.
|
|
57
|
+
|
|
58
|
+
Run it yourself: [`examples/naca_entrance_region.py`](https://github.com/cloudronin/physmap/blob/main/examples/naca_entrance_region.py).
|
|
59
|
+
|
|
60
|
+
## Three checks, deliberately kept apart
|
|
61
|
+
|
|
62
|
+
These are different claims resting on different evidence. Conflating them is the
|
|
63
|
+
specific error this project is built to avoid, so nothing here attributes the results of
|
|
64
|
+
one to another.
|
|
65
|
+
|
|
66
|
+
| Check | Question | Status |
|
|
67
|
+
|---|---|---|
|
|
68
|
+
| **Closure validity** | Is this closure relation being applied outside the range it was calibrated on? | Shipping |
|
|
69
|
+
| **Surrogate observability** | Can the surrogate's inputs even represent the variable that governs the failure? | Shipping |
|
|
70
|
+
| **Causal materiality** | Is the out-of-range mechanism large enough to matter for the quantity of interest? | Preview — method, plus one controlled stress test |
|
|
71
|
+
|
|
72
|
+
## What this release claims
|
|
73
|
+
|
|
74
|
+
This build is `CAUSAL_PREVIEW`. `physmap.release.CURRENT_RELEASE_STATE` says so, and the
|
|
75
|
+
command-line surface is derived from that constant rather than from which files happen to
|
|
76
|
+
be on disk — so an unfinished feature is an unrecognised command, never a runtime
|
|
77
|
+
data-missing error.
|
|
78
|
+
|
|
79
|
+
The causal-materiality API is present: the ablation counterfactual, the applicability
|
|
80
|
+
screen, the independence guard, and deterministic explanations. Its fixtures are
|
|
81
|
+
**synthetic or declarative** — constructed inputs, or preconditions asserted from a case
|
|
82
|
+
description. Beyond them, **one controlled stress test runs the causal path on a real
|
|
83
|
+
experiment** (below) — a development demonstration on a single run, not an evaluation.
|
|
84
|
+
|
|
85
|
+
**It makes no performance claim.** No precision, recall or F1 is computed, reported or
|
|
86
|
+
shipped anywhere in this package. A test parses the package and fails if one appears. The causal-materiality results presented in the NAFEMS
|
|
87
|
+
Multiphysics 2026 abstract are **not** reproduced here: the original study's inputs are
|
|
88
|
+
gone, and the basis for its experimental truth is unresolved. A reconstruction is under
|
|
89
|
+
way under a locked protocol that fixes its rules before any rebuilt number is examined.
|
|
90
|
+
|
|
91
|
+
Because the original grid, truth source and counterfactual all change, the best outcome
|
|
92
|
+
available to that reconstruction is **independent corroboration** of the causal finding —
|
|
93
|
+
not reproduction of the published numbers. The protocol defines `REPRODUCED` and marks it
|
|
94
|
+
unreachable, so the word cannot drift onto a weaker result. See
|
|
95
|
+
[`protocols/`](https://github.com/cloudronin/physmap/tree/main/protocols).
|
|
96
|
+
|
|
97
|
+
## A controlled model-reuse stress test: Lewis 35A
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
physmap stress-test lewis-reuse
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
**The setup.** The surrogate was trained for forced convection, where gravity did not vary
|
|
104
|
+
and was not an input. It was then reused in vertical heated flow, where buoyancy became
|
|
105
|
+
material. A mixed-convection surrogate designed for this regime should include Richardson
|
|
106
|
+
number, Grashof number, or equivalent physical information — this test reuses one without
|
|
107
|
+
it, on purpose.
|
|
108
|
+
|
|
109
|
+
**The claim.** PhysMAP detects when model reuse activates a physically relevant mechanism
|
|
110
|
+
outside the surrogate's observable input space. An input-only OOD detector cannot identify a
|
|
111
|
+
change absent from its input contract.
|
|
112
|
+
|
|
113
|
+
**The input contract.** Both the surrogate and the input-based OOD detector — the
|
|
114
|
+
seven-vehicle benchmark's own, unchanged — receive `Re`, `Pr` and `x_over_D`. Neither
|
|
115
|
+
receives gravity, `Ri`, `Gr` or heat flux. **Every visible deployment input exactly matches a
|
|
116
|
+
training input.**
|
|
117
|
+
|
|
118
|
+
**The result**, same visible inputs, two physical states, on Lewis's (1992) vertical-tube
|
|
119
|
+
experiment:
|
|
120
|
+
|
|
121
|
+
| | surrogate error | input-based OOD scores | PhysMAP materiality |
|
|
122
|
+
|---|---|---|---|
|
|
123
|
+
| gravity off — the accurate control | within 0.06 % | identical in both rows | 0 |
|
|
124
|
+
| gravity on — Lewis's measurement | 17–18 % downstream | identical in both rows | up to 0.195 |
|
|
125
|
+
|
|
126
|
+
Identical OOD scores and zero-versus-0.195 materiality need no threshold. The flag threshold θ
|
|
127
|
+
is not yet locked, so materiality is reported as numbers, and θ = 0.10 appears only as an
|
|
128
|
+
illustration.
|
|
129
|
+
|
|
130
|
+
A secondary result shows specificity: when the visible operating point falls *between*
|
|
131
|
+
training runs, the OOD detector warns in both the accurate and the inaccurate case —
|
|
132
|
+
identically — while PhysMAP changes with the physical mechanism.
|
|
133
|
+
|
|
134
|
+
**What it is not.** Not a claim that OOD detectors fail in general — this one does exactly its
|
|
135
|
+
job. Not a suggestion to leave gravity out. Not a claim about NVIDIA PhysicsNeMo, whose OOD
|
|
136
|
+
and physics checks are distinct and were not run. **One run, a development demonstration:** its
|
|
137
|
+
stations are not independent cases, and no precision, recall or F1 is computed.
|
|
138
|
+
|
|
139
|
+
The command recomputes everything from this checkout in a few minutes, asserts the exact
|
|
140
|
+
input overlap and the unchanged OOD scores, and diffs itself against a committed bank — the
|
|
141
|
+
same contract as `physmap benchmark run`, deliberately kept a separate command because this is
|
|
142
|
+
a causal-materiality result. It recomputes from committed CFD-derived profiles and does not rerun
|
|
143
|
+
OpenFOAM. Full record:
|
|
144
|
+
[docs/findings/lewis-ood-head-to-head.md](https://github.com/cloudronin/physmap/blob/main/docs/findings/lewis-ood-head-to-head.md). The NAFEMS
|
|
145
|
+
talk package — figures, facts sheet, claims ledger, and a clean-clone reproduction record — is
|
|
146
|
+
in [docs/talk/](https://github.com/cloudronin/physmap/blob/main/docs/talk/README.md).
|
|
147
|
+
|
|
148
|
+
## The benchmark: seven vehicles, all rerunnable
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
physmap benchmark report # all seven outcomes, each marked recomputed or banked
|
|
152
|
+
physmap benchmark run # recomputes all seven from this checkout, diffs against the bank
|
|
153
|
+
physmap benchmark coverage # what that subset does and does not cover
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
All seven vehicles ran, all seven outcomes are reported, and **all seven now ship their
|
|
157
|
+
source data**.
|
|
158
|
+
|
|
159
|
+
**`physmap benchmark run` recomputes all seven from this checkout and diffs the result
|
|
160
|
+
against the committed matrix.** Every field of every cell, not just the headline outcome.
|
|
161
|
+
It exits non-zero if anything drifted, and never writes the bank it is checking itself
|
|
162
|
+
against.
|
|
163
|
+
|
|
164
|
+
Floats are compared within `1e-9` relative, everything else exactly — and the distinction
|
|
165
|
+
is load-bearing rather than a convenience. Every field that decides an outcome is an int
|
|
166
|
+
or a string (counts, verdicts, outcome labels, observability classes), so the tolerance
|
|
167
|
+
cannot absorb a real change. It exists because a clean-clone check on numpy 2.5 found
|
|
168
|
+
`dirker_water.observability_score` differing from the banked value by **one unit in the
|
|
169
|
+
last place**. A match that needed the tolerance is reported as such, not as "identical".
|
|
170
|
+
|
|
171
|
+
`physmap benchmark report` reads the bank without running anything, and says so — the
|
|
172
|
+
report distinguishes a recomputed row from a banked one, and the counts are computed
|
|
173
|
+
rather than written down, so they cannot quietly go stale.
|
|
174
|
+
|
|
175
|
+
**Shipping is also not licensing.** Two of the seven carry affirmative permission:
|
|
176
|
+
`naca_tn1451` (public domain) and `velazquez_sco2` (CC BY 4.0). **Five do not**, and the
|
|
177
|
+
registry and report label them rather than calling everything clear:
|
|
178
|
+
|
|
179
|
+
- `marineau_hypersonic_transition` — no licence and **no prohibition**. Values transcribed
|
|
180
|
+
from a published table in a publicly funded, public-release, government-hosted document.
|
|
181
|
+
- `forrest`, `casper_hypersonic_transition`, `dirker_water`, `jin_sco2_buoyancy` —
|
|
182
|
+
published **against** express publisher terms. AIAA prohibits using its content to
|
|
183
|
+
develop machine-learning models; ASME and Elsevier require permission to reproduce, and
|
|
184
|
+
Elsevier's licence forbids systematic redistribution. Risks accepted knowingly, not
|
|
185
|
+
findings that the terms do not apply.
|
|
186
|
+
|
|
187
|
+
All five redistribute **numbers only** — no paper, figure or PDF, enforced by two audits —
|
|
188
|
+
and all five are removed on objection. The full basis, including the arguments against, is
|
|
189
|
+
in [data/REDISTRIBUTION.md](https://github.com/cloudronin/physmap/blob/main/data/REDISTRIBUTION.md) and [NOTICE](https://github.com/cloudronin/physmap/blob/main/NOTICE).
|
|
190
|
+
|
|
191
|
+
**One dataset is published but not benchmark-grade.** `forrest`'s own header calls its
|
|
192
|
+
values visual estimates for triage only, and its cell is degenerate — one training row, no
|
|
193
|
+
detector fit — so its `DO_NO_HARM` outcome is short-circuited rather than earned. Being
|
|
194
|
+
legal to publish and being fit to benchmark on are different questions; the registry tracks
|
|
195
|
+
them on separate axes. `physmap benchmark coverage` prints it.
|
|
196
|
+
|
|
197
|
+
## Install
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
pip install physmap
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
That gives you the library, the `physmap` command and the seed corpus. Python 3.10 or newer.
|
|
204
|
+
|
|
205
|
+
**To run the benchmark, the Lewis stress test or the examples, install from a clone:**
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
git clone https://github.com/cloudronin/physmap
|
|
209
|
+
cd physmap
|
|
210
|
+
pip install -e .
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
Their data lives in the repository, outside the package, on purpose — partly because of
|
|
214
|
+
redistribution terms and partly because it is not runtime data. From a plain
|
|
215
|
+
`pip install physmap`, those commands say so in one sentence and stop.
|
|
216
|
+
|
|
217
|
+
Optional extras: `[jsonld]` adds evidence export via `uofa`, `[experiment]` adds
|
|
218
|
+
`matplotlib` for benchmark figures, `[dev]` adds the test tooling.
|
|
219
|
+
|
|
220
|
+
## The corpus is open-core
|
|
221
|
+
|
|
222
|
+
The library is open. The calibration corpus is the commercial moat.
|
|
223
|
+
|
|
224
|
+
Published here is the **seed**: 15 closures with their validated bounds, plus a
|
|
225
|
+
verdict-free index of 201 closures. The full 53-closure corpus is not published. The
|
|
226
|
+
firewall is an **allowlist**, not a blacklist — an entry ships only if it is on the list,
|
|
227
|
+
and every bound's provenance grading is replaced with `seed`.
|
|
228
|
+
|
|
229
|
+
The same firewall applies to the evidence corpus, so claims and sources cannot leak
|
|
230
|
+
bounds for closures the seed withholds. It is derived deterministically by
|
|
231
|
+
[`dev/tools/split_evidence_corpus.py`](https://github.com/cloudronin/physmap/blob/main/dev/tools/split_evidence_corpus.py), which has a
|
|
232
|
+
`--check` mode that fails on drift.
|
|
233
|
+
|
|
234
|
+
Resolution order is `$PHYSMAP_CORPUS` → an installed premium package → the bundled seed.
|
|
235
|
+
A premium holder drops the file in; no code changes.
|
|
236
|
+
|
|
237
|
+
## Licences
|
|
238
|
+
|
|
239
|
+
Two, because the code and the data are different things.
|
|
240
|
+
|
|
241
|
+
- **Code** — MIT. See [LICENSE](https://github.com/cloudronin/physmap/blob/main/LICENSE).
|
|
242
|
+
- **Data** — CC BY 4.0. See [LICENSE-CORPUS](https://github.com/cloudronin/physmap/blob/main/LICENSE-CORPUS).
|
|
243
|
+
|
|
244
|
+
[NOTICE](https://github.com/cloudronin/physmap/blob/main/NOTICE) states which files fall under which, in one page.
|
|
245
|
+
|
|
246
|
+
The data licence is scoped, and the scope matters. It covers the curated corpus as
|
|
247
|
+
authorship: the selection, structuring, regime mapping, bound assignment and provenance
|
|
248
|
+
annotation. It does **not** cover numerical values digitised from third-party
|
|
249
|
+
publications — those measurements were not made here, so no copyright in them is claimed.
|
|
250
|
+
They are governed by their publishers' terms, by public-domain status, or are
|
|
251
|
+
uncopyrightable facts, and each file records its own redistribution determination. A
|
|
252
|
+
citation is attribution, not permission.
|
|
253
|
+
|
|
254
|
+
No source PDF is redistributed. Papers are cited, not copied.
|
|
255
|
+
|
|
256
|
+
## Citing
|
|
257
|
+
|
|
258
|
+
[`CITATION.cff`](https://github.com/cloudronin/physmap/blob/main/CITATION.cff). Attribution is required by CC BY when you redistribute or
|
|
259
|
+
build on the data.
|
|
260
|
+
|
|
261
|
+
## Tests
|
|
262
|
+
|
|
263
|
+
```bash
|
|
264
|
+
pytest tests/ -q -n auto
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
Several tests guard failures whose symptom is a wrong answer rather than an exception:
|
|
268
|
+
the closure index loading as empty, the corpus silently resolving to the wrong tier, the
|
|
269
|
+
evidence corpus leaking a non-seed closure, and `rdflib` creeping back onto the import
|
|
270
|
+
path through an unused import.
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
physmap/__init__.py,sha256=wCbd9KuEvyzRNtAQZkaCSfbTh9w9Ee0U03-OKD48K9Y,2492
|
|
2
|
+
physmap/_paths.py,sha256=tYxAMWP5Ef-pkSYl8aQOxxi6q3azZm0PpWqm7An1xRw,2507
|
|
3
|
+
physmap/cli.py,sha256=ATYiW07A220G9WFRJ3bsyedgbKx6-eR_0TQOUFz7V60,11529
|
|
4
|
+
physmap/release.py,sha256=OIiMrDlOlYElYP8yLPGrvidtiLS0yzTWrXJJeYeXp5Q,3552
|
|
5
|
+
physmap/applicability/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
+
physmap/applicability/fixtures.py,sha256=Zwb7s_azfRYIqk_6ux8iDcR3VQ2jvlE3MEvmPPQDsfk,3333
|
|
7
|
+
physmap/applicability/screen.py,sha256=AWV-QSuQXB2QEi1gnRe2H9IFPLZgYN4HTZVny0MQkn4,3945
|
|
8
|
+
physmap/baselines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
|
+
physmap/benchmarks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
|
+
physmap/benchmarks/benchmark_report.py,sha256=16FKYrs2cChn9wD5N1ZcK7P4cB3RjcCE0I9OFWtm3nE,20711
|
|
11
|
+
physmap/benchmarks/benchmark_v0_4.py,sha256=TM1aJQrN_7GC29TrsdYMf9rVhUxcKmFO3mz5JjoMT5g,20589
|
|
12
|
+
physmap/benchmarks/compare.py,sha256=QHIsiRn0qezBM8TABpjSbw4hYrtll4uwwfmBoBLtGco,6636
|
|
13
|
+
physmap/benchmarks/registry.py,sha256=8gKig-LeSJbCA0Vdb__mdAIW0ohi2wwN_esKY9FH6G4,9210
|
|
14
|
+
physmap/benchmarks/report.py,sha256=EvzSHW7TKAPnXSvUuJgmQde_CB4Qrj1a4t5_eQc0lR8,9144
|
|
15
|
+
physmap/closures/__init__.py,sha256=ft9eD4ggIOuzW1U4SZ85iAlqtNyf8jBnJafqcSIv_zo,1560
|
|
16
|
+
physmap/closures/formulas.py,sha256=p_ejSOBMED8K_bps9Tg6BaYR0Z3EQWwMBF9naZm7CoA,10262
|
|
17
|
+
physmap/closures/geometry_classes.py,sha256=DxRshWr32FH_9TL_cN_5FKUzDOy6sS2zuSMUXrNOS7g,4687
|
|
18
|
+
physmap/closures/index.py,sha256=5ng098PaiTWUmj_h6pE1IwJ94dd6SXHUyXyBLAdijWU,17786
|
|
19
|
+
physmap/closures/registry.py,sha256=OJYBa-Llav_ufJNRensp-yVYO8LJe5OkvNHXLqg3h2I,15120
|
|
20
|
+
physmap/closures/data/__init__.py,sha256=QqLSbA1B6QfijzeSf0A4T5VVmND5VeDelw0Oq1RkhW4,340
|
|
21
|
+
physmap/closures/data/closure_index.json,sha256=Fl9VDEenOYUTkZqmdS_y-x9OYNj0knmpUJsv-oRxMj8,106473
|
|
22
|
+
physmap/compat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
23
|
+
physmap/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
24
|
+
physmap/core/mechanism.py,sha256=_uUF9J_g5q9EEVfEV657KS7fhOvVFGSy_oN82j_UuwY,2352
|
|
25
|
+
physmap/core/signals.py,sha256=_3BUg4QkVyO_AgMmLQNWSp5SYaPHURF8pTOFE3KM_HE,1908
|
|
26
|
+
physmap/corpus/__init__.py,sha256=3733GH0NR6O2QsDgFrdT-SdGbK_6NpsE7JsvZaWcWfA,494
|
|
27
|
+
physmap/corpus/calibration.py,sha256=WVnAtP1cAejo93HpRkaZ3tJ3gBiNVUTwo00BMAOeQdQ,24709
|
|
28
|
+
physmap/corpus/evidence.py,sha256=LGGL7gM8X_d7iNxnTyITZHy5EC5bTxJ6qyMtcgGiCX8,32355
|
|
29
|
+
physmap/corpus/data/__init__.py,sha256=0C7gSVI6442FJoBl3MxSkSjWYPg6FelW2v3lRKZlTSg,610
|
|
30
|
+
physmap/corpus/data/corpus_seed.jsonl,sha256=hWpiwJSmbZRRbzlJKzAtagOFrf7KsFqNwkToyRnbg14,33880
|
|
31
|
+
physmap/corpus/data/evidence_claims_seed.jsonl,sha256=fLMIiHR6_sMcEz6N28YjjeVIAo-y68xiCNjyVuTfcVY,24965
|
|
32
|
+
physmap/corpus/data/evidence_sources_seed.jsonl,sha256=_T-V2OsHZXudQuvRQg-whkac2VtE2CgpeFsREFhQuQk,5873
|
|
33
|
+
physmap/corpus/data/premium_coverage.json,sha256=NqPzioS6xQLTlL0J-q1iFY8taJpDGtmSILbjaLnKEUQ,2394
|
|
34
|
+
physmap/explain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
35
|
+
physmap/explain/benchmark.py,sha256=-gd7vpshJ6VEdrnu4u4P88Zr-UVxxp73vQJqkD4wcMQ,4888
|
|
36
|
+
physmap/explain/causal.py,sha256=6nMAeYoSKMOP4a4qPwBXfz2iTbqIDn3Gc034Gtfg-mc,3286
|
|
37
|
+
physmap/guardrail/__init__.py,sha256=n1vCijqNqN3DRzolj3DcY7o2B1zp_M1_spnEvLypddk,1160
|
|
38
|
+
physmap/guardrail/aggregator_observability.py,sha256=R4CzmvkT3xO7g8ddPtFCpE7GTwO0Yg9UTbAAp5_rbPU,8106
|
|
39
|
+
physmap/guardrail/classify.py,sha256=KYZ9mz52Cx6wuQfpFUXikifgxN26JItu6jmusP-X2I0,6719
|
|
40
|
+
physmap/guardrail/configs.py,sha256=POIEfF1BBbYb51Fy_mbWYmeP-pxwf-bb8dkkYtw-UlA,4178
|
|
41
|
+
physmap/guardrail/corpus_regimes.py,sha256=4-3GF_OZGjOanPcZI_SCwO2FSxJSQcxdxMjK6mG7kek,15301
|
|
42
|
+
physmap/guardrail/detector_conformal.py,sha256=yt93KjGLPCjm-twgp8jphBVPwSZfYGolUXqCL2WtywE,6605
|
|
43
|
+
physmap/guardrail/detector_density.py,sha256=GWjmx0fu53rmczGkv32ctHK2buJl9tj50hdoFfbdBN0,3048
|
|
44
|
+
physmap/guardrail/enums.py,sha256=s6oydb2_FjbYgbLCUzSItVJS8cEZafxGfal1yo4bHUE,2753
|
|
45
|
+
physmap/guardrail/graph.py,sha256=3unYROSq1U87qmU-pRqzpw7vNkZIkdIE5S8G9qK5yLY,3166
|
|
46
|
+
physmap/guardrail/guardrail.py,sha256=fXuZqMotHMfBMEA8z4N7nC2JFlkk48VD_f1ZzlJsr1k,29166
|
|
47
|
+
physmap/guardrail/io.py,sha256=EO5hxHT1u-_oQczuaUEhx3xwpNq8-bdqs2kOl8q_8oM,9591
|
|
48
|
+
physmap/guardrail/regime_observability.py,sha256=NrMVzn9N-ggWZsj9npX6PRUUxtVofwmfUc4mcgX0bXo,24052
|
|
49
|
+
physmap/guardrail/render.py,sha256=D-wypvvgddBkxw9ado-uoycv_80kTkcclpjTXXMvj_g,6860
|
|
50
|
+
physmap/guardrail/weighting_heuristic.py,sha256=C9xdnm3zcDOOVnJK-w1X5DU2r6DHMiTgYXrwuPt8a2c,10121
|
|
51
|
+
physmap/infra/__init__.py,sha256=ffvXN53WbNLeGAwIsKw9d97uAiQGxh4gH-Mix9ISkoQ,1094
|
|
52
|
+
physmap/infra/blindspot_oracle.py,sha256=D3juKfuajySKVM_Qlv-SBFmuzK-aTZ6EGMkkciu7k-Y,16872
|
|
53
|
+
physmap/infra/corpus_runtime.py,sha256=fbxRsSmBwW1JSiaWFb-iqlMIs5wwJLfSbkf_HDg7FvE,12306
|
|
54
|
+
physmap/integrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
55
|
+
physmap/materiality/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
56
|
+
physmap/materiality/estimator.py,sha256=OHcX0FGpUJ8XfPMhx5uNpbaxcXf9bdAUgG9ay_Oetpg,9046
|
|
57
|
+
physmap/materiality/independence.py,sha256=AmbqdRSipEpGrk03T6qo5OBMFvTf1F-EnEZvzrajOgk,3849
|
|
58
|
+
physmap/materiality/surrogate_fit.py,sha256=WmpzqEUU_cG6PVRO3C_tzxgNHq8Hzzr6pmoQ-RiPlq0,11364
|
|
59
|
+
physmap/observability/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
60
|
+
physmap/pipeline/__init__.py,sha256=E8tD2HPEpAM8d2CTbMSDRFgqOQjuJ7ooU2wBrhB_h6k,1978
|
|
61
|
+
physmap/pipeline/aggregators.py,sha256=ad27zuksMKD3ASrhRU6CF_lCIpEmjqQfLPP197gBtrk,8354
|
|
62
|
+
physmap/pipeline/assessment_v06.py,sha256=Vo0dDQz1ByMmUykYXRupkwnjWgOPi8cT3OVbdbP5K2Y,21053
|
|
63
|
+
physmap/pipeline/core.py,sha256=bSIZeyhaChhSwLhVjxbb2Z45O8lFjRJ3xKdE7utrIrI,19602
|
|
64
|
+
physmap/pipeline/defeasible_aggregator.py,sha256=CMg1LmhNkzPU0UPfpW2jHLLDFddjPbkeRT6xVzGY684,14306
|
|
65
|
+
physmap/pipeline/detectors.py,sha256=rZD64_bu8fj6GzYDxl8ivC6z6loG45Sn2UGKoMMhQHQ,14565
|
|
66
|
+
physmap/pipeline/observability.py,sha256=IA4O5a6XDmKva_hFqiEEEnFfQpHoQ1YnFHIARJzIcqU,18326
|
|
67
|
+
physmap/pipeline/surrogate.py,sha256=7Ke0FtSzX57OxeY1F4GSSHjX8g_v0BsMntD0Ft8M8A8,10629
|
|
68
|
+
physmap/pipeline/validity_signal.py,sha256=DJ263Ivb12ycat5SLvOXlOUCuiCMmfnul-9AOcjD244,12739
|
|
69
|
+
physmap/pipeline/vehicle_spec.py,sha256=A1C_4ErqPlLKZicV-bGAw-uYh_8hLOQVKTYgrmFJtS4,14987
|
|
70
|
+
physmap/stress_tests/__init__.py,sha256=JZZZaXtwmcbtmmY5MyW2VLBphrjJE_W0p4oaZ5huwfo,535
|
|
71
|
+
physmap/stress_tests/lewis_reuse.py,sha256=Ponn_IGNTAbL8PNTNmr0bynWALEhTj4qS0YzhtusNVs,29583
|
|
72
|
+
physmap/substrate/__init__.py,sha256=tG91LbVT8DubtTPrcvpRYQnPVl3ag1GF4szh2nUHOIk,1384
|
|
73
|
+
physmap/substrate/corpus_real.py,sha256=p6GhQ_ZC3Y6rHB1ARn1XcijgHbUwmV21NVI9d7XjtlQ,9134
|
|
74
|
+
physmap/substrate/engine.py,sha256=bUPbTVyT2Mzcy9w7TRHWr8hQmHfw-7o73zDkoIqZTMc,9614
|
|
75
|
+
physmap/substrate/forrest.py,sha256=3l08LJ6yZucR_oCxRNY8xiSr0uYbMAhk7QJM270StKI,13778
|
|
76
|
+
physmap/substrate/loaders.py,sha256=JCjiXoezhXmw4OqUosts-IvPMl80WwpKlsLkBLIF13c,97514
|
|
77
|
+
physmap/substrate/naca_tn1451.py,sha256=8J7MMnzIxkhJYt8MyesikEfGEczCjq9ccey2e7hzEhw,18067
|
|
78
|
+
physmap/substrate/naca_wpd_loader.py,sha256=9dbJ8UJInHmjMNGVmDb7KC2j_oS8mtAheMDnwq8As98,7168
|
|
79
|
+
physmap/substrate/stage1_ingest.py,sha256=RCsRmgD184oqNq2x_gPa0UlDcV48fwhu81o5ddiYsH0,8483
|
|
80
|
+
physmap/substrate/vehicle_config.py,sha256=Vxr4__k1wvItUngVYR2hauF0ZoQGgEzPdcrEUDSlwQc,18021
|
|
81
|
+
physmap-0.2.0.dist-info/licenses/LICENSE,sha256=CtxvvATXP3-ARvhpTdBO4yDi3HVy8dzDyq8BncIY17M,1073
|
|
82
|
+
physmap-0.2.0.dist-info/licenses/LICENSE-CORPUS,sha256=WbBaWskax1cQtGFuJuedMAzKRQY0-6W7BV31uAZ-yNw,21581
|
|
83
|
+
physmap-0.2.0.dist-info/licenses/NOTICE,sha256=zaFb6c99in4Iu-fb6M1M3P92J1QvtsZI2lszvSbqWDg,3578
|
|
84
|
+
physmap-0.2.0.dist-info/METADATA,sha256=-qEHYfXotRWzEzK1yn45BvJED4LlfN5wwgFYOhRMw2A,13948
|
|
85
|
+
physmap-0.2.0.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
|
|
86
|
+
physmap-0.2.0.dist-info/entry_points.txt,sha256=MrPpTqOxWVZxm8uMEMOQFh--EwFxYTc8GOXjfGySn04,45
|
|
87
|
+
physmap-0.2.0.dist-info/top_level.txt,sha256=1YEn9zQ3bA_5DB3JkcFdC5VxH1fQa674LpOMhDZN2Vw,8
|
|
88
|
+
physmap-0.2.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Vishnu Vettrivel
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|