Skip to content

Commit bc9deaf

Browse files
authored
Merge pull request #125 from xsuite/release/0.19.4
Apply fixes and relax some tolerances after scipy.constant changes
2 parents 0f97b4b + 0090346 commit bc9deaf

File tree

5 files changed

+55
-53
lines changed

5 files changed

+55
-53
lines changed

tests/test_basics.py

Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -14,43 +14,43 @@
1414

1515
def _check_consistency_energy_variables(particles):
1616
# Check consistency between beta0 and gamma0
17-
assert np.allclose(particles.gamma0, 1/np.sqrt(1 - particles.beta0**2),
17+
xo.assert_allclose(particles.gamma0, 1/np.sqrt(1 - particles.beta0**2),
1818
rtol=1e-14, atol=1e-14)
1919

2020
# Assert consistency of p0c
21-
assert np.allclose(particles.p0c,
21+
xo.assert_allclose(particles.p0c,
2222
particles.mass0 * particles.beta0 * particles.gamma0,
2323
rtol=1e-14, atol=1e-14)
2424

2525
# Check energy0 property (consistency of p0c and gamma0)
26-
assert np.allclose(particles.energy0, particles.mass0 * particles.gamma0,
26+
xo.assert_allclose(particles.energy0, particles.mass0 * particles.gamma0,
2727
atol=1e-14, rtol=1e-14)
2828

2929
# Check consistency of rpp and delta
30-
assert np.allclose(particles.rpp, 1./(particles.delta + 1),
30+
xo.assert_allclose(particles.rpp, 1./(particles.delta + 1),
3131
rtol=1e-14, atol=1e-14)
3232

3333
beta = particles.beta0 * particles.rvv
3434
gamma = 1/np.sqrt(1 - beta**2)
3535
pc = particles.mass0 * gamma * beta
3636

3737
# Check consistency of delta with rvv
38-
assert np.allclose(particles.delta, (pc-particles.p0c)/(particles.p0c),
38+
xo.assert_allclose(particles.delta, (pc-particles.p0c)/(particles.p0c),
3939
rtol=1e-14, atol=1e-14)
4040

4141
# Check consistency of ptau with rvv
4242
energy = particles.mass0 * gamma
43-
assert np.allclose(particles.ptau, (energy - particles.energy0)/particles.p0c,
43+
xo.assert_allclose(particles.ptau, (energy - particles.energy0)/particles.p0c,
4444
rtol=1e-14, atol=1e-14)
4545

4646
# Check consistency of pzeta
4747
energy = particles.mass0 * gamma
48-
assert np.allclose(particles.pzeta, (energy - particles.energy0)/(particles.beta0 * particles.p0c),
48+
xo.assert_allclose(particles.pzeta, (energy - particles.energy0)/(particles.beta0 * particles.p0c),
4949
rtol=1e-14, atol=1e-14)
5050

5151

5252
# Check energy property
53-
assert np.allclose(particles.energy, energy, rtol=1e-14, atol=1e-14)
53+
xo.assert_allclose(particles.energy, energy, rtol=1e-14, atol=1e-14)
5454

5555

5656
@for_all_test_contexts
@@ -182,8 +182,8 @@ def test_particles_update_p0c_and_energy_deviations(test_context):
182182

183183
part.move(_context=xo.ContextCpu())
184184
part.sort(interleave_lost_particles = True)
185-
assert np.allclose(part.p0c, [2e12, 3e12, 2e12], rtol=0, atol=1e-14)
186-
assert np.allclose(part.delta, [-0.5, 0.1, 0], rtol=0, atol=1e-14)
185+
xo.assert_allclose(part.p0c, [2e12, 3e12, 2e12], rtol=0, atol=1e-14)
186+
xo.assert_allclose(part.delta, [-0.5, 0.1, 0], rtol=0, atol=1e-14)
187187

188188

189189
def test_sort():
@@ -286,7 +286,7 @@ def test_python_add_to_energy(test_context):
286286

287287
expected_energy = energy_before + 3e6
288288
particles.move(_context=xo.ContextCpu())
289-
assert np.allclose(particles.energy, expected_energy,
289+
xo.assert_allclose(particles.energy, expected_energy,
290290
atol=1e-14, rtol=1e-14)
291291

292292
_check_consistency_energy_variables(particles)
@@ -308,7 +308,7 @@ def test_python_delta_setter(test_context):
308308
particles.delta = -2e-3
309309

310310
particles.move(_context=xo.ContextCpu())
311-
assert np.allclose(particles.delta, -2e-3, atol=1e-14, rtol=1e-14)
311+
xo.assert_allclose(particles.delta, -2e-3, atol=1e-14, rtol=1e-14)
312312

313313
_check_consistency_energy_variables(particles)
314314

@@ -352,7 +352,7 @@ class TestElement(xt.BeamElement):
352352
telem.track(particles)
353353

354354
particles.move(_context=xo.ContextCpu())
355-
assert np.allclose(particles.energy, energy_before + 1e6,
355+
xo.assert_allclose(particles.energy, energy_before + 1e6,
356356
atol=1e-14, rtol=1e-14)
357357

358358
_check_consistency_energy_variables(particles)
@@ -378,17 +378,17 @@ class TestElement(xt.BeamElement):
378378
telem.track(particles)
379379

380380
particles.move(_context=xo.ContextCpu())
381-
assert np.allclose(particles.energy, energy_before + 1e6,
381+
xo.assert_allclose(particles.energy, energy_before + 1e6,
382382
atol=1e-14, rtol=1e-14)
383383

384384
_check_consistency_energy_variables(particles)
385385

386386
rpp_after = particles.copy(_context=xo.ContextCpu()).rpp
387387
assert np.all(particles.gamma0 == gamma0_before)
388388
assert np.all(particles.zeta == zeta_before)
389-
assert np.allclose(particles.px, px_before*rpp_before/rpp_after,
389+
xo.assert_allclose(particles.px, px_before*rpp_before/rpp_after,
390390
atol=1e-14, rtol=1e-14)
391-
assert np.allclose(particles.py, py_before*rpp_before/rpp_after,
391+
xo.assert_allclose(particles.py, py_before*rpp_before/rpp_after,
392392
atol=1e-14, rtol=1e-14)
393393

394394

@@ -423,7 +423,7 @@ class TestElement(xt.BeamElement):
423423
telem.track(particles)
424424

425425
particles.move(_context=xo.ContextCpu())
426-
assert np.allclose(particles.delta, -2e-3, atol=1e-14, rtol=1e-14)
426+
xo.assert_allclose(particles.delta, -2e-3, atol=1e-14, rtol=1e-14)
427427

428428
_check_consistency_energy_variables(particles)
429429

@@ -464,7 +464,7 @@ class TestElement(xt.BeamElement):
464464
telem.track(particles)
465465

466466
particles.move(_context=xo.ContextCpu())
467-
assert np.allclose(particles.ptau, -2e-3, atol=1e-14, rtol=1e-14)
467+
xo.assert_allclose(particles.ptau, -2e-3, atol=1e-14, rtol=1e-14)
468468

469469
_check_consistency_energy_variables(particles)
470470

@@ -506,7 +506,7 @@ class TestElement(xt.BeamElement):
506506
telem.track(particles)
507507

508508
particles.move(_context=xo.ContextCpu())
509-
assert np.allclose((particles.ptau - ptau_before)/particles.beta0,
509+
xo.assert_allclose((particles.ptau - ptau_before)/particles.beta0,
510510
-2e-3, atol=1e-14, rtol=1e-14)
511511

512512
_check_consistency_energy_variables(particles)
@@ -538,6 +538,7 @@ class TestElement(xt.BeamElement):
538538

539539
particles = xp.Particles(_context=test_context, p0c=1.4e9, delta=[0, 1e-3],
540540
px=[1e-6, -1e-6], py=[2e-6, 0], zeta=0.1)
541+
541542
_check_consistency_energy_variables(
542543
particles.copy(_context=xo.ContextCpu()))
543544
px_before = particles.copy(_context=xo.ContextCpu()).px
@@ -549,14 +550,14 @@ class TestElement(xt.BeamElement):
549550
telem.track(particles)
550551

551552
particles.move(_context=xo.ContextCpu())
552-
assert np.allclose(particles.p0c, 1.5e9, atol=1e-14, rtol=1e-14)
553-
assert np.allclose(particles.energy, energy_before, atol=1e-14, rtol=1e-14)
553+
xo.assert_allclose(particles.p0c, 1.5e9, atol=1e-14, rtol=1e-14)
554+
xo.assert_allclose(particles.energy, energy_before, atol=1e-14, rtol=1e-14)
554555

555556
_check_consistency_energy_variables(particles)
556557

557-
assert np.all(particles.zeta == zeta_before*particles.beta0/beta0_before)
558-
assert np.all(particles.px == px_before*p0c_before/particles.p0c)
559-
assert np.all(particles.py == py_before*p0c_before/particles.p0c)
558+
xo.assert_allclose(particles.zeta, zeta_before*particles.beta0/beta0_before, atol=1e-14)
559+
xo.assert_allclose(particles.px, px_before*p0c_before/particles.p0c, atol=1e-14)
560+
xo.assert_allclose(particles.py, py_before*p0c_before/particles.p0c, atol=1e-14)
560561

561562

562563

@@ -617,8 +618,8 @@ class KickAng(xt.BeamElement):
617618
px=[1.0e-3, -1.0e-3], py=[2.0e-3, -1.2e-3], zeta=0.1)
618619
line.track(particles)
619620
particles.move(_context=xo.ContextCpu())
620-
assert np.allclose(particles.px, [24.0e-3, 18.021e-3], atol=1e-14, rtol=1e-14)
621-
assert np.allclose(particles.py, [-1.82e-3, -4.73564e-3], atol=1e-14, rtol=1e-14)
621+
xo.assert_allclose(particles.px, [24.0e-3, 18.021e-3], atol=1e-14, rtol=1e-14)
622+
xo.assert_allclose(particles.py, [-1.82e-3, -4.73564e-3], atol=1e-14, rtol=1e-14)
622623

623624
class ScaleAngExact(xt.BeamElement):
624625
_xofields={
@@ -675,5 +676,5 @@ class KickAngExact(xt.BeamElement):
675676
px=[1.0e-3, -1.0e-3], py=[2.0e-3, -1.2e-3], zeta=0.1)
676677
line.track(particles)
677678
particles.move(_context=xo.ContextCpu())
678-
assert np.allclose(particles.px, [23.99302e-3, 18.01805e-3], atol=1e-14)
679-
assert np.allclose(particles.py, [-1.81976e-3, -4.73529e-3], atol=1e-14)
679+
xo.assert_allclose(particles.px, [23.99302e-3, 18.01805e-3], atol=1e-14)
680+
xo.assert_allclose(particles.py, [-1.81976e-3, -4.73529e-3], atol=1e-14, rtol=5e-7)

tests/test_build_particles_normalized.py

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ def test_build_particles_normalized(test_context):
3838
nemitt_x=3e-6, nemitt_y=3e-6)
3939

4040
dct = particles.to_dict() # transfers it to cpu
41-
assert np.allclose(dct['x'], [-0.0003883 , -0.0006076 , -0.00082689],
41+
xo.assert_allclose(dct['x'], [-0.0003883 , -0.0006076 , -0.00082689],
4242
rtol=0, atol=1e-7)
4343
assert np.isclose(dct['ptau'][1], 1e-3, rtol=0, atol=1e-9)
4444
assert np.isclose(1/(dct['rpp'][1]) - 1, 1e-3, rtol=0, atol=1e-10)
@@ -56,7 +56,7 @@ def test_build_particles_normalized(test_context):
5656
px_norm=[0, 1, 0], # in sigmas
5757
nemitt_x=3e-6, nemitt_y=3e-6)
5858
dct = particles.to_dict() # transfers it to cpu
59-
assert np.allclose(dct['x'], [-0.0003883, -0.0006076, -0.00082689],
59+
xo.assert_allclose(dct['x'], [-0.0003883, -0.0006076, -0.00082689],
6060
rtol=0, atol=1e-7)
6161
assert np.isclose(dct['ptau'][1], 1e-3, rtol=0, atol=1e-9)
6262
assert np.isclose(1/(dct['rpp'][1]) - 1, 1e-3, rtol=0, atol=1e-10)
@@ -76,7 +76,7 @@ def test_build_particles_normalized(test_context):
7676
nemitt_x=3e-6, nemitt_y=3e-6)
7777

7878
dct = particles.to_dict() # transfers it to cpu
79-
assert np.allclose(dct['x'], [-0.00038813 , -0.00060738 , -0.00082664],
79+
xo.assert_allclose(dct['x'], [-0.00038813 , -0.00060738 , -0.00082664],
8080
rtol=0, atol=1e-7)
8181
assert np.isclose(dct['ptau'][1], 1e-3, rtol=0, atol=1e-9)
8282
assert np.isclose(1/(dct['rpp'][1]) - 1, 1e-3, rtol=0, atol=1e-10)
@@ -102,11 +102,11 @@ def test_build_particles_normalized_ions(test_context):
102102
nemitt_x=3e-6, nemitt_y=3e-6)
103103

104104
dct = particles.to_dict() # transfers it to cpu
105-
assert np.allclose(dct['x'], [6.5404e-3, 1.21e-5, -6.5163e-3],
105+
xo.assert_allclose(dct['x'], [6.5404e-3, 1.21e-5, -6.5163e-3],
106106
rtol=0, atol=1e-7)
107107
assert np.isclose(dct['ptau'][1], 9.906e-6, rtol=0, atol=1e-9)
108108
assert np.isclose(1/(dct['rpp'][1]) - 1, 1e-5, rtol=0, atol=1e-10)
109-
assert np.allclose(dct['p0c'], 1.4024063e+12, rtol=0, atol=1e3)
109+
xo.assert_allclose(dct['p0c'], 1.4024063e+12, rtol=0, atol=1e3)
110110

111111

112112
@for_all_test_contexts
@@ -140,7 +140,7 @@ def test_build_particles_normalized_closed_orbit(test_context):
140140
dct_co = particle_on_co.to_dict()
141141

142142
for nn in 'x px y py zeta delta ptau rvv rpp gamma0 beta0 p0c'.split():
143-
assert np.allclose(dct[nn], dct_co[nn], atol=1e-15, rtol=0)
143+
xo.assert_allclose(dct[nn], dct_co[nn], atol=1e-15, rtol=0)
144144

145145

146146
@for_all_test_contexts
@@ -195,7 +195,7 @@ def test_build_particles_normalized_match_at_s(test_context):
195195
particles.move(_context=xo.context_default)
196196
assert (np.unique(particles.at_element[particles.state>0])[0]
197197
== line.element_names.index('match_at_s'))
198-
assert np.allclose(particles.x, 0.02, atol=1e-20)
198+
xo.assert_allclose(particles.x, 0.02, atol=1e-20)
199199

200200

201201
@for_all_test_contexts
@@ -221,14 +221,14 @@ def test_build_perticles_dispersion(test_context):
221221
particles, nemitt_x=3e-6, nemitt_y=3e-6)
222222
particles.move(_context=xo.ContextCpu())
223223

224-
assert np.allclose(particles.x, [1e-3, -1e-3], atol=1e-10, rtol=0)
225-
assert np.allclose((particles.x-tw.x[0])/particles.delta, tw.dx[0],
224+
xo.assert_allclose(particles.x, [1e-3, -1e-3], atol=1e-10, rtol=0)
225+
xo.assert_allclose((particles.x-tw.x[0])/particles.delta, tw.dx[0],
226226
atol=5e-3, rtol=0)
227227

228-
assert np.allclose(norm_coords['x_norm'], 0, 1e-12)
229-
assert np.allclose(norm_coords['px_norm'], 0, 1e-12)
230-
assert np.allclose(norm_coords['y_norm'], 0, 1e-12)
231-
assert np.allclose(norm_coords['py_norm'], 0, 1e-12)
228+
xo.assert_allclose(norm_coords['x_norm'], 0, 1e-12)
229+
xo.assert_allclose(norm_coords['px_norm'], 0, 1e-12)
230+
xo.assert_allclose(norm_coords['y_norm'], 0, 1e-12)
231+
xo.assert_allclose(norm_coords['py_norm'], 0, 1e-12)
232232

233233
particles = line.build_particles(nemitt_x=3e-6, nemitt_y=3e-6,
234234
x=[1e-3, -1e-3], x_norm=[0.3, 0.4], px_norm=[0.5, 0.6],
@@ -239,9 +239,9 @@ def test_build_perticles_dispersion(test_context):
239239
particles, nemitt_x=3e-6, nemitt_y=3e-6)
240240
particles.move(_context=xo.ContextCpu())
241241

242-
assert np.allclose(particles.x, [1e-3, -1e-3], atol=1e-10, rtol=0)
242+
xo.assert_allclose(particles.x, [1e-3, -1e-3], atol=1e-10, rtol=0)
243243

244-
assert np.allclose(norm_coords['x_norm'], [0.3, 0.4], 1e-12)
245-
assert np.allclose(norm_coords['px_norm'], [0.5, 0.6], 1e-12)
246-
assert np.allclose(norm_coords['y_norm'], [0.7, 0.8], 1e-12)
247-
assert np.allclose(norm_coords['py_norm'], [0.9, 1.0], 1e-12)
244+
xo.assert_allclose(norm_coords['x_norm'], [0.3, 0.4], 1e-12)
245+
xo.assert_allclose(norm_coords['px_norm'], [0.5, 0.6], 1e-12)
246+
xo.assert_allclose(norm_coords['y_norm'], [0.7, 0.8], 1e-12)
247+
xo.assert_allclose(norm_coords['py_norm'], [0.9, 1.0], 1e-12)

tests/test_pdg.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def test_lead_208():
3939
assert _mass_consistent(pdg_id, xp.Pb208_MASS_EV)
4040
assert xp.pdg.get_element_name_from_Z(82) == 'Pb'
4141
assert xp.pdg.get_element_full_name_from_Z(82) == 'Lead'
42-
assert np.allclose(xp.pdg.get_mass_from_pdg_id(pdg_id), xp.Pb208_MASS_EV,
42+
xo.assert_allclose(xp.pdg.get_mass_from_pdg_id(pdg_id), xp.Pb208_MASS_EV,
4343
rtol=1e-10, atol=0)
4444
assert xp.pdg.get_properties_from_pdg_id(pdg_id) == (82., 208, 82, 'Pb208')
4545

@@ -52,5 +52,5 @@ def test_build_reference_from_pdg_id(test_context):
5252
particle_ref_lead = xp.reference_from_pdg_id(pdg_id='Pb208',
5353
_context=test_context)
5454
particle_ref_lead.move(_context=xo.context_default)
55-
assert np.allclose(particle_ref_lead.q0, 82.)
56-
assert np.allclose(particle_ref_lead.mass0, xp.Pb208_MASS_EV)
55+
xo.assert_allclose(particle_ref_lead.q0, 82.)
56+
xo.assert_allclose(particle_ref_lead.mass0, xp.Pb208_MASS_EV)

tests/test_pencil_with_absolute_cut.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,8 @@ def test_pencil_with_absolute_cut(test_context):
114114
w_norm = getattr(norm_coords, other_plane+'_norm')
115115
pw_norm = getattr(norm_coords, 'p'+other_plane+'_norm')
116116

117-
assert np.allclose(w_in_sigmas, w_norm, 1e-12)
118-
assert np.allclose(pw_in_sigmas, pw_norm, 1e-12)
117+
xo.assert_allclose(w_in_sigmas, w_norm, 1e-12)
118+
xo.assert_allclose(pw_in_sigmas, pw_norm, 1e-12)
119119

120120
assert(np.allclose(zeta, particles.zeta, atol=1e-12))
121121
assert(np.allclose(delta, particles.delta, atol=1e-12))

tests/test_phase_monitor.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import numpy as np
99

10+
import xobjects as xo
1011
import xpart as xp
1112
import xtrack as xt
1213

@@ -38,8 +39,8 @@ def test_phase_monitor(test_context):
3839
line.track(particles)
3940

4041
tw = line.twiss()
41-
assert np.allclose(phase_monitor.qx[:], np.mod(tw['qx'], 1),
42+
xo.assert_allclose(phase_monitor.qx[:], np.mod(tw['qx'], 1),
4243
rtol=0, atol=1e-3)
43-
assert np.allclose(phase_monitor.qy[:], np.mod(tw['qy'], 1),
44+
xo.assert_allclose(phase_monitor.qy[:], np.mod(tw['qy'], 1),
4445
rtol=0, atol=1e-3)
4546

0 commit comments

Comments
 (0)