Skip to content

cosmoTRON

cosmoTRON is an automated large-scale-structure (LSS) power-spectrum analysis system: it turns galaxy clustering and/or weak-lensing shear catalogues — single-probe or a joint 3×2pt — into a validated angular power spectrum and cosmology analysis:

%%{init: {"flowchart": {"useMaxWidth": false}}}%%
flowchart TD
    A[Catalogue] --> B[HEALPix maps]
    B --> C[Mask apodisation]
    C --> D["Pseudo-Cℓ<br/>(spin-0/2)"]
    D --> E[Covariance]
    E --> F[SACC data vector]
    F --> G[Systematics deprojection<br/>&amp; null tests]
    F -.->|optional| H[Inference]
    G --> I{{Review}}
    H --> I
    I -->|"FAIL: fix root cause,<br/>re-review (&le;2&times;)"| F
    I -->|PASS| J[Done]

The numerical pipeline lives in deterministic Python tools, exposed as an MCP server (a thin FastMCP layer) and driven by a roster of opencode agents running local open-weights models. The agents call tools and make decisions but never hand-write the physics — which keeps the model small enough to run locally alongside the compute. The MCP server is one component of the system, not the whole product: the same tools work directly from Python, or from any MCP-compatible client (opencode and Claude Code).

Probe support

cosmoTRON runs both galaxy clustering (spin-0) and weak-lensing shear (spin-2), single-probe or as a joint multi-probe / 3×2pt analysis, over any mix of: spin, single-bin or tomographic, full-sky or masked, and auto-only / a chosen subset / all pairwise correlations.

End-to-end: shear catalogues standardise to Q/U maps (mask = weighted occupancy); compute_all_cls_from_session produces every pair type — clustering×clustering, galaxy–galaxy lensing (0×2), shear×shear (2×2, EE/BB/EB) — with σ_e² shot noise; a mixed-spin joint covariance is the EE data vector, while shear B-modes get their own validation covariances and null tests; the SACC carries the correct Firecrown data types and feeds Firecrown/CosmoSIS inference. Correlation selection is decided early (see Writing TASK.md), so only the requested pairs are ever computed. nside is global; lmax, bias, mask, σ_e, and scale cuts can vary per probe. Spin/probe are set only by an explicit task declaration, never guessed from prose.

Runs local or on a cluster

The pipeline runs wherever the MCP server runs (e.g. a DGX Spark), but any heavy step — ingest of a multi-GB catalogue, spectra, covariance, a CosmoSIS/Firecrown chain — can run as a Slurm job on an HPC cluster instead, while the session stays put. You never touch the machinery: a ## remote: block (or a site:path data location) in the task says which steps run where, and the tools dispatch, poll, and pull results back automatically. See Remote execution.

Where to go next