Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 11 additions & 8 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,25 +72,28 @@ jobs:
# that is how v0.2.0 shipped with the umbrella still resolving 0.1.0,
# and the only symptom was mkdocstrings failing to collect a class that
# the API page documents. Say so here instead.
# sweep-tasks is not on PyPI and depends on companions that are not
# public yet (sweep-io, sweep-nn), so install it from git WITHOUT deps
# plus the few its API pages import. mkdocstrings only renders
# runner / yaml_io / schemas, which import none of the companions.
# sweep-loss has no API page, so it is not installed at all.
pip install pydantic PyYAML scipy matplotlib
pip install --no-deps "sweep-tasks @ git+https://github.com/DeepWave-KAUST/sweep-tasks@main"
python - <<'PY'
import importlib, sys
from importlib.metadata import version
print("sweep-solver", version("sweep-solver"), "| sweep-agent", version("sweep-agent"))
print("sweep-solver", version("sweep-solver"), "| sweep-agent", version("sweep-agent"),
"| sweep-tasks", version("sweep-tasks"))
print("sweep imported from", importlib.import_module("sweep").__file__)
for mod in ("sweep", "sweep.parallel", "sweep_agent"):
for mod in ("sweep", "sweep.parallel", "sweep_agent",
"sweep_tasks.runner", "sweep_tasks.yaml_io", "sweep_tasks.schemas"):
try:
importlib.import_module(mod)
except Exception as exc:
sys.exit(f"::error::{mod} is not importable ({exc}) — the docs "
f"reference it, so a resolver downgrade would fail later "
f"with an unreadable mkdocstrings error")
PY
# NOTE: sweep-tasks is still a PRIVATE repo, so neither pip nor
# multirepo can reach it from CI. Its Tasks tab is commented out in
# mkdocs.yml — re-enable both (here and there) once sweep-tasks is
# public or on PyPI. Until then:
# pip install sweep-tasks # when on PyPI, or
# pip install "git+https://x-access-token:${GH_TOKEN}@github.com/DeepWave-KAUST/sweep-tasks@main"

- name: Build site (multirepo pulls the package docs)
run: mkdocs build
Expand Down
12 changes: 12 additions & 0 deletions docs/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,18 @@ sweep-agent chat
Equations, propagators, backends, boundary-saving — and 26 runnable
notebooks under [Examples](../solver/examples/).

- :material-cog-play-outline: __[Tasks](tasks/index.md)__

---

Production FWI / LSRTM from one YAML file: specs, CLI, multi-GPU, data IO.

- :material-chart-bell-curve: __[Loss](loss/index.md)__

---

Misfit functions for inversion — L2 to envelope, phase and optimal transport.

- :material-message-processing-outline: __[Agent](agent/index.md)__

---
Expand Down
22 changes: 11 additions & 11 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@ hide:
<div class="sweep-features-3__tag">COMPANIONS · GROWING</div>
<h3 class="sweep-features-3__title">…and the family</h3>
<p class="sweep-features-3__desc">
<code>sweep-tasks</code> (production FWI/LSRTM runner), <code>sweep-loss</code>,
<code>sweep-nn</code>, <code>sweep-tomo</code> — each an independent package,
added to <code>sweepx</code> as it ships.
<code>sweep-tasks</code> (production FWI/LSRTM runner) and
<code>sweep-loss</code> are documented here; <code>sweep-nn</code>
and <code>sweep-tomo</code> follow — each an independent package.
</p>
<span class="sweep-features-3__link">Browse the org <span aria-hidden="true">→</span></span>
</a>
Expand All @@ -45,6 +45,12 @@ hide:
<p class="sweep-new__lede">The latest user-visible additions across the stack. The badge says where each one lives: a released version you get from <code>pip install</code>, or <span class="sweep-new__badge sweep-new__badge--dev">dev</span> for what is merged but not yet on PyPI — these docs are built from the development branch.</p>
<div class="sweep-new__grid">

<a class="sweep-new__card" href="tasks/">
<div class="sweep-new__hd"><span class="sweep-new__badge">docs</span><span class="sweep-new__date">2026-10</span></div>
<div class="sweep-new__name">Tasks and Loss, now open</div>
<div class="sweep-new__desc"><code>sweep-tasks</code>, the YAML-driven production FWI/LSRTM runner, and <code>sweep-loss</code>, two dozen FWI misfits from L2 to optimal transport, are public and documented on this site.</div>
</a>

<a class="sweep-new__card" href="solver/notebooks/32_rwi_acoustic_vs_lsrtm_gradient/">
<div class="sweep-new__hd"><span class="sweep-new__badge">v0.3.5</span><span class="sweep-new__date">2026-10</span></div>
<div class="sweep-new__name">Velocity from reflections</div>
Expand Down Expand Up @@ -75,12 +81,6 @@ hide:
<div class="sweep-new__desc">A model too big for one GPU splits across several — one tile per rank, a halo per step, and a gradient <em>bit-identical</em> to the single-GPU one. 0.3.0 made it faster: up to 3.99&times; on 2-D elastic and 1.56&times; on 3-D elastic.</div>
</a>

<a class="sweep-new__card" href="agent/">
<div class="sweep-new__hd"><span class="sweep-new__badge">agent 0.0.3</span><span class="sweep-new__date">2026-08</span></div>
<div class="sweep-new__name">Natural-language control</div>
<div class="sweep-new__desc">Natural-language control on a plain <code>pip install</code>: forward modelling (acoustic <em>and</em> elastic) plus benchmark models, no <code>sweep-tasks</code> needed.</div>
</a>

</div>
</section>

Expand Down Expand Up @@ -127,13 +127,13 @@ from sweep.equations import Acoustic, ElasticTTI # nine equation families
<div class="sweep-stack__card">
<div class="sweep-stack__head"><span class="sweep-stack__dot sweep-stack__dot--sq" style="background:#ED8B2E"></span><span class="sweep-stack__role">COMPANION</span></div>
<div class="sweep-stack__name">sweep-tasks</div>
<div class="sweep-stack__version">coming</div>
<div class="sweep-stack__version">import sweep_tasks · <a href="tasks/">docs</a></div>
<div class="sweep-stack__desc">Production FWI/LSRTM runner — specs, YAML, multi-GPU, IO.</div>
</div>
<div class="sweep-stack__card">
<div class="sweep-stack__head"><span class="sweep-stack__dot sweep-stack__dot--sq" style="background:#ED8B2E"></span><span class="sweep-stack__role">COMPANION</span></div>
<div class="sweep-stack__name">sweep-loss</div>
<div class="sweep-stack__version">coming</div>
<div class="sweep-stack__version">import sweep_loss · <a href="loss/">docs</a></div>
<div class="sweep-stack__desc">Misfit / loss functions for inversion.</div>
</div>
<div class="sweep-stack__card">
Expand Down
8 changes: 4 additions & 4 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,8 @@ extra:
# not listed falls back to repo_url/repo_name above (the umbrella).
section_repos:
solver: DeepWave-KAUST/sweep
tasks: DeepWave-KAUST/sweep-tasks
loss: DeepWave-KAUST/sweep-loss
agent: DeepWave-KAUST/sweep-agent
social:
- icon: fontawesome/brands/github
Expand Down Expand Up @@ -116,10 +118,8 @@ nav:
- Home: index.md
- Getting started: getting-started.md
- Solver: '!import https://github.com/DeepWave-KAUST/sweep?branch=dev&docs_dir=docs/*'
# Tasks is ready (docs live in the sweep-tasks repo) but that repo is still
# PRIVATE, so CI can't clone it. Uncomment this line — and the sweep-tasks
# pip install in .github/workflows/docs.yml — once it is public / on PyPI.
# - Tasks: '!import https://github.com/DeepWave-KAUST/sweep-tasks?branch=main&docs_dir=docs/*'
- Tasks: '!import https://github.com/DeepWave-KAUST/sweep-tasks?branch=main&docs_dir=docs/*'
- Loss: '!import https://github.com/DeepWave-KAUST/sweep-loss?branch=master&docs_dir=docs/*'
- Agent: '!import https://github.com/DeepWave-KAUST/sweep-agent?branch=main&docs_dir=docs/*'

markdown_extensions:
Expand Down
4 changes: 4 additions & 0 deletions overrides/main.html
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ <h6>Documentation</h6>
<ul>
<li><a href="{{ 'getting-started/' | url }}">Getting started</a></li>
<li><a href="{{ 'solver/' | url }}">Solver</a></li>
<li><a href="{{ 'tasks/' | url }}">Tasks</a></li>
<li><a href="{{ 'loss/' | url }}">Loss</a></li>
<li><a href="{{ 'agent/' | url }}">Agent</a></li>
<li><a href="{{ 'solver/api/' | url }}">Solver API</a></li>
</ul>
Expand All @@ -73,6 +75,8 @@ <h6>Packages</h6>
<ul>
<li><a href="https://github.com/DeepWave-KAUST/sweepx">sweepx</a></li>
<li><a href="https://github.com/DeepWave-KAUST/sweep">sweep-solver</a></li>
<li><a href="https://github.com/DeepWave-KAUST/sweep-tasks">sweep-tasks</a></li>
<li><a href="https://github.com/DeepWave-KAUST/sweep-loss">sweep-loss</a></li>
<li><a href="https://github.com/DeepWave-KAUST/sweep-agent">sweep-agent</a></li>
<li><a href="https://github.com/DeepWave-KAUST">GitHub org</a></li>
</ul>
Expand Down