337.1 / 777.4 nm photometer

Physicist verification companion · source release r4 · mathematical checks and unresolved limits

Review index · Download editable notebook

Executed top-to-bottom in a fresh kernel.
Cell 0 · transport-00

02 Transport: equations, native kernels and a worked photon

Goal

Verify the conditional scalar calculation, rather than treating an existing plot as evidence. This light notebook independently recomputes all 56 direct rays and native batch fluences/errors, checks HG and a first-collision integral, and reconstructs a pulse from response mass. The 24 nonzero-GHM cases retain an expected warning: point-nadir rare-path convergence is incomplete. No full RT run, raw ice LUT or new physical cloud validation is performed. See the complete SI derivation.

Cell 1 · transport-01

Setup and assumptions

The model is an isotropic point source inside/at/above a homogeneous finite cylinder: base 14 km,top 17 km,radius 30 km; sources15/16/17/18km; observer 550 km. SSA is assumed 1. Exterior is vacuum; gases,ice absorption,polarization and real cloud structure are absent. The receiver is a small flat aperture with 60 degree full circular FOV. For photon radiance LL,the scalar RTE is

(c−1∂t+Ω^⋅∇)L=−βeL+βs∫p(Ω^′⋅Ω^)L(Ω^′) dΩ′+Φs(t)δ3(r−rs)/(4π).(c^{-1}\partial_t+\hat\Omega\cdot\nabla)L=-\beta_eL+\beta_s\int p(\hat\Omega'\cdot\hat\Omega)L(\hat\Omega')\,d\Omega' +\Phi_s(t)\delta^3(\mathbf r-\mathbf r_s)/(4\pi).
Inspect original LaTeX
(c^{-1}\partial_t+\hat\Omega\cdot\nabla)L=-\beta_eL+\beta_s\int p(\hat\Omega'\cdot\hat\Omega)L(\hat\Omega')\,d\Omega'
+\Phi_s(t)\delta^3(\mathbf r-\mathbf r_s)/(4\pi).

βe,βs\beta_e,\beta_s:m⁻¹; LL:photons m⁻²s⁻¹sr⁻¹; pp:sr⁻¹; Φs\Phi_s:photons s⁻¹. This notebook's times are excess flight delays unless labeled absolute.

Cell 2 · transport-02 · execution 1
from pathlib import Path
import sys,os,json,math
ROOT=next(p for p in [Path.cwd().resolve(),*Path.cwd().resolve().parents] if (p/'modules').is_dir() and (p/'data').is_dir())
for p in [ROOT/'runtime/deps',ROOT/'modules']:
    if p.is_dir():sys.path.insert(0,str(p))
os.environ.setdefault('MPLCONFIGDIR',str(ROOT/'checks/transport_mpl_cache'))
import numpy as np
import matplotlib.pyplot as plt
from IPython.display import display,Markdown
from common import table
import transport_review as tr
plt.rcParams.update({'font.size':10,'figure.figsize':(8,4),'axes.grid':True,'grid.alpha':.25})
print('Package:',ROOT,'| NumPy:',np.__version__)
root,data,inputs,input_paths=tr.load_inputs(ROOT)
results=inputs['results'];geometry=results['model']['geometry']
table([{'input':k,'sha256':tr.sha(p)} for k,p in input_paths.items()],max_rows=3)
Package: D:\Photometer_research_20261022\verification_20261022_r1 | NumPy: 2.3.5
inputsha256
results3e860c1f7a4bd8c06fe2e3b6682c4f6aa38d0dd28621d56956b7030cb8871cc5
qa86272b13d0c452fe23b13ac33c37070af10b87c9eb3e1bc134b0be017402c74b
validation6857da4a668fd96f81cfa0c73b8c2aaca61c6bf33a804221e2925760144af719

3 rows total; 3 shown.

Cell 3 · transport-03

1 Direct light: compute from geometry

βe=τtotal/(zt−zb),ℓabove=max⁡[0,min⁡(zt−zs,zt−zb)],K0=exp⁡(−βeℓabove)4πR02,R0=zo−zs.\beta_e=\tau_{\rm total}/(z_t-z_b),\quad\ell_{\rm above}=\max[0,\min(z_t-z_s,z_t-z_b)], \quad K_0=\frac{\exp(-\beta_e\ell_{\rm above})}{4\pi R_0^2},\quad R_0=z_o-z_s .
Inspect original LaTeX
\beta_e=\tau_{\rm total}/(z_t-z_b),\quad\ell_{\rm above}=\max[0,\min(z_t-z_s,z_t-z_b)],
\quad K_0=\frac{\exp(-\beta_e\ell_{\rm above})}{4\pi R_0^2},\quad R_0=z_o-z_s .

K0 is m⁻² per emitted photon. Multiply by aperture area once. Total directional gain can exceed1; it is not an escape probability. Total tau changes the whole cloud,including below an internal source.

Cell 4 · transport-04 · execution 2
direct_rows=[]
for case in results['cases']:
    z=case['source_altitude_km']*1000
    H=geometry['top_m']-geometry['base_m']
    beta=case['total_vertical_cloud_tau']/H
    R0=geometry['observer_z_m']-z
    tau_above=beta*max(0,min(geometry['top_m']-z,H))
    Kvac=1/(4*np.pi*R0**2)
    gain0=np.exp(-tau_above)
    direct_rows.append(dict(case_id=case['case_id'],tau_above=tau_above,
        direct_gain=float(gain0),direct_m_inverse2=float(Kvac*gain0),
        error=float(gain0-case['direct_relative_to_vacuum'])))
assert max(abs(x['error'])for x in direct_rows)<1e-13
table([x for x in direct_rows if x['case_id'] in ['hg_z15_tau10p0','hg_z16_tau10p0','hg_z17_tau10p0','hg_z18_tau10p0']],max_rows=4)
print('All direct rays checked:',len(direct_rows))
case_idtau_abovedirect_gaindirect_m_inverse2error
hg_z15_tau10p06.66666670.00127263383.5382297e-160
hg_z16_tau10p03.33333330.0356739939.9554145e-150
hg_z17_tau10p0012.8011458e-130
hg_z18_tau10p0012.8116863e-130

4 rows total; 4 shown.

All direct rays checked: 56
Cell 5 · transport-05

2 Native response mass and its uncertainty

For collision j,the next-event summand per unit aperture area is

wjω p(Ω^in⋅u^o) cArj−2exp⁡(−βeℓj→o) χFOV.w_j\omega\,p(\hat\Omega_{\rm in}\cdot\hat u_o)\, c_A r_j^{-2}\exp(-\beta_e\ell_{j\to o})\,\chi_{\rm FOV}.
Inspect original LaTeX
w_j\omega\,p(\hat\Omega_{\rm in}\cdot\hat u_o)\,
c_A r_j^{-2}\exp(-\beta_e\ell_{j\to o})\,\chi_{\rm FOV}.

The launch weight is physical isotropic density divided by proposal density. The area cosine appears once. Main-grid omega1 needs no additional absorption weight. For excess delay Δj=(ℓj+rj−R0)/c\Delta_j=(\ell_j+r_j-R_0)/c,the direct light is an atom at0. NPZ values are scattered bin mass,not density. The last element is overflow,not an ordinary time bin.

Cell 6 · transport-06 · execution 3
cid='hg_z15_tau10p0'
case=next(c for c in results['cases']if c['case_id']==cid)
kernel_path,info_path=tr.native_paths(data,cid)
with np.load(kernel_path,allow_pickle=False)as z:
    masses=z['batch_mass_relative'];native_dt=float(z['dt_s'])
direct0=next(x['direct_gain']for x in direct_rows if x['case_id']==cid)
batch_gain=direct0+masses.sum(axis=1)
mean_gain=float(batch_gain.mean())
SEM=float(batch_gain.std(ddof=1)/np.sqrt(len(batch_gain)))
table([{'batch':i,'native_scattered_mass':float(masses[i].sum()),'total_gain':float(v)}for i,v in enumerate(batch_gain)],max_rows=6)
print('Recomputed gain ± batch SEM:',mean_gain,SEM,'; stored:',case['total_relative_to_vacuum'],case['total_mc_standard_error'])
# Covariance of bin means is needed; never assume native bins are independent.
dev=masses-masses.mean(axis=0);B=len(masses)
variance_sum=float(np.sum(dev.sum(axis=1)**2)/(B*(B-1)))
incorrect_diagonal_variance=float(np.sum(dev**2)/(B*(B-1)))
print('Correct variance of summed mass:',variance_sum)
print('Incorrect sum of bin variances:',incorrect_diagonal_variance)
assert abs(variance_sum-SEM**2)<1e-12
batchnative_scattered_masstotal_gain
02.01293232.014205
11.95052861.9518012
21.9833471.9846197
31.96882461.9700973
41.9846291.9859016
51.99446711.9957397

6 rows total; 6 shown.

Recomputed gain ± batch SEM: 1.9837274106214 0.008724990325018198 ; stored: 1.9837274106214002 0.008724990325018238
Correct variance of summed mass: 7.612545617166103e-05
Incorrect sum of bin variances: 9.431541538139586e-05
Cell 7 · transport-07 · execution 4
centers_ms=(np.arange(masses.shape[1]-1)+.5)*native_dt*1e3
density=masses[:,:-1].mean(axis=0)/native_dt
density_SE=masses[:,:-1].std(axis=0,ddof=1)/np.sqrt(B)/native_dt
fig,ax=plt.subplots(layout='constrained')
ax.plot(centers_ms,density,label='HG mean scattered response')
ax.fill_between(centers_ms,np.maximum(0,density-density_SE),density+density_SE,alpha=.25,label='±1 batch SEM; bins correlated')
ax.set(xlim=(0,.4),xlabel='Excess arrival delay (ms)',ylabel='Vacuum-normalized response density (s⁻¹)',
       title=cid+' — scattered component only')
ax.text(.98,.95,f'Direct atom at0: mass={direct0:.6g}',ha='right',va='top',transform=ax.transAxes)
ax.legend();plt.show()
Executed notebook figure
Cell 8 · transport-08

3 Reconcile every native case

For independent equal-size batches,

SE(Gˉ)2=∑b(Gb−Gˉ)2B(B−1)=∑ijCov(mˉi,mˉj).SE(\bar G)^2=\frac{\sum_b(G_b-\bar G)^2}{B(B-1)} =\sum_{ij}\mathrm{Cov}(\bar m_i,\bar m_j).
Inspect original LaTeX
SE(\bar G)^2=\frac{\sum_b(G_b-\bar G)^2}{B(B-1)}
=\sum_{ij}\mathrm{Cov}(\bar m_i,\bar m_j).

The following module reads every native NPZ and batch JSON. Energy/causality metadata are inspectable,but a histogram cannot replay missing individual 3D histories. An analytic vacuum row is not an MCsample.

Cell 9 · transport-09 · execution 5
report,all_rows,inputs=tr.run_review(ROOT,write=True)
table([{'check':k,'value':v}for k,v in report['summary'].items()],max_rows=20)
table([r for r in all_rows if r['case_id']in ['ghm_z15_tau10p0','hg_z15_tau10p0']],
      ['case_id','gain_recomputed','SEM_recomputed','naive_independent_bin_SEM','quality'],max_rows=2)
checkvalue
case_count56
nonvacuum_packets14400000
max_abs_direct_error0
max_abs_direct_transfer_relative_error0
max_abs_gain_error8.8817842e-16
max_abs_SEM_error2.7755576e-16
max_abs_covariance_identity_error1.6653345e-16
max_abs_energy_residual2.8865799e-15
max_abs_boundary_accounting_error3.3306691e-15
truncated_packets0
noncausal_delay_violations0
maximum_observed_overflow_gain0
GHM_warning_case_count24

13 rows total; 13 shown.

case_idgain_recomputedSEM_recomputednaive_independent_bin_SEMquality
ghm_z15_tau10p01.66609490.117967510.14556746EXPECTED_WARNING_GHM_CONVERGENCE_INCOMPLETE
hg_z15_tau10p01.98372740.00872499030.0097116124conditional_numerical_check

2 rows total; 2 shown.

Cell 10 · transport-10

4 Phase probability: an independent HG check

f(μ)=2πp(μ),∫−11f dμ=1,g=∫−11μf dμ,fHG=1−g22(1+g2−2gμ)3/2.f(\mu)=2\pi p(\mu),\quad\int_{-1}^{1}f\,d\mu=1,\quad g=\int_{-1}^{1}\mu f\,d\mu, \qquad f_{\rm HG}=\frac{1-g^2}{2(1+g^2-2g\mu)^{3/2}} .
Inspect original LaTeX
f(\mu)=2\pi p(\mu),\quad\int_{-1}^{1}f\,d\mu=1,\quad g=\int_{-1}^{1}\mu f\,d\mu,
\qquad f_{\rm HG}=\frac{1-g^2}{2(1+g^2-2g\mu)^{3/2}} .

Equal g does not determine the full phase function. The executable check below integrates HG,checks its CDF and seeded moments. It does not reconstruct GHM without its absent raw LUT.

Cell 11 · transport-11 · execution 6
hg=tr.hg_check(results['model']['phase_input']['derived_g'])
table([{'quantity':k,'value':v}for k,v in hg.items()if k!='scope'],max_rows=12)
phase_receipt=json.loads((ROOT/'data/cloud_phase_QA.json').read_text())
table([{'phase':k,'retained_norm':v['normalization'],'retained_g':v['g_integral'],
        'retained_P2':v['second_Legendre_moment'],'status':'retained QA,not recomputed raw GHM'}
       for k,v in phase_receipt['phases'].items()],max_rows=2)
quantityvalue
g0.77094469
quadrature_nodes256
integral_f_dmu1
first_moment0.77094469
second_Legendre0.59435571
expected[1, 0.7709446878541932, 0.5943557117305994]
CDF_roundtrip_max_error1.4432899e-15
sample_n100000
sample_mean_mu0.76965247
sample_mean_SE0.0011654947
sample_g_z-1.1087318

11 rows total; 11 shown.

phaseretained_normretained_gretained_P2status
ghm10.770944690.71249598retained QA,not recomputed raw GHM
hg10.770944690.59435571retained QA,not recomputed raw GHM

2 rows total; 2 shown.

Cell 12 · transport-12

5 A deterministic first-collision integral

For isotropic scattering and an internal on-axis source,azimuth integrates out:

G(1)=R022∫−11dμ∫0se(μ)βee−βe[s+ℓout(s,μ)]cAr2 ds.G^{(1)}=\frac{R_0^2}{2}\int_{-1}^{1}d\mu\int_0^{s_e(\mu)} \beta_e e^{-\beta_e[s+\ell_{\rm out}(s,\mu)]}\frac{c_A}{r^2}\,ds .
Inspect original LaTeX
G^{(1)}=\frac{R_0^2}{2}\int_{-1}^{1}d\mu\int_0^{s_e(\mu)}
 \beta_e e^{-\beta_e[s+\ell_{\rm out}(s,\mu)]}\frac{c_A}{r^2}\,ds .

This independent quadrature splits the side/top/base boundary transitions. It checks the first-collision equation,not a full independent RT solver or the GHM phase.

Cell 13 · transport-13 · execution 7
single=[{'Gauss_order':n,'relative_first_scatter_gain':tr.isotropic_first_scatter_gain(n)}for n in [24,48,96]]
table(single,max_rows=3)
mc=inputs['validation']['single_scatter_reference']['MC']
print('Retained first-collision MC:',mc['mean_first_scatter_gain'],'±',mc['first_scatter_batch_standard_error'])
print('Difference / retained MC SEM:',(mc['mean_first_scatter_gain']-single[-1]['relative_first_scatter_gain'])/mc['first_scatter_batch_standard_error'])
assert tr.isotropic_first_scatter_gain(tau=0)==0
Gauss_orderrelative_first_scatter_gain
240.29646849
480.29646849
960.29646849

3 rows total; 3 shown.

Retained first-collision MC: 0.2981522566870474 ± 0.0009498907194338359
Difference / retained MC SEM: 1.7725941290478089
Cell 14 · transport-14

6 A worked packet you can inspect

This is a new fixed-seed mechanical example,not an original production history. The true source is isotropic; its 50:50 isotropic/HG launch proposal has an exact likelihood weight. The ledger lists free optical depth,path,position,phase probability,observer survival and excess delay. Each NEE value is a raw summand before division by a history count. These summands illustrate the algorithm; they are not used as a reported event-fluence estimate.

Cell 15 · transport-15 · execution 8
ledger=tr.worked_hg_packet(hg['g'])
print('Seed:',ledger['seed'],'| launch direction:',ledger['initial_direction'],
      '| source weight:',ledger['initial_source_weight'],'| end:',ledger['end_status'])
table(ledger['collisions'],['collision','free_optical_depth','free_path_m','z_m','cos_to_observer',
      'p_per_sr','observer_tau','delay_us','NEE_summand_relative_vacuum'],max_rows=10)
display(Markdown('Full vectors and all SI fields: [transport_packet_ledger.json](../checks/transport_packet_ledger.json).'))
Seed: 2026102202 | launch direction: [-0.3433989582523385, 0.760648603053623, 0.5509000436955697] | source weight: 1.226302883552434 | end: escaped_before_next_collision
collisionfree_optical_depthfree_path_mz_mcos_to_observerp_per_srobserver_taudelay_usNEE_summand_relative_vacuum
11.3243779397.3133616218.880.55038150.0501261722.6037340.595533340.057205883
20.08648719725.94615916232.9150.540369860.0486090512.55695120.63531150.058134455
30.09315437827.94631316259.9690.967917720.991879742.46677040.638302021.2983283
41.1805759354.1727716592.0460.937315840.560581531.35984570.712309052.22247
50.04154038912.46211716601.9080.790768980.140525171.32697380.721006420.5757625
60.1829284454.87853316649.5350.867668280.248476971.16821660.745228091.1934392

6 rows total; 6 shown.

<IPython.core.display.Markdown object>
Cell 16 · transport-16

7 Reconstruct a pulse from mass,with its own peak

Use retarded time u=tabsolute−tonset−R0/cu=t_{\rm absolute}-t_{\rm onset}-R_0/c.

s(u)∝e−u/3ms(1−e−u/τr)H(u),y=s∗h.s(u)\propto e^{-u/3ms}(1-e^{-u/\tau_r})H(u),\qquad y=s*h.
Inspect original LaTeX
s(u)\propto e^{-u/3ms}(1-e^{-u/\tau_r})H(u),\qquad y=s*h.

The continuous-source calibration below is independent of the reference sampled calibration. It places the direct atom at0 and scattered masses at native bin centers. These assumed intrinsic10–90%rises are not fitted heritage observations. Onset-to-peak and10–90%rise remain separate. The 3 ms is a decay time,not a measured duration.

Cell 17 · transport-17 · execution 9
t,y,ts,source,pulse=tr.independent_pulse(masses.mean(axis=0),direct0,80.,native_dt)
stored=next(x for x in case['timing']if x['intrinsic_rise_10_90_us']==80 and x['analog_one_pole_fc_hz']==0)
pulse_check={**pulse,'reference_10_90_us':stored['rise_10_90_us'],
             'difference_10_90_us':pulse['rise_10_90_us']-stored['rise_10_90_us'],
             'reference_onset_to_peak_us':stored['onset_to_peak_us'],
             'scope':'Independent continuous calibration; ideal electronics; no noise/classifier validation.'}
table([pulse_check],max_rows=1)
(ROOT/'checks/transport_convolution_check.json').write_text(json.dumps(pulse_check,indent=2))
assert abs(pulse_check['difference_10_90_us'])<.2
fig,ax=plt.subplots(layout='constrained')
ax.plot(ts*1e3,source,label='Assumed source; unit own peak')
ax.plot(t*1e3,y/y.max(),label='Transported HG pulse; unit own peak')
ax.set(xlim=(0,.8),xlabel='Retarded time after known model onset (ms)',ylabel='Intensity / each curve’s own peak',
       title='Independent mass convolution — shape normalization hides photometric gain')
ax.legend();plt.show()
print('Separate observer peak gain relative to vacuum unit-peak source:',pulse['peak_gain'])
rise_10_90_usonset_to_peak_uspeak_gainsource_tau_r_usdirect_atom_delay_usscatter_mass_center_offset_usreference_10_90_usdifference_10_90_usreference_onset_to_peak_usscope
90.599582031.980954643.0731730190.599583.4723973e-07203Independent continuous calibration; ideal electronics; no noise/classifier validation.

1 rows total; 1 shown.

Executed notebook figure
Separate observer peak gain relative to vacuum unit-peak source: 1.9809545738273258
Cell 18 · transport-18

8 Convergence is a result,not a checkbox

The plotted uncertainty is±1finite-batch SEM,not a guaranteed confidence interval. A rare forward path absent from a batch cannot be represented by that batch’s variance. GHM remains unresolved; differences below must not be promoted to a physical GHM/HG rise-time bias.

Cell 19 · transport-19 · execution 10
comparison=tr.convergence_comparison(inputs['validation'])
table(comparison,['phase','primary_packets','primary_gain','primary_SE','larger_packets','larger_gain','larger_SE','interpretation'],max_rows=2)
fig,axes=plt.subplots(1,2,figsize=(9,3.5),sharey=True,layout='constrained')
for ax,row in zip(axes,comparison):
    ax.errorbar([row['primary_packets']/1e6,row['larger_packets']/1e6],
                [row['primary_gain'],row['larger_gain']],
                yerr=[row['primary_SE'],row['larger_SE']],fmt='o',capsize=4)
    ax.set(title=row['phase'].upper()+(' — convergence incomplete'if row['phase']=='ghm'else' — conditional stable control'),
           xlabel='Transport histories (million)')
axes[0].set_ylabel('Point-nadir relative fluence; ±1 batch SEM')
plt.show()
table(inputs['validation']['matched_CloudScat_HG']['cases'],
      ['reference_case','reference_gain_mean','new_gain_mean','difference_in_combined_SE','qualification'],max_rows=2)
phaseprimary_packetsprimary_gainprimary_SElarger_packetslarger_gainlarger_SEinterpretation
ghm3000001.66609490.1179675112000002.00445280.098633394EXPECTED_WARNING: rare GHM paths remain unresolved; combined-SE discrepancy is diagnostic,not a significance test.
hg3000001.98372740.008724990312000001.98503870.005322318Representative ideal-HG estimates agree; not a real-cloud validation.

2 rows total; 2 shown.

Executed notebook figure
reference_casereference_gain_meannew_gain_meandifference_in_combined_SEqualification
noray_32.19956042.1907596-0.40914227Independent-code comparison for these ideal HG cases only. It does not validate tabulated GHM, real ice, atmosphere or source-depth classification.
noray_103.08236613.10483410.69376675Independent-code comparison for these ideal HG cases only. It does not validate tabulated GHM, real ice, atmosphere or source-depth classification.

2 rows total; 2 shown.

Cell 20 · transport-20

Code and limits

Function locations and hashes below map the equations to inspectable source. Original engine/runner snapshots are listed separately from later diagnostic versions. Primary CloudScat method: https://gmd.copernicus.org/articles/13/5549/2020/ . A full RT rerun is optional and requires lawful raw ice input plus the separate reproduction launcher. It is deliberately not triggered here. Physical microphysics/structure,atmospheric paths,source spectrum/waveform and noisy labelled-event inference remain open.

Cell 21 · transport-21 · execution 11
table(report['code_map'],['file','function','line','end_line','sha256'],max_rows=30)
print(report['status'])
print('Not recomputed:',report['not_recomputed'])
display(Markdown('Derivation: [transport.md](../methods/transport.md). Native reconciliation: [CSV](../checks/transport_native_reconciliation.csv). Machine receipt: [JSON](../checks/transport_review.json).'))
filefunctionlineend_linesha256
reference/cloud/cylinder_mc.pyload_phases5072185f51d98325c24df3daa9e92094558394d3b8fc3085c72baedda48f09b0dfa0
reference/cloud/cylinder_mc.pyintervals84108185f51d98325c24df3daa9e92094558394d3b8fc3085c72baedda48f09b0dfa0
reference/cloud/cylinder_mc.pysegment_inside110112185f51d98325c24df3daa9e92094558394d3b8fc3085c72baedda48f09b0dfa0
reference/cloud/cylinder_mc.pylaunch125139185f51d98325c24df3daa9e92094558394d3b8fc3085c72baedda48f09b0dfa0
reference/cloud/cylinder_mc.pysimulate141257185f51d98325c24df3daa9e92094558394d3b8fc3085c72baedda48f09b0dfa0
reference/cloud/run_grid.pymain6663e8edc5ed3cdd15b392e59866064ead7ee560b7101c26d5a5145e9a9fb328480
reference/cloud/postprocess.pymain171475cf897be080077db6fd3b10d19c4fe13052af46ae695b6a2007680c7be487e45
reference/cloud/engine_snapshot.pyload_phases5072df237155a0fb26be921877d1aabdc340a6a68360314ddc36805459c4538ad159
reference/cloud/engine_snapshot.pyintervals84108df237155a0fb26be921877d1aabdc340a6a68360314ddc36805459c4538ad159
reference/cloud/engine_snapshot.pysegment_inside110112df237155a0fb26be921877d1aabdc340a6a68360314ddc36805459c4538ad159
reference/cloud/engine_snapshot.pylaunch125133df237155a0fb26be921877d1aabdc340a6a68360314ddc36805459c4538ad159
reference/cloud/engine_snapshot.pysimulate135249df237155a0fb26be921877d1aabdc340a6a68360314ddc36805459c4538ad159
reference/cloud/runner_snapshot.pymain6663e8edc5ed3cdd15b392e59866064ead7ee560b7101c26d5a5145e9a9fb328480
reference/cloud/timing_metrics.pywaveform_metrics6490378eade60298b027b55977680e0e0dd24a3ce5de1c11997f887d163722dee36f
reference/cloud/timing_metrics.pysource_parameters110136378eade60298b027b55977680e0e0dd24a3ce5de1c11997f887d163722dee36f
reference/cloud/timing_metrics.pypropagate_waveform211229378eade60298b027b55977680e0e0dd24a3ce5de1c11997f887d163722dee36f

16 rows total; 16 shown.

LIGHT_RECOMPUTATION_PASS_WITH_EXPECTED_GHM_CONVERGENCE_WARNING
Not recomputed: ['GHM phase normalization without raw LUT', 'Physical cloud/atmosphere/absorption validity', 'Noisy onset or population classifier', 'Per-packet geometry,not retained in kernels']
<IPython.core.display.Markdown object>