# kiyami/sneratio architecture

> Architecture diagram of the GitHub repository kiyami/sneratio, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/kiyami/sneratio
- Repository: https://github.com/kiyami/sneratio

## Overview

SNeRatio is a Python calculator that estimates the relative SNIa and core-collapse supernova contributions to measured elemental abundances. The principal workflow is: configure abundance and model inputs, prepare normalized abundances and model yields, fit the contribution ratio and its uncertainty, then save results and plots. A separate batch workflow evaluates combinations of available yield tables. The sampled source shows the single-fit save-and-plot calls; the README documents the batch workflow and output location. The API excerpt is partial, so uncertain internal wiring is omitted.

Main entry points: [`sneratio_api.py`](https://github.com/kiyami/sneratio/blob/master/sneratio_api.py) (SNeRatio inputs), [`main.py`](https://github.com/kiyami/sneratio/blob/master/main.py) (Configured run), [`outputs`](https://github.com/kiyami/sneratio/tree/master/outputs) (Output files), [`data`](https://github.com/kiyami/sneratio/tree/master/data) (Yield tables)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_config["Configuration and data"]
  node_runner["Configured run<br/>[main.py]"]
  node_options["Print options<br/>[sneratio_api.py]"]
  node_abundances["Abundance input<br/>[test_data.txt]"]
  node_yield_tables["Yield tables"]
  node_solar_tables["Solar tables"]
  node_mass_data["Mass numbers<br/>[mass_number.txt]"]
end

subgraph group_models["Yield preparation"]
  node_ratio["SNeRatio inputs<br/>[sneratio_api.py]"]
  node_normalization["Abundance normalization<br/>[sneratio_api.py]"]
  node_yields["Integrated yields<br/>[sneratio_api.py]"]
end

subgraph group_analysis["Fit analysis"]
  node_fit_api["Single fit API<br/>[sneratio_api.py]"]
  node_all_api["Batch fit API<br/>[sneratio_api.py]"]
  node_stats["SNeStats fitting<br/>[sneratio_api.py]"]
  node_confidence["Confidence intervals<br/>[sneratio_api.py]"]
  node_batch_models["Model combinations<br/>[sneratio_api.py]"]
end

subgraph group_outputs["Results and plots"]
  node_save_results["Save fit results<br/>[sneratio_api.py]"]
  node_plots["Fit plots<br/>[sneratio_api.py]"]
  node_output_files["Output files"]
end

node_user(("Analyst"))

node_user -->|"configures"| node_runner
node_runner -->|"calls"| node_options
node_runner -->|"calls"| node_fit_api
node_runner -->|"calls"| node_all_api
node_fit_api -->|"initializes"| node_ratio
node_ratio -->|"reads"| node_abundances
node_ratio -->|"reads"| node_solar_tables
node_ratio -->|"reads"| node_mass_data
node_ratio -->|"reads"| node_yield_tables
node_ratio -->|"prepares"| node_normalization
node_ratio -->|"calculates"| node_yields
node_fit_api -->|"calls"| node_stats
node_stats -->|"calculates"| node_confidence
node_fit_api -->|"calls"| node_save_results
node_fit_api -->|"calls"| node_plots
node_save_results -->|"writes"| node_output_files
node_plots -->|"writes"| node_output_files
node_all_api -->|"enumerates"| node_yield_tables
node_all_api -->|"evaluates"| node_batch_models
node_all_api -->|"writes"| node_output_files

click node_runner "https://github.com/kiyami/sneratio/blob/master/main.py"
click node_options "https://github.com/kiyami/sneratio/blob/master/sneratio_api.py"
click node_fit_api "https://github.com/kiyami/sneratio/blob/master/sneratio_api.py"
click node_all_api "https://github.com/kiyami/sneratio/blob/master/sneratio_api.py"
click node_abundances "https://github.com/kiyami/sneratio/blob/master/data/test_data.txt"
click node_yield_tables "https://github.com/kiyami/sneratio/tree/master/data"
click node_solar_tables "https://github.com/kiyami/sneratio/tree/master/data/solar"
click node_mass_data "https://github.com/kiyami/sneratio/blob/master/data/mass_number.txt"
click node_ratio "https://github.com/kiyami/sneratio/blob/master/sneratio_api.py"
click node_normalization "https://github.com/kiyami/sneratio/blob/master/sneratio_api.py"
click node_yields "https://github.com/kiyami/sneratio/blob/master/sneratio_api.py"
click node_stats "https://github.com/kiyami/sneratio/blob/master/sneratio_api.py"
click node_confidence "https://github.com/kiyami/sneratio/blob/master/sneratio_api.py"
click node_batch_models "https://github.com/kiyami/sneratio/blob/master/sneratio_api.py"
click node_save_results "https://github.com/kiyami/sneratio/blob/master/sneratio_api.py"
click node_plots "https://github.com/kiyami/sneratio/blob/master/sneratio_api.py"
click node_output_files "https://github.com/kiyami/sneratio/tree/master/outputs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_runner,node_options,node_abundances,node_yield_tables,node_solar_tables,node_mass_data toneBlue
class node_ratio,node_normalization,node_yields toneAmber
class node_fit_api,node_all_api,node_stats,node_confidence,node_batch_models toneMint
class node_save_results,node_plots,node_output_files toneRose
class node_user toneIndigo
```

## Components

### Configuration and data

- [Configured run](https://github.com/kiyami/sneratio/blob/master/main.py): `main.py`
- [Print options](https://github.com/kiyami/sneratio/blob/master/sneratio_api.py): `sneratio_api.py`
- [Abundance input](https://github.com/kiyami/sneratio/blob/master/data/test_data.txt): `data/test_data.txt`
- [Yield tables](https://github.com/kiyami/sneratio/tree/master/data): `data`
- [Solar tables](https://github.com/kiyami/sneratio/tree/master/data/solar): `data/solar`
- [Mass numbers](https://github.com/kiyami/sneratio/blob/master/data/mass_number.txt): `data/mass_number.txt`

### Yield preparation

- [SNeRatio inputs](https://github.com/kiyami/sneratio/blob/master/sneratio_api.py): `sneratio_api.py`
- [Abundance normalization](https://github.com/kiyami/sneratio/blob/master/sneratio_api.py): `sneratio_api.py`
- [Integrated yields](https://github.com/kiyami/sneratio/blob/master/sneratio_api.py): `sneratio_api.py`

### Fit analysis

- [Single fit API](https://github.com/kiyami/sneratio/blob/master/sneratio_api.py): `sneratio_api.py`
- [Batch fit API](https://github.com/kiyami/sneratio/blob/master/sneratio_api.py): `sneratio_api.py`
- [SNeStats fitting](https://github.com/kiyami/sneratio/blob/master/sneratio_api.py): `sneratio_api.py`
- [Confidence intervals](https://github.com/kiyami/sneratio/blob/master/sneratio_api.py): `sneratio_api.py`
- [Model combinations](https://github.com/kiyami/sneratio/blob/master/sneratio_api.py): `sneratio_api.py`

### Results and plots

- [Save fit results](https://github.com/kiyami/sneratio/blob/master/sneratio_api.py): `sneratio_api.py`
- [Fit plots](https://github.com/kiyami/sneratio/blob/master/sneratio_api.py): `sneratio_api.py`
- [Output files](https://github.com/kiyami/sneratio/tree/master/outputs): `outputs`

### Other components

- **Analyst**

## Connections

- Analyst → Configured run: configures
- Configured run → Print options: calls
- Configured run → Single fit API: calls
- Configured run → Batch fit API: calls
- Single fit API → SNeRatio inputs: initializes
- SNeRatio inputs → Abundance input: reads
- SNeRatio inputs → Solar tables: reads
- SNeRatio inputs → Mass numbers: reads
- SNeRatio inputs → Yield tables: reads
- SNeRatio inputs → Abundance normalization: prepares
- SNeRatio inputs → Integrated yields: calculates
- Single fit API → SNeStats fitting: calls
- SNeStats fitting → Confidence intervals: calculates
- Single fit API → Save fit results: calls
- Single fit API → Fit plots: calls
- Save fit results → Output files: writes
- Fit plots → Output files: writes
- Batch fit API → Yield tables: enumerates
- Batch fit API → Model combinations: evaluates
- Batch fit API → Output files: writes
