.. _sacc_usage:
SACC Usage and Conventions
==========================
This guide explains how Firecrown uses the SACC format, the naming conventions that
must be followed, and how to handle and fix common issues.
What is SACC?
-------------
`SACC `_ (Save All Correlations and
Covariances) is a standardized format for storing measurements from cosmological surveys,
including two-point correlation functions, SNIa observations, cluster counts, and other
related cosmological probes. SACC files organize measurements from multiple tracers
(e.g., tomographic bins) and provide a consistent interface for accessing data and metadata.
**Note**: This guide focuses on the naming conventions and best practices for
**two-point measurements** specifically. While SACC supports diverse measurement
types, the conventions described here are tailored to two-point correlations.
Key Features of SACC:
- **Tracers**: Represent tomographic bins or other matter distribution tracers
(e.g., galaxies in a redshift range, CMB convergence map)
- **Data Points**: Individual measurements of correlations between pairs of tracers
- **Metadata**: Including covariances, window functions, and measurement types
- **Data Types**: Standardized strings that identify what kind of measurement is stored
(e.g., ``galaxy_shear_xi_plus``)
SACC Naming Convention
----------------------
SACC defines a strict **naming convention** for the association between measurement
types and tracers. This convention is essential for unambiguous interpretation of
two-point measurements.
**Important Notice**: Firecrown **will enforce this naming convention strictly in a
future release**. Currently, Firecrown provides compatibility features to allow loading
older SACC files that do not fully comply with the convention. However, if you use such
non-compliant files, you must be careful to understand the implications:
- Non-compliant files may produce unexpected results if tracers and measurement types
are misaligned
- Auto-correction features are **deprecated** and will be removed
- You should update your SACC files to comply with the convention
- Future versions of Firecrown will reject non-compliant SACC files without an
auto-correction option
Convention Rules
~~~~~~~~~~~~~~~~
The fundamental rule is:
**The order of measurement types in a SACC data type string must match the order of
the tracers.**
Example 1: Single Measurement Type (Same Type for Both Tracers)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
When the two tracers have the **same measurement type**, the measurement type name
appears only **once** in the data type string:
Consider the data type ``galaxy_shear_xi_plus`` measured for tracers ``bin_0`` and
``bin_1``:
.. code-block:: text
Data Type: galaxy_shear_xi_plus
Tracers: (bin_0, bin_1)
Meaning: Both bin_0 and bin_1 are galaxy shear measurements
Notice that "shear" appears only once in the data type string, even though both tracers
are shear measurements. This is the naming convention for measurements between two tracers
of the same type. Other examples include:
- ``galaxy_density_xi`` - density auto-correlation
- ``galaxy_shear_cl_ee`` - shear-shear correlation in harmonic space
In these cases, there is no ambiguity about which tracer corresponds to which measurement
type, since both tracers have the same type.
**Important**: The tracer names (``bin_0``, ``bin_1``) are **not** used to determine
measurement types. The measurement type is determined entirely from the data type string
and validated against the tracers involved. You could name tracers anything
(e.g., ``alpha``, ``beta``) and the convention would still apply, both would still be
shear measurements.
Example 2: Two Different Measurement Types
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
When the two tracers have **different measurement types**, both measurement type names
appear in the data type string, in a specific order that must match the tracer order.
Consider the data type ``galaxy_shearDensity_cl`` measured for tracers ``bin_0``
and ``bin_1``:
.. code-block:: text
Data Type: galaxy_shearDensity_cl
Tracers: (bin_0, bin_1)
The naming convention requires:
- The **first** measurement type in the data type string (``shear``) corresponds to the
**first** tracer (``bin_0``)
- The **second** measurement type in the data type string (``Density``) corresponds to
the **second** tracer (``bin_1``)
It would be an error to have them reversed (``bin_1``, ``bin_0``), as SACC
follows a canonical ordering (see next section).
**Note**: Again, the tracer names here (``bin_0``, ``bin_1``) are arbitrary and chosen
only to illustrate the concept. The measurement type determination is based on the data
type string and the order of tracers in the measurement, not on their names.
Canonical Ordering in Firecrown
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SACC proposes a **canonical ordering** of measurement types that determines the order in
which tracers should appear in a measurement. This ordering is essential for unambiguous
interpretation of data type strings:
**CMB < Clusters < Galaxies**
This ordering applies when combining measurements across different measurement type categories.
For example:
- CMB convergence measurements always come before cluster measurements
- Cluster measurements always come before galaxy measurements
- When two tracers have types from the same category, they are ordered according to the
internal enum ordering within that category
**Why Canonical Ordering Matters**: The canonical ordering enables deterministic construction
of data type strings. For example, if you have one CMB tracer and one galaxy tracer, the only
valid data type string is ``cmbGalaxy_convergenceDensity_cl`` (CMB first), not
``galaxyCMB_densityConvergence_cl``. Moreover, since the measurement type order in the data
type string must match the tracer order (see convention examples above), the tracers must be
ordered such that the first tracer's type comes before the second tracer's type in the
canonical ordering.
**Internal Enum Ordering**: Within each measurement type category (CMB, Clusters, Galaxies),
the measurement types are also ordered canonically. For example, within ``Galaxies``:
**Galaxies.SHEAR_E < Galaxies.SHEAR_T < ... < Galaxies.COUNTS**
This means:
- When determining tracer order for cross-measurements (e.g., shear cross-correlation with counts),
shear measurements always come before count measurements
- CMB and cluster measurement types are ordered internally according to their positions in
their respective enums
- Firecrown applies this internal ordering automatically to ensure consistency
**Firecrown's Ordering Support**: Firecrown provides utilities to help you determine the correct
tracer order based on the canonical ordering. When creating or fixing SACC files, you can use
Firecrown's ordering functions to automatically compute the correct order of tracers for a
given pair of measurement types.
Understanding Measurement Types
-------------------------------
Firecrown recognizes the following measurement types:
**Galaxy Measurements:**
- ``SHEAR_E`` or ``SHEAR_T``: Weak lensing shear components
- ``COUNTS``: Galaxy number counts
- ``PART_OF_XI_MINUS`` or ``PART_OF_XI_PLUS``: Components of two-point shear
correlation functions
**CMB Measurements:**
- ``CONVERGENCE``: CMB lensing convergence
**Cluster Measurements:**
- ``COUNTS``: Cluster abundance
Measurement type associations are stored in the SACC file via the data type strings.
Firecrown uses the ``MEASURED_TYPE_STRING_MAP`` to decode which measurement types are
involved in each measurement.
Single-Type vs. Two-Type Measurements
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**Measurement Type Sets**: In Firecrown, measurements are organized into sets based on their
conceptual role. For galaxies, these include:
- ``GALAXY_SOURCE_TYPES``: Shear measurements (``SHEAR_E``, ``SHEAR_T``, ``PART_OF_XI_MINUS``, ``PART_OF_XI_PLUS``)
- ``GALAXY_LENS_TYPES``: Galaxy counts (``COUNTS``)
- ``CMB_TYPES``: CMB convergence (``CONVERGENCE``)
- ``CLUSTER_TYPES``: Cluster abundance
A tracer may have multiple measurement types **as long as they belong to the same measurement set**.
For example, a galaxy source tracer might have both ``SHEAR_T`` and ``PART_OF_XI_MINUS`` measurements,
since both are part of ``GALAXY_SOURCE_TYPES``. However, mixing types from different sets
(e.g., shear and counts) in the same tracer is not allowed by default.
**Swap Detection and Auto-Correction (Deprecated)**: When Firecrown processes a SACC file,
it may detect that a tracer was mistakenly assigned to the wrong measurement set. If tracers
are reversed (e.g., a source tracer mixed with a lens tracer) in a measurement, Firecrown will:
1. Test if swapping the tracers would fix the issue
2. If a swap corrects the assignment, emit a ``DeprecationWarning`` and perform the swap
3. Apply the corrected measurement types to the tracers
**Important**: This auto-correction via tracer swapping is **deprecated** and will be removed
in a future release. When strict enforcement is enabled:
- If a tracer has mixed types from different sets and ``allow_mixed_types=False``, Firecrown
will **raise an error** instead of attempting to auto-correct
- You should fix your SACC file to ensure tracers are properly ordered according to the
measurement types in the data type string
**Single-Type Measurements**: When both tracers belong to the same measurement set and have
compatible types (e.g., both are sources or both are lenses), there is typically no ambiguity.
**Two-Type Measurements**: When the two tracers belong to different measurement sets or have
incompatible types (e.g., source paired with lens), the order of tracers must match the order
of measurement types in the data type string, as explained in the convention examples above.
Handling Mixed-Type Measurements
---------------------------------
**What are Mixed-Type Measurements?**: In the context of Firecrown, "mixed-type measurements"
refers to a tracer being associated with measurement types from **different measurement sets**
(e.g., both source types and lens types).
**Within the same set is allowed**: A tracer **may** have multiple measurement types as long
as they belong to the same measurement set. For example:
- A source tracer can have both ``SHEAR_T`` and ``PART_OF_XI_MINUS`` (both in ``GALAXY_SOURCE_TYPES``)
- A lens tracer can only have ``COUNTS`` (the only type in ``GALAXY_LENS_TYPES``)
However, mixing types from **different sets** in the same tracer (e.g., shear and counts) is
not permitted by default.
**Use Cases for Mixed-Type Measurements**: In specialized analyses, you might intentionally
want to allow a single tracer to contain measurements from different sets, though this is
unusual. For example, a tracer might contain both galaxy shear and galaxy count measurements
in a joint analysis.
Using ``allow_mixed_types`` Parameter
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
When loading SACC data with :py:func:`extract_all_measured_types`, you can control
whether mixed-type measurements (types from different sets) are permitted:
.. code-block:: python
from firecrown.metadata_functions import extract_all_measured_types
# Strict mode (default): raises error if a tracer has types from different sets
measured_types = extract_all_measured_types(sacc_data, allow_mixed_types=False)
# Permissive mode: allows tracers to have types from different measurement sets
measured_types = extract_all_measured_types(sacc_data, allow_mixed_types=True)
By default, ``allow_mixed_types=False``, which raises a ``ValueError`` if a tracer is
found to have measurement types from different sets. This strict behavior helps identify
potential inconsistencies and ensures proper separation between source and lens tracers.
**Note**: If ``allow_mixed_types=False`` and Firecrown detects reversed tracers that could
be fixed by swapping, it will emit a ``DeprecationWarning`` and perform the swap. However,
if swapping cannot fix the issue, an error will be raised. This auto-correction via tracer
swapping is deprecated and will be removed in a future release.
Fixing SACC Convention Violations
----------------------------------
Common Issues
~~~~~~~~~~~~~
The most common SACC convention violation occurs when tracers are misaligned with
measurement types due to reversed tracer order:
**Scenario**: You have a CMB convergence tracer (``cmb_bin_0``) and a galaxy counts
tracer (``lens_bin_0``), but they are reversed in one of your data type strings.
.. code-block:: text
Correct: (cmb_bin_0, lens_bin_0) with data type "cmbGalaxy_convergenceDensity_cl"
Incorrect: (lens_bin_0, cmb_bin_0) with same data type "cmbGalaxy_convergenceDensity_cl"
The data type string ``cmbGalaxy_convergenceDensity_cl`` specifies that the measurement
is CMB convergence paired with galaxy counts, and the canonical ordering requires CMB to
come first (CMB < Galaxies). In the incorrect case, the tracers are reversed: the first
tracer is galaxy counts, but the data type string claims it should be CMB convergence.
**Detection and Auto-Correction (Deprecated)**: Firecrown can detect this error when other
measurements involving these tracers provide evidence of the correct ordering. For example,
if you have auto-correlations like:
- ``cmb_bin_0`` with ``cmb_bin_0`` in a ``cmb_convergence_cl`` measurement
- ``lens_bin_0`` with ``lens_bin_0`` in a ``galaxy_density_cl`` measurement
Then Firecrown can infer the correct types for each tracer and detect that the
cross-measurement tracers are reversed. When this happens with ``allow_mixed_types=False``,
Firecrown will:
1. Emit a ``DeprecationWarning`` explaining the issue
2. Automatically swap the tracers to fix the ordering
3. Continue processing with the corrected assignment
**Important**: This automatic tracer swapping is deprecated and will be removed in a future
release. You should fix your SACC file manually rather than relying on this auto-correction.
Deprecated Auto-Correction
~~~~~~~~~~~~~~~~~~~~~~~~~~~
When ``allow_mixed_types=False`` (the default), Firecrown will attempt to auto-correct
simple convention violations by swapping tracer labels. This is done as a convenience
for legacy SACC files that don't follow the convention.
**Important**: This auto-correction behavior is **deprecated** and will be **removed in a
future release** when Firecrown enforces strict SACC compliance. You should fix your SACC
file now instead of relying on this auto-correction. Once strict enforcement is enabled,
non-compliant SACC files will cause Firecrown to raise an error, and users will have to
manually fix their files.
The auto-correction process works as follows:
1. Firecrown detects that assigning the measurement types in their original tracer order
would create mixed-type measurements (measurements with types from different sets)
2. Firecrown tests whether swapping the tracers would resolve the issue
3. If swapping would fix the problem, Firecrown performs the swap and emits a
``DeprecationWarning`` with detailed diagnostic information
4. Processing continues with the corrected tracer assignment
When auto-correction is performed, Firecrown issues a ``DeprecationWarning`` structured as
follows:
.. code-block:: text
SACC Convention Violation Detected (DEPRECATED AUTO-FIX)
Firecrown detected an inconsistency in how measurement types are assigned to tracers.
Specifically, assigning measurement type 'SHEAR_E' to tracer 'lens0' and measurement
type 'COUNTS' to tracer 'src0' would create mixed-type measurements (multiple distinct
measurement types from different sets in the same tomographic bin).
The data type string 'galaxy_shearDensity_cl' follows the SACC naming convention, where
the order of measurement types in the string must match the order of tracers. However,
your SACC file/object appears to violate this convention.
AUTO-CORRECTION PERFORMED
Because allow_mixed_types=False (the default), Firecrown attempted to correct this by
swapping the tracer assignment, assuming the tracers were simply misaligned. This auto-
correction is a convenience feature for legacy SACC files that don't follow the
convention.
⚠️ DEPRECATION NOTICE ⚠️
This automatic correction will be REMOVED in a future release. Going forward, files
that violate the SACC convention will be interpreted as genuinely mixed-type
measurements and will either raise an error (if allow_mixed_types=False) or be
processed as-is (if allow_mixed_types=True).
RECOMMENDED ACTION
To future-proof your code, fix your SACC file to follow the naming convention. See the
documentation for detailed instructions:
https://firecrown.readthedocs.io/en/latest/sacc_usage.html
Using Firecrown CLI for Quality Control
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Firecrown provides command-line tools to detect and fix SACC convention violations
automatically.
**Step 1: Check Your SACC File**
Use the ``view`` command with the ``--check`` flag to validate your SACC file:
.. code-block:: bash
firecrown sacc view data.sacc --check
This command will:
- Display file contents (tracers, measurements, covariance)
- Run quality checks for naming convention compliance
- Detect tracer ordering issues
- Report any violations with detailed diagnostics
**Example Output:**
.. code-block:: text
──────────────────────────────────── Loading SACC file ─────────────────────────────────────
File: sacc_data.sacc
Allow mixed types: False
─────────────────────────────────────── SACC Summary ───────────────────────────────────────
╭────── SACC Summary ──────╮
│ Number of tracers: 9 │
│ Data points: 457 │
│ Covariance elements: 457 │
╰──────────────────────────╯
───────────────────────────────────────── Tracers ──────────────────────────────────────────
┏━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Name ┃ TypeSource ┃ z min-max (density) ┃ dndz mean, std ┃ Measurements ┃
┡━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ lens0 │ default │ 0.005-3.995 │ 0.240 +/- 0.044 │ {COUNTS} │
│ lens1 │ default │ 0.005-3.995 │ 0.383 +/- 0.050 │ {COUNTS} │
│ ... │ ... │ ... │ ... │ ... │
│ src0 │ default │ 0.005-3.995 │ 0.390 +/- 0.250 │ {SHEAR_T, PART_OF_XI_MINUS, │
│ │ │ │ │ PART_OF_XI_PLUS} │
└───────┴────────────┴─────────────────────┴─────────────────┴─────────────────────────────┘
...(bin combinations and summary omitted)...
─────────────────────────────────── SACC Quality Checks ────────────────────────────────────
⚠️ Found 20 tracer naming convention violation(s)
• Tracers 'lens0' and 'src0' (data type: 'galaxy_shearDensity_xi_t')
• Tracers 'lens0' and 'src1' (data type: 'galaxy_shearDensity_xi_t')
• Tracers 'lens0' and 'src2' (data type: 'galaxy_shearDensity_xi_t')
• Tracers 'lens0' and 'src3' (data type: 'galaxy_shearDensity_xi_t')
...(16 more violations)...
Recommendation: Use 'firecrown sacc transform --fix-ordering' to correct.
**Step 2: Fix Ordering Issues**
Use the ``transform`` command with ``--fix-ordering`` to automatically correct
tracer ordering:
.. code-block:: bash
firecrown sacc transform data.sacc --fix-ordering --overwrite
This command will:
- Read the SACC file
- Detect tracer ordering violations
- Swap tracers to match the data type string convention
- Write the corrected file back (with ``--overwrite``)
- Display a summary of corrections
**Example Output:**
.. code-block:: text
Detected input format: HDF5
Reading HDF5 file: sacc_data.sacc
Fixing tracer ordering for 20 unique corrections.
For data type galaxy_shearDensity_xi_t and tracers lens0, src0, 6 data points were flipped.
For data type galaxy_shearDensity_xi_t and tracers lens0, src1, 6 data points were flipped.
For data type galaxy_shearDensity_xi_t and tracers lens0, src2, 6 data points were flipped.
For data type galaxy_shearDensity_xi_t and tracers lens0, src3, 6 data points were flipped.
For data type galaxy_shearDensity_xi_t and tracers lens1, src0, 8 data points were flipped.
...(15 more corrections)...
For data type galaxy_shearDensity_xi_t and tracers lens4, src3, 11 data points were flipped.
Writing SaccFormat.HDF5 file: sacc_data.sacc
============================================================
✅ Transformation successful!
============================================================
Input: sacc_data.sacc (HDF5, 1,679,790 bytes)
Output: sacc_data.sacc (HDF5, 1,653,400 bytes)
Size reduction: 1.6%
**Step 3: Verify the Fix**
Run the check again to confirm all issues are resolved:
.. code-block:: bash
firecrown sacc view data.sacc --check
**Example Output:**
.. code-block:: text
──────────────────────────────────── Loading SACC file ─────────────────────────────────────
File: sacc_data.sacc
Allow mixed types: False
...(file contents omitted)...
─────────────────────────────────── SACC Quality Checks ────────────────────────────────────
✅ All quality checks passed!
**Additional Options:**
- ``--output ``: Specify output file (default: overwrites input if formats match)
- ``--output-format {fits|hdf5}``: Convert format while fixing
- ``--input-format {fits|hdf5}``: Force input format detection
**Example: Fix and Convert Format:**
.. code-block:: bash
firecrown sacc transform data.fits --fix-ordering --output-format hdf5 --output data.h5
How to Fix Your SACC File Manually
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If you prefer to fix SACC convention violations manually, you need to reorder tracers
in your data type entries so that they match the measurement type order in the data
type string.
**Manual Approach:**
1. Identify which measurements have convention violations (look for
``DeprecationWarning`` messages)
2. Understand which measurement types correspond to which tracers
3. Reorder tracers in the affected data type entries to match the measurement type
order in the data type string
4. Save the corrected SACC file
**Example Fix:**
Suppose you have this incorrect entry:
.. code-block:: python
# Incorrect: tracers are (cmb, shear) but data type implies (shear, cmb)
sacc_data.add_data_point("cmbGalaxy_convergenceShear_cl_e",
("shear_bin_0", # First tracer (should be cmb)
"cmb_bin_0"), # Second tracer (should be shear)
...)
To fix it, swap the tracer order:
.. code-block:: python
# Correct: tracers are (shear, cmb) matching the data type
sacc_data.add_data_point("cmbGalaxy_convergenceShear_cl_e",
("cmb_bin_0", # First tracer (cmb) ✓
"shear_bin_0"), # Second tracer (shear) ✓
...)
**Programmatic Approach:**
For large SACC files with many violations, a dedicated repair tool (to be provided in a
future release) will automate this process. In the meantime, you can write a Python
script to:
1. Load the SACC file
2. Identify violations using Firecrown's extraction functions
3. Reorder tracer entries as needed
4. Save the corrected file
Best Practices
--------------
1. **Follow the Convention from the Start**
When creating SACC files, follow the naming convention from the beginning:
- Use clear, descriptive tracer names that indicate their measurement type
- Order tracers in data type entries to match the order in the data type string
- Test your SACC file with Firecrown using ``allow_mixed_types=False`` to validate
compliance
- When writing a SACC file you can use Firecrown ordering support to determine automatically the correct order.
2. **Use Descriptive Tracer Names**
Make it obvious what each tracer represents:
.. code-block:: text
Good: shear_bin_0, cmb_convergence_bin_0, cluster_counts_bin_0
Unclear: tracer_0, tracer_1, bin_0
3. **Document Your SACC File**
Include comments in your code describing:
- What each tracer represents
- Why mixed-type measurements are used (if applicable)
- Any deviations from the standard convention
4. **Validate Early and Often**
Use the CLI to validate your SACC files before using them in analyses:
.. code-block:: bash
# Check for quality issues
firecrown sacc view my_data.sacc --check
# Fix any detected issues
firecrown sacc transform my_data.sacc --fix-ordering --overwrite
# Verify the fix
firecrown sacc view my_data.sacc --check
Or programmatically:
.. code-block:: python
import warnings
from firecrown.metadata_functions import extract_all_measured_types
# Catch deprecation warnings about convention violations
with warnings.catch_warnings(record=True) as w:
warnings.simplefilter("always", DeprecationWarning)
measured_types = extract_all_measured_types(sacc_data, allow_mixed_types=False)
if w:
print("Convention violations detected:")
for warning in w:
print(f" {warning.message}")
5. **Automate Quality Checks in Your Pipeline**
Include SACC validation in your data processing pipeline:
.. code-block:: bash
#!/bin/bash
# Example pipeline script
# Generate SACC file
python generate_sacc.py --output raw_data.sacc
# Validate and fix
firecrown sacc view raw_data.sacc --check || \
firecrown sacc transform raw_data.sacc --fix-ordering --overwrite
# Final verification
firecrown sacc view raw_data.sacc --check
# Proceed with analysis
firecrown examples des_y1_3x2pt ./output --sacc raw_data.sacc
Command Reference
-----------------
firecrown sacc view
~~~~~~~~~~~~~~~~~~~
Inspect and validate SACC files.
**Syntax:**
.. code-block:: bash
firecrown sacc view SACC_FILE [OPTIONS]
**Options:**
- ``--check``: Run quality checks for naming convention compliance
- ``--plot-covariance``: Display covariance matrix visualization
- ``--allow-mixed-types``: Allow tracers with mixed measurement types (default: False)
- ``--help``: Show command help
**Examples:**
.. code-block:: bash
# Basic inspection
firecrown sacc view data.sacc
# With quality checks
firecrown sacc view data.sacc --check
# Full inspection with visualization
firecrown sacc view data.sacc --check --plot-covariance
firecrown sacc transform
~~~~~~~~~~~~~~~~~~~~~~~~~
Transform SACC files: update internal format, fix ordering, or convert formats.
**Syntax:**
.. code-block:: bash
firecrown sacc transform SACC_FILE [OPTIONS]
**Options:**
- ``--output PATH`` or ``-o PATH``: Output file path (default: same as input)
- ``--input-format {fits|hdf5}`` or ``-f``: Force input format
- ``--output-format {fits|hdf5}`` or ``-t``: Output format (default: same as input)
- ``--fix-ordering``: Fix tracer ordering issues
- ``--overwrite``: Overwrite output file if it exists
- ``--allow-mixed-types``: Allow tracers with mixed measurement types (default: False)
- ``--help``: Show command help
**Examples:**
.. code-block:: bash
# Update internal format in-place
firecrown sacc transform data.sacc --overwrite
# Fix tracer ordering
firecrown sacc transform data.sacc --fix-ordering --overwrite
# Convert FITS to HDF5
firecrown sacc transform data.fits --output-format hdf5 -o data.h5
# Fix ordering and convert format
firecrown sacc transform data.fits --fix-ordering --output-format hdf5 -o data.h5
# Create backup before fixing
firecrown sacc transform data.sacc --fix-ordering -o data_fixed.sacc
Getting Help
------------
For more information about SACC:
- `SACC Documentation `_
- `SACC GitHub Repository `_
For Firecrown-specific questions:
- :py:func:`firecrown.metadata_functions.extract_all_measured_types`
- :py:func:`firecrown.metadata_functions.extract_all_tracers_inferred_galaxy_zdists`
- :py:class:`firecrown.app.sacc.View` - CLI view command
- :py:class:`firecrown.app.sacc.Transform` - CLI transform command
- Firecrown GitHub Issues and Discussions
See Also
--------
- :doc:`basic_usage` - Using Firecrown with your data
- :doc:`dev-notes` - Developer notes