Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Differentiable inference — natal cloud parameters from cluster substructure

San Diego State University

Differentiable inference: natal cloud parameters from cluster substructure

A young star cluster is a fossil of the turbulent cloud that made it. Supersonic turbulence sets the density power spectrum; self-gravity carves the dense, collapsing tail; newborn stars trace that gas. So the cluster’s spatial substructure encodes the natal parameters θ=(M,b,α,β)\theta = (\mathcal{M}, b, \alpha, \beta) — Mach number, turbulent forcing, density-PDF tail slope, and power-spectrum slope (see Density PDFs and the freefall-density factor for what each controls). The inference problem inverts the arrow of causation: observed substructure → natal cloud physics. This is galaxy-clustering-style inference applied to star clusters, with β\beta as the pivot (turbulence → density spectrum → stellar clustering).

This chapter develops the method in two settings: the 3-D gas-map inference (where the density-PDF tail slope α\alpha becomes recoverable) and the projected 2-D star-map inference (the differentiable successor to the heuristic QQ/MST substructure metrics for β\beta).

The obstacle, and the breakthrough

The forward model is stochastic and full of non-differentiable steps: a rank sort imposes the density marginal, categorical sampling places stars, and a minimum-spanning-tree computes the Cartwright & Whitworth (Cartwright & Whitworth (2004)) QQ substructure metric. You cannot backpropagate through it, so gradient-based inference looks impossible. The standard escape — simulation-based inference with a neural network Bairagi & Wandelt, 2026 — buries the physics and is simulation-hungry.

The breakthrough is the cosmology playbook: do not differentiate the simulator — predict the summary statistic analytically as a smooth function of θ\theta, and differentiate that. Cosmologists never backpropagate through an NN-body simulation; they predict the matter power spectrum and fit it. Two facts make this exact here, not merely convenient:

  1. A Gaussian random field is fully specified by its 1-point and 2-point statistics. A field that is a monotone map of a Gaussian likewise has vanishing higher-order correlations Neyrinck et al., 2011Carron & Szapudi, 2013, so the 1-point PDF and 2-point function are sufficient statistics. If inference uses only those, the phase-randomness of the model is not a misspecification — we use precisely the statistics it represents faithfully. This is the most powerful and the most honest use of the model.

  2. The copula separates value from arrangement. The density values are an analytic function of (M,b,α)(\mathcal{M}, b, \alpha) on a fixed quantile grid; β\beta only sets the spatial arrangement. So /(M,b,α)\partial/\partial(\mathcal{M}, b, \alpha) of any permutation-invariant observable flows cleanly, and β\beta enters analytically through the spectrum.

The realization simulator is retained, but demoted: it is the ground-truth oracle that validates the analytic predictions, and the source of mocks and covariances. The CW04 QQ metric is a validation/demo diagnostic (“we reproduce fractal clusters”), never a fit observable.

The 2-point carrier: Gaussianization and the Mehler series

The 2-point observable is the log-density correlation ξs(r)=s(x)s(x+r)\xi_s(r) = \langle s(\mathbf{x})\, s(\mathbf{x}+\mathbf{r})\rangle, where s=ln(ρ/ρ0)s = \ln(\rho/\rho_0). We use the log density, not the linear density, by necessity: the fat power-law tail makes ρ2\langle\rho^2\rangle diverge for α2\alpha \le 2 — the canonical collapsing slopes — so linear-density 2-point statistics are formally ill-behaved, while ss has finite variance for any α\alpha. The log-density is also the information-optimal variable: Gaussianizing the field restores information to the two-point function Neyrinck et al., 2009, and the log transform is the optimal local Gaussianizer for a kβk^{-\beta} spectrum Carron & Szapudi, 2013.

The field is a Gaussian gg with spectrum kβk^{-\beta}, mapped monotonically to the BM19 marginal. For any monotone transform s=T(g)s = T(g), the classic Gaussianization result Coles & Jones, 1991Szapudi & Pan, 2004 gives the transformed correlation as a Mehler/Hermite series — this is the single 2-point machinery the whole inference (3-D and projected) reuses:

ξs(r)  =  n1cn2n!ρg(r)n,cn  =  T(g)Hen(g),\xi_s(r) \;=\; \sum_{n\ge 1} \frac{c_n^2}{n!}\,\rho_g(r)^{\,n}, \qquad c_n \;=\; \big\langle\, T(g)\,\mathrm{He}_n(g)\,\big\rangle ,

with Hen\mathrm{He}_n the probabilists’ Hermite polynomials and ρg(r)\rho_g(r) the normalized Gaussian correlation, ρg(0)=1\rho_g(0)=1. The coefficients cnc_n are 1-D integrals of the copula map, smooth in (M,b,α)(\mathcal{M}, b, \alpha); ρg(r)\rho_g(r) is the Fourier transform of kβk^{-\beta}, analytic in β\beta. So ξs(r;θ)\xi_s(r;\theta) is differentiable in all four parameters — no sort, no realization. The series converges by nmax8n_{\max} \approx 8, and the predicted ξs\xi_s matches the realization oracle to 0.1%\sim 0.1\%. The projected version (below) feeds the same series a line-of-sight-summed map.

The stellar observable: counts-in-cells

Star positions are sampled from the density field, so the natural stellar observable is counts-in-cells (CIC): partition the field into cubic cells and count stars per cell. The count distribution is a local-Poisson average of the density PDF Szapudi & Pan, 2004Carron & Szapudi, 2014, and the cell count variance is

σN2(R)  =  Nˉ  +  Nˉ2ξˉ(R),\sigma_N^2(R) \;=\; \bar N \;+\; \bar N^2\, \bar\xi(R),

where Nˉ\bar N is the mean count and ξˉ(R)\bar\xi(R) is the cell-averaged 2-point function at cell scale RR. The Poisson term Nˉ\bar N is shot noise; the clustering term Nˉ2ξˉ(R)\bar N^2 \bar\xi(R) carries β\beta (the integrated 2-point), while the shape of the count distribution (its over-dispersion) carries (M,b,α)(\mathcal{M}, b, \alpha). Counts-in-cells is tail-robust (finite NN), unlike the angular pair correlation, and the cell scale RR regularizes the fat tail.

The α wall

The tail slope α\alpha — the rarest, densest, collapsing gas — resisted inference for two compounding reasons.

Stars do not carry α\alpha. Cell-averaging smooths over the density peaks and shot noise buries what remains. An apparent α\alpha-signal in star counts turned out to be a sampling artifact (multinomial, with-replacement sampling over fine cells); a clean inhomogeneous-Poisson sampler drops it to negligible. α\alpha is a gas-density observable — it needs a dust / extinction / column-density map, not stars.

The finite-field truncation. To realize the field, the rank copula maps cell ranks to densities via u=(rank+12)/Nu = (\mathrm{rank}+\tfrac12)/N, then s=F1(u)s = F^{-1}(u). The largest density an NN-cell field can produce is smax=F1(10.5/N)s_{\max} = F^{-1}(1 - 0.5/N). For a power-law tail p(s)eαsp(s) \propto e^{-\alpha s},

smax    st  +  lnNα.s_{\max} \;\approx\; s_t \;+\; \frac{\ln N}{\alpha}.

The realized tail is therefore truncated. Fitting the full infinite-tail BM19 PDF to a truncated mock biases α\alpha high — the missing far-tail mass makes the realized slope look steeper. The posterior peaks near α2.8\alpha \approx 2.8 against a truth of 2.5, and goes flat for α3\alpha \gtrsim 3, where the tail holds essentially no cells.

The fix: peaks-over-threshold

The fix is the peaks-over-threshold (POT) estimator from extreme-value statistics — the mathematics of flood and insurance risk. The key fact is that the exponential is memoryless: above the transition sts_t the BM19 tail is exactly CeαsC\,e^{-\alpha s}, so the exceedances above any fixed threshold sthrsts_{\rm thr} \ge s_t are again exponential with rate α\alpha. Keep only the gas cells above sthrs_{\rm thr} and model those exceedances as a truncated exponential on [0,L][0, L], with x=ssthrx = s - s_{\rm thr} and L=smaxsthrL = s_{\max} - s_{\rm thr}:

p(x0<x<L)  =  αeαx1eαL.p(x \mid 0 < x < L) \;=\; \frac{\alpha\,e^{-\alpha x}}{1 - e^{-\alpha L}} .

Four properties make this the right tool — each is an assertion in the test suite:

The Fisher forecast

Because the exceedances are a clean truncated exponential, the Fisher information per exceedance is analytic:

I(α)  =  1α2    L2eαL(1eαL)2,σ(α)  =  1NtailI(α).I(\alpha) \;=\; \frac{1}{\alpha^2} \;-\; \frac{L^2\,e^{-\alpha L}}{(1 - e^{-\alpha L})^2}, \qquad \sigma(\alpha) \;=\; \frac{1}{\sqrt{N_{\rm tail}\, I(\alpha)}} .

As LL \to \infty, I1/α2I \to 1/\alpha^2, recovering the textbook Hill-estimator result σ(α)=α/Ntail\sigma(\alpha) = \alpha / \sqrt{N_{\rm tail}}. At achievable grids L2L \approx 23, so the truncation correction inflates σ(α)\sigma(\alpha) by 2\sim 24%4\%; the forecast uses the corrected form. This converts the “wall” into an honest survey-design forecast: to measure α\alpha to a target precision, you need a specific number of independent tail elements NtailN_{\rm tail}.

Putting it together: HMC recovery and forecast

The joint likelihood sums independent blocks — counts-in-cells Equation for (M,β)(\mathcal{M}, \beta) and the POT exceedance likelihood Equation for α\alpha — within the valid region st(θ)sthrs_t(\theta) \le s_{\rm thr}. The free parameters (M,α,β)(\mathcal{M}, \alpha, \beta) are sampled in an unconstrained reparametrization with the No-U-Turn Sampler Hoffman & Gelman, 2014 via blackjax BlackJAX Developers, 2024; bb is fixed because the data constrain (M,b)(\mathcal{M}, b) only through σs2=ln(1+(bM)2)\sigma_s^2 = \ln(1 + (b\mathcal{M})^2).

On a 1603 gas map (injection–recovery, Ntail=510N_{\rm tail} = 510):

AC16 — joint (M,α,β)(\mathcal{M}, \alpha, \beta) recovery on an injected mock

parameter

posterior

truth

deviation

M\mathcal{M}

4.88±0.654.88 \pm 0.65

5.0

0.18σ0.18\sigma

α\alpha

2.533±0.112\mathbf{2.533 \pm 0.112}

2.5\mathbf{2.5}

0.30σ\mathbf{0.30\sigma}

β\beta

3.20±0.433.20 \pm 0.43

3.0

0.45σ0.45\sigma

The α\alpha posterior width (0.112) matches the truncation-corrected Fisher (0.113) to 1%1\% — the likelihood is calibrated, not merely covering — and corr(M,α)=0.11\mathrm{corr}(\mathcal{M}, \alpha) = -0.11 confirms the degeneracy is broken. The forecast (AC17) validates Equation to 3%\sim 3\% against independent draws, with the expected N\sqrt{N} scaling (empirical slope -0.56 vs ideal -0.5).

import jax
import jax.numpy as jnp
from gravoturb.realization.copula import rank_copula_field
from gravoturb.realization.gaussian_field import gaussian_random_field
from gravoturb.theory.density_pdf import sigma_s_squared, transition_density
from gravoturb.diagnostics.measure import measure_exceedances
from gravoturb.inference.likelihood import tail_exceedance_loglike
from gravoturb.inference.fisher import sigma_alpha

mach, b, alpha, beta = 5.0, 0.4, 2.5, 3.0
key = jax.random.PRNGKey(0)

# one gas-density realization (the "observed" dust/extinction map)
s = rank_copula_field(gaussian_random_field((128, 128, 128), beta, key), mach, b, alpha)

# threshold in the power-law regime; reduce to exceedances above s_thr
s_thr = float(transition_density(alpha, sigma_s_squared(mach, b))) + 0.75
counts, edges, s_max, n_tail = measure_exceedances(s, s_thr, n_bins=12)

# the POT tail log-likelihood is differentiable in alpha (= theta[2])
theta = jnp.array([mach, b, alpha, beta])
ll = tail_exceedance_loglike(jnp.asarray(counts), jnp.asarray(edges), theta, s_thr, s_max)
forecast = sigma_alpha(alpha, s_max - s_thr, n_tail)      # truncation-corrected sigma(alpha)
print(f"N_tail = {n_tail},  sigma(alpha) forecast = {float(forecast):.3f}")

In projection: a differentiable β estimator (the Q/MST successor)

Real data are 2-D sky positions, not a 3-D gas cube. The projected setting runs the same cosmology playbook on a star map and yields one number — the natal turbulence slope β\beta — as the rigorous, differentiable successor to the heuristic QQ/MST substructure metrics. The generative chain is

g  [P(k)=kβ]  BM19 copula  s  ρ=es  ρ  LOS sum  Σ  Poisson  N(x),g \;[\,P(k)=k^{-\beta}\,] \;\xrightarrow{\text{BM19 copula}}\; s \;\xrightarrow{\rho=e^{s}}\; \rho \;\xrightarrow{\text{LOS sum}}\; \Sigma \;\xrightarrow{\text{Poisson}}\; N(\mathbf{x}),

a Gaussian field gg → log-density ss → density ρ\rho → projected (column) density Σ\Sigma → star counts NN. Every arrow after the first either destroys information about β\beta or breaks the statistical properties an estimator needs. The art is finding the summary whose mean is analytic in β\beta and whose likelihood is tractable.

Why the obvious estimator fails

The natural summary is the angular power spectrum (band-powers) of the count map. A band-power is quadratic in the field — an average of Nmodes\sim N_{\text{modes}} squared Fourier amplitudes. For a Gaussian field each is χ22\chi^2_2, so the band-power’s skewness is 8/Nmodes\sqrt{8/N_{\text{modes}}} and falls as you go to smaller scales. The measured band-powers do the opposite: their skewness grows with kk and is so heavy-tailed that the sample estimate is dominated by the single largest realization. A statistic whose skew grows with kk at large NmodesN_{\text{modes}} is reflecting the field’s own non-Gaussianity: the BM19 power-law tail puts rare, dense clumps into the map, and those clumps dominate the small-scale power (a large connected trispectrum). A Gaussian likelihood on these raw band-powers is therefore structurally mis-specified, and no covariance or mean correction repairs a wrong distribution shape. The textbook analytic rescues (Hamimeche–Lewis-style transforms, a lognormal likelihood) assume Gaussian-field (Wishart) band-power statistics; because the offending non-Gaussianity is in the field, they under-correct exactly in the high-kk tail. The fix must be a better observable, not a cleverer likelihood.

The right observable: the log₊ map

The information about β\beta, and the Gaussianity, both live in the log-density. In ss-space the band-power slope tracks β\beta almost perfectly; the exponentiation ρ=es\rho=e^{s} is what compresses the slope and manufactures the heavy tail. So the observable should undo the exponentiation. The Neyrinck et al. (2009)log+\log_+” transform does exactly that on a count map:

A(x)  =  log+ ⁣(N(x))  =  {ln ⁣(N/Nˉ),N>Nˉ,N/Nˉ1,NNˉ,\mathcal{A}(\mathbf{x}) \;=\; \log_+\!\bigl(N(\mathbf{x})\bigr) \;=\; \begin{cases} \ln\!\bigl(N/\bar N\bigr), & N>\bar N,\\[2pt] N/\bar N - 1, & N\le \bar N,\end{cases}

a count-safe logarithm (Nˉ\bar N the mean count). Measuring its band-powers, the per-bin skewness is driven to 0\approx 0 across all but the lowest kk — a bona fide Gaussian-likelihood target. Two properties make log+\log_+ decisively better than rank-Gaussianization (the transform an earlier attempt used): it is deterministic and differentiable (a fixed function of NN, not a non-differentiable sort), and its forward-model transfer is β\beta-stable, so the β\beta-response can stay analytic rather than being a fitted, noisy surface — the precise failure mode that mis-calibrated the earlier estimator.

The analytic forward model and shot transfer

We predict the mean log₊ band-power as a smooth, differentiable function of θ=(β,M,)\theta=(\beta, \mathcal{M},\dots) and fit it (the same cosmology playbook — predict the statistic, never backpropagate the simulator). The clustering backbone is the analytic projected log-density 2-point: take the log-density Mehler series Equation, project it along the line of sight (a discrete Limber sum), and bin in k|\mathbf{k}|. Call this As(k;β,M)A_s(k;\beta,\mathcal M); it is exact for the field, reproducing the projected-log-density slope to better than 1 % across the whole β\beta prior.

At high stellar density the observable’s mean is AsA_s times a β\beta-independent per-bin transfer T(k)T(k) calibrated once at a fiducial θfid\theta_{\text{fid}}, μ(k;β)=As(k;β,Mfid)Tfid(k)\mu(k;\beta) = A_s(k;\beta,\mathcal M_{\text{fid}})\,T_{\text{fid}}(k); because AsA_s carries the β\beta-response and TT is constant, the slope information is never fitted. At low stellar density Poisson noise suppresses the β\beta-response by a β\beta-dependent amount, so the shot is modeled analytically instead of fitted. Conditioning on the gas field, two pixels’ counts are sums over disjoint independent Poisson cells, so the autocovariance of A=log+(N)\mathcal A=\log_+(N) splits exactly into a clustering piece and a single zero-lag (white) piece:

PA(k)  =  Pclust(k)band-power of m(Σ)  +  Wshotk-independent,P_{\mathcal A}(k) \;=\; \underbrace{P_{\text{clust}}(k)}_{\text{band-power of }m(\Sigma)} \;+\; \underbrace{W_{\text{shot}}}_{\text{$k$-independent}} ,

with m(Σ)=E[log+NΣ]m(\Sigma) = \mathbb{E}[\log_+ N \mid \Sigma] the Poisson smoothing of the log (at large counts it returns ln(Σ/Σˉ)\ln(\Sigma/\bar\Sigma), slope β\to\beta; at small counts it bends over — that bend is the shot suppression, in closed form) and WshotW_{\text{shot}} the conditional variance EΣ[Var(log+NΣ)]\mathbb{E}_\Sigma[\mathrm{Var}(\log_+ N \mid \Sigma)] (the familiar white shot floor). Since mm is a pointwise transform of Σ\Sigma, the same Mehler machinery Equation gives Pclust(k)P_{\text{clust}}(k) — just fed the new map. The single modelling approximation is the marginal of Σ\Sigma used to build Σ(g)\Sigma(g): a line-of-sight sum of correlated lognormals is itself approximately lognormal Coles & Jones, 1991, matched to the analytic mean and variance of Σ\Sigma. Everything else is exact.

The payoff: μ(k;β)=Pclust(k)+Wshot\mu(k;\beta) = P_{\text{clust}}(k) + W_{\text{shot}} is fully analytic and differentiable in β\beta at any stellar density — the shot’s β\beta-dependence comes from the physics, never from a fitted surface. With a fixed-fiducial Hartlap-corrected covariance and a logit-reparametrized NUTS sampler, it passes simulation-based calibration Talts et al., 2018: single-cluster β rank-uniformity p=0.82p=0.82 at high density, with σ(β)0.084\sigma(\beta)\approx0.084 per cluster set by cosmic variance (it tightens only by stacking, not by adding stars). Where the projected-density marginal defeats a closed-form model (the lowest densities), a flow-based neural posterior Bairagi & Wandelt, 2026 on the same log₊ summary learns the marginal implicitly and calibrates; the two agree where they overlap and are reported together (analytic backbone + flow extension). The relevant validation scripts and SBC numbers are first-hand and re-runnable; see Gravoturbulent + PP20 validation for the current validation status and how to reproduce them.

Caveats and domain of validity

These define what the method does not claim.

  1. Injection–recovery, not real data. AC16 draws the mock from the same BM19 model it fits. It validates the inference machinery (likelihood + sampler), not that real clouds carry this exact tail. The model is BM19 by assumption.

  2. The correlation penalty (the dominant real-world limit). The forecast assumes NtailN_{\rm tail} independent tail elements. A real β=3\beta = 3 field’s tail cells are spatially clustered — the dense gas sits in coherent peaks — so the realized scatter is 2.5×\sim 2.5\times the i.i.d. bound, i.e. NeffNtail/6N_{\rm eff} \approx N_{\rm tail}/6. A real map needs 6×\sim 6\times more tail resolution elements than the naive count, analogous to correlated-mode inflation in galaxy surveys.

  3. α\alpha requires a gas-density tracer with enough dynamic range to resolve the tail.

  4. M\mathcal{M}bb degeneracy. The data constrain (M,b)(\mathcal{M}, b) only through σs2=ln(1+(bM)2)\sigma_s^2 = \ln(1 + (b\mathcal{M})^2); the 4-parameter Fisher is rank-3 singular. Fix bb (or constrain it independently) to recover M\mathcal{M}.

  5. 2-D projection. Real data are 2-D sky positions. The Limber projection introduces cluster distance/depth as a nuisance; the projected PDF is narrower than the volumetric one. In pure 2-D the tail slope α\alpha is depth-gated (line-of-sight averaging Gaussianizes the 1-point tail), while σ(β)0.2\sigma(\beta)\approx 0.2 per cluster is cosmic-variance limited — improving as 1/K\sim 1/\sqrt{K} only by stacking KK clusters.

  6. Phase-random model. Valid for 1pt+2pt inference, but do not invert higher-order / morphological statistics — real clouds have genuine filamentary phase coherence the GRF cannot produce. The 3-point function is reserved as a held-out null test and filament detector.

  7. Relative over absolute. Absolute βM\beta \to \mathcal{M} mapping needs validation against real gravo-turbulent simulations. Population trends and Fisher forecasts are far more defensible than absolute per-cluster Mach numbers.

Example science questions

Implementation, validation & references

References
  1. Cartwright, A., & Whitworth, A. P. (2004). The statistical analysis of star clusters. Monthly Notices of the Royal Astronomical Society, 348, 589–598. 10.1111/j.1365-2966.2004.07360.x
  2. Bairagi, A., & Wandelt, B. D. (2026). PatchNet: A hierarchical approach for neural field-level inference from Quijote simulations. Journal of Cosmology and Astroparticle Physics, 2026(03), 028. 10.1088/1475-7516/2026/03/028
  3. Neyrinck, M. C., Szapudi, I., & Szalay, A. S. (2011). Rejuvenating Power Spectra. II. The Gaussianized Galaxy Density Field. The Astrophysical Journal, 731, 116. 10.1088/0004-637X/731/2/116
  4. Carron, J., & Szapudi, I. (2013). Optimal non-linear transformations for large-scale structure statistics. Monthly Notices of the Royal Astronomical Society, 434, 2961–2970. 10.1093/mnras/stt1215
  5. Neyrinck, M. C., Szapudi, I., & Szalay, A. S. (2009). Rejuvenating the Matter Power Spectrum: Restoring Information with a Logarithmic Density Mapping. The Astrophysical Journal Letters, 698, L90–L93. 10.1088/0004-637X/698/2/L90
  6. Coles, P., & Jones, B. (1991). A lognormal model for the cosmological mass distribution. Monthly Notices of the Royal Astronomical Society, 248, 1–13. 10.1093/mnras/248.1.1
  7. Szapudi, I., & Pan, J. (2004). On Recovering the Nonlinear Bias Function from Counts-in-Cells Measurements. The Astrophysical Journal, 602, 26–37. 10.1086/380920
  8. Carron, J., & Szapudi, I. (2014). Sufficient observables for large-scale structure in galaxy surveys. Monthly Notices of the Royal Astronomical Society Letters, 439, L11–L15. 10.1093/mnrasl/slt167
  9. Hoffman, M. D., & Gelman, A. (2014). The No-U-Turn Sampler: Adaptively Setting Path Lengths in Hamiltonian Monte Carlo. Journal of Machine Learning Research, 15, 1593–1623.
  10. BlackJAX Developers. (2024). BlackJAX: A sampling library for JAX. https://github.com/blackjax-devs/blackjax
  11. Talts, S., Betancourt, M., Simpson, D., Vehtari, A., & Gelman, A. (2018). Validating Bayesian Inference Algorithms with Simulation-Based Calibration. https://arxiv.org/abs/1804.06788
  12. Federrath, C., & Klessen, R. S. (2012). The star formation rate of turbulent magnetized clouds. The Astrophysical Journal, 761, 156. 10.1088/0004-637X/761/2/156
  13. Burkhart, B., & Mocz, P. (2019). The self-gravitating gas fraction and the critical density for star formation. The Astrophysical Journal, 879, 129. 10.3847/1538-4357/ab25ed
  14. Burkhart, B. (2018). The Star Formation Rate in the Gravoturbulent Interstellar Medium. The Astrophysical Journal, 863, 118. 10.3847/1538-4357/aad002
  15. Lomax, O., Bates, M. L., & Whitworth, A. P. (2018). Modelling the structure of star clusters with fractional Brownian motion. Monthly Notices of the Royal Astronomical Society, 480, 371–380. 10.1093/mnras/sty1788