-
Notifications
You must be signed in to change notification settings - Fork 37
Absorption with cubepy #133
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
base: master
Are you sure you want to change the base?
Conversation
…sorption_with_cubepy
…sorption_with_cubepy
|
Check out this pull request on See visual diffs & provide feedback on Jupyter Notebooks. Powered by ReviewNB |
|
@cosimoNigro @jsitarek could you look on my PR? :) |
|
I will @pawel21, sorry for the delay. I had little time in general and an issue to fix before this PR. |
| "source": [ | ||
| "SUM_RATIO_LINES_BLR = 30.652\n", | ||
| "\n", | ||
| "def get_absor_blrs(E, L_disk, R_line, r_blob_bh, z):\n", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this function would be useful to be included in the main code of agnpy
XI_LINE and eps_abs should be then among the function parameters
|
sorry for a very late feedback on this |
|
digging through my old e-mails I realized that this PR is still pending. |
|
Sorry for letting it slip, will do the review later today. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks a lot for your work @pawel21, and apologies again if I got disconnected and took a while to review it.
I think once you fix mine and @jsitarek's comments we can merge it in.
Discussing how to handle the general approach towards integration (e.g. allowing to choose between trapezoidal and adaptive integration) is something we should discuss together at a certain point in the future, along with the re-organisation of the package, not in this PR.
|
Another thing that is missing is an |
…sorption_with_cubepy
|
Hi @pgliwny FAILED agnpy/fit/tests/test_fit.py::TestFit::test_mrk_421_fit - IndexError: boolean index did not match indexed array along dimension 2; dimension is 1 but corresponding boolean dimension is 9 maybe your PR changed something in the API EDIT: I had a deeper look and the new code does not modify any of the existing functions so it should not be the reason for the fail of the tests. |
| **note** these are observed frequencies (observer frame) | ||
| z : float | ||
| redshift of the source | ||
| mu_s : float |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this function is following evaluate_tau_blr that is only valid for mu_s=1 (otherwise integration over path of the photon and over the distance from the black hole is not equivalent), so it should not have it as a parameter (@cosimoNigro can you also have a look at this?)
agnpy/absorption/absorption.py
Outdated
| XI_TARGET_LINE = self.target.xi_line | ||
| tau_z_all = np.zeros(nu.shape) | ||
|
|
||
| blr_shells = dict() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why do you define those dictionaries? I guess it is a remnant of a script where you were also plotting the effect of individual lines, but this is either way not possible this function.
here you are using the dictionaries only to sum up over all the lines, so you could instead created SphericalShellBLR and Absorption as temporary variables directly in the for loop
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
removed
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I left some comments. In particular the test should be rewritten.
|
|
||
| def tau_blr_lines_cubepy(self, nu, lines_list, eps_abs=1e-6): | ||
| """ | ||
| Calculate the absorption in all available BLR (Broad Line Region) shells. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"all available BLR shells" is a copy paste from the original function, better write "multiple BLR ..." or something like this since now you specify exaclty the list of lines to consider
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it is still written "all available BLR shells"
| Optical depth values corresponding to the input frequencies. | ||
| """ | ||
|
|
||
| sum_ratio_lines = sum(lines_dictionary[line]['L_Hbeta_ratio'] for line in lines_list) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
you need to introduce a check or even better throw an exception if any of the requested line is not in lines_dictionary.keys()
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I do not see the check
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #133 +/- ##
==========================================
- Coverage 97.13% 96.80% -0.34%
==========================================
Files 42 42
Lines 3459 3535 +76
==========================================
+ Hits 3360 3422 +62
- Misses 99 113 +14 ☔ View full report in Codecov by Sentry. |
…gnpy into absorption_with_cubepy
| nu = E.to("Hz", equivalencies=u.spectral()) | ||
| tau_blr = abs_blr.tau(nu) | ||
| tau_blr_cubepy = abs_blr.tau_blr_cubepy(nu, eps_abs=1e-3) | ||
| assert np.allclose(tau_blr, tau_blr_cubepy, rtol=1e-1, atol=1e-1) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
have you checked what are the tau values obtained in this case? It might happen that there is very little absorption with tau << 1 and then the test will pass always even if the two numbers are far from one another because of atol.
| radius of the BLR spherical shell | ||
| r : :class:`~astropy.units.Quantity` | ||
| distance between the Broad Line Region and the blob | ||
| mu, phi : :class:`~numpy.ndarray` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
those two are not in the list of parameters
| # set boundary for integration | ||
| low = np.array( | ||
| [ | ||
| [min(mu_to_integrate)], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the integration of mu and phi should be simply -1 to 1 and 0 to 2 pi.
| # requires a 10% deviation from the two SED points | ||
| assert check_deviation(nu, tau_dt, tau_ps_dt, 0.1) | ||
|
|
||
| def test_abs_blr_cubepy(self): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
now that you added test_tau_accuracy_standard_vs_cubepy this test does not seem to add anything to it, so I think you can remove test_abs_blr_cubepy
Hi,
I have created PR for my modification of code for absorption using cubepy.
I added example notebook in agnpy/docs/tutorials