Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gh-136: Implementation of variable depth #535

Open
wants to merge 69 commits into
base: main
Choose a base branch
from
Open

Conversation

mwiet
Copy link
Contributor

@mwiet mwiet commented Feb 24, 2025

This merge request implements variable depth's effect on the galaxy density in the angular and line-of-sight directions into GLASS. This closes #136.

This code allows for functionality similar to SALMO. The implementation adds two novel features:

  • The interpolation between the variable depth tracer variable and the change in galaxy density can be interpolated with any function (previously, in SALMO only linear interpolation was possible).
  • The effect of variable depth along the line-of-sight and in the angular direction can be modelled as fully independent (previously, in SALMO the selection of galaxy shapes and galaxy redshifts was always assumed to be the same). This allows for the application of a separate selection function for the galaxy shapes and the galaxy redshifts.

The glass.observations.angular_variable_depth_mask implements the basic structure and functionality for the object, but only outputs the variable depth masks in the angular direction as they have been input.

The angular_los_variable_depth_mask expends upon this functionality by implementing the aformentioned features. Hence, when sampling galaxies using glass.points.positions_from_delta, one can multiply the given vis visibility mask by the output of angular_los_variable_depth_mask for a given tomographic bin and redshift shell index.

Tests with KiDS-1000-like mock

image

Testing this implementation with KiDS-1000 data (see here) gives results consistent with previous mocks on the same data:

  • Overall redshift distributions are consistent with inputs:
    image

  • Local redshift distributions are shifted due to variable depth (e.g. North vs. South field):
    image

  • Between 2% and 10% (on average) of additional power is added to the measured pseudo-Cls from the realised galaxy fields:
    image

Performance

The inclusion of the angular_los_variable_depth_mask when sampling the KiDS-1000-like galaxies added an additional 14 seconds to the total runtime on my local machine (from 7m 14s to 7m 28s, i.e. a 3.2% increase). In this time, angular_los_variable_depth_mask was evaluated 165 times (n_bins x n_shells = 5 x 33).

Potential extensions

Note that this implementation does not include the variability in the intrinsic shapes of galaxies which may be caused by variable depth. Additional features will be necessary for this in glass.shapes to allow the input sigma to vary per pixel.

… classes which incorporate variable depth

These classes alter output the ratio in the galaxy counts between the case where variable depth occurs and without variable depth
@mwiet mwiet added enhancement New feature or request science Science improvement or question labels Feb 24, 2025
Copy link
Member

@Saransh-cpp Saransh-cpp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the amazing work on this, @mwiet! This PR will require some design changes and adhering to good practices (tests, PEP8 conventions, ...), but I think we can discuss those once the functionality is ready and approved.

@paddyroddy
Copy link
Member

pre-commit.ci autofix

Copy link
Member

@paddyroddy paddyroddy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry quite a lot of changes, but we can iterate.

As a minimum we need all CI to pass. Have a look at pre-commit. That is currently failing. You can run pre-commit run -a locally.

Also as @Saransh-cpp says we really need tests to go with this work.

@mwiet
Copy link
Contributor Author

mwiet commented Feb 24, 2025

I have fixed most of the typing, naming convention and documentation issues. The only outstanding issue flagged by pre-commit is glass/observations.py:432:9: PLR0913 Too many arguments in function definition (10 > 5). Given the setup of the overall feature, this may be difficult to change unless we create an intermediate class or the inputs are merged into some larger object. Let me know what you think.

In terms of tests, I will try to add some useful test functions to tests/test_observations.py as soon as possible.

@paddyroddy
Copy link
Member

Thanks so much for doing that! Appreciate there were few things in there, but that has been a lot of development velocity in the last six months.

The only outstanding issue flagged by pre-commit is glass/observations.py:432:9: PLR0913 Too many arguments in function definition (10 > 5).

Ah, don't worry about that. Simple functions are something to strive for, but it is not always possible. You can suppress that error using # noqa: PLR0912. See an explanation here https://docs.astral.sh/ruff/linter/#error-suppression if it's not clear.

mwiet and others added 2 commits February 24, 2025 15:51
Co-authored-by: Patrick J. Roddy <patrickjamesroddy@gmail.com>
Co-authored-by: Patrick J. Roddy <patrickjamesroddy@gmail.com>
@@ -46,3 +46,4 @@ More advanced examples doing multiple things at the same time.
examples/2-advanced/cosmic_shear.ipynb
examples/2-advanced/stage_4_galaxies.ipynb
examples/2-advanced/legacy-mode.ipynb
examples/2-advanced/variable_depth_example.ipynb
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure if we want this public, was more for making sure the docs CI passed

@paddyroddy paddyroddy changed the base branch from main to paddy/issue-578 March 10, 2025 11:32
Base automatically changed from paddy/issue-578 to main March 10, 2025 14:04
@ntessore
Copy link
Collaborator

Thanks for the fantastic work @mwiet! From your side, I think we are all set, you can tick the box on the to-do list :)

For us, I believe we should align this more closely with the overall roadmap for sampling galaxies in GLASS. I see a couple of tasks before merging:

We do not need the two classes. The base class checks for a valid index before accessing an array of maps; numpy does that for us, we can therefore simply use the stack of matrices. The work that the other class does in __getitem__() should be a standalone function that operates not on a stack of inputs, but on individual inputs (so the selection with index happens before the function is called).

And, importantly, a lot of the "variable depth functionality" is actually happening in the notebook, not in the library. Creating the stack of depth maps from a tracer, for example, is something that we need to provide. Think of it this way: how would a user go about creating the inputs for variable depth? Everything they would need to copy and paste verbatim from the example notebook should be provided by GLASS, I believe.

"Ob = 0.05\n",
"\n",
"# basic parameters of the simulation\n",
"nside = lmax = 64\n",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The resolution was initially 1024. I have had to drop it to 64 as otherwise this notebook takes a really long time. 128 would be suitable, but the pre-allocation array step becomes too big in CI (based on GH runners), so went with 64. Still gives similar results (by eye).

Comment on lines 265 to 343
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA0QAAAIECAYAAAA5Nu72AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAADJiklEQVR4nO39edwkRZXvj5+qh6bBpkHAvqy9sAnIKi0I7YICiooiigvKDIiM8xuXcWH0emWucsWXgzLfGXTG8c7ycryziAvuMyq4IwgINrYNimzdLM2OKCACLU/l74/qzIqMPCfiRGRkVlbV582LV2dlRpyIqud5qvJT58QnelmWZQQAAAAAAAAAM0h/3BMAAAAAAAAAgHEBQQQAAAAAAACYWSCIAAAAAAAAADMLBBEAAAAAAABgZoEgAgAAAAAAAMwsEEQAAAAAAACAmQWCCAAAAAAAADCzQBABAAAAAAAAZhYIIgAAAAAAAMDMAkEEAAAzzg9/+EPq9Xr0wx/+MLjvG97wBtpqq61UbXu9Hv2f//N/gscIpa1xOPLX8otf/OJYxgcAABAOBBEAAHSM448/np70pCfRww8/LLY5+eSTafPNN6df//rXLc4M5Jx//vn0sY99bNzTAAAAkAAIIgAA6Bgnn3wyPfroo/SVr3yFvf773/+evva1r9GLXvQi2n777WuP99znPpceffRReu5zn1s71qwAQQQAANMDBBEAAHSM448/nhYvXkznn38+e/1rX/saPfLII3TyySfXGuexxx6jwWBA/X6ftthiC+r38ZEAAABg9sCnHwAAdIwtt9ySXvnKV9L3vvc9uvfeeyvXzz//fFq8eDEdf/zx9MADD9C73/1uOuCAA2irrbairbfeml784hfTz3/+81KffG3L5z73Ofrf//t/0y677EJPetKT6KGHHmLXEF1yySX06le/mpYtW0YLFy6kpUuX0rve9S569NFH2TmvW7eOjj32WFq0aBHtvPPOdPbZZ1OWZd7nescdd9Ab3/hG2mGHHWjhwoW033770b/+67+qXqfHH3+c3vWud9GSJUuK12PDhg3R4+Svw+c//3k688wzaccdd6RFixbR8ccfT7fffnvR7nnPex594xvfoFtvvZV6vR71ej1asWJFKdZgMKAPf/jDtOuuu9IWW2xBRx99NN10002q5wUAAKBdNhv3BAAAAFQ5+eST6d/+7d/oC1/4Ar3tbW8rzj/wwAN00UUX0ete9zracsst6Re/+AV99atfpVe/+tW022670T333EP/9E//REceeST98pe/pJ133rkU90Mf+hBtvvnm9O53v5sef/xx2nzzzdnxL7jgAvr9739Pb37zm2n77benK6+8kv7+7/+eNmzYQBdccEGp7fz8PL3oRS+iww8/nM4991y68MIL6ayzzqInnniCzj77bPE53nPPPXT44YdTr9ejt73tbbRkyRL61re+Raeffjo99NBD9M53vtP5Gv3Jn/wJ/ed//ie9/vWvp1WrVtH3v/99Ou6442qP8+EPf5h6vR69973vpXvvvZc+9rGP0THHHENr1qyhLbfckv7yL/+SHnzwQdqwYQOdd955REQVY4mPfOQj1O/36d3vfjc9+OCDdO6559LJJ59MP/nJT5zPCQAAwBjIAAAAdI4nnngi22mnnbIjjjiidP4f//EfMyLKLrrooizLsuyxxx7L5ufnS23Wr1+fLVy4MDv77LOLcz/4wQ8yIsp233337Pe//32pfX7tBz/4QXHObpNlWXbOOedkvV4vu/XWW4tzp556akZE2Z//+Z8X5waDQXbcccdlm2++eXbfffcV54koO+uss4rHp59+erbTTjtl999/f2mck046Kdtmm23YOeSsWbMmI6LsLW95S+n861//+uhx8tdhl112yR566KGi3Re+8IWMiLKPf/zjxbnjjjsuW758eWVeeYx99903e/zxx4vzH//4xzMiyq655hrxOQEAABgPKJkDAIAOMjc3RyeddBJdfvnldMsttxTnzz//fNphhx3o6KOPJiKihQsXFmt/5ufn6de//jVttdVWtPfee9PVV19diXvqqafSlltu6R3fbPPII4/Q/fffT6tWraIsy+hnP/tZpb2ZxcozMRs3bqTvfve7bPwsy+hLX/oSvexlL6Msy+j+++8v/j/22GPpwQcfZOef881vfpOIiN7+9reXztvZnphxTjnlFFq8eHHx+FWvehXttNNOxZgaTjvttFL27TnPeQ4RDUsLAQAAdAsIIgAA6Ci5aUJurrBhwwa65JJL6KSTTqK5uTkiGq5VOe+882ivvfaihQsX0lOe8hRasmQJrV27lh588MFKzN1220019m233UZveMMbaLvttqOtttqKlixZQkceeSQRUSVuv9+n3XffvXTuqU99KhFRScyZ3HffffTb3/6W/vmf/5mWLFlS+v+0004jImLXT+Xceuut1O/3aY899iid33vvvWuPs9dee5Ue93o92nPPPcXnwrFs2bLS42233ZaIiH7zm9+oYwAAAGgHrCECAICOsnLlStpnn33os5/9LJ155pn02c9+lrIsK7nL/dVf/RW9//3vpze+8Y30oQ99iLbbbjvq9/v0zne+kwaDQSWmJjs0Pz9PL3jBC+iBBx6g9773vbTPPvvQokWL6I477qA3vOENbNxQ8hh/9Ed/RKeeeirb5sADD5yYcWxywWqTKYwmAAAAtAsEEQAAdJiTTz6Z3v/+99PatWvp/PPPp7322osOPfTQ4voXv/hFev7zn0+f+tSnSv1++9vf0lOe8pSoMa+55hq64YYb6N/+7d/olFNOKc5/5zvfYdsPBgNat25dkRUiIrrhhhuIiCruazm5M9z8/Dwdc8wxwXNcvnw5DQYDuvnmm0tZoeuvv772ODfeeGPpcZZldNNNN5WEU6/XC54zAACAboKSOQAA6DB5NugDH/gArVmzprL30NzcXCXrcMEFF9Add9wRPWae3TDjZllGH//4x8U+n/jEJ0ptP/GJT9CCBQuKtU7cGCeeeCJ96UtfomuvvbZy/b777nPO8cUvfjEREf3d3/1d6by9WWrMOP/+7/9ODz/8cPH4i1/8It11113FmEREixYtYksSAQAATB7IEAEAQIfZbbfdaNWqVfS1r32NiKgiiF760pfS2WefTaeddhqtWrWKrrnmGvrMZz5TWdMTwj777EN77LEHvfvd76Y77riDtt56a/rSl74krn/ZYost6MILL6RTTz2VnvnMZ9K3vvUt+sY3vkFnnnkmLVmyRBznIx/5CP3gBz+gZz7zmfSmN72Jnva0p9EDDzxAV199NX33u9+lBx54QOx78MEH0+te9zr65Cc/SQ8++CCtWrWKvve977F7/YSOs91229Gzn/1sOu200+iee+6hj33sY7TnnnvSm970pqLNypUr6fOf/zydccYZdOihh9JWW21FL3vZy3wvLQAAgA4CQQQAAB3n5JNPpssuu4wOO+ww2nPPPUvXzjzzTHrkkUfo/PPPp89//vN0yCGH0De+8Q36X//rf0WPt2DBAvqv//ovevvb307nnHMObbHFFvSKV7yC3va2t9FBBx1UaT83N0cXXnghvfnNb6b3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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This section was initially

for i in range(nbins):
    for j in range(len(zbins)):

and displayed every single hp.mollview. This took a long time and made the notebook huge, so I have just made it one.

Comment on lines 245 to 384
"source": [
"for i in range(nbins):\n",
" plt.plot(z_grid, tomo_nz[i] / n_arcmin2[i], label=f\"bin {i}\", c=\"k\")\n",
" for j in range(n_vardepth_bins):\n",
" plt.plot(\n",
" z_grid,\n",
" dndz_vd[i, j],\n",
" label=f\"bin {i}, vd {j}\",\n",
" alpha=0.5,\n",
" color=f\"C{i}\",\n",
" )\n",
"plt.xlim(0, 1.5)\n",
"plt.ylim(0, 2.3)\n",
"plt.xlabel(\"z\")\n",
"plt.ylabel(\"dN/dz [Normalised]\");"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA0QAAAIECAYAAAA5Nu72AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAADJiklEQVR4nO39edwkRZXvj5+qh6bBpkHAvqy9sAnIKi0I7YICiooiigvKDIiM8xuXcWH0emWucsWXgzLfGXTG8c7ycryziAvuMyq4IwgINrYNimzdLM2OKCACLU/l74/qzIqMPCfiRGRkVlbV582LV2dlRpyIqud5qvJT58QnelmWZQQAAAAAAAAAM0h/3BMAAAAAAAAAgHEBQQQAAAAAAACYWSCIAAAAAAAAADMLBBEAAAAAAABgZoEgAgAAAAAAAMwsEEQAAAAAAACAmQWCCAAAAAAAADCzQBABAAAAAAAAZhYIIgAAAAAAAMDMAkEEAAAzzg9/+EPq9Xr0wx/+MLjvG97wBtpqq61UbXu9Hv2f//N/gscIpa1xOPLX8otf/OJYxgcAABAOBBEAAHSM448/np70pCfRww8/LLY5+eSTafPNN6df//rXLc4M5Jx//vn0sY99bNzTAAAAkAAIIgAA6Bgnn3wyPfroo/SVr3yFvf773/+evva1r9GLXvQi2n777WuP99znPpceffRReu5zn1s71qwAQQQAANMDBBEAAHSM448/nhYvXkznn38+e/1rX/saPfLII3TyySfXGuexxx6jwWBA/X6ftthiC+r38ZEAAABg9sCnHwAAdIwtt9ySXvnKV9L3vvc9uvfeeyvXzz//fFq8eDEdf/zx9MADD9C73/1uOuCAA2irrbairbfeml784hfTz3/+81KffG3L5z73Ofrf//t/0y677EJPetKT6KGHHmLXEF1yySX06le/mpYtW0YLFy6kpUuX0rve9S569NFH2TmvW7eOjj32WFq0aBHtvPPOdPbZZ1OWZd7nescdd9Ab3/hG2mGHHWjhwoW033770b/+67+qXqfHH3+c3vWud9GSJUuK12PDhg3R4+Svw+c//3k688wzaccdd6RFixbR8ccfT7fffnvR7nnPex594xvfoFtvvZV6vR71ej1asWJFKdZgMKAPf/jDtOuuu9IWW2xBRx99NN10002q5wUAAKBdNhv3BAAAAFQ5+eST6d/+7d/oC1/4Ar3tbW8rzj/wwAN00UUX0ete9zracsst6Re/+AV99atfpVe/+tW022670T333EP/9E//REceeST98pe/pJ133rkU90Mf+hBtvvnm9O53v5sef/xx2nzzzdnxL7jgAvr9739Pb37zm2n77benK6+8kv7+7/+eNmzYQBdccEGp7fz8PL3oRS+iww8/nM4991y68MIL6ayzzqInnniCzj77bPE53nPPPXT44YdTr9ejt73tbbRkyRL61re+Raeffjo99NBD9M53vtP5Gv3Jn/wJ/ed//ie9/vWvp1WrVtH3v/99Ou6442qP8+EPf5h6vR69973vpXvvvZc+9rGP0THHHENr1qyhLbfckv7yL/+SHnzwQdqwYQOdd955REQVY4mPfOQj1O/36d3vfjc9+OCDdO6559LJJ59MP/nJT5zPCQAAwBjIAAAAdI4nnngi22mnnbIjjjiidP4f//EfMyLKLrrooizLsuyxxx7L5ufnS23Wr1+fLVy4MDv77LOLcz/4wQ8yIsp233337Pe//32pfX7tBz/4QXHObpNlWXbOOedkvV4vu/XWW4tzp556akZE2Z//+Z8X5waDQXbcccdlm2++eXbfffcV54koO+uss4rHp59+erbTTjtl999/f2mck046Kdtmm23YOeSsWbMmI6LsLW95S+n861//+uhx8tdhl112yR566KGi3Re+8IWMiLKPf/zjxbnjjjsuW758eWVeeYx99903e/zxx4vzH//4xzMiyq655hrxOQEAABgPKJkDAIAOMjc3RyeddBJdfvnldMsttxTnzz//fNphhx3o6KOPJiKihQsXFmt/5ufn6de//jVttdVWtPfee9PVV19diXvqqafSlltu6R3fbPPII4/Q/fffT6tWraIsy+hnP/tZpb2ZxcozMRs3bqTvfve7bPwsy+hLX/oSvexlL6Msy+j+++8v/j/22GPpwQcfZOef881vfpOIiN7+9reXztvZnphxTjnlFFq8eHHx+FWvehXttNNOxZgaTjvttFL27TnPeQ4RDUsLAQAAdAsIIgAA6Ci5aUJurrBhwwa65JJL6KSTTqK5uTkiGq5VOe+882ivvfaihQsX0lOe8hRasmQJrV27lh588MFKzN1220019m233UZveMMbaLvttqOtttqKlixZQkceeSQRUSVuv9+n3XffvXTuqU99KhFRScyZ3HffffTb3/6W/vmf/5mWLFlS+v+0004jImLXT+Xceuut1O/3aY899iid33vvvWuPs9dee5Ue93o92nPPPcXnwrFs2bLS42233ZaIiH7zm9+oYwAAAGgHrCECAICOsnLlStpnn33os5/9LJ155pn02c9+lrIsK7nL/dVf/RW9//3vpze+8Y30oQ99iLbbbjvq9/v0zne+kwaDQSWmJjs0Pz9PL3jBC+iBBx6g9773vbTPPvvQokWL6I477qA3vOENbNxQ8hh/9Ed/RKeeeirb5sADD5yYcWxywWqTKYwmAAAAtAsEEQAAdJiTTz6Z3v/+99PatWvp/PPPp7322osOPfTQ4voXv/hFev7zn0+f+tSnSv1++9vf0lOe8pSoMa+55hq64YYb6N/+7d/olFNOKc5/5zvfYdsPBgNat25dkRUiIrrhhhuIiCruazm5M9z8/Dwdc8wxwXNcvnw5DQYDuvnmm0tZoeuvv772ODfeeGPpcZZldNNNN5WEU6/XC54zAACAboKSOQAA6DB5NugDH/gArVmzprL30NzcXCXrcMEFF9Add9wRPWae3TDjZllGH//4x8U+n/jEJ0ptP/GJT9CCBQuKtU7cGCeeeCJ96UtfomuvvbZy/b777nPO8cUvfjEREf3d3/1d6by9WWrMOP/+7/9ODz/8cPH4i1/8It11113FmEREixYtYksSAQAATB7IEAEAQIfZbbfdaNWqVfS1r32NiKgiiF760pfS2WefTaeddhqtWrWKrrnmGvrMZz5TWdMTwj777EN77LEHvfvd76Y77riDtt56a/rSl74krn/ZYost6MILL6RTTz2VnvnMZ9K3vvUt+sY3vkFnnnkmLVmyRBznIx/5CP3gBz+gZz7zmfSmN72Jnva0p9EDDzxAV199NX33u9+lBx54QOx78MEH0+te9zr65Cc/SQ8++CCtWrWKvve977F7/YSOs91229Gzn/1sOu200+iee+6hj33sY7TnnnvSm970pqLNypUr6fOf/zydccYZdOihh9JWW21FL3vZy3wvLQAAgA4CQQQAAB3n5JNPpssuu4wOO+ww2nPPPUvXzjzzTHrkkUfo/PPPp89//vN0yCGH0De+8Q36X//rf0WPt2DBAvqv//ovevvb307nnHMObbHFFvSKV7yC3va2t9FBBx1UaT83N0cXXnghvfnNb6b3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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This section was very slow in the initial implementation. By pre-allocating the catalogue, it is significantly quicker.

@@ -136,3 +138,86 @@ def test_tomo_nz_gausserr() -> None:
# check the shape of the output

np.testing.assert_array_equal(binned_nz.shape, (len(zbins), len(z)))


@pytest.mark.parametrize(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I started to add tests yesterday before @ntessore's review. It feels pointless continuing these given the proposed changes.

@paddyroddy
Copy link
Member

Some notes @mwiet sent me, which I think would be good to have here so they don't get lost.

Hi Paddy, Sorry about the delay! Here's an example notebook for a KiDS-1000-like survey with mock n(z), mock variable depth and a stage-IV-like mask. The survey properties are not all physical, but they give an idea of how they should be formatted.
Also, if you actually want to sample the galaxy catalogue. With the current galaxy density, it might take a really long time, so I would recommend just multiplying tomo_nz by 0.01.

Hi Paddy, If you multiply it by 0.01 just before it is integrated to get the n_gal for a given tomographic bin/shell in the sampling process, it will drastically reduce the number of galaxies it simulates.

@ntessore ntessore changed the title gh-413: Implementation of variable depth gh-136: Implementation of variable depth Apr 14, 2025
@ntessore
Copy link
Collaborator

This actually closes #136, not 413.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request science Science improvement or question
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Addition of new visibility object which allows anisotropy
4 participants