amoc-utac 1.0.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.
Files changed (53) hide show
  1. amoc_utac-1.0.0/.github/ISSUE_TEMPLATE/bug_report.md +35 -0
  2. amoc_utac-1.0.0/.github/ISSUE_TEMPLATE/feature_request.md +29 -0
  3. amoc_utac-1.0.0/.github/PULL_REQUEST_TEMPLATE.md +31 -0
  4. amoc_utac-1.0.0/.github/workflows/ci.yml +48 -0
  5. amoc_utac-1.0.0/.github/workflows/release.yml +118 -0
  6. amoc_utac-1.0.0/.gitignore +22 -0
  7. amoc_utac-1.0.0/.pre-commit-config.yaml +17 -0
  8. amoc_utac-1.0.0/.zenodo.json +33 -0
  9. amoc_utac-1.0.0/CHANGELOG.md +20 -0
  10. amoc_utac-1.0.0/CITATION.cff +65 -0
  11. amoc_utac-1.0.0/CONTRIBUTING.md +48 -0
  12. amoc_utac-1.0.0/LICENSE +21 -0
  13. amoc_utac-1.0.0/PKG-INFO +108 -0
  14. amoc_utac-1.0.0/README.md +71 -0
  15. amoc_utac-1.0.0/README_QUICKSTART.md +52 -0
  16. amoc_utac-1.0.0/RELEASE_GUIDE.md +42 -0
  17. amoc_utac-1.0.0/amoc_utac/__init__.py +29 -0
  18. amoc_utac-1.0.0/amoc_utac/benchmark.py +95 -0
  19. amoc_utac-1.0.0/amoc_utac/cli.py +161 -0
  20. amoc_utac-1.0.0/amoc_utac/constants.py +52 -0
  21. amoc_utac-1.0.0/amoc_utac/crep_amoc.py +110 -0
  22. amoc_utac-1.0.0/amoc_utac/ethics_gate.py +89 -0
  23. amoc_utac-1.0.0/amoc_utac/fingerprint.py +99 -0
  24. amoc_utac-1.0.0/amoc_utac/freshwater.py +60 -0
  25. amoc_utac-1.0.0/amoc_utac/rapid_loader.py +113 -0
  26. amoc_utac-1.0.0/amoc_utac/system.py +336 -0
  27. amoc_utac-1.0.0/amoc_utac/tension_metric.py +73 -0
  28. amoc_utac-1.0.0/amoc_utac/tipping_predictor.py +182 -0
  29. amoc_utac-1.0.0/data/rapid_mocha_summary.yaml +38 -0
  30. amoc_utac-1.0.0/data/van_westen_2024_targets.yaml +81 -0
  31. amoc_utac-1.0.0/docs/cli.md +88 -0
  32. amoc_utac-1.0.0/docs/index.md +37 -0
  33. amoc_utac-1.0.0/docs/templates.md +111 -0
  34. amoc_utac-1.0.0/mkdocs.yml +43 -0
  35. amoc_utac-1.0.0/notebooks/01_amoc_utac_overview.ipynb +107 -0
  36. amoc_utac-1.0.0/notebooks/02_rapid_crep_analysis.ipynb +93 -0
  37. amoc_utac-1.0.0/notebooks/03_tipping_prediction.ipynb +73 -0
  38. amoc_utac-1.0.0/notebooks/04_gamma_amoc_calibration.ipynb +112 -0
  39. amoc_utac-1.0.0/pyproject.toml +90 -0
  40. amoc_utac-1.0.0/src/diamond_setup/__init__.py +4 -0
  41. amoc_utac-1.0.0/src/diamond_setup/_types.py +13 -0
  42. amoc_utac-1.0.0/src/diamond_setup/cli.py +183 -0
  43. amoc_utac-1.0.0/src/diamond_setup/preset.py +84 -0
  44. amoc_utac-1.0.0/src/diamond_setup/templates/__init__.py +13 -0
  45. amoc_utac-1.0.0/src/diamond_setup/templates/genesis.py +84 -0
  46. amoc_utac-1.0.0/src/diamond_setup/templates/minimal.py +143 -0
  47. amoc_utac-1.0.0/src/diamond_setup/validator.py +67 -0
  48. amoc_utac-1.0.0/tests/__init__.py +0 -0
  49. amoc_utac-1.0.0/tests/test_diamond_interface.py +149 -0
  50. amoc_utac-1.0.0/tests/test_fingerprint.py +98 -0
  51. amoc_utac-1.0.0/tests/test_freshwater.py +91 -0
  52. amoc_utac-1.0.0/tests/test_tipping_predictor.py +107 -0
  53. amoc_utac-1.0.0/uv.lock +1210 -0
@@ -0,0 +1,35 @@
1
+ ---
2
+ name: Bug report
3
+ about: Report something that isn't working as expected
4
+ title: "[BUG] "
5
+ labels: bug
6
+ assignees: ""
7
+ ---
8
+
9
+ ## Description
10
+
11
+ A clear and concise description of the bug.
12
+
13
+ ## Steps to reproduce
14
+
15
+ 1. ...
16
+ 2. ...
17
+ 3. ...
18
+
19
+ ## Expected behavior
20
+
21
+ What you expected to happen.
22
+
23
+ ## Actual behavior
24
+
25
+ What actually happened (include full error messages / tracebacks if any).
26
+
27
+ ## Environment
28
+
29
+ - Package version: (`pip show amoc-utac` or `git describe --tags`)
30
+ - Python version:
31
+ - OS:
32
+
33
+ ## Additional context
34
+
35
+ Anything else relevant — logs, screenshots, related issues.
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: Feature request
3
+ about: Suggest a new feature, module, or enhancement
4
+ title: "[FEATURE] "
5
+ labels: enhancement
6
+ assignees: ""
7
+ ---
8
+
9
+ ## Summary
10
+
11
+ A clear and concise description of the feature.
12
+
13
+ ## Motivation
14
+
15
+ Why is this needed? What problem does it solve, or what new capability
16
+ does it enable within the GenesisAeon ecosystem?
17
+
18
+ ## Proposed approach
19
+
20
+ How might this be implemented? (Sketches, pseudocode, references to
21
+ related GenesisAeon packages or Diamond Interface methods are welcome.)
22
+
23
+ ## Alternatives considered
24
+
25
+ Any alternative approaches you've thought about.
26
+
27
+ ## Additional context
28
+
29
+ Links to relevant papers, prior discussion, or related issues/PRs.
@@ -0,0 +1,31 @@
1
+ ## Summary
2
+
3
+ What does this PR do, in one or two sentences?
4
+
5
+ ## Related issue(s)
6
+
7
+ Closes #...
8
+
9
+ ## Type of change
10
+
11
+ - [ ] Bug fix
12
+ - [ ] New feature
13
+ - [ ] Breaking change (Diamond Interface or other public API)
14
+ - [ ] Documentation
15
+ - [ ] Tooling / CI / release process
16
+ - [ ] Dependency update
17
+
18
+ ## Checklist
19
+
20
+ - [ ] Tests added/updated and passing locally (`pytest`)
21
+ - [ ] `CHANGELOG.md` updated under `## [Unreleased]`
22
+ - [ ] Documentation updated (README, docstrings, notebooks if relevant)
23
+ - [ ] If this changes `run_cycle` / `get_crep_state` / `get_utac_state` /
24
+ `get_phase_events` / `to_zenodo_record`: noted as a breaking change
25
+ and version bump plan described above
26
+ - [ ] If this touches scientific claims/predictions: sources cited and
27
+ speculative vs. validated status is clear
28
+
29
+ ## Additional notes
30
+
31
+ Anything reviewers should know.
@@ -0,0 +1,48 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: ["main", "master", "claude/**"]
6
+ pull_request:
7
+ branches: ["main", "master"]
8
+
9
+ concurrency:
10
+ group: ${{ github.workflow }}-${{ github.ref }}
11
+ cancel-in-progress: true
12
+
13
+ jobs:
14
+ lint:
15
+ name: Lint (ruff)
16
+ runs-on: ubuntu-latest
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+ - uses: actions/setup-python@v5
20
+ with:
21
+ python-version: "3.11"
22
+ - name: Install dev dependencies
23
+ run: pip install -e ".[dev]"
24
+ - name: Run ruff
25
+ run: ruff check amoc_utac tests
26
+
27
+ test:
28
+ name: Tests (Python ${{ matrix.python-version }})
29
+ runs-on: ubuntu-latest
30
+ strategy:
31
+ fail-fast: false
32
+ matrix:
33
+ python-version: ["3.11", "3.12"]
34
+ steps:
35
+ - uses: actions/checkout@v4
36
+ - uses: actions/setup-python@v5
37
+ with:
38
+ python-version: ${{ matrix.python-version }}
39
+ - name: Install dependencies
40
+ run: pip install -e ".[dev]"
41
+ - name: Run pytest with coverage
42
+ run: pytest --cov=amoc_utac --cov-report=xml -v
43
+ - name: Upload coverage
44
+ if: matrix.python-version == '3.11'
45
+ uses: codecov/codecov-action@v4
46
+ with:
47
+ token: ${{ secrets.CODECOV_TOKEN }}
48
+ files: coverage.xml
@@ -0,0 +1,118 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*.*.*"
7
+ - "v*.*.*-rc*"
8
+ - "v*.*.*-alpha*"
9
+ - "v*.*.*-beta*"
10
+
11
+ permissions:
12
+ contents: write
13
+ id-token: write # for PyPI trusted publishing, if configured
14
+
15
+ jobs:
16
+ build:
17
+ name: Build distribution
18
+ runs-on: ubuntu-latest
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+ with:
22
+ fetch-depth: 0
23
+
24
+ - name: Set up Python
25
+ uses: actions/setup-python@v5
26
+ with:
27
+ python-version: "3.12"
28
+
29
+ - name: Install build tooling
30
+ run: python -m pip install --upgrade pip build
31
+
32
+ - name: Build sdist and wheel
33
+ run: python -m build
34
+
35
+ - name: Upload build artifacts
36
+ uses: actions/upload-artifact@v4
37
+ with:
38
+ name: dist
39
+ path: dist/
40
+
41
+ test:
42
+ name: Run test suite
43
+ runs-on: ubuntu-latest
44
+ steps:
45
+ - uses: actions/checkout@v4
46
+
47
+ - name: Set up Python
48
+ uses: actions/setup-python@v5
49
+ with:
50
+ python-version: "3.12"
51
+
52
+ - name: Install package with dev/test extras
53
+ run: |
54
+ python -m pip install --upgrade pip
55
+ if python -c "import tomllib" 2>/dev/null; then :; fi
56
+ pip install -e ".[dev]" 2>/dev/null || pip install -e ".[test]" 2>/dev/null || pip install -e "."
57
+ pip install pytest pytest-cov
58
+
59
+ - name: Run tests
60
+ run: pytest -q || pytest -q --no-header
61
+
62
+ publish-canary:
63
+ name: Publish canary (TestPyPI + pre-release)
64
+ needs: [build, test]
65
+ if: contains(github.ref_name, '-rc') || contains(github.ref_name, '-alpha') || contains(github.ref_name, '-beta')
66
+ runs-on: ubuntu-latest
67
+ environment: testpypi
68
+ steps:
69
+ - uses: actions/download-artifact@v4
70
+ with:
71
+ name: dist
72
+ path: dist/
73
+
74
+ - name: Publish to TestPyPI
75
+ uses: pypa/gh-action-pypi-publish@release/v1
76
+ with:
77
+ repository-url: https://test.pypi.org/legacy/
78
+ password: ${{ secrets.TEST_PYPI_API_TOKEN }}
79
+ skip-existing: true
80
+
81
+ - name: Create GitHub pre-release
82
+ uses: softprops/action-gh-release@v2
83
+ with:
84
+ files: dist/*
85
+ prerelease: true
86
+ generate_release_notes: true
87
+
88
+ publish-production:
89
+ name: Publish production (PyPI + release + Zenodo archive)
90
+ needs: [build, test]
91
+ if: ${{ !contains(github.ref_name, '-rc') && !contains(github.ref_name, '-alpha') && !contains(github.ref_name, '-beta') }}
92
+ runs-on: ubuntu-latest
93
+ environment: pypi
94
+ steps:
95
+ - uses: actions/download-artifact@v4
96
+ with:
97
+ name: dist
98
+ path: dist/
99
+
100
+ - name: Publish to PyPI
101
+ uses: pypa/gh-action-pypi-publish@release/v1
102
+ with:
103
+ password: ${{ secrets.PYPI_API_TOKEN }}
104
+ skip-existing: true
105
+
106
+ - name: Create GitHub Release
107
+ uses: softprops/action-gh-release@v2
108
+ with:
109
+ files: dist/*
110
+ prerelease: false
111
+ generate_release_notes: true
112
+
113
+ # NOTE: Zenodo archival of this GitHub Release happens automatically
114
+ # IF this repo has Zenodo-GitHub integration enabled at
115
+ # https://zenodo.org/account/settings/github/ (a per-repo, per-owner
116
+ # OAuth toggle on zenodo.org — cannot be set from a workflow file).
117
+ # Once enabled, every GitHub Release like this one mints/updates a
118
+ # Zenodo DOI automatically using the .zenodo.json metadata in this repo.
@@ -0,0 +1,22 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.egg-info/
5
+ .eggs/
6
+ dist/
7
+ build/
8
+ .venv/
9
+ .uv/
10
+
11
+ # Testing
12
+ .coverage
13
+ htmlcov/
14
+ .pytest_cache/
15
+
16
+ # Docs
17
+ site/
18
+
19
+ # Editors
20
+ .vscode/
21
+ .idea/
22
+ *.swp
@@ -0,0 +1,17 @@
1
+ repos:
2
+ - repo: https://github.com/astral-sh/ruff-pre-commit
3
+ rev: v0.6.0
4
+ hooks:
5
+ - id: ruff
6
+ args: [--fix]
7
+ - id: ruff-format
8
+
9
+ - repo: https://github.com/pre-commit/pre-commit-hooks
10
+ rev: v4.6.0
11
+ hooks:
12
+ - id: trailing-whitespace
13
+ - id: end-of-file-fixer
14
+ - id: check-yaml
15
+ - id: check-toml
16
+ - id: check-merge-conflict
17
+ - id: debug-statements
@@ -0,0 +1,33 @@
1
+ {
2
+ "title": "amoc-utac — P18: AMOC collapse early warning — GenesisAeon Package 18 (UTAC/CREP dynamical system)",
3
+ "description": "<p>AMOC collapse early warning — GenesisAeon Package 18 (UTAC/CREP dynamical system). The UTAC-Logistic ODE identifies critical thresholds in Atlantic Meridional Overturning Circulation (AMOC) strength time series, enabling early-warning detection of potential collapse events; CREP metrics characterise coherence and emergence in thermohaline circulation dynamics.</p><p>Part of the <strong>GenesisAeon</strong> ecosystem (P18, domain: oceanography / AMOC tipping). Within the GenesisAeon CREP Criticality Spectrum, this package's characteristic coupling value is Γ ≈ 0.251.</p><p>See <a href=\"https://github.com/GenesisAeon/amoc-utac\">github.com/GenesisAeon/amoc-utac</a> for source, documentation, and reproducibility notebooks.</p>",
4
+ "creators": [
5
+ {
6
+ "name": "Römer, Johann",
7
+ "affiliation": "Independent Researcher / MOR Research Collective"
8
+ }
9
+ ],
10
+ "license": "MIT",
11
+ "upload_type": "software",
12
+ "access_right": "open",
13
+ "keywords": [
14
+ "GenesisAeon",
15
+ "P18",
16
+ "oceanography / AMOC tipping",
17
+ "UTAC",
18
+ "CREP",
19
+ "open science"
20
+ ],
21
+ "related_identifiers": [
22
+ {
23
+ "identifier": "10.5281/zenodo.19645351",
24
+ "relation": "isPartOf",
25
+ "resource_type": "publication-article",
26
+ "scheme": "doi"
27
+ }
28
+ ],
29
+ "version": "1.0.0",
30
+ "communities": [
31
+ { "identifier": "genesisaeon" }
32
+ ]
33
+ }
@@ -0,0 +1,20 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [1.0.0] - 2026
11
+ ### Added
12
+ - Initial v1.0.0 release as part of the GenesisAeon ecosystem-wide 1.0.0
13
+ milestone.
14
+ - Standardized release tooling: `.zenodo.json`, GitHub Actions release
15
+ workflow (`.github/workflows/release.yml`), `RELEASE_GUIDE.md`,
16
+ `CONTRIBUTING.md`, issue/PR templates.
17
+
18
+ ### Changed
19
+ - Project metadata (`pyproject.toml`) normalized: version bumped from
20
+ 0.1.0 to 1.0.0.
@@ -0,0 +1,65 @@
1
+ cff-version: 1.2.0
2
+ message: >
3
+ If you use amoc-utac in your research, please cite both this software
4
+ and the primary reference (van Westen et al. 2024).
5
+
6
+ title: "amoc-utac — Atlantic Meridional Overturning Circulation Collapse Early Warning"
7
+ version: 0.1.0
8
+ date-released: "2026-04-23"
9
+ license: MIT
10
+ repository-code: "https://github.com/genesisaeon/amoc-utac"
11
+
12
+ authors:
13
+ - family-names: Römer
14
+ given-names: Johann
15
+ affiliation: "MOR Research Collective"
16
+
17
+ abstract: >
18
+ GenesisAeon Package 18. Models the Atlantic Meridional Overturning
19
+ Circulation (AMOC) as a UTAC dynamical system with CREP tensor coupling.
20
+ Central result: Γ_AMOC = arctanh(η=0.50) / σ=2.2 ≈ 0.251, placing AMOC
21
+ in the medium-CREP regime and establishing cross-domain universality with
22
+ neural criticality (Package 20) at the 50% homeostatic efficiency setpoint.
23
+
24
+ keywords:
25
+ - AMOC
26
+ - tipping point
27
+ - UTAC
28
+ - CREP
29
+ - ocean circulation
30
+ - GenesisAeon
31
+ - early warning signal
32
+ - critical slowing down
33
+
34
+ references:
35
+ - type: article
36
+ title: >
37
+ Physics-based early warning signal shows that AMOC is on tipping course
38
+ authors:
39
+ - family-names: van Westen
40
+ given-names: René M.
41
+ - family-names: Kliphuis
42
+ given-names: Michiel
43
+ - family-names: Dijkstra
44
+ given-names: Henk A.
45
+ journal: "Science Advances"
46
+ volume: 10
47
+ issue: 6
48
+ year: 2024
49
+ doi: 10.1126/sciadv.adk1189
50
+
51
+ - type: article
52
+ title: "Warning of a forthcoming collapse of the AMOC"
53
+ authors:
54
+ - family-names: Ditlevsen
55
+ given-names: Peter
56
+ - family-names: Ditlevsen
57
+ given-names: Susanne
58
+ journal: "Nature Communications"
59
+ year: 2023
60
+ doi: 10.1038/s41467-023-39810-w
61
+
62
+ identifiers:
63
+ - type: doi
64
+ value: 10.5281/zenodo.19645351
65
+ description: "Zenodo archive"
@@ -0,0 +1,48 @@
1
+ # Contributing
2
+
3
+ Thanks for your interest in contributing to this GenesisAeon ecosystem
4
+ package!
5
+
6
+ ## Getting started
7
+
8
+ 1. Fork and clone the repository.
9
+ 2. Create a virtual environment: `python -m venv .venv && source .venv/bin/activate`
10
+ (or `.venv\Scripts\activate` on Windows).
11
+ 3. Install in editable mode with dev dependencies:
12
+ `pip install -e ".[dev]"`.
13
+ 4. Run the test suite: `pytest`.
14
+
15
+ ## Code style
16
+
17
+ - Format and lint with `ruff check amoc_utac tests`.
18
+ - Type-check with `mypy` (this repo uses `strict = true`).
19
+ - Keep functions documented with docstrings.
20
+
21
+ ## Diamond Interface
22
+
23
+ `amoc_utac.AmocUTAC` implements the GenesisAeon Diamond Interface
24
+ (`run_cycle`, `get_crep_state`, `get_utac_state`, `get_phase_events`,
25
+ `to_zenodo_record`). Any change to these methods' signatures or return
26
+ shapes is a **breaking change** and requires a MAJOR version bump (see
27
+ `RELEASE_GUIDE.md`).
28
+
29
+ ## Pull requests
30
+
31
+ - One logical change per PR.
32
+ - Add or update tests for any behavioral change.
33
+ - Update `CHANGELOG.md` under an `## [Unreleased]` section.
34
+ - Fill out the PR template (`.github/PULL_REQUEST_TEMPLATE.md`).
35
+
36
+ ## Reporting issues
37
+
38
+ Please use the issue templates in `.github/ISSUE_TEMPLATE/` — they help us
39
+ triage bug reports vs. feature requests quickly.
40
+
41
+ ## Scientific claims
42
+
43
+ This package implements a physics-based early-warning model for AMOC
44
+ collapse (Γ_AMOC ≈ 0.251). If your contribution touches the scientific
45
+ model, prediction, or benchmark data:
46
+ - Cite the source (e.g. van Westen et al. 2024, Ditlevsen & Ditlevsen
47
+ 2023).
48
+ - Clearly mark speculative vs. validated claims.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 JohannRömer
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.
@@ -0,0 +1,108 @@
1
+ Metadata-Version: 2.4
2
+ Name: amoc-utac
3
+ Version: 1.0.0
4
+ Summary: AMOC collapse early warning — GenesisAeon Package 18 (UTAC/CREP dynamical system)
5
+ Project-URL: Homepage, https://github.com/genesisaeon/amoc-utac
6
+ Project-URL: Repository, https://github.com/genesisaeon/amoc-utac
7
+ Project-URL: Zenodo, https://doi.org/10.5281/zenodo.19645351
8
+ Project-URL: Reference, https://doi.org/10.1126/sciadv.adk1189
9
+ Author-email: Johann Römer <j.roemer@mor-research.org>
10
+ License: MIT
11
+ License-File: LICENSE
12
+ Keywords: AMOC,CREP,GenesisAeon,UTAC,climate,early warning,ocean circulation,tipping point
13
+ Classifier: Development Status :: 3 - Alpha
14
+ Classifier: Intended Audience :: Science/Research
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Topic :: Scientific/Engineering :: Atmospheric Science
20
+ Classifier: Topic :: Scientific/Engineering :: Physics
21
+ Requires-Python: >=3.11
22
+ Requires-Dist: matplotlib>=3.9
23
+ Requires-Dist: numpy>=1.26
24
+ Requires-Dist: pyyaml>=6.0
25
+ Requires-Dist: rich>=13.7.0
26
+ Requires-Dist: scipy>=1.13
27
+ Requires-Dist: typer>=0.12.0
28
+ Provides-Extra: dev
29
+ Requires-Dist: mypy>=1.10.0; extra == 'dev'
30
+ Requires-Dist: pytest-cov>=5.0.0; extra == 'dev'
31
+ Requires-Dist: pytest>=8.0.0; extra == 'dev'
32
+ Requires-Dist: ruff>=0.6.0; extra == 'dev'
33
+ Provides-Extra: notebooks
34
+ Requires-Dist: ipykernel>=6.0.0; extra == 'notebooks'
35
+ Requires-Dist: jupyter>=1.0.0; extra == 'notebooks'
36
+ Description-Content-Type: text/markdown
37
+
38
+ # amoc-utac
39
+
40
+ > GenesisAeon Package 18 — Atlantic Meridional Overturning Circulation as UTAC System
41
+
42
+ <p align="center">
43
+ <a href="https://doi.org/10.5281/zenodo.19645351"><img src="https://zenodo.org/badge/DOI/10.5281/zenodo.19645351.svg" alt="DOI (GenesisAeon Whitepaper)"/></a>
44
+ <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="MIT License"/></a>
45
+ <a href="https://creativecommons.org/licenses/by/4.0/"><img src="https://img.shields.io/badge/docs-CC%20BY%204.0-lightblue.svg" alt="CC BY 4.0"/></a>
46
+ <a href="https://github.com/GenesisAeon/genesis-os"><img src="https://img.shields.io/badge/part%20of-genesis--os-blueviolet" alt="Part of genesis-os"/></a>
47
+ <img src="https://img.shields.io/badge/UTAC-package%2018-orange" alt="Package 18"/>
48
+ </p>
49
+
50
+ **AMOC modelled as UTAC dynamical system** with physics-based early-warning from van Westen et al. (2024).
51
+
52
+ **Key result**: Γ_AMOC ≈ 0.251 (medium-CREP) → same universality point as neural criticality (η = 50 %).
53
+
54
+ ## Installation
55
+
56
+ ```bash
57
+ pip install amoc-utac
58
+ ```
59
+
60
+ For development:
61
+
62
+ ```bash
63
+ pip install -e ".[dev]"
64
+ ```
65
+
66
+ ## Quickstart
67
+
68
+ ```bash
69
+ amoc-utac run --duration 120
70
+ amoc-utac tipping-estimate
71
+ amoc-utac zenodo-export
72
+ ```
73
+
74
+ ## Integration in genesis-os
75
+
76
+ ```python
77
+ from genesis_os import GenesisOS
78
+ os = GenesisOS()
79
+ amoc = os.load_package(18)
80
+ results = amoc.run_cycle(duration_years=120)
81
+ ```
82
+
83
+ ## Benchmark
84
+
85
+ Validated against RAPID array, van Westen 2024 & Ditlevsen 2023.
86
+
87
+ ## Falsifiable Prediction
88
+
89
+ AMOC crosses 50 % weakening (H* = 0.5 K) between 2045–2065.
90
+
91
+ ## Role in the GenesisAeon Ecosystem
92
+
93
+ `amoc-utac` is **P18** in the GenesisAeon ecosystem, covering the
94
+ oceanography / AMOC tipping domain. It applies the UTAC-Logistic ODE and
95
+ CREP metrics to the Atlantic Meridional Overturning Circulation, sharing
96
+ its criticality framework (Γ ≈ 0.251) with sibling packages across other
97
+ domains (e.g. neuroscience, heliophysics).
98
+
99
+ ## Citation
100
+
101
+ [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.PLACEHOLDER.svg)](https://doi.org/10.5281/zenodo.PLACEHOLDER)
102
+
103
+ DOI will be assigned automatically on first GitHub Release once
104
+ Zenodo–GitHub integration is enabled for this repo.
105
+
106
+ ## License
107
+
108
+ Code: MIT • Docs & Data: CC BY 4.0
@@ -0,0 +1,71 @@
1
+ # amoc-utac
2
+
3
+ > GenesisAeon Package 18 — Atlantic Meridional Overturning Circulation as UTAC System
4
+
5
+ <p align="center">
6
+ <a href="https://doi.org/10.5281/zenodo.19645351"><img src="https://zenodo.org/badge/DOI/10.5281/zenodo.19645351.svg" alt="DOI (GenesisAeon Whitepaper)"/></a>
7
+ <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="MIT License"/></a>
8
+ <a href="https://creativecommons.org/licenses/by/4.0/"><img src="https://img.shields.io/badge/docs-CC%20BY%204.0-lightblue.svg" alt="CC BY 4.0"/></a>
9
+ <a href="https://github.com/GenesisAeon/genesis-os"><img src="https://img.shields.io/badge/part%20of-genesis--os-blueviolet" alt="Part of genesis-os"/></a>
10
+ <img src="https://img.shields.io/badge/UTAC-package%2018-orange" alt="Package 18"/>
11
+ </p>
12
+
13
+ **AMOC modelled as UTAC dynamical system** with physics-based early-warning from van Westen et al. (2024).
14
+
15
+ **Key result**: Γ_AMOC ≈ 0.251 (medium-CREP) → same universality point as neural criticality (η = 50 %).
16
+
17
+ ## Installation
18
+
19
+ ```bash
20
+ pip install amoc-utac
21
+ ```
22
+
23
+ For development:
24
+
25
+ ```bash
26
+ pip install -e ".[dev]"
27
+ ```
28
+
29
+ ## Quickstart
30
+
31
+ ```bash
32
+ amoc-utac run --duration 120
33
+ amoc-utac tipping-estimate
34
+ amoc-utac zenodo-export
35
+ ```
36
+
37
+ ## Integration in genesis-os
38
+
39
+ ```python
40
+ from genesis_os import GenesisOS
41
+ os = GenesisOS()
42
+ amoc = os.load_package(18)
43
+ results = amoc.run_cycle(duration_years=120)
44
+ ```
45
+
46
+ ## Benchmark
47
+
48
+ Validated against RAPID array, van Westen 2024 & Ditlevsen 2023.
49
+
50
+ ## Falsifiable Prediction
51
+
52
+ AMOC crosses 50 % weakening (H* = 0.5 K) between 2045–2065.
53
+
54
+ ## Role in the GenesisAeon Ecosystem
55
+
56
+ `amoc-utac` is **P18** in the GenesisAeon ecosystem, covering the
57
+ oceanography / AMOC tipping domain. It applies the UTAC-Logistic ODE and
58
+ CREP metrics to the Atlantic Meridional Overturning Circulation, sharing
59
+ its criticality framework (Γ ≈ 0.251) with sibling packages across other
60
+ domains (e.g. neuroscience, heliophysics).
61
+
62
+ ## Citation
63
+
64
+ [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.PLACEHOLDER.svg)](https://doi.org/10.5281/zenodo.PLACEHOLDER)
65
+
66
+ DOI will be assigned automatically on first GitHub Release once
67
+ Zenodo–GitHub integration is enabled for this repo.
68
+
69
+ ## License
70
+
71
+ Code: MIT • Docs & Data: CC BY 4.0