grid icon indicating copy to clipboard operation
grid copied to clipboard

GSoC 2025: Integration of the Sphere with Maximum Determinant Points

Open PaulWAyers opened this issue 1 year ago • 23 comments

Description

Add functionality to the Grid library for integration over the surface of a sphere. Currently we support Lebedev quadrature (nonequal weights, sometimes negative weights) and spherical t-designs (equal positive weights). An alternative, with nonequal but always positive weights, is the maximum determinant stategy.

:books: Package Description and Impact

Grid is a pure Python library for numerical integration, interpolation and differentiation of interest for the quantum chemistry community.

:construction_worker: What will you do?

Following the style of the spherical t-design grids, you will add functionality for the maximum determinant strategy. Up to a degree of 200, the points/weights are available here. Incidentally, the same web page has one spherical design beyond what we have right now, for degree 325. It would be good to add this to our list.

:checkered_flag: Expected Outcomes

  1. Add functionality for the maximum determinant strategy spherical integration.
  2. Add the $\ell=325$ spherical t-design.
  3. Write comprehensive tests and documentation for all new functionality.
  4. Write tutorial Jupyter notebooks that show how to use the new functionality.
Required skills Python, OOP
Preferred skills Be comfortable with math and numerical algorithms. Experience with scientific programming can help
Project size 90 hours, Small
Difficulty Easy :relaxed:

:raising_hand: Mentors

Marco Martínez-González mmg870630_at_gmail_dot_com @marco-2023
Farnaz Heidar-Zadeh farnaz.heidarzadeh_at_queensu_dot_ca @FarnazH
Paul Ayers ayers_at_mcmaster_dot_ca @PaulWAyers
Ali Tehrani 19at27_at_queensu_dot_ca @Ali-Tehrani

:pencil: Notes

A stretch goal would be to implement yet another angular integration method, where the grid points are rigorously nested.

PaulWAyers avatar Feb 01 '24 17:02 PaulWAyers

Note that when someone adds the new grid, they should also change MANIFEST.in to include the data files when installing and to also change the tests in test_atomgrid.py and test_molgrid.py. This can be easily done since it uses @pytest.mark.parameterize

Ali-Tehrani avatar Feb 01 '24 18:02 Ali-Tehrani

Hi @PaulWAyers, I’m Aryan Prakhar, an engineering student at IIT (BHU). I have prior experience with open source through the CodeForGovTech'24 program. Also, I have worked in the data-driven scientific discovery space that led to papers at ICLR'25 and ICML'24. I'm interested in contributing to this project and would love to know the next steps for applying.

P.S. Though I do not have a specialised background in chemistry, I believe I could pick up the related concepts swiftly since my foundations are strong through university coursework (also I have always loved chemistry as a subject :))

AryanPrakhar avatar Mar 01 '25 08:03 AryanPrakhar

@AryanPrakhar , I think this project doens't really require chemistry. It's a pretty straightforward numerical algorithms project. So, by all means, take a crack at it!

PaulWAyers avatar Mar 01 '25 14:03 PaulWAyers

Thank you very much @PaulWAyers ! I’ve started diving deep into the project and will put forth a proposal soon.

AryanPrakhar avatar Mar 01 '25 16:03 AryanPrakhar

Hello @PaulWAyers, I am a graduate student from UC Davis major in Data Science. I have hands-on experiences about Grid and PR and I am very interested in this project. I have already started writing the proposal. Want to check if there is anything I should do before that. Thanks!

AdamYyoung avatar Mar 01 '25 22:03 AdamYyoung

@AdamYyoung there isn't anything essential at this point. Work on the proposal and reach out if there are problems/issues. As the GSoC is a competitive process, I recommend:

  • for questions/comments that are of universal interest to users of Grid and to your fellow applicants, please put them in the issue.
  • for questions/comments that are specific to your proposal, please e-mail me. Note that my e-mail hygiene is suboptimal, especially during the semester, so if you don't get a response in a few days, please follow up.

PaulWAyers avatar Mar 01 '25 23:03 PaulWAyers

@PaulWAyers Thanks a lot for your suggestions! I will follow them.

AdamYyoung avatar Mar 02 '25 01:03 AdamYyoung

@PaulWAyers Hi sir, I have tested Grid and found out that Grid has already supported l=325 symmetric spherical designs, so as the corresponding data(src/grid/data/spherical_design/spherical_325_52978.npz). Should I still write this goal in the proposal?

AdamYyoung avatar Mar 03 '25 00:03 AdamYyoung

Hey , This project looks really exciting, and I’d love to contribute as part of GSoC 2025! I have experience with Python, OOP, and numerical algorithms, and I’ve worked on open-source projects involving data sampling and scientific computing. The idea of implementing the maximum determinant strategy for spherical integration sounds super interesting, and I’d be happy to help with that, along with adding the ℓ = 325 spherical t-design. I also enjoy writing documentation and creating Jupyter notebooks, so I’d love to contribute to the tutorials and testing as well. Before I get started, I had a few quick questions:

  • Are there any references or existing implementations you’d recommend looking into for the maximum determinant strategy?
  • Should the implementation follow the same structure as the spherical t-design grids, or is there flexibility in the approach?
  • For the stretch goal, do you already have a specific nested angular integration method in mind?

Looking forward to hearing your thoughts and getting involved!

SophiaLi20 avatar Mar 03 '25 16:03 SophiaLi20

@PaulWAyers Hi sir, I have tested Grid and found out that Grid has already supported l=325 symmetric spherical designs, so as the corresponding data(src/grid/data/spherical_design/spherical_325_52978.npz). Should I still write this goal in the proposal?

I thought I found one higher order, but perhaps not. (It might be that it was for n=327.) This was just intended as a possible warmup for the "real work" so it's not important to include it. Thanks for catching it!

PaulWAyers avatar Mar 04 '25 13:03 PaulWAyers

Hey , This project looks really exciting, and I’d love to contribute as part of GSoC 2025! I have experience with Python, OOP, and numerical algorithms, and I’ve worked on open-source projects involving data sampling and scientific computing. The idea of implementing the maximum determinant strategy for spherical integration sounds super interesting, and I’d be happy to help with that, along with adding the ℓ = 325 spherical t-design. I also enjoy writing documentation and creating Jupyter notebooks, so I’d love to contribute to the tutorials and testing as well. Before I get started, I had a few quick questions:

  • Are there any references or existing implementations you’d recommend looking into for the maximum determinant strategy?
  • Should the implementation follow the same structure as the spherical t-design grids, or is there flexibility in the approach?
  • For the stretch goal, do you already have a specific nested angular integration method in mind?

Looking forward to hearing your thoughts and getting involved!

Thanks for your interest!

  • The reference I know for the maximum determinant strategy is in the project description.
  • For simplicity, I think we should follow the same strategy as for spherical t-design grids. We are always looking to improve, but my expectation is that if there is a better way to implement the max-det grid, that would flow back and mean that the spherical design and Lebedev grids need to be refactored also.
  • I will put some notes together on nested integration strategies and post them.

PaulWAyers avatar Mar 04 '25 13:03 PaulWAyers

Hi @PaulWAyers , Thanks for the clarification! That makes a lot of sense—I’ll follow the same approach as the spherical t-design grids and keep an eye out for any improvements that could benefit the overall structure, including the Lebedev grids. I’ll also go through the reference mentioned in the project description to get a better understanding of the maximum determinant strategy. Looking forward to your notes on nested integration strategies! I’ll start exploring the implementation and will reach out if I run into any questions along the way. Appreciate the guidance!

SophiaLi20 avatar Mar 04 '25 17:03 SophiaLi20

@PaulWAyers Hi sir, I sent my proposal to your email two days ago and wanted to confirm if you have received it. Thanks!

AdamYyoung avatar Mar 13 '25 01:03 AdamYyoung

Hi @PaulWAyers , I sent another email to you two days ago. Since I haven't received any reply, I want to ensure that if your email is [email protected]? Appreciated for any reply!

AdamYyoung avatar Mar 17 '25 03:03 AdamYyoung

Dear Respected Mentors @marco-2023, @PaulWAyers, @FarnazH, and @Ali-Tehrani,

I have a strong interest in contributing to the Grid project through GSoC 2025. With a solid background in computer science—including extensive coursework in object-oriented programming and Python—and practical experience in scientific computing, I believe I can offer valuable insights to enhance the project. Please let me know how I can get started. Best regards, M Haseeb

M-Haseeb01 avatar Mar 17 '25 04:03 M-Haseeb01