한국어

Methodology

This page summarizes what this research project built, how it was checked, and what it has not yet been able to check, within the scope recorded in the project documents. Content that was not recorded is not written here. Numbers and units are quoted as they appear in the source documents, and this page does not add any new scientific or validation claim.

This methodology page was drafted by Claude Sonnet 5.5 from the repository documents and demo outputs; Codex gpt-6.1-terra checked the numbers, equations, citations and links against the source documents (6 findings incorporated); and the integration lead (Hermes, Claude Opus 5.5) re-checked the findings against the sources and corrected them. Every factual statement on this page is governed by the linked source documents.

Equation notation: the equations in Section 2 are typeset with KaTeX. Codex gpt-6-luna transcribed the source text equations into LaTeX, and Claude Sonnet 5.5 checked them one by one against the source documents and corrected 10 notation ambiguities (for example, V0, dp: notation that could be misread as a product). Under each group of equations you can expand the source text equations to compare.

This English page was translated from the Korean original by Claude Sonnet 5.5. Codex gpt-6.1-terra checked the translation against the Korean and found 4 meaning-level fixes, which were re-verified against the source documents and applied. The Korean original is at /ko/methodology/.

1. What this site is

Scope of use. This software is experimental research software. It cannot be used for diagnosis, treatment selection, or patient-specific prediction. No patient data were used, and all inputs and results are synthetic values. It also does not claim that any state of the body is “normal.”

The Phase 1 document records this software as “Experimental Phase 1 research software,” and records that the numerical simulation is deterministic and, after installation, needs no LLM or network connection. It states explicitly that the default configuration (baseline) is a computational reference with elevated pressures and must not be described as a reference value for a healthy adult.

What is published on this site

Related source documents: research_report · physiology · decisions

2. Models

There are three model layers. In all three models the parameter values are exploratory and synthetic, and have not been fitted to literature values. The equations below are transcribed as recorded in the documents.

2.1 Phase 1: 6-compartment closed-loop model

The declared scope is an “executable closed-loop educational/research prototype”; it is not a clinical model, not a patient-specific prediction, and not a replication of Smith et al. (2004). It is recorded that the structural equations were inspired by the reviewed sources but are simplified, and that they do not reproduce the published reference trajectories.

State variables

State order COMPARTMENTS = (lv, sa, sv, rv, pa, pv): left ventricle, systemic artery, systemic vein, right ventricle, pulmonary artery, pulmonary vein. All six states are total compartment volumes (mL); pressures and flows are algebraic observables. The circulation is a directed loop.

LV --aortic--> SA --systemic--> SV --tricuspid--> RV
RV --pulmonary_valve--> PA --pulmonary--> PV --mitral--> LV

Governing equations

\[T = \frac{60}{\mathrm{heart\_rate}}\quad\text{[s; HR in beats/min]}\]
\[\varphi = \frac{(t \bmod T)}{T}\quad\text{[dimensionless]}\]
\[a(\varphi) = \begin{cases}\frac{1 - \cos(2\cdot\pi\cdot\varphi/s)}{2} \quad\text{if } 0 \le \varphi < s\\0 \quad\text{otherwise}\end{cases}\]
\[E_{\mathrm{lv}}(t) = \mathrm{emin}_{\mathrm{lv}} + (\mathrm{emax}_{\mathrm{lv}} - \mathrm{emin}_{\mathrm{lv}})\cdot a(\varphi)\]
\[E_{\mathrm{rv}}(t) = \mathrm{emin}_{\mathrm{rv}} + (\mathrm{emax}_{\mathrm{rv}} - \mathrm{emin}_{\mathrm{rv}})\cdot a(\varphi)\]
\[P_{\mathrm{lv}} = E_{\mathrm{lv}}(t)\cdot(V_{\mathrm{lv}} - \mathrm{V0}_{\mathrm{lv}})\]
\[P_{\mathrm{rv}} = E_{\mathrm{rv}}(t)\cdot(V_{\mathrm{rv}} - \mathrm{V0}_{\mathrm{rv}})\]
\[P_i = \frac{V_i - \mathrm{V0}_i}{C_i}\quad\text{for } i = \mathrm{sa},\ \mathrm{sv},\ \mathrm{pa},\ \mathrm{pv}\]
\[Q_{\mathrm{valve}} = \max\left(\frac{(P_{\mathrm{upstream}}-P_{\mathrm{downstream}})}{R_{\mathrm{valve}}},\,0\right)\]
\[Q_{\mathrm{bed}} = \frac{(P_{\mathrm{upstream}}-P_{\mathrm{downstream}})}{R_{\mathrm{bed}}}\]
\[\frac{dV_{\mathrm{lv}}}{dt} = Q_{\mathrm{mitral}} - Q_{\mathrm{aortic}}\]
\[\frac{dV_{\mathrm{sa}}}{dt} = Q_{\mathrm{aortic}} - Q_{\mathrm{systemic}}\]
\[\frac{dV_{\mathrm{sv}}}{dt} = Q_{\mathrm{systemic}} - Q_{\mathrm{tricuspid}}\]
\[\frac{dV_{\mathrm{rv}}}{dt} = Q_{\mathrm{tricuspid}} - Q_{\mathrm{pulmonary\_valve}}\]
\[\frac{dV_{\mathrm{pa}}}{dt} = Q_{\mathrm{pulmonary\_valve}} - Q_{\mathrm{pulmonary}}\]
\[\frac{dV_{\mathrm{pv}}}{dt} = Q_{\mathrm{pulmonary}} - Q_{\mathrm{mitral}}\]
Show source text equations (for comparison with physiology)
T = 60 / heart_rate                     [s; HR in beats/min]
phi = (t modulo T) / T                  [dimensionless]
a(phi) = (1 - cos(2*pi*phi/s))/2         if 0 <= phi < s
       = 0                             otherwise
E_lv(t) = emin_lv + (emax_lv - emin_lv)*a(phi)
E_rv(t) = emin_rv + (emax_rv - emin_rv)*a(phi)
P_lv = E_lv(t)*(V_lv - V0_lv)
P_rv = E_rv(t)*(V_rv - V0_rv)
P_i = (V_i - V0_i)/C_i                  for i = sa, sv, pa, pv
Q_valve = max((P_upstream-P_downstream)/R_valve, 0)
Q_bed = (P_upstream-P_downstream)/R_bed
dV_lv/dt = Q_mitral - Q_aortic
dV_sa/dt = Q_aortic - Q_systemic
dV_sv/dt = Q_systemic - Q_tricuspid
dV_rv/dt = Q_tricuspid - Q_pulmonary_valve
dV_pa/dt = Q_pulmonary_valve - Q_pulmonary
dV_pv/dt = Q_pulmonary - Q_mitral

Here s is systolic_fraction. The symbolic sum of the six derivatives is 0 because each flow appears exactly once with each sign. Numerical conservation is tested separately, and it is not made to pass by renormalizing volumes or by clipping pressures or volumes (only flows are clipped, according to the constitutive law of the valve). Internal units are s, mL, mmHg. The valves are 4 algebraic one-way resistive valves (ideal diodes), and the systemic and pulmonary vascular beds are signed resistances.

Status of the parameters

The document records that all default values are “exploratory, author-selected, unfitted, not clinically validated” and that it claims no literature measurement source. Literature citations support the equation structure, not these values.

FieldDefaultUnit
heart_rate75beat/min
emin_lv / emax_lv0.06 / 2.5mmHg/mL
emin_rv / emax_rv0.03 / 0.8mmHg/mL
systolic_fraction0.41
compliance_sa / sv / pa / pv1.5 / 100 / 5 / 20mL/mmHg
resistance_aortic / tricuspid / pulmonary_valve / mitral0.01 (each)mmHg s/mL
resistance_systemic / resistance_pulmonary1 / 0.1mmHg s/mL
unstressed_volumes (lv, sa, sv, rv, pa, pv)(10, 700, 2500, 10, 100, 400)mL
initial_volumes (same order)(140, 850, 3200, 140, 180, 490)mL (total 5000 mL)

The initial volume distribution is an exploratory starting condition, not a periodic solution.

Scenarios

The three scenarios (baseline, reduced_contractility, partial_contractility_restoration) are separate runs that start from the same initial volumes; they are not a time-ordered treatment course. reduced_contractility changes only emax_lv, from 2.5 → 1.25 mmHg/mL (factor 0.5), and partial_contractility_restoration applies a factor of 1.5 to that value (→ 1.875 mmHg/mL). The changes are applied at time 0 and this is not a drug dose model.

Solver settings actually used (summary.json)

ItemValue
MethodDOP853
cycles60
samples_per_cycle400
rtol1e-09
atol1e-10 mL
max_step_fraction0.005 (= T/200)
periodicity_tolerance_ml0.1 mL

This periodicity criterion (a maximum difference of 0.1 mL across the six volumes between the waveforms of the last and the preceding beat) is a “modest software milestone gate” and not the stricter multi-beat criterion of the verification protocol (1e-4 mL). All three scenarios in this run were recorded with the status periodic_within_declared_gate.

Implementation details

Integration is performed within fixed valve regimes at each valve transition, and the first opening/closing time is found with a terminal pressure-gap event. The continuous extrapolation after an event is used only while finding the solution and is not retained. Integration is also restarted at the systolic/diastolic boundary and at the peak of the activation pulse. The optional cumulative_flows=True adds six integrated flow states.

What is not modelled

Separate atria, septal/pericardial interaction, valve inertia, nonlinear passive ventricular mechanics, reflexes, renal regulation, respiration, oxygen transport, pharmacology. The linear pressure law permits non-physical negative pressures for some parameters/initial states, and this is not hidden. Pulmonary venous pressure is a lumped reservoir pressure and is not evidence of measured atrial pressure or pulmonary edema.

Related source documents: physiology · research_report · decisions

2.2 four-chamber M1: passive atrial snapshot

MODEL_ID="four_chamber_m1", version 1.0.0. Synthetic/exploratory, not clinically validated, and not a published four-chamber reproduction. The existing 6-compartment equations and identity remain unchanged and independent.

State variables

State order (lv, sa, sv, ra, rv, pa, pv, la): 8 total blood volumes (mL, not stressed volume) + 8 auxiliary flow integrals. There are no flow/inertia states. The total volume is the sum of the eight initial volumes declared by the caller and is not normalized.

Edges and equations

EdgeSourceTargetLaw
aorticlvsaideal diode
systemicsasvsigned resistor
venous_returnsvrasigned resistor
tricuspidrarvideal diode
pulmonary_valvervpaideal diode
pulmonarypapvsigned resistor
pulmonary_venouspvlasigned resistor
mitrallalvideal diode
\[B_{\mathrm{source},e} = -1,\quad B_{\mathrm{target},e} = +1,\quad \text{other entries 0}\]
\[\frac{dV}{dt} = B q,\quad \mathbf{1}^{T} B = 0,\quad \frac{d}{dt}\sum V = 0\]
\[T = \frac{60}{\mathrm{HR}}\ [\mathrm{s}],\quad \varphi = \frac{(t \bmod T)}{T},\quad s = \mathrm{systolic\_fraction}\]
\[a(\varphi) = \begin{cases}(1-\cos(2\cdot\pi\cdot\varphi/s))/2 \quad\text{if } \varphi < s\\0 \quad\text{otherwise}\end{cases}\]
\[E_v(t) = \mathrm{Emin}_{v} + (\mathrm{Emax}_{v}-\mathrm{Emin}_{v})\cdot a(\varphi),\quad v \in \{\mathrm{lv},\mathrm{rv}\}\]
\[P_v = E_v(t)\cdot(V_v-\mathrm{V0}_v),\quad v \in \{\mathrm{lv},\mathrm{rv}\}\]
\[P_{\mathrm{a}} = E_{\mathrm{a}}\cdot(V_{\mathrm{a}}-\mathrm{V0}_{\mathrm{a}}),\quad \mathrm{a} \in \{\mathrm{la},\mathrm{ra}\},\quad\text{constant positive } E_{\mathrm{a}}\]
\[P_i = \frac{(V_i-\mathrm{V0}_i)}{C_i},\quad i \in \{\mathrm{sa},\mathrm{sv},\mathrm{pa},\mathrm{pv}\}\]
\[\mathrm{dp}_e = P_{\mathrm{source}(e)}-P_{\mathrm{target}(e)}\]
\[q_e = \max\left(\frac{\mathrm{dp}_e}{R_e},\,0\right),\quad\text{for the four ideal diodes}\]
\[q_e = \frac{\mathrm{dp}_e}{R_e},\quad\text{for the four signed resistors}\]
\[\mathrm{Cumulative}_{e}(t) = \int_{0}^{t} q_{e}(u)\,du\]
Show source text equations (for comparison with physiology_four_chamber_m1)
B[source,e] = -1,  B[target,e] = +1,  other entries 0
dV/dt = B q,   1^T B = 0,   d(sum V)/dt = 0
T = 60/HR s,  phi = (t mod T)/T,  s = systolic_fraction
a(phi) = (1-cos(2*pi*phi/s))/2, if phi < s; 0 otherwise
E_v(t) = Emin_v + (Emax_v-Emin_v)*a(phi),  v in {lv,rv}
P_v = E_v(t)*(V_v-V0_v),                   v in {lv,rv}
P_a = E_a*(V_a-V0_a),  a in {la,ra},  constant positive E_a
P_i = (V_i-V0_i)/C_i,                      i in {sa,sv,pa,pv}
dp_e = P_source(e)-P_target(e)
q_e = max(dp_e/R_e,0),  for the four ideal diodes
q_e = dp_e/R_e,         for the four signed resistors
Cumulative_e(t) = integral from 0 to t of q_e(u) du

The document declares the pressure reference exactly as follows: “model gauge pressure relative to one common fixed external pressure of 0 mmHg; no intrathoracic/pericardial pressure”. This is a mathematical gauge declaration, not a claim about atmospheric/absolute pressure. Negative gauge pressures are also permitted, and there is no clipping or conservation projection.

Status of the parameters

The parameters have no default values (the caller supplies all of them). The demo synthetic_fixture() copies the existing exploratory ventricular/vascular scalar values and sets the new values E_la=.15, E_ra=.10 mmHg/mL, R_venous_return=.05, R_pulmonary_venous=.05 mmHg s/mL as “explicit fixture choices”. In state order, V0=(10,700,2500,20,10,100,400,20) mL and V_initial=(140,850,3200,60,140,180,490,60) mL, and the total declared by the caller is 5120 mL. All are “test design choices, not fitted, literature-derived or normal physiology”. It is recorded that there is no source calibrating atrial elastance, venous inflow resistance, or atrial unstressed volume.

Solver settings actually used (summary.json)

ItemValue
methodDOP853
cycles30
samples_per_cycle400
rtol1e-09
atol1e-10 mL
max_step0.004 s

The maximum periodicity difference in this run was recorded as 0.0007067402634675091 mL (largest compartment: sv). The document states that a fixed number of beats does not prove a steady state and that there is no automatic convergence gate. Conservation report: total volume drift 1.0913936421275139e-11 mL, local balance residual 1.7280399333685637e-11 mL (the latter checks only wiring and rounding and does not independently establish integration accuracy).

What is not modelled

Active atrial contraction, AV delay, inertance, closed-valve regurgitation, FSI, renal/drug/reflex models, clinical validation. The 4 ideal algebraic diodes cannot claim dynamic valve behavior. It is not a reproduction of a Smith/four-chamber reference, and the unconditional equivalence to the 6-compartment model as R→0 is neither claimed nor used as a gate.

Related source documents: physiology_four_chamber_m1 · anatomy_nodes_v2 · decisions

2.3 applied LA–mitral–LV explanatory sidecar

This sidecar is a thin metadata layer on four_chamber_m1@1.0.0, limited to the LA, mitral transport, and the LV. It only reads the M1 manifest and does not touch the equations, parameters, units, outputs, or the existing registry. It creates neither a new physiological model nor an anatomical ontology equivalence, and it accepts no patient, CT, mask, measurement, or observational data whatsoever.

State variables and equations

The sidecar copies and points to M1's selected contract as it is: V_la, V_lv (states, mL), P_la, P_lv (algebraic observables, mmHg, common gauge), Q_mitral (mL/s, LA→LV, non-negative), Q_cum_mitral (mL, running cumulative). It does not create equations; it references the M1 equations (activation, E_v(t), P_v, P_a, ideal-diode q_e, cumulative integral) by document line numbers. E_lv(t) is not a manifest variable but a separate constitutive-law node. The inputs are heart_rate and systolic_fraction.

Status of the parameters

Required parameter references: elastance_la, emin_lv, emax_lv (mmHg/mL), resistance_mitral (mmHg*s/mL), heart_rate (1/min), systolic_fraction (dimensionless), unstressed_volumes, initial_volumes (mL). Values are not obtained from anatomy, and the demo and M1 use the same synthetic fixture.

Demo settings actually used (run_receipt.json)

ItemValue
Number of runs2 runs with identical settings (before/after sidecar construction and verification)
cycles2
samples_per_cycle50
method / rtol / atolDOP853 / 1e-09 / 1e-10 mL
max_step0.004 s
Array shapestime (101,), the rest (101, 8)

The hashes of the full time/volume/pressure/flow/cumulative arrays of the two runs matched, and the manifest hash was also identical before and after (9393e36f…3506). This is a numerical invariance check on a short run and is not steady-state or physiological validation.

What is not modelled

M1's ideal diode is a limited “no-reverse-flow” approximation of the signed/regurgitant transport that the source interface allows. Regurgitation, effective orifice area (EOA is NOT_REPRESENTED), patient geometry, and valve mechanics are not modelled. There is also no change to the right heart, no whole-body application, and no M2/M3 change.

Related source documents: applied_la_mitral_lv · physiology_four_chamber_m1

3. Ontology and semantic layer

3.1 Variable annotations and concept IRIs

physiosim.ontology provides a fully offline registry of 34 variables and an RDFLib named-graph export. It distinguishes physical property, anatomical context, physical bearer, temporal semantics, units, flow direction, equations, dependencies, and provenance context. The document records that this is “a project annotation layer and not an imported reference ontology or a clinical reasoning system”.

3.2 SHACL validation layer

According to the evidence review document, the SHACL shapes were written for OMEX v1.2 composite annotations as 11 general rules and 7 Smith-specific rules, and the positive/negative control fixtures produce exactly the expected results. Translating the SemSim annotations of workspace 267 into OMEX form and running them yields 22 Violations, 7 Warnings, and 46 Info. It is also recorded that SHACL can enforce structural rules but cannot check physiological plausibility or numerical agreement, and that it can pass vacuously on data without annotations. Reproducing it in a new virtual environment from a separate clean working tree gave the same output (controls 0 / 13 / 12), but this is a reproduction test and not confirmation that the shapes are correct.

3.3 Evidence review and anatomy node v2 catalogue

The evidence review (2026-11-01) is a review prior to OWL generation and adopts no mapping. Candidates are proposed together with their grounding locations, and what the sources cannot decide is left as UNKNOWN. Sources of which only the abstract was read were not used to fix relation directions or mappings. It organizes here the Smith 2004 CellML's dictionary of 76 variables and 32 equations, the rejected linkage cases (R1–R13), and the unresolved conflicts (C1–C11).

Anatomy node specification v2 is a list of 31 nodes: 27 use Uberon as the primary identifier, the 4 vascular lumens use FMA as the primary identifier, and every node records the other identifier as a cross-reference. The node classes are modelled / lumped part / catalogue / reference. Catalogue nodes (e.g., the superior/inferior vena cava, coronary sinus, 3 small valves) have identifiers only and make no assertion in the Smith graph. The document states that this identifier rule is based on SPARC, SCKAN, and HRA practice, and that it is not an official recommendation of Uberon by a COMBINE document.

3.4 The three views of the graph viewer

ViewWhat it showsWhat it is not
Source claimsSolid arrows: the original sourceTemplate → targetTemplate claim and the original predicate.The original ACCEPT/REVIEW is not approval of the target mapping.
Model referencesDotted lines: model roles, port references, dependencies (a dependency runs on → dependent).Not to be interpreted as anatomical relations or numerical connections. role_in_smith is a reference-model role and is not evidence of M1-specific functionality.
CatalogueA list grouping the 31 entries by node_class. No structural edges.It is not the full Uberon/FMA or OWL reasoning output.

The layout is merely a hierarchical arrangement for screen alignment and implies no new relation or order. Edge labels use the last part of the predicate IRI as it is (e.g., BFO_0000050), and since the project document keeps RO_0002572 as an IRI without interpretation, no human-readable name was added. This viewer provides no 3D geometry, simulation, or inference verification.

3.5 Mutually independent status axes

The sidecar document and the viewer preserve the axes below separately without merging them. The value on one axis does not imply the value on another axis.

AxisRecorded statusMeaning
Source claim decision (source)ACCEPT / REVIEWIn this run's gate_report.json, of 12 claims, 11 are ACCEPT and 1 is REVIEW. All 12 are NOT_INDEPENDENTLY_EXPERT_REVIEWED. ACCEPT supports explanatory context only.
Target crosswalkPROPOSEDProposed status, not approval.
External numerical use permissionNONENo permission for numerical connection.
G3 (external numerical binding)CLOSEDrequest_numeric_binding always raises PermissionError, even if an ACCEPT or approved claim exists.
C5 part_of adapterdeferred (USER_DECISION_RUNTIME_DEFERRED, applied false)The user decision is recorded but runtime application is deferred. It remains distinct from the original located_in and M1's blood_contained_in.
Mechanical bearerunselectedNot selected between the LV/LA wall and myocardium candidates.
Mitral boundary/annulusmitral_orifice_boundary_equivalence=REVIEW, mitral_annulus_complete_fibrous_ring_interpretation=REVISE, boundary definition DRAFT_MODEL_CONVENTIONREVIEW, REVISE, and DRAFT are not hidden but retained, and do not imply owner review or numerical permission.
Reference snapshot / inherited M1 reviewUNREVIEWEDThe M1 batch-TDD history is unresolved, and the sidecar does not approve it.

For the sidecar, G1 (pinned representation and exact model-contract check) is reported as PASS, and G2 (synthetic run) is reported as PASS only when executed is true (in this run true / PASS). These gates concern the explanatory metadata contract and numerical invariance, and are not semantic approval. The viewer document states that “a declaration of the law/version contract is not proof of numerical integrity.”

Related source documents: ontology · evidence_review · anatomy_nodes_v2 · applied_la_mitral_lv · decisions

4. Verification methods

4.1 Kinds of tests

4.2 Conservation and periodicity audit

Total volume conservation is a checked item and is not made to pass by renormalization or clipping. The research_report (based on earlier results committed to the repository) recorded, for the three canonical runs, a maximum total volume drift of 3.18323e-11 mL (runtime gate 1e-6 mL) and a maximum difference of 2.29051e-05 mL between the six-volume waveforms of the last and the preceding beat (canonical gate 0.1 mL). This site's Phase 1 demo (demos/phase1/summary.json) recorded, in the order baseline / reduced_contractility / partial_contractility_restoration, volume_drift_ml 1.0913936421275139e-11 / 1.000444171950221e-11 / 4.3655745685100555e-11 mL, and final_beat_max_volume_difference_ml 3.880984422721667e-11 / 1.48929757415317e-11 / 2.9103830456733704e-11 mL. The two sets of values are outputs of different runs. This gate is a software milestone criterion and is not the prospective protocol's “three consecutive beats 1e-4 mL” criterion. In the independent review, for the tight baseline the residuals of the last three beats were 2.33e-4, 7.37e-5, 2.29e-5 mL, which did not meet the 1e-4 mL criterion, and with a more precise setting (rtol 1e-11, atol 1e-12, T/400) both scenarios passed. The document records this as a limitation and did not relax the criterion.

Also recorded as limitations: the maximum volume difference of the entire trajectory between the default setting and the tight setting, 0.3153 mL (systemic artery compartment, t=28.856 s), must not be described as agreement to machine precision. When the same solution is resampled at 400 vs 1600 samples/beat, the forward SV differs by about 0.057–0.059%. The local balance residual of the trapezoidal integration performed on the solver's own adaptive nodes over the full run is about 6.76 mL (baseline) and 4.47 mL (reduced) even in the most precise setting, which coexists with nearly exact global conservation of the state volumes. For this reason, strong cumulative-flow claims are withheld.

4.3 Reproducibility

4.4 CI matrix

The workflow “Synthetic research checks” runs on pull requests, pushes to the main branch, and manual dispatch, and runs, on the ubuntu-24.04 runner, a matrix of the two Python versions 3.12.3 and 3.12 (fail-fast off, timeout 25 minutes). The environment variables are set to MPLBACKEND=Agg, PYTHONHASHSEED=0, single-threaded BLAS/OpenMP, API keys as empty strings, and AWS EC2 metadata access disabled. Steps: locked dependencies and clean wheel install → python -I -m pytest → scripts/verify_reproducibility.py → scripts/verify_independent.py → upload the evidence as a private artifact retained for 7 days. The README records that, locally, it was run on macOS ARM64 with Python 3.11.15 (as recorded in the README).

4.5 Independent verification

The independent reviewer did not use the implementation's derivative and metric routines as the sole reference, and instead built separate oracles (an explicit signed incidence matrix, the alternative activation formula sin(pi*phase/systolic_fraction)**2, and random states from 80 seeds). The independent tests were recorded as 12 passed, and the full test suite on the final installed wheel as 64 passed, 5 RDFLib warnings (RDFLib-internal deprecations). These are numbers from different snapshots and are not inconsistent. After the independent review, the owner reproduced two empty-metadata errors (pairs with missing reference/anatomy identifiers were accepted) with failing regression tests and then fixed them. The original review snapshot is preserved, and the re-run evidence was written separately. It remains the case that something is accepted even if the equations change as long as the metadata is the same, and that free-text provenance context is not checked.

The full prospective protocol is not complete (human usability study, event-resolved valve timing, automatic periodicity termination, multi-level contractility sweep, cross-platform reproducibility, patient/reference data validation, etc.).

4.6 Smith 2004 / OpenCOR reference reproduction work (as recorded, report-only)

A reference task that ran the canonical CellML of Smith 2004 in OpenCOR v0.8.3 is recorded separately. This does not mean that the project's simulation engine reproduced the reference trajectories (the engine is recorded as not reproducing the reference trajectories).

4.7 What “passing” means and does not mean

What it means: that, under the conditions tested, the implementation results conform to the declared equations, the independent oracle, and the applicable software tolerance criteria; that the total volume is conserved; that the declared software tolerance criteria were met; and that re-running in the same environment gives the same results.

What it does not mean: biological validity, normal ranges, diagnostic accuracy, patient-specific prediction, clinical suitability, reproduction of a published reference model. The project documents state “Passing these checks is not biological validation”. The error-injection benchmark deliberately leaves 1 false acceptance (an actual RV pressure carrying seemingly correct LV metadata, with a maximum error of 129.793 mmHg relative to the intended LV pressure). Metadata verification is not numerical provenance verification. The benchmark is a synthetic experiment of 12 fixtures using hand-assigned ground truth and is not a user study.

ConditionCorrect acceptCorrect rejectUnsafe acceptFalse reject
manual3090
units_only3360
semantic3810

Related source documents: verification_protocol · independent_verification · research_report · decisions · orchestration_state · evidence_review

5. AI-assisted development and review procedure

The work of this project is carried out using AI coding agents, and what follows transcribes only the scope recorded in docs/orchestration_state.md, docs/decisions.md, and the graph viewer README. In the terms of the same documents, the status vocabulary is strict: PROPOSED < IMPLEMENTED < TESTED < SCIENTIFICALLY VALIDATED. In this project, nothing has been scientifically validated against external physiological data.

Multi-model routing policy

Work is assigned to Claude or Codex model tiers according to risk and complexity. The effective tiers recorded:

TierClaudeCodex
LIGHTclaude-haiku-5-5gpt-5.6-terra
STANDARDclaude-sonnet-5-5gpt-5.6-sol (substitute for the unavailable gpt-6.1-sol)
DEEPclaude-opus-5-5gpt-6-astra

Some Codex model IDs were rejected with model_not_found on this account, and one remains unconfirmed owing to an HTTP 429 response. For this reason it is recorded that the model is always specified explicitly.

Separation of implementation and review

Related source documents: orchestration_state · decisions · independent_verification

6. Decisions and open items

Summary of recorded owner (user) decisions

What is still open

Related source documents: decisions · orchestration_state · evidence_review · applied_la_mitral_lv

7. Limitations

Related source documents: research_report · physiology · ontology · independent_verification · applied_la_mitral_lv

8. Sources and attribution

Smith et al. (2004) and the CellML model

Smith BW, Chase JG, Nokes RI, Shaw GM, Wake G. Minimal haemodynamic system model including ventricular interaction and valve dynamics. Medical Engineering & Physics 26 (2004), 131–139, PMID 15036180.

The Physiome Model Repository (PMR) states that all publicly accessible repository content is licensed under CC BY 3.0 Unported. docs/physiology.md records that redistribution requires attribution of the CellML author (Geoffrey Nunns, Auckland Bioengineering Institute), the original paper (PMID 15036180), the source URL and download time, and the PMR citation (Lloyd et al., Bioinformatics 2008;24(18):2122–2123). This license applies to the CellML encoding and not to the text or figures of the journal paper. This is technical due diligence and not legal advice. CellML and its code are not integrated into this project's numerical engine; it was consulted in designing the structural equations.

Ontologies and vocabularies

Literature (to the extent cited in the documents)

This page copies the above bibliographic information from the documents and adds no author, year, or DOI that is not written in the documents. The full list of papers and specifications cited by the project, with DOI and PMID links, is on the references page.

Open-source software used (GitHub links)

Versions are the values written in the project lock files (requirements.lock, docs/evidence_review/shacl/requirements-shacl.txt) and run records. Licenses were confirmed from the repository license field of the GitHub API on 2026-11-02; for NumPy, Matplotlib, and Pint, which GitHub could not determine, the values from the installed package metadata are given. The copyright of each project belongs to its respective authors.

ProjectVersionLicenseUse in this project
Software actually run for computation and verification
OpenCOR0.8.3GPL-3.0Reference run of the Smith 2004 canonical CellML (A/B/C, RK4). Run only as a separate tool whose code was not put into the numerical engine. The GitHub repository is currently archived.
pySHACL0.26.0Apache-2.0SHACL semantic validation (run_shacl.py)
RDFLib7.6.0BSD-3-ClauseRDF/TriG export, SHACL graph handling
SciPy1.17.1BSD-3-ClauseODE integration (solve_ivp, DOP853)
NumPy2.4.6BSD-3-Clause AND 0BSD AND MIT AND Zlib AND CC0-1.0 (package metadata)Array operations
Matplotlib3.11.2Matplotlib License (PSF-based, package metadata)Demo figure generation
Pint0.25.3BSD (package metadata)Unit conversion and dimension checks
pytest9.2.0MITTest execution
Specifications and data fetched from GitHub and referenced
SemGen (SemBioProcess)OPB v1.07 OWLREADME: redistribution and use permitted only for non-commercial purposes (research, personal, educational), on condition that the full notice is includedRefers to the OPB v1.07 bundled in the repository as the source of physical-property IRIs. The documents contain no record of running the SemGen software.
COMBINE specificationsOMEX metadata v1.0, v1.2No license stated in the repositoryCited as the basis specification for the SHACL shapes and the pressure-reference decision
Projects reviewed only and not included
CardioLab (cardiac-simulator)commit b3f4374MIT (anatomy materials CC BY 4.0)Its structure and verification ideas were reviewed; the engine was not run and no code was taken (ecosystem).
Development, documentation, and deployment tools
Hermes Agentv0.22.5MITAI work orchestration: model routing, integration, verification re-runs, building this site
Codex CLI0.166.0 (earlier work used 0.153.4)Apache-2.0Implementation and cross-review worker runs
Python-Markdown3.7BSD-3-ClauseRenders the repository documents to HTML
Wrangler (cloudflare/workers-sdk)4.156.1Apache-2.0Cloudflare Pages deployment
KaTeX0.19.1MITTypesetting of the equations on the methodology page. Included directly within the site (/assets/katex/, including LICENSE) with no CDN

Claude Code (Anthropic), which was used alongside, is not open source and so is not included in the list above. The graph viewer was written without external libraries. The site menu (top left) was also written without external libraries.

Related source documents: physiology · ontology · evidence_review · anatomy_nodes_v2 · verification_protocol · applied_la_mitral_lv

9. Reproduction information

Source commit: e3d560ed2bad14958b6ff35dff135782468441ca (short e3d560e, branch codex/ontology-graph-view). This commit includes the code of PR #5 (680bd29) and the graph viewer. The graph viewer README records the project's original revision as 680bd29650d97957256dd05fd3281ee8403f6aed. The demo outputs were generated on 2026-11-02 from this commit.

Demo generation commands

DemoCommand
Phase 1python -m physiosim --config experiments/phase1.json --output <output directory>
four-chamber M1python scripts/run_four_chamber_m1.py --output <output directory>
applied LA–mitral–LVpython scripts/run_applied_la_mitral_lv.py --output <output directory>
Graph viewertools/ontology_graph_view/build_graph.py (README example: python build_graph.py --input-dir inputs --output-dir site, requires only the standard library)

Provenance hashes

The integration lead writes /provenance.json, which contains the hashes of all generated files, and publishes it on this site. The manifest.json of Phase 1 and M1 contains the configuration and source hashes and output checksums, and the run_receipt.json of applied contains the array and manifest hashes and output checksums (each receipt excludes its own checksum). Hashes indicate integrity and provenance only and do not imply scientific validity or permission for numerical use.

Related source documents: physiology · physiology_four_chamber_m1 · applied_la_mitral_lv · research_report