Loop outputs
Top-level outputs pre loop
Before the loop starts, a number of informational outputs are generated in the top-level loop folder.
These are:
config.ymlThe configuration file used for the loop, containing all input parameters and settings.gitl.logLog file containing runtime information, warnings and diagnostic messages generated during execution.image_worker_debug.csvOptional debug CSV written when debug mode is enabled.gitl_rank<rank>.logOptional MPI worker log files written when both debug mode and MPI are enabled.
Per iteration outputs
The per-iteration outputs are saved to a folder named iteration_XXXX where XXXX is the iteration number, starting at 1.
The outputs within an iteration are:
efield_estimations.fitsData cube containing the estimated electric field in the focal plane for each wavelength channel, stored as real and imaginary. The total number of planes is2 * nlam. Example: in NFOV band 1 withnlam = 3, the file contains 6 planes ordered asR-W1, I-W1, R-W2, I-W2, R-W3, I-W3.images.fitsAll focal-plane images taken during the iteration. The total number of images isnlam * ndm, wherendm = 1 + 2 * nprobepairfor one unprobed image plus positive/negative probe pairs at each wavelength. Example: in NFOV band 1 withnlam = 3andnprobepair = 3,ndm = 7and the file contains3 * 7 = 21images.intensity_coherent.fitsCube ofnlamframes, one per wavelength, containing the coherent intensity in the focal plane.intensity_incoherent.fitsCube ofnlamframes, one per wavelength, containing the incoherent intensity in the focal plane.intensity_total.fitsCube ofnlamframes, one per wavelength, containing the total intensity in the focal plane.perfect_efields.fitsData cube containing the perfect/model electric field in the focal plane for each wavelength channel, stored as real and imaginary. When model e-fields are available for all wavelengths, the total number of planes is2 * nlam. Example: in NFOV band 1 withnlam = 3, the file contains 6 planes ordered asR-W1, I-W1, R-W2, I-W2, R-W3, I-W3.svd_snorm.fitsSingular values squared, normalized by the maximum, ordered from largest to smallest.svd_iri.fitsPower per singular-value mode, in the same order assvd_snorm.fits.dm1_command.fitsAbsolute DM1 voltage command for this iteration.dm2_command.fitsAbsolute DM2 voltage command for this iteration.
Top-level outputs post loop
After the loop finishes, a number of outputs are generated containing initial analyses, results and metrics.
These are:
contrast_vs_iteration.pdfPlot of measured and predicted broadband contrast vs iteration number.ni_vs_iteration.pdfPlot of normalized intensity (NI) metrics vs iteration number.efield_variance.csvElectric field variance per wavelength per iteration data as a csv table.efield_variance.pdfPlot of electric field variance per wavelength vs iteration number.estimation_variance_per_pixel.fitsEstimation variance per pixel across all iterations, per wavelength, stored as a fits cube with one frame per wavelength.measured_contrast.csvMeasured broadband contrast per iteration as a csv table.predicted_contrast.csvPredicted contrast per iteration as a csv table.debugging_history.csvPer-wavelength debugging scalars appended each iteration. Only written if debugging data is available.final_frames.fitsFinal images taken after loop completion. The total number of images isnlam * ndm, wherendm = 1 + 2 * nprobepair. Example: in NFOV band 1 withnlam = 3andnprobepair = 3, this is 21 images.
Example output directory structure
A typical HOWFSC loop run produces a directory with the following structure:
<run_directory>
├── config.yml
├── gitl.log
├── contrast_vs_iteration.pdf
├── ni_vs_iteration.pdf
├── efield_variance.csv
├── efield_variance.pdf
├── estimation_variance_per_pixel.fits
├── final_frames.fits
├── measured_contrast.csv
├── predicted_contrast.csv
├── debugging_history.csv
├── iteration_0001
│ ├── dm1_command.fits
│ ├── dm2_command.fits
│ ├── efield_estimations.fits
│ ├── images.fits
│ ├── intensity_coherent.fits
│ ├── intensity_incoherent.fits
│ ├── intensity_total.fits
│ ├── perfect_efields.fits
│ ├── svd_snorm.fits
│ └── svd_iri.fits
├── iteration_0002
│ └── ...
├── ...
└── iteration_XXXX
└── ...
Where:
<run_directory>is automatically created for each loop run (typically including a timestamp and model name).