PARSEC
Here we describe the interface we provide to the PARSEC v1.2S library of stellar evolutionary tracks. PARSEC specific code is housed in the PARSEC
submodule, which can be accessed as
using StellarTracks.PARSEC # load all exported methods
using StellarTracks.PARSEC: PARSECLibrary, X, Y, Z # load specific methods
The main paper describing the PARSEC family of stellar models is Bressan et al. [2], but the library of stellar models has been expanded over the years to add and improve coverage of various parameter spaces. A non-exhaustive list of papers presenting the PARSEC models up to V1.2S is provided below.
- Bressan et al. [2] is the first paper presenting the PARSEC models.
- Chen et al. [3] presented an improved calibration for low-mass stars.
- Tang et al. [4] and Chen et al. [5] presented new models of high-mass stars from 14 to 350 M⊙ with metallicities from $0.001 \le Z \le 0.004$.
- Rosenfield et al. [6] formulated equivalent evolutionary points (EEPs) for the PARSEC models to support use in isochrone interpolation routines. Our implementation uses their data products.
- Marigo et al. [7] augmented the PARSEC models with COLIBRI models of the thermally pulsating asymptotic giant branch phase (TP-AGB).
- Pastorelli et al. [8] and Pastorelli et al. [9] compared the COLIBRI TP-AGB models to observations of the SMC and LMC, respectively.
The full list of relevant papers maintained by the group is available here.
As we use the PARSEC V1.2S tracks augmented with EEP points by Rosenfield et al. [6], we do not currently support the more recent PARSEC V2.0 tracks [10, 11]. We hope to add V2.0 in the future, but doing so would require new measurements of the EEP points which we do not presently support.
Data Acquisition
This package handles downloading and pre-processing of the EEP tracks produced by Rosenfield et al. [6] (available here) using DataDeps.jl. The main access point we provide is PARSECLibrary
, which will load and make available the full library of stellar tracks. The first time you call this method, you will be prompted to download the required data files. The total data volume is ~150 MB after processing. Information on customizing the install location is available here. The data can be uninstalled by running using DataDeps; rm(datadep"PARSECv1.2S"; recursive=true)
. With all the tracks available, we are able to perform operations like interpolating isochrones at any age and metallicity within the PARSEC parameter space.
Examples
First we load the full PARSEC library, which is downloaded via DataDeps.jl if not already available.
using StellarTracks.PARSEC
p = PARSECLibrary()
Structure of interpolants for PARSEC v1.2S library of stellar tracks. Valid range of metal mass fraction Z is (0.0001, 0.06).
Now we use the PARSEC.PARSECLibrary
to interpolate an isochrone at log10(age [yr]) = 10.05
and logarithmic metallicity [M/H]=-1.234. The isochrone is returned as a NamedTuple
.
iso = isochrone(p, 10.05, -1.234)
(eep = [381, 382, 383, 384, 385, 386, 387, 392, 393, 394 … 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700], m_ini = [0.10004109175009526, 0.10018317048656962, 0.10229603136895164, 0.11123335464782205, 0.1406655533342979, 0.2564476625004588, 0.3072730072630701, 0.5977875481135353, 0.6024818929758726, 0.6086099410227178 … 0.8369731881642585, 0.8369739221193139, 0.8369746082569821, 0.8369752799294172, 0.8369759544260914, 0.836976636937292, 0.8369773510751544, 0.836978122380365, 0.8369790305425624, 0.8369799384214267], logTe = [3.4965172513771474, 3.4967947399280925, 3.5010000534948347, 3.5170954781622368, 3.545478431806391, 3.5811074269450676, 3.5892837070752814, 3.7166396290775183, 3.7181552050900026, 3.720920274548725 … 3.626481920393734, 3.625984860323253, 3.6228118656378983, 3.6194759900873623, 3.6160122313702314, 3.6125470501180748, 3.6089734979088215, 3.605268072112549, 3.599326211717169, 3.5990094722279027], Mbol = [12.138598775984267, 12.13261431546255, 12.045459610429555, 11.706126597769895, 10.96210345744806, 9.540626016121337, 9.149921446153883, 6.4506652931534765, 6.411149966738086, 6.355795280900344 … -2.8071661017470335, -2.8218992174518065, -2.910280083120394, -3.0020085804603394, -3.0960402916765943, -3.1910577610395343, -3.28803291006355, -3.387926207092692, -3.5348270181139467, -3.562182814968126], logg = [5.317683728515031, 5.317002989851364, 5.307857156587842, 5.272511328898, 5.191570520598368, 5.02138948148977, 4.978730478251349, 4.692643488243124, 4.688074799507104, 4.68313411104865 … 0.7843121219035507, 0.7769043156699552, 0.7288498869481765, 0.6787206080683542, 0.6272175867450639, 0.5753358540973302, 0.522177258284205, 0.46740171511383466, 0.3789656684689765, 0.37251848317513636], C_O = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 … 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0])
The NamedTuple
returned by isochrone
can be converted to table types, like TypedTables.Table
to simplify further use.
using TypedTables: Table
Table(iso)
Table with 6 columns and 1316 rows:
eep m_ini logTe Mbol logg C_O
┌──────────────────────────────────────────────
1 │ 381 0.100041 3.49652 12.1386 5.31768 0.0
2 │ 382 0.100183 3.49679 12.1326 5.317 0.0
3 │ 383 0.102296 3.501 12.0455 5.30786 0.0
4 │ 384 0.111233 3.5171 11.7061 5.27251 0.0
5 │ 385 0.140666 3.54548 10.9621 5.19157 0.0
6 │ 386 0.256448 3.58111 9.54063 5.02139 0.0
7 │ 387 0.307273 3.58928 9.14992 4.97873 0.0
8 │ 392 0.597788 3.71664 6.45067 4.69264 0.0
9 │ 393 0.602482 3.71816 6.41115 4.68807 0.0
10 │ 394 0.60861 3.72092 6.3558 4.68313 0.0
11 │ 395 0.624854 3.72898 6.19115 4.66349 0.0
12 │ 396 0.629747 3.73171 6.14125 4.65797 0.0
13 │ 397 0.645398 3.74016 5.98726 4.6412 0.0
14 │ 398 0.655613 3.74542 5.88852 4.62988 0.0
15 │ 399 0.663761 3.74952 5.81043 4.62055 0.0
16 │ 400 0.670227 3.75246 5.7484 4.61247 0.0
17 │ 401 0.670106 3.75295 5.74383 4.61165 0.0
⋮ │ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮
The theoretical isochrone is plotted below.

We can load a grid of bolometric corrections from BolometricCorrections.jl to add observational magnitudes to the theoretical isochrone. In this example, we use the MIST bolometric correction grid, which offers bolometric corrections for varying metallicities ([M/H]) and reddening values ($A_V$).
Because the solar metallicity calibrations of PARSEC and MIST are not exactly the same, the protostellar metal mass fraction $Z$ that corresponds to a given [M/H] is not the same between the two libraries. The isochrone
interface will convert the given [M/H], which is assumed to be the desired metallicity in the stellar track library, to its corresponding metal mass fraction, and then convert from the metal mass fraction to the correct [M/H] for the assumed chemical model of the bolometric correction grid.
This method returns a TypedTables.Table
that contains the information from both sources. Here we evaluate an isochrone with log10(age [yr]) = 10.05
, [M/H]=-1.234, and $A_v=0.02$ mag.
using BolometricCorrections.MIST: MISTBCGrid
m = MISTBCGrid("JWST")
iso = isochrone(p, m, 10.05, -1.234, 0.02)
Table with 35 columns and 1316 rows:
eep m_ini logTe Mbol logg C_O F070W F090W ⋯
┌───────────────────────────────────────────────────────────────────
1 │ 381 0.100041 3.49652 12.1386 5.31768 0.0 12.4714 11.2027 ⋯
2 │ 382 0.100183 3.49679 12.1326 5.317 0.0 12.4637 11.1975 ⋯
3 │ 383 0.102296 3.501 12.0455 5.30786 0.0 12.3512 11.1221 ⋯
4 │ 384 0.111233 3.5171 11.7061 5.27251 0.0 11.9118 10.8027 ⋯
5 │ 385 0.140666 3.54548 10.9621 5.19157 0.0 10.9843 10.0788 ⋯
6 │ 386 0.256448 3.58111 9.54063 5.02139 0.0 9.39056 8.64289 ⋯
7 │ 387 0.307273 3.58928 9.14992 4.97873 0.0 8.97015 8.24974 ⋯
8 │ 392 0.597788 3.71664 6.45067 4.69264 0.0 6.05618 5.6659 ⋯
9 │ 393 0.602482 3.71816 6.41115 4.68807 0.0 6.01647 5.62914 ⋯
10 │ 394 0.60861 3.72092 6.3558 4.68313 0.0 5.96126 5.57918 ⋯
11 │ 395 0.624854 3.72898 6.19115 4.66349 0.0 5.80163 5.43377 ⋯
12 │ 396 0.629747 3.73171 6.14125 4.65797 0.0 5.75342 5.39043 ⋯
13 │ 397 0.645398 3.74016 5.98726 4.6412 0.0 5.60472 5.25704 ⋯
14 │ 398 0.655613 3.74542 5.88852 4.62988 0.0 5.51247 5.17355 ⋯
15 │ 399 0.663761 3.74952 5.81043 4.62055 0.0 5.4396 5.10759 ⋯
16 │ 400 0.670227 3.75246 5.7484 4.61247 0.0 5.38136 5.05431 ⋯
17 │ 401 0.670106 3.75295 5.74383 4.61165 0.0 5.37742 5.05121 ⋯
⋮ │ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋱
All available columns in the isochrone can be obtained with TypedTables.columnnames
.
using TypedTables: columnnames
columnnames(iso)
(:eep, :m_ini, :logTe, :Mbol, :logg, :C_O, :F070W, :F090W, :F115W, :F140M, :F150W2, :F150W, :F162M, :F164N, :F182M, :F187N, :F200W, :F210M, :F212N, :F250M, :F277W, :F300M, :F322W2, :F323N, :F335M, :F356W, :F360M, :F405N, :F410M, :F430M, :F444W, :F460M, :F466N, :F470N, :F480M)
A color-magnitude diagram constructed from the isochrone is plotted below.

Chemistry API
We provide the StellarTracks.PARSEC.PARSECChemistry
type that follows the chemistry API defined in BolometricCorrections.jl to access information on the chemical mixture assumed for the PARSEC models.
StellarTracks.PARSEC.PARSECChemistry
— TypePARSECChemistry()
Returns a singleton struct representing the PARSEC chemical mixture model. We presently only include scaled-solar models. The solar protostellar chemical mixture for PARSEC was calibrated to reproduce solar photospheric observations via a forward modeling approach (see section 3 of Bressan et al. [2]). The full solar calibration assumed for PARSEC is given in Table 3 of Bressan et al. [2]. The distribution of heavy metals is taken from Grevesse and Sauval [12] and Caffau et al. [13] (see section 4 of Bressan et al. [2]).
julia> using StellarTracks.PARSEC: PARSECChemistry, X, Y, Z, X_phot, Y_phot, Z_phot, MH;
julia> chem = PARSECChemistry();
julia> X(chem) + Y(chem) + Z(chem) ≈ 1 # solar protostellar values
true
julia> X_phot(chem) + Y_phot(chem) + Z_phot(chem) ≈ 1 # solar photospheric values
true
julia> MH(chem, Z(chem) * 0.1) ≈ -0.9400696788068212
true
julia> Z(chem, -0.9400696788068212) ≈ Z(chem) * 0.1
true
Note that in our conversions between $Z$ and [M/H], remembering that MH = log10(Z/X) - log10(Z⊙/X⊙)
, we use the photospheric solar values for Z⊙
and X⊙
(these are Z_⊙
and X_⊙ = 1 - Z_⊙ - Y_⊙
in Table 3 of Bressan et al. [2]). This reproduces the relation between Z
and [M/H] defined in Table 4 of Bressan et al. [2], which is also used in the "CMD" webform provided by the PARSEC team.
Library API
StellarTracks.PARSEC.PARSECLibrary
— TypePARSECLibrary()
PARSECLibrary
implements the AbstractTrackLibrary
interface for the PARSEC stellar evolution library. If you construct an instance as p = PARSECLibrary()
, it is callable as p(mh::Number, M::Number)
which returns an InterpolatedTrack
that interpolates between tracks to a specific metallicity ([M/H]) and initial stellar mass (M
).
This type also supports isochrone construction (see isochrone).
Examples
julia> p = PARSECLibrary()
Structure of interpolants for PARSEC v1.2S library of stellar tracks. Valid range of metal mass fraction Z is (0.0001, 0.06).
julia> isochrone(p, 10.05, -0.76) isa NamedTuple
true
julia> p(-2.05, 1.05)
InterpolatedTrack with M_ini=1.05, MH=-2.05, Z=0.00013856708164357998, Y=0.24874664940532557, X=0.7511147835130308.
StellarTracks.isochrone
— Methodisochrone(p::PARSECLibrary, logAge::Number, mh::Number)
Interpolates properties of the stellar tracks in the library at the requested logarithmic age (logAge = log10(age [yr])
) and logarithmic metallicity mh
. Returns a NamedTuple
containing the properties listed below:
eep
: Equivalent evolutionary pointsm_ini
: Initial stellar masses, in units of solar masses.logTe
: Base-10 logarithm of the effective temperature [K] of the stellar model.Mbol
: Bolometric luminosity of the stellar model.logg
: Surface gravity of the stellar model calculated as-10.616 + log10(mass) + 4 * logTe - (4.77 - Mbol) / 2.5
.C_O
: Photospheric C/O ratio (the ZAMS value is used before the TP-AGB).
The full library is principally a set of PARSECTrackSet
s, with one track set per unique chemical composition. All PARSEC models have scaled-solar chemical compositions, so they vary only in total metallicity (i.e., $Z$).
Track Set API
StellarTracks.PARSEC.PARSECTrackSet
— TypePARSECTrackSet(zval::Number)
PARSECTrackSet
implements the AbstractTrackSet
interface for the PARSEC stellar evolution library.
julia> ts = StellarTracks.PARSEC.PARSECTrackSet(0.0001)
TrackSet with Y=0.248678, Z=0.0001, 1930 EEPs and 104 initial stellar mass points.
julia> ts(1.01) # Interpolate track at new initial mass
PARSECTrack with M_ini=1.01, MH=-2.191722058538173, Z=0.0001, Y=0.248678, X=0.7512220000000001.
julia> isochrone(ts, 10.0) isa NamedTuple # Interpolate isochrone at `log10(age [yr]) = 10`
true
Individual Tracks API
StellarTracks.PARSEC.PARSECTrack
— TypePARSECTrack(zval::Number, mass::Number)
PARSECTrack
implements the AbstractTrack
interface for the PARSEC stellar evolution library.
Note that due to the organization of the PARSEC data files, this method requires constructing a PARSECTrackSet
and is therefore not efficient if your aim is to construct multiple tracks of the same metallicity zval
. In this case, you should construct a PARSECTrackSet
and call it with the masses you want, e.g., ts = PARSECTrackSet(0.0001); ts.([0.12, 0.15])
.
julia> track = StellarTracks.PARSEC.PARSECTrack(0.0001, 0.15)
PARSECTrack with M_ini=0.15, MH=-2.191722058538173, Z=0.0001, Y=0.248678, X=0.7512220000000001.
julia> track(7.0) # interpolate track at log10(age [yr]) = 7
(logTe = 3.6015066653099757, Mbol = 8.518315848633081, logg = 4.464972304683626, C_O = 0.0)
PARSEC References
This page cites the following references:
- [2]
- A. Bressan, P. Marigo, L. Girardi, B. Salasnich, C. Dal Cero, S. Rubele and A. Nanni. PARSEC : stellar tracks and isochrones with the PAdova and TRieste Stellar Evolution Code. MNRAS 427, 127–145 (2012).
- [3]
- Y. Chen, L. Girardi, a. Bressan, P. Marigo, M. Barbieri and X. Kong. Improving PARSEC models for very low mass stars. MNRAS 444, 2525–2543 (2014).
- [4]
- J. Tang, A. Bressan, P. Rosenfield, A. Slemer, P. Marigo, L. Girardi and L. Bianchi. New PARSEC evolutionary tracks of massive stars at low metallicity: testing canonical stellar evolution in nearby star-forming dwarf galaxies. MNRAS 445, 4287–4305 (2014). Accessed on Mar 24, 2024. ADS Bibcode: 2014MNRAS.445.4287T.
- [5]
- Y. Chen, A. Bressan, L. Girardi, P. Marigo, X. Kong and A. Lanza. PARSEC evolutionary tracks of massive stars up to 350 M⊙ at metallicities 0.0001 ≤ Z ≤ 0.04. MNRAS 452, 1068–1080 (2015). Accessed on Mar 24, 2024. ADS Bibcode: 2015MNRAS.452.1068C.
- [6]
- P. Rosenfield, P. Marigo, L. Girardi, J. J. Dalcanton, A. Bressan, B. F. Williams and A. Dolphin. Evolution of Thermally Pulsing Asymptotic Giant Branch Stars. V. Constraining the Mass Loss and Lifetimes of Intermediate-mass, Low-metallicity AGB Stars. ApJ 822, 73 (2016). Accessed on Aug 24, 2024. ADS Bibcode: 2016ApJ...822...73R.
- [7]
- P. Marigo, L. Girardi, A. Bressan, P. Rosenfield, B. Aringer, Y. Chen, M. Dussin, A. Nanni, G. Pastorelli, T. S. Rodrigues, M. Trabucchi, S. Bladh, J. Dalcanton, M. A. Groenewegen, J. Montalbán and P. R. Wood. A New Generation of PARSEC-COLIBRI Stellar Isochrones Including the TP-AGB Phase. ApJ 835, 77 (2017). Accessed on Aug 21, 2024. ADS Bibcode: 2017ApJ...835...77M.
- [8]
- G. Pastorelli, P. Marigo, L. Girardi, Y. Chen, S. Rubele, M. Trabucchi, B. Aringer, S. Bladh, A. Bressan, J. Montalbán, M. L. Boyer, J. J. Dalcanton, K. Eriksson, M. A. Groenewegen, S. Höfner, T. Lebzelter, A. Nanni, P. Rosenfield, P. R. Wood and M.-R. L. Cioni. Constraining the thermally pulsing asymptotic giant branch phase with resolved stellar populations in the Small Magellanic Cloud. MNRAS 485, 5666–5692 (2019). Accessed on Mar 24, 2024. ADS Bibcode: 2019MNRAS.485.5666P.
- [9]
- G. Pastorelli, P. Marigo, L. Girardi, B. Aringer, Y. Chen, S. Rubele, M. Trabucchi, S. Bladh, M. L. Boyer, A. Bressan, J. J. Dalcanton, M. A. Groenewegen, T. Lebzelter, N. Mowlavi, K. L. Chubb, M.-R. L. Cioni, R. de Grijs, V. D. Ivanov, A. Nanni, J. T. van Loon and S. Zaggia. Constraining the thermally pulsing asymptotic giant branch phase with resolved stellar populations in the Large Magellanic Cloud. MNRAS 498, 3283–3301 (2020). Accessed on Mar 24, 2024. ADS Bibcode: 2020MNRAS.498.3283P.
- [10]
- C. Nguyen, G. Costa, L. Girardi, G. Volpato, A. Bressan, Y. Chen, P. Marigo, X. Fu and P. Goudfrooij. PARSEC V2.0: Stellar tracks and isochrones of low- and intermediate-mass stars with rotation. Astronomy & Astrophysics 665, A126 (2022), arXiv:2207.08642 [astro-ph.SR].
- [11]
- G. Costa, K. Shepherd, A. Bressan, F. Addari, Y. Chen, X. Fu, G. Volpato, C. Nguyen, L. Girardi, P. Marigo, A. Mazzi, G. Pastorelli, M. Trabucchi, D. Bossini and S. Zaggia. Evolutionary tracks, ejecta, and ionizing photons from intermediate-mass to very massive stars with PARSEC. Astronomy & Astrophysics 694, A193 (2025), arXiv:2501.12917 [astro-ph.SR].
- [12]
- N. Grevesse and A. Sauval. Standard Solar Composition. Space Science Reviews 85, 161–174 (1998).
- [13]
- E. Caffau, H.-G. Ludwig, M. Steffen, B. Freytag and P. Bonifacio. Solar Chemical Abundances Determined with a CO5BOLD 3D Model Atmosphere. Solar Physics 268, 255–269 (2011).