Skip to content

GSoC 2016 Application Aniket Kulkarni : Implement Scheduling Capabilities for Astroplan in Astropy

Aniket Kulkarni edited this page Mar 31, 2016 · 32 revisions

Organization: OpenAstronomy

Sub-org: Astropy

Student Information

Name: Aniket Kulkarni
Time zone: UTC +5:30
GitHub: aniketk21

University Information

University: College of Engineering, Pune
Major: Computer Engineering
Current Year and Expected Graduation date: Second Year, 2018
Degree: B. Tech.

Bio:

My name is Aniket Kulkarni and I’m a Second Year UG student at College of Engineering, Pune (COEP), Maharashtra, India. My major is Computer Engineering.
I am very familiar with C and Python. I also have basic knowledge of Java. I learnt Python in the Principles of Programming Languages (PPL) course in college. I have 6 months of experience with Python, git/GitHub and 2 years of experience with C. I’m using Ubuntu for programming and college projects for the past 2 years. I use vim as my primary text editor. I’ve also completed 2 MOOCs on Python (see [1] and [2] below). I’ve taken courses in Data Structures and Algorithms (DSA), Object Oriented Programming (OOP) in Python, Physics and Mathematics in college. I have basic knowledge of the Tkinter module for GUI.
I’m currently working on an unbeatable Tic-Tac-Toe game in Python for a college project. This uses the PyGTK and GTK+ APIs for GUI. This game will make use of the Minimax algorithm.
I’m familiar with basic Astronomy. I’ve attended talks on topics related to Astronomy organized by the Science Club and the Astronomy Club in my college. My favourite topics in Astronomy are Physics of the Universe, Black Holes and Dark Matter. I love to read books and collect information about Astronomy.

[1]: MITx 6.00.1x on edX
[2]: UMich Programming for Everybody on Coursera

Project Proposal Information

Proposal Title: Astropy: Implement Scheduling Capabilities for Astroplan
Proposal Abstract:

This project aims at providing basic scheduling capabilities for astronomical observations. It targets individuals, small-collaborations as well as large observatories. We'd like to make the Astroplan scheduler API feature-complete to increase its functionality. We’d implement a scheduling algorithm(s) for providing a thorough schedule for an observing run. We’d ensure that the algorithm(s) suits the needs of the above mentioned audience and is as efficient as possible, both in terms of time and space. I'd also like to create a GUI for the Astroplan scheduler where the user can input parameters like Location, Coordinates, Target(s), Time of Observation, etc. and a thorough and efficient schedule for observation will be generated.

Proposal Detailed Description/Timeline:

#####Description: Many features like

  • Calculating rise/set/meridian transit times, alt/az positions for targets at observatories anywhere on Earth
  • Built-in plotting functions for standard observation planning plots (airmass, parallactic angle, sky maps)
  • Determining observability of sets of targets given an arbitrary set of constraints (altitude, airmass, moon separation/illumination)

have been implemented previously in GSoC 2015. This project aims to build on this base. Existing modules in the Astropy package like astropy.coordinates and astropy.time would be used. astropy.coordinates is used for representing a variety of celestial/spatial coordinates as well as converting between common coordinate systems. astropy.time is used for converting to/from various time standards. The package also consists of existing modules for files and I/O. These would be used for easy input and output of data. The Astroquery (Astropy affiliated) package would be used for accessing online astronomical data.

An algorithm to generate a thorough schedule for observation would be developed. This algorithm will take into consideration various parameters like Observer Position, Target Position, Time of Observation, Movement of Target(s) in a time window, and the time at which airmass in the atmosphere and light pollution from the Moon is minimum. Target rise/set times, separation angles from the Moon/Sun, and priority order of observing the targets would also be considered. Some efforts in developing the algorithm have taken place. We intend to further develop the algorithm. The algorithm will make use of “observing blocks” i.e the time window during which a target is visible and its corresponding movement in that window. Such “blocks” would be formed for a list of targets and linked together to produce an optimised schedule. As this project targets individuals as well as large observatories, its scale ranges from very small to very large. Thus, a lot of use cases need to be handled while designing the algorithm(s). Time and space complexity of the algorithm would be scrutinized. We’d also aim at making the algorithm as efficient as possible.

If multiple schedules are possible, then the most efficient schedule would be shown. This would be decided by a scoring system, which would select a schedule having the maximum score. The score of a schedule would depend on the default/specified priority order, movement in an “observing block”, and observability of the target(s). Finally, this algorithm would be implemented and tested thoroughly. I’d take efforts to make the code modular and reusable.

This project also aims at making the Astroplan scheduler API feature-complete. These features would be decided after discussing with the mentor(s). Relevant features would be added to the API. These would be tested and documented well.
A GUI using GTK+ and PyGTK would be developed for the Astroplan scheduler. The user will be able to enter parameters like Location, Coordinates, List of Target(s) and their priority (default/specific), Time of Observation, etc. A thorough and efficient schedule for observation will be generated and displayed to the user making use of the algorithm developed. This would make the Astroplan package more appealing and easy to use.

I think that this would be an important contribution to the Astroplan package. This project would automate the task of creating a schedule for observation for an astronomer. Thus, he/she would only need to input above mentioned parameters into the GUI and a thorough schedule would be produced.

#####Deliverables:

  • Implementation of algorithm(s) to generate a thorough schedule for astronomical observations.
  • Additions to the functionality/features of the Astroplan scheduler API.
  • GUI for the Astroplan scheduling module.

#####Timeline:

  • Pre-GSoC period (Upto 22 Apr):

    • Continue working on Astropy issues and open new Pull Requests on GitHub. Read information/documentation related to the project.
  • 22 Apr - 22 May (Community Bonding Period):

    • Get to know Astropy, Astroplan and related modules/ packages in detail by reading documentation and writing small programs.
      Environment setup.
      Design an overall concept-map for the project by discussing with the mentor(s). Discuss about missing scheduler features/classes in the API with the mentor(s).
  • 23 May - 29 May (week 1):

    • Read information on these features/classes. Start implementing the missing scheduler features/classes.

    • Prioritize goals for weeks 1-4.

  • 30 May - 5 June (week 2):

    • Finish writing the scheduler features/classes.
    • Decide the components and features of the scheduling algorithm and its use cases by discussing with mentor(s) and the community. Write pseudo-code for classes and data-structures, and draw flowcharts.
  • 6 June - 12 June (week 3):

    • Discuss and implement classes and data-structures for the scheduler.
    • Write unit tests. Update docs.
  • 13 June - 19 June (week 4):

    • Develop modules which will interact with the scheduler viz. Time, Coordinates, Astroquery, etc. These will be obtained from the existing modules.
    • Update docs.
  • 20 June - 26 June (week 5): (Mid term evaluation)

    • Start implementing the overall scheduler. Take inputs from mentor(s) and the community.
    • Update docs.
  • 27 June - 3 July (week 6):

    • Review and re-evaluate the initial API decisions and continue implementing the scheduler accordingly.
  • 4 July - 10 July (week 7):

    • Review and continue implementing the scheduler. Scrutinize its time and space complexity.
    • Update docs.
  • 11 July - 17 July (week 8):

    • Release the scheduler for testing. Take inputs from the mentor(s) and the community. Make necessary changes.
  • 18 July - 24 July (week 9):

    • Discuss about overall design of the UI, UX, components of the GUI for Astroplan.
    • Start with GUI development.
  • 25 July - 31 July (week 10):

    • Continue developing GUI.
    • Update docs.
  • 1 August - 7 August (week 11):

    • Continue developing GUI. Compose several example observing plans demonstrating the optimization.
    • Update docs.
  • 8 August - 14 August (week 12):

    • Buffer week. In case anything remains.
  • 15 August - 23 August (week 13): (Final week)

    • Code clean-up. Improve docs. Write final tests.
    • Submit code sample.
Link to a patch/code sample, preferably one you have submitted to your sub-org:
  • #4687: Add theta parameter to GaussianKernel2D [OPEN]
  • #4697: Make modeling render function convert to float [OPEN]
  • #4710: Update Cython version to >=0.19 in installation docs [OPEN]
Links to additional information:
  • A project written in C to visualize Sorting Techniques/Algorithms can be found here.
  • Word games(Hangman and Anagram) written in Python can be found here.
  • Open Source Contribution: #27 Fixed a typo in documentation of garden.recycleview in Kivy-garden.

Other Schedule Information:

I have my college Final Exams from 29 April - 12 May. After that I will be having viva-voce exams within 2-4 days. So, I won’t be completely available during the Community Bonding Period. However, I would try my best to complete the tasks mentioned in the Community Bonding Period.
I commit to work for 40 hours a week (Mon-Sat) during GSoC period. I am also willing to work on Sundays if my mentor(s) and I feel that I am falling behind with my project work.
I might take a vacation of 4-5 days during the GSoC period. However, I will continue to work on the project during that period, although for lesser amount of time.

Clone this wiki locally