GSoC 2025: Integration of the Sphere with Maximum Determinant Points
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
- Add functionality for the maximum determinant strategy spherical integration.
- Add the $\ell=325$ spherical t-design.
- Write comprehensive tests and documentation for all new functionality.
- 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.
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
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 , 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!
Thank you very much @PaulWAyers ! I’ve started diving deep into the project and will put forth a proposal soon.
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 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
Gridand 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 Thanks a lot for your suggestions! I will follow them.
@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?
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!
@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!
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.
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!
@PaulWAyers Hi sir, I sent my proposal to your email two days ago and wanted to confirm if you have received it. Thanks!
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!
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