Final GSoC'20 report for GNU Astro
The aim of this project is to re-align different images to a common coordinate system and make a common cataloge. This is called image registration. After registration, we have to build the library to remove non-linear warpings from them. Finally all these seperate projects have to be merged with the existing GNU Astro ecosystem.
Work Done
The proposal was changed a bit before starting the project. It was decided to make functionlities for distortion conversions for easy use of GNU Astro in an analysis pipeline using different software.
The main repository for the distortion converion is here.
- Implemented TPV to SIP distrotion conversions.
- Implemented SIP (reverse and forward) to TPV distortion conversions.
- Implemented scripts for generating the polynomial equations which are finally used for conversions.
All commits for this project are here.
Final merged commits in savannah:
- All convertions between different WCS distortions.
- Fixed –wcsdistortion when used without HDUs data.
- Fixed default size with –wcsdistortion=SIP when no input data is provided..
The main repository for the quad-hash matching algorithm is here.
- Implemented an efficient method to find possible quads in catalogue without the use of any external library (such as HEALPix).
- Implemented multithreaded operations when finding a quad and making its hash code improving efficiency during large data computations.
- Implemented functions to help in visualisations during development.
- Implemented an index-based
kd-tree
which is highly space/RAM efficient based onQuickselect
method. - Implemented nearest neighbours searches for quads using kd-tree.
All commits for this project are here.
Final merged commits in savannah:
The final matching method to finally find variables for WCS calculations are on this branch which will be merged after a more robust method for matching is found.
Tasks Done and discusssions on Savannah
- Implemented TPV and SIP keywords when WCS distortions are necessary.(#15128)
- Implemented calculations for reverse coefficients of TPV to SIP.(#15670)
- Implemented calculations for forward coefficients of TPV to SIP.(#15669)
- Implemented calculations for SIP to TPV coversions.(#15676)
- Fixed problem during building of wcsdistortion library in macOS(#58623).
- Fixed error in calculation of SIP to TPV coversions(#58640).
- Implemented fix for the default size for
--wcsdistortion
when no data provided.(#15704) - Made a HEALPix grid on the gaia index catalogue.(#15700)
- Made quad structure with hashes and store in kd-tree.(#15713)
All the code that is finally merged to main repository is here. All tasks that are done (including tasks before the coding period) are listed here. All bugs fixed (including bugs fixed before the coding period) are listed here.
What’s left
- More robust method to match the query quads to reference quads is to be found. Our aim is to achieve a highly efficient software which is both space/RAM and CPU efficient. The current method is brute force approach which can possibly fail in certain cases. Range-based matching within a specific threshold is required.
- Due to change in proposal, the non-linear warping is to be done later on when matching is working properly.
Final Words
GSoC was a wonderful experience for me. I now feel a bit more comfortable with the GNU Astro’s codebase. I learned a lot of useful stuff like index-based implementations, use tool like GDB for debugging, Git for version control, valgrind for memory leak checking and much more stuff. I will try my best to regularly contribute to GNU Astro. Thanks to Mohammad Akhlaghi and various others in the GNU Astro development team for such a wonderful experience and the knowledge.