Skip to content

Commit c838c80

Browse files
authored
Merge pull request #347 from PyAutoLabs/feature/transform-decorator
refactor: use auto back-rotation in deflection methods
2 parents ae91436 + 591bb27 commit c838c80

13 files changed

Lines changed: 235 additions & 74 deletions

File tree

autogalaxy/profiles/mass/abstract/cse.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,4 +192,4 @@ def _deflections_2d_via_cse_from(self, grid: np.ndarray, **kwargs) -> np.ndarray
192192
for amplitude, core_radius in zip(amplitude_list, core_radius_list)
193193
)
194194

195-
return self.rotated_grid_from_reference_frame_from(deflections_2d.T)
195+
return deflections_2d.T

autogalaxy/profiles/mass/dark/nfw.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ def deflections_yx_2d_from(self, grid: aa.type.Grid2DLike, xp=np, **kwargs):
4646
return self.deflections_2d_via_analytic_from(grid=grid, xp=xp, **kwargs)
4747

4848
@aa.grid_dec.to_vector_yx
49-
@aa.grid_dec.transform
49+
@aa.grid_dec.transform(rotate_back=True)
5050
def deflections_2d_via_analytic_from(
5151
self, grid: aa.type.Grid2DLike, xp=np, **kwargs
5252
):
@@ -103,14 +103,10 @@ def deflections_2d_via_analytic_from(
103103
)
104104
deflection_y *= prefactor
105105

106-
return self.rotated_grid_from_reference_frame_from(
107-
xp.multiply(self.scale_radius, xp.vstack((deflection_y, deflection_x)).T),
108-
xp=xp,
109-
**kwargs,
110-
)
106+
return xp.multiply(self.scale_radius, xp.vstack((deflection_y, deflection_x)).T)
111107

112108
@aa.grid_dec.to_vector_yx
113-
@aa.grid_dec.transform
109+
@aa.grid_dec.transform(rotate_back=True)
114110
def deflections_2d_via_cse_from(self, grid: aa.type.Grid2DLike, xp=np, **kwargs):
115111
return self._deflections_2d_via_cse_from(grid=grid, **kwargs)
116112

autogalaxy/profiles/mass/sheets/external_shear.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ def potential_2d_from(self, grid: aa.type.Grid2DLike, xp=np, **kwargs):
5757
return -0.5 * shear_amp * rcoord**2 * xp.cos(2 * (phicoord - phig))
5858

5959
@aa.grid_dec.to_vector_yx
60-
@aa.grid_dec.transform
60+
@aa.grid_dec.transform(rotate_back=True)
6161
def deflections_yx_2d_from(self, grid: aa.type.Grid2DLike, xp=np, **kwargs):
6262
"""
6363
Calculate the deflection angles at a given set of arc-second gridded coordinates.
@@ -70,7 +70,4 @@ def deflections_yx_2d_from(self, grid: aa.type.Grid2DLike, xp=np, **kwargs):
7070
"""
7171
deflection_y = -xp.multiply(self.magnitude(xp=xp), grid.array[:, 0])
7272
deflection_x = xp.multiply(self.magnitude(xp=xp), grid.array[:, 1])
73-
return self.rotated_grid_from_reference_frame_from(
74-
grid=xp.vstack((deflection_y, deflection_x)).T,
75-
xp=xp,
76-
)
73+
return xp.vstack((deflection_y, deflection_x)).T

autogalaxy/profiles/mass/stellar/chameleon.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def deflections_yx_2d_from(self, grid: aa.type.Grid2DLike, xp=np, **kwargs):
5151
return self.deflections_2d_via_analytic_from(grid=grid, xp=xp, **kwargs)
5252

5353
@aa.grid_dec.to_vector_yx
54-
@aa.grid_dec.transform
54+
@aa.grid_dec.transform(rotate_back=True)
5555
def deflections_2d_via_analytic_from(
5656
self, grid: aa.type.Grid2DLike, xp=np, **kwargs
5757
):
@@ -128,9 +128,7 @@ def deflections_2d_via_analytic_from(
128128
deflection_y = xp.subtract(deflection_y0, deflection_y1)
129129
deflection_x = xp.subtract(deflection_x0, deflection_x1)
130130

131-
return self.rotated_grid_from_reference_frame_from(
132-
xp.multiply(factor, xp.vstack((deflection_y, deflection_x)).T), xp=xp
133-
)
131+
return xp.multiply(factor, xp.vstack((deflection_y, deflection_x)).T)
134132

135133
@aa.over_sample
136134
@aa.grid_dec.to_array

autogalaxy/profiles/mass/stellar/gaussian.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def deflections_yx_2d_from(self, grid: aa.type.Grid2DLike, xp=np, **kwargs):
5151
return self.deflections_2d_via_analytic_from(grid=grid, xp=xp, **kwargs)
5252

5353
@aa.grid_dec.to_vector_yx
54-
@aa.grid_dec.transform
54+
@aa.grid_dec.transform(rotate_back=True)
5555
def deflections_2d_via_analytic_from(
5656
self, grid: aa.type.Grid2DLike, xp=np, **kwargs
5757
):
@@ -73,12 +73,7 @@ def deflections_2d_via_analytic_from(
7373
* self.zeta_from(grid=grid, xp=xp)
7474
)
7575

76-
return self.rotated_grid_from_reference_frame_from(
77-
xp.multiply(
78-
1.0, xp.vstack((-1.0 * xp.imag(deflections), xp.real(deflections))).T
79-
),
80-
xp=xp,
81-
)
76+
return xp.vstack((-1.0 * xp.imag(deflections), xp.real(deflections))).T
8277

8378
@aa.over_sample
8479
@aa.grid_dec.to_array

autogalaxy/profiles/mass/stellar/sersic.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ def deflections_yx_2d_from(self, grid: aa.type.Grid2DLike, xp=np, **kwargs):
123123
return self.deflections_2d_via_cse_from(grid=grid, xp=xp, **kwargs)
124124

125125
@aa.grid_dec.to_vector_yx
126-
@aa.grid_dec.transform
126+
@aa.grid_dec.transform(rotate_back=True)
127127
def deflections_2d_via_cse_from(self, grid: aa.type.Grid2DLike, xp=np, **kwargs):
128128
"""
129129
Calculate the projected 2D deflection angles from a grid of (y,x) arc second coordinates, by computing and

autogalaxy/profiles/mass/total/dual_pseudo_isothermal_mass.py

Lines changed: 6 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ def _ellip(self, xp=np):
263263
return xp.min(xp.array([ellip, MAX_ELLIP]))
264264

265265
@aa.grid_dec.to_vector_yx
266-
@aa.grid_dec.transform
266+
@aa.grid_dec.transform(rotate_back=True)
267267
def deflections_yx_2d_from(self, grid: aa.type.Grid2DLike, xp=np, **kwargs):
268268
"""
269269
Calculate the deflection angles on a grid of (y,x) arc-second coordinates.
@@ -283,12 +283,7 @@ def deflections_yx_2d_from(self, grid: aa.type.Grid2DLike, xp=np, **kwargs):
283283
deflection_x = zis.real
284284
deflection_y = zis.imag
285285

286-
# And here we convert back to the real axes
287-
return self.rotated_grid_from_reference_frame_from(
288-
grid=xp.multiply(factor, xp.vstack((deflection_y, deflection_x)).T),
289-
xp=xp,
290-
**kwargs,
291-
)
286+
return xp.multiply(factor, xp.vstack((deflection_y, deflection_x)).T)
292287

293288
def _convergence(self, radii, xp=np):
294289

@@ -418,7 +413,7 @@ def _ellip(self, xp=np):
418413
return xp.min(xp.array([ellip, MAX_ELLIP]))
419414

420415
@aa.grid_dec.to_vector_yx
421-
@aa.grid_dec.transform
416+
@aa.grid_dec.transform(rotate_back=True)
422417
def deflections_yx_2d_from(self, grid: aa.type.Grid2DLike, xp=np, **kwargs):
423418
"""
424419
Calculate the deflection angles on a grid of (y,x) arc-second coordinates.
@@ -443,12 +438,7 @@ def deflections_yx_2d_from(self, grid: aa.type.Grid2DLike, xp=np, **kwargs):
443438
deflection_x = zis.real
444439
deflection_y = zis.imag
445440

446-
# And here we convert back to the real axes
447-
return self.rotated_grid_from_reference_frame_from(
448-
grid=xp.multiply(factor, xp.vstack((deflection_y, deflection_x)).T),
449-
xp=xp,
450-
**kwargs,
451-
)
441+
return xp.multiply(factor, xp.vstack((deflection_y, deflection_x)).T)
452442

453443
def _convergence(self, radii, xp=np):
454444

@@ -594,7 +584,7 @@ def __init__(
594584
self.b0 = b0
595585

596586
@aa.grid_dec.to_vector_yx
597-
@aa.grid_dec.transform
587+
@aa.grid_dec.transform(rotate_back=True)
598588
def deflections_yx_2d_from(self, grid: aa.type.Grid2DLike, xp=np, **kwargs):
599589
"""
600590
Calculate the deflection angles on a grid of (y,x) arc-second coordinates.
@@ -627,12 +617,7 @@ def deflections_yx_2d_from(self, grid: aa.type.Grid2DLike, xp=np, **kwargs):
627617
deflection_x = grid.array[:, 1] * factor
628618
deflection_y = grid.array[:, 0] * factor
629619

630-
# And here we convert back to the real axes
631-
return self.rotated_grid_from_reference_frame_from(
632-
grid=xp.multiply(1.0, xp.vstack((deflection_y, deflection_x)).T),
633-
xp=xp,
634-
**kwargs,
635-
)
620+
return xp.vstack((deflection_y, deflection_x)).T
636621

637622
@aa.grid_dec.to_array
638623
@aa.grid_dec.transform

autogalaxy/profiles/mass/total/dual_pseudo_isothermal_potential.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ def _convergence(self, radii, xp=np):
9494
)
9595

9696
@aa.grid_dec.to_vector_yx
97-
@aa.grid_dec.transform
97+
@aa.grid_dec.transform(rotate_back=True)
9898
def deflections_yx_2d_from(self, grid: aa.type.Grid2DLike, xp=np, **kwargs):
9999
"""
100100
Calculate the deflection angles on a grid of (y,x) arc-second coordinates.
@@ -116,12 +116,7 @@ def deflections_yx_2d_from(self, grid: aa.type.Grid2DLike, xp=np, **kwargs):
116116
deflection_y = alpha_circ * xp.sqrt(1 + ellip) * (grid.array[:, 0] / grid_radii)
117117
deflection_x = alpha_circ * xp.sqrt(1 - ellip) * (grid.array[:, 1] / grid_radii)
118118

119-
# And here we convert back to the real axes
120-
return self.rotated_grid_from_reference_frame_from(
121-
grid=xp.multiply(1.0, xp.vstack((deflection_y, deflection_x)).T),
122-
xp=xp,
123-
**kwargs,
124-
)
119+
return xp.vstack((deflection_y, deflection_x)).T
125120

126121
@aa.grid_dec.to_vector_yx
127122
@aa.grid_dec.transform

autogalaxy/profiles/mass/total/isothermal.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ def axis_ratio(self, xp=np):
7171
return xp.minimum(axis_ratio, 0.99999)
7272

7373
@aa.grid_dec.to_vector_yx
74-
@aa.grid_dec.transform
74+
@aa.grid_dec.transform(rotate_back=True)
7575
def deflections_yx_2d_from(self, grid: aa.type.Grid2DLike, xp=np, **kwargs):
7676
"""
7777
Calculate the deflection angles on a grid of (y,x) arc-second coordinates.
@@ -105,11 +105,7 @@ def deflections_yx_2d_from(self, grid: aa.type.Grid2DLike, xp=np, **kwargs):
105105
psi,
106106
)
107107
)
108-
return self.rotated_grid_from_reference_frame_from(
109-
grid=xp.multiply(factor, xp.vstack((deflection_y, deflection_x)).T),
110-
xp=xp,
111-
**kwargs,
112-
)
108+
return xp.multiply(factor, xp.vstack((deflection_y, deflection_x)).T)
113109

114110
@aa.grid_dec.to_vector_yx
115111
@aa.grid_dec.transform

autogalaxy/profiles/mass/total/power_law.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ def potential_2d_from(self, grid: aa.type.Grid2DLike, xp=np, **kwargs):
5353
return (x * alpha_x + y * alpha_y) / (3 - self.slope)
5454

5555
@aa.grid_dec.to_vector_yx
56-
@aa.grid_dec.transform
56+
@aa.grid_dec.transform(rotate_back=True)
5757
def deflections_yx_2d_from(self, grid: aa.type.Grid2DLike, xp=np, **kwargs):
5858
"""
5959
Calculate the deflection angles on a grid of (y,x) arc-second coordinates.
@@ -119,9 +119,7 @@ def deflections_yx_2d_from(self, grid: aa.type.Grid2DLike, xp=np, **kwargs):
119119
deflection_y *= rescale_factor
120120
deflection_x *= rescale_factor
121121

122-
return self.rotated_grid_from_reference_frame_from(
123-
grid=xp.vstack((deflection_y, deflection_x)).T, xp=xp
124-
)
122+
return xp.vstack((deflection_y, deflection_x)).T
125123

126124
def convergence_func(self, grid_radius: float, xp=np) -> float:
127125
return self.einstein_radius_rescaled(xp) * grid_radius.array ** (

0 commit comments

Comments
 (0)