CalciumScoring.jl is a Julia package for calculating coronary artery calcium scores from CT images using different quantification algorithms. The main function is score()
which calculates the calcium mass within a CT scan. See the documentation for more details.
graph TB
classDef unique1 fill:#f9d71c,stroke:#333,stroke-width:2px;
classDef unique2 fill:#8cd9f5,stroke:#333,stroke-width:2px;
A["Overview: Four Different CAC Quantification Methods"]
A --> AgatstonRegime
A --> CalciumMassRegime
subgraph AgatstonRegime["Agatston Scoring Regime"]
B["Agatston Scoring"]
E["Spatially Weighted Calcium Scoring"]
end
subgraph CalciumMassRegime["Calcium Mass Quantification Regime"]
C["Volume Fraction Calcium Mass"]
D["Integrated Calcium Mass"]
end
class B,C,D,E unique2;
score()
functionusing Pkg
Pkg.add("CalciumScoring")
The general workflow is:
score()
with the ROI, scan info, and desired algorithm graph TB
A["1. Prepare Region of Interest"] --> B["2. Gather CT Scan Info"]
B --> C["3. Calculate Calcium"]
For example, calculating the amount of calcium via Agatston scoring looks like:
# 1
roi = ct_scan .* coronary_artery_mask
# 2
spacing = [1, 1, 1]
mass_cal_factor = density_cal / intensity_cal
# 3
agatston_score, volume_score, mass_score = score(roi, spacing, mass_cal_factor, Agatston())
The score()
function takes the region of interest, voxel spacing, mass calibration factor, and an Algorithm
specifying which algorithm to use.
The main algorithms available are:
Agatston()
: Traditional Agatston scoringVolumeFraction()
: Volume fraction calcium massIntegrated()
: Integrated calcium massSpatiallyWeighted()
: Spatially weighted calcium scoringCalciumScoring.jl implements methods from: