{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://scischema.org/schemas/imaging/iterative-xray-ct-reconstruction/1.0.0/master-schema.json",
  "version": "1.0.0",
  "title": "Iterative X-ray CT Reconstruction (ART/SIRT + MBIR Family) Master Schema",
  "description": "Master schema for iterative X-ray CT reconstruction processes, integrating ART/SIRT and MBIR families including acquisition, forward modeling, statistical assumptions, optimization, regularization, evaluation, and reconstruction outputs.",
  "type": "object",
  "properties": {
    "metadata": {
      "type": "object",
      "description": "General identifying information about the reconstruction study, schema version, modality, and reconstruction method family.",
      "properties": {
        "study_name": {
          "type": "string",
          "description": "Human-readable name or identifier for the reconstruction study, experiment, simulation, or dataset."
        },
        "modality": {
          "type": "string",
          "description": "Imaging modality or acquisition context used for the reconstruction workflow.",
          "enum": [
            "CT",
            "CBCT",
            "Breast CT",
            "Tomosynthesis",
            "Simulation"
          ]
        },
        "reconstruction_family": {
          "type": "array",
          "description": "One or more iterative reconstruction algorithm families or modeling frameworks represented in the study.",
          "items": {
            "type": "string",
            "enum": [
              "ART",
              "SIRT",
              "SART",
              "MART",
              "MLEM",
              "OSEM",
              "PWLS",
              "MAP",
              "MBIR",
              "Hybrid"
            ]
          }
        },
        "version": {
          "type": "string",
          "description": "Version identifier for the schema instance, reconstruction protocol, or study configuration."
        }
      }
    },
    "acquisition": {
      "type": "object",
      "description": "Acquisition configuration describing scan geometry, X-ray spectrum, projection sampling, and dose-related constraints.",
      "properties": {
        "geometry": {
          "type": "object",
          "description": "Geometric arrangement of the source, detector, object, and projection sampling used during data acquisition.",
          "properties": {
            "source_detector_distance": {
              "type": "number",
              "description": "Distance between the X-ray source and detector, typically expressed in millimeters or another specified length unit."
            },
            "detector_configuration": {
              "type": "string",
              "description": "Description of the detector layout, dimensions, binning, pixel spacing, or detector type used in the scan."
            },
            "projection_angles": {
              "type": "array",
              "description": "List of projection angles used to acquire the tomographic measurements.",
              "items": {
                "type": "number",
                "description": "Individual projection angle value used during data acquisition."
              }
            },
            "sparse_view": {
              "type": "boolean",
              "description": "Indicates whether the acquisition uses a reduced number of projection views relative to a conventional full-view scan."
            }
          }
        },
        "xray_spectrum": {
          "type": "string",
          "description": "Description of the X-ray beam spectrum, such as monoenergetic energy, polychromatic spectrum, tube voltage, or spectral model."
        },
        "dose_constraints": {
          "type": "object",
          "description": "Dose-related limits or targets imposed on the acquisition protocol.",
          "properties": {
            "dose_metric": {
              "type": "string",
              "description": "Dose quantity used to express the exposure constraint, such as CTDIvol, DLP, mean glandular dose, or absorbed dose."
            },
            "maximum_dose": {
              "type": "number",
              "description": "Maximum permitted dose value according to the selected dose metric."
            }
          }
        }
      }
    },
    "physics_model": {
      "type": "object",
      "description": "Physical forward model used to represent X-ray transport, attenuation, system response, scatter, and correction effects.",
      "properties": {
        "forward_operator": {
          "type": "string",
          "description": "Mathematical or computational operator used to map the object volume to predicted projection measurements.",
          "enum": [
            "Radon",
            "Beer-Lambert",
            "Monte Carlo",
            "Polyenergetic",
            "Custom"
          ]
        },
        "system_matrix": {
          "type": "string",
          "description": "Representation or reference for the system matrix encoding projection geometry, ray paths, voxel weights, and detector response."
        },
        "polyenergetic_model": {
          "type": "boolean",
          "description": "Indicates whether the reconstruction accounts for a polychromatic X-ray spectrum rather than assuming monoenergetic attenuation."
        },
        "scatter_modeling": {
          "type": "boolean",
          "description": "Indicates whether scatter estimation, correction, or simulation is included in the forward model or reconstruction process."
        },
        "beam_hardening_correction": {
          "type": "boolean",
          "description": "Indicates whether beam hardening effects are corrected or modeled during preprocessing, forward projection, or reconstruction."
        }
      }
    },
    "statistical_model": {
      "type": "object",
      "description": "Statistical assumptions used to describe measurement noise and the data likelihood in the reconstruction objective.",
      "properties": {
        "noise_model": {
          "type": "string",
          "description": "Probability model used to characterize measurement noise in the projection data.",
          "enum": [
            "Poisson",
            "Gaussian",
            "Compound Poisson-Gaussian",
            "Other"
          ]
        },
        "likelihood": {
          "type": "string",
          "description": "Likelihood or data-misfit formulation used in the reconstruction objective.",
          "enum": [
            "Poisson log-likelihood",
            "Least Squares",
            "Weighted Least Squares",
            "MAP",
            "Custom"
          ]
        }
      }
    },
    "preprocessing": {
      "type": "object",
      "description": "Corrections and transformations applied to raw projection data before iterative reconstruction.",
      "properties": {
        "normalization": {
          "type": "boolean",
          "description": "Indicates whether projection data are normalized, for example by incident intensity or reference measurements."
        },
        "flat_field_correction": {
          "type": "boolean",
          "description": "Indicates whether detector flat-field correction is applied to compensate for spatial response variations."
        },
        "dark_field_correction": {
          "type": "boolean",
          "description": "Indicates whether dark-current or background detector signal correction is applied."
        },
        "alignment_correction": {
          "type": "boolean",
          "description": "Indicates whether geometric alignment, center-of-rotation, motion, or detector-offset corrections are applied before reconstruction."
        },
        "artifact_reduction": {
          "type": "array",
          "description": "Artifact reduction methods applied to the projection data or intermediate reconstruction inputs.",
          "items": {
            "type": "string",
            "description": "Artifact reduction technique applied during preprocessing."
          }
        }
      }
    },
    "initialization": {
      "type": "object",
      "description": "Initial image, volume, or prior information used to start the iterative reconstruction algorithm.",
      "properties": {
        "initial_volume": {
          "type": "string",
          "description": "Reference, path, or description of the initial reconstruction volume used to initialize the iterative solver."
        },
        "prior_image": {
          "type": "boolean",
          "description": "Indicates whether a prior image or previous reconstruction is used as part of initialization or regularization."
        },
        "seed_method": {
          "type": "string",
          "description": "Method used to generate the initial reconstruction estimate, such as zero initialization, FBP, random seed, or prior-based initialization."
        }
      }
    },
    "objective_function": {
      "type": "object",
      "description": "Optimization objective defining the data fidelity, regularization, and constraints minimized or maximized during reconstruction.",
      "properties": {
        "data_fidelity_term": {
          "type": "string",
          "description": "Component of the objective function measuring agreement between measured projection data and forward-projected estimates."
        },
        "regularization_term": {
          "type": "string",
          "description": "Penalty or prior term used to impose smoothness, sparsity, edge preservation, or other desired image properties."
        },
        "constraint_terms": {
          "type": "array",
          "description": "Additional constraints imposed on the reconstruction, such as non-negativity, bounds, support constraints, or physical feasibility.",
          "items": {
            "type": "string",
            "description": "Constraint included in the optimization problem."
          }
        }
      }
    },
    "regularization": {
      "type": "object",
      "description": "Regularization strategy and associated parameters used to stabilize reconstruction and encode prior assumptions.",
      "properties": {
        "method": {
          "type": "array",
          "description": "Regularization method or prior family used in the reconstruction algorithm.",
          "items": {
            "type": "string",
            "description": "Regularization technique used to stabilize reconstruction.",
            "enum": [
              "TV",
              "L1",
              "L2",
              "Edge-preserving",
              "Sparsity",
              "Dictionary",
              "Learned Prior",
              "None"
            ]
          }
        },
        "hyperparameters": {
          "type": "object",
          "description": "Parameter values controlling the strength, weighting, or behavior of the selected regularization method."
        }
      }
    },
    "solver": {
      "type": "object",
      "description": "Numerical optimization or iterative update procedure used to solve the reconstruction problem.",
      "properties": {
        "algorithm": {
          "type": "string",
          "description": "Iterative algorithm or optimization method used to update the reconstruction estimate.",
          "enum": [
            "ART",
            "SIRT",
            "SART",
            "MART",
            "Gradient Descent",
            "Conjugate Gradient",
            "EM",
            "ADMM",
            "Custom"
          ]
        },
        "iterations": {
          "type": "integer",
          "description": "Number of solver iterations, update cycles, or ordered-subset passes performed."
        },
        "step_size": {
          "type": "number",
          "description": "Step size, relaxation parameter, or learning-rate-like value controlling update magnitude."
        },
        "convergence_criterion": {
          "type": "string",
          "description": "Criterion used to determine convergence, such as objective change, residual reduction, image update norm, or metric stability."
        },
        "stopping_tolerance": {
          "type": "number",
          "description": "Numerical tolerance threshold used to stop the iterative solver when the convergence criterion is satisfied."
        },
        "hardware_acceleration": {
          "type": "string",
          "description": "Computational hardware or acceleration strategy used to perform reconstruction.",
          "enum": [
            "CPU",
            "GPU",
            "Distributed",
            "None"
          ]
        }
      }
    },
    "dynamic_reconstruction": {
      "type": "object",
      "description": "Settings for reconstruction of time-varying objects or scans affected by motion.",
      "properties": {
        "motion_compensation": {
          "type": "boolean",
          "description": "Indicates whether motion estimation or compensation is included during reconstruction."
        },
        "time_resolved": {
          "type": "boolean",
          "description": "Indicates whether the reconstruction produces time-resolved image volumes or frames."
        }
      }
    },
    "postprocessing": {
      "type": "object",
      "description": "Image processing operations applied after reconstruction to improve, analyze, or prepare the reconstructed image volume.",
      "properties": {
        "denoising": {
          "type": "boolean",
          "description": "Indicates whether denoising is applied to the reconstructed image or volume."
        },
        "segmentation": {
          "type": "boolean",
          "description": "Indicates whether segmentation is applied to identify structures, regions, materials, or lesions in the reconstruction."
        },
        "super_resolution": {
          "type": "boolean",
          "description": "Indicates whether super-resolution or resolution-enhancement methods are applied after reconstruction."
        }
      }
    },
    "evaluation_metrics": {
      "type": "object",
      "description": "Quantitative metrics used to evaluate reconstruction accuracy, image quality, contrast, resolution, and artifacts.",
      "properties": {
        "rmse": {
          "type": "number",
          "description": "Root mean square error between the reconstructed image and a reference or ground-truth image."
        },
        "psnr": {
          "type": "number",
          "description": "Peak signal-to-noise ratio used to quantify reconstruction fidelity relative to a reference image."
        },
        "ssim": {
          "type": "number",
          "description": "Structural similarity index measuring perceived structural agreement between reconstruction and reference."
        },
        "cnr": {
          "type": "number",
          "description": "Contrast-to-noise ratio measuring contrast visibility relative to image noise."
        },
        "resolution": {
          "type": "number",
          "description": "Spatial resolution measure of the reconstructed image, such as voxel resolution, line-pair resolution, or point-spread width."
        },
        "artifact_index": {
          "type": "number",
          "description": "Quantitative measure summarizing the severity or prevalence of reconstruction artifacts."
        }
      }
    },
    "reconstruction_output": {
      "type": "object",
      "description": "Final reconstruction products and metadata describing the generated image volume and uncertainty outputs.",
      "properties": {
        "volume_dimensions": {
          "type": "array",
          "description": "Dimensions of the reconstructed volume, typically given as voxel counts along each spatial axis.",
          "items": {
            "type": "integer",
            "description": "Voxel count along a reconstructed spatial dimension."
          }
        },
        "voxel_spacing": {
          "type": "array",
          "description": "Physical spacing between voxels along each spatial axis, typically expressed in millimeters.",
          "items": {
            "type": "number",
            "description": "Physical voxel spacing value for a spatial dimension."
          }
        },
        "reconstructed_volume_path": {
          "type": "string",
          "description": "File path, URI, or storage reference to the reconstructed image volume."
        },
        "uncertainty_estimate": {
          "type": "boolean",
          "description": "Indicates whether uncertainty estimates, confidence maps, variance maps, or related uncertainty outputs are provided."
        }
      }
    }
  },
  "required": [
    "acquisition",
    "physics_model",
    "statistical_model",
    "objective_function",
    "solver",
    "evaluation_metrics",
    "reconstruction_output"
  ],
  "unevaluatedProperties": false
}
