Skip to content

Feature/interferometry#224

Closed
Jammy2211 wants to merge 56 commits intomainfrom
feature/interferometry
Closed

Feature/interferometry#224
Jammy2211 wants to merge 56 commits intomainfrom
feature/interferometry

Conversation

@Jammy2211
Copy link
Copy Markdown
Collaborator

Removes PyLops dependency and removes it from docs.

Jammy2211 and others added 30 commits April 29, 2024 19:40
Switches out `numpy` for `jax.numpy`.
This adds the MGE code needed for the Sersic profile.
Add small radial offset to these two profiles to remove the `nan` values at the center.

For the power law profile use the expansion of the `hyp2f1` function given by Tessore and Metcalf 2015 (eqn 29).
Update doc (merge from jax_wrapper branch)
This change makes the MGE profile work better for near-circular mass profiles.  This is done by using more terms of the continued fraction for large values of `|z|^2`.  This makes the auto grad more accurate and not evaluate to `0` when it should not.
Needed to make the `autolens.Tracer` example work.
Jammy2211 and others added 26 commits October 25, 2024 14:14
Update functions for Tracer to be jax safe
These changes add the ability to use JAX to find the jacobian of deflection angles.  To do this it first needs a version of the deflection angle function that takes in two scalars and returns a 2 element vector.  From this `jax.jacfwd` is used to get the 2x2 jacobian for a single (y,x) value.  This function is vectorized to take in a set of (y,x) values (of arbitrary shape) and return a (*shape, 2, 2) array of jacobian values.

The final step is to pass the value from a `grid` object into this function.
Use auto diff to get at jacobian of deflection angles
This overhauls the current critical curve method from a grid search to an application of Newton's method for zero finding.

The steps are as follows:

1) Create a set of `n_points` initial points in a circle of radius `init_r` and centred on `init_centre`

2) Apply `n_steps` of Newton's method to these points in the "radial" direction only (i.e. keeping angle fixed).  Jax's auto differentiation is used to find the radial derivatives of the eigen value function for this step.

3) Filter the results and only keep point that have their eigen value `threshold` of 0. This step is needed because Newton's method will fail when the radial derivative is equal to zero (i.e. near a max or min of the eigen value).

No underlying grid is needed for this method, but the quality of the results are dependent on the initial circle of points.  For best results the circle should be drawn around *each* max/min of the eigen value function. This is typically the centre of each mass in the profile.
@Jammy2211 Jammy2211 closed this Apr 9, 2025
@Jammy2211 Jammy2211 deleted the feature/interferometry branch June 24, 2025 13:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants