Skip to content

Instantly share code, notes, and snippets.

@lpranam
Last active December 23, 2018 16:42
Show Gist options
  • Save lpranam/8581f865fc684ecbf74dc22dfd64556d to your computer and use it in GitHub Desktop.
Save lpranam/8581f865fc684ecbf74dc22dfd64556d to your computer and use it in GitHub Desktop.
GSoC 2018 Experience

I worked with Boost C++ Libraries in GSoC 2018 to implement new Astronomy Library in C++ using various Boost Libraries and standard libraries. Development of this library started from scratch in GSoC 2018 so only a part of this library is developed under GSoC and remaining development will be continued after GSoC.

Aim of The Library

Development of this library started targeting not only professional C++ developers but also to the scientists and physicists who are not professional programmers and are new to C++ language. So with simple APIs, this library will help non-professional programmers to dedicate their time more to the real work other than programming.

Astronomy Library will provide basic functionalities which are required daily in the astronomy like the coordinate system and FITS file handling.

Features Developed During GSoC

GitHub Link: https://github.com/BoostGSoC18/astronomy/tree/gsoc18

  • Coordinate System
    • Euclidian Coordinate System
      • Cartesian
      • Spherical
      • Equatorial
    • Operations on Euclidian Coordinate Systems
      • Conversions from one system to another
      • Cross Products
      • Dot products
      • Unit Vector
      • Magnitude
      • sum and mean of two vectors
    • Motion in Euclidian Space
  • Astronomical Coordinate Systems
    • Alt-Az
    • ICRS
    • CIRS
    • GeoCentric
    • HelioCentric
    • Galactic
    • Super Galactic
  • FITS File Handling
    • Reading FITS file
    • Adding Extension Header Data Units to existing FITS

Future Work on This Project

  • Integrating units with coordinate systems
  • Define Different classes like Affine Transform and Matrix Transforms for Astronomical Coordinate System conversion
  • Editing Existing FITS file and Validation of FITS standards
  • Different operations on Data(image, binary table, ASCII table) of HDU
  • Memory mapping for big FITS file
  • Creating simple light Curves
  • Functionality to support basic spectroscopy

Challenges Faced

  • The Biggest challenge which continued throughout the project was to hide the complexity of Template Meta Programming to comfort the new C++ developer and try to identify as many errors as possible at compile time and represent it in an easy way to understand.
  • the Second challenge I faced during the development of the parser for the Data(the image stored in FITS). Due to having different types of images stored in the FITS and not able to figure it out at compile time so template classes could not be used directly.
  • Another challenge was due to having different endianness on the different machine so it was hard to produce machine independent classes to handle images which are formed using pixels of multiple bytes.

My Mentor

My mentor Vinícius dos Santos Oliveira helped me out in finding mistakes in my codes as well as whenever I am stuck with any problem. My interaction with him was productive and important for the success of the project. He reviewed my code on a regular interval which led me to write code with better quality.

Directory Structure

The GitHub link contains the directory of the source code of the project, along with tests and procedure to use the library.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment