Skip to content

Google Summer of Code 2013 Photutils

adonath edited this page Jun 13, 2013 · 3 revisions

In general I plan to work on three different main functionalities of the photutils package, spending roughly one months on every topic. I will familiarize myself with the coding and documentation conventions of AstroPy in advance during two weeks before the official beginning of the GSoC 2013 coding phase. I haven't scheduled additional time for bug fixing, testing and documentation. I've rather considered it as part of the implementation of the code and tried to set up my timeline not too tight. Even so I have planned some „buffer“ time.

I've reworked the proposal and I will now start with the model and filter part. It seemed to be the easier task and may be a good point to start and learn the coding style.

This is not necessarily the final work plan. It can still be worked over. Im open for any further ideas or suggestions.

Models and Filters (1. Month):

During the first month I will implement specific models in astropy.models As there is currently some discussion on which models should be part of the core package, my proposition of the models could be rediscussed later see issue #981. It may be also possible, that I will work earlier on astropy.models if this is necessary for the AstroPy 0.3 release.

Afterwards I plan to extend the convolution and filter module of AstroPy. This especially includes creating an own kernel class with an interface to PSF and astropy.model classes. Additionally I propose to add a ring and a gaussian laplace kernels, which are useful e.g. background estimation and source detection.

1.Week (17. June):

  • Implement Lorentzian, Beta, Shell, Disk, Constant, Box in astropy.models

2.Week (24. June):

  • Implement other requested models in astropy.models

3.Week (1. July):

  • Create a new kernel class for the convolution module and restructure existing code
  • Add ring kernel and gaussian laplace kernel

4.Week (8. July):

  • Work out the interface to PSF class and astropy.models

Optional:

PSF and aperture (2.Month):

During the second month I will focus on the PSF classes, as proposed in the photometry API.

5.Week (15. July):

  • Familiarize myself with already implemented functions and modules, to assure compatibility to e.g astropy.models and astropy.photutils.aperture
  • Implement an abstract PSF base class
  • Implement the AnalyticalPSF class

6.Week (22. July):

  • Implement GaussianPSF as a first usable PSF model
  • Implement psf_photometry (first with 'sequential' mode)
  • Write Tests and example use cases with GaussianPSF and psf_photometry

7.Week (29. July):

  • Add LorentzianPSF and MoffatPSF classes, which should not be too time-consuming
  • Implement DiscretePSF (This could be tricky due to binning issues)
  • Implement use of PSFs as convolution kernel, which allows additionally fitting source extensions

8.Week (5. August):

  • Implement create_psf to estimate PSF from image data
  • Complete documentation and write further tests for special models

Optional:

  • Implement instrument/mission specific PSFs e.g. Spitzer, Fermi as examples for PSFs
  • Make PSF usable with NDData and WCS objects, which allows giving parameters in other units
  • Write CustomAperture class

Source Detection (3. Month):

During the third month I will focus on the source detection functionality of the photutils. The timeline during the last weeks is not too strict, to allow spending more time on proper documentation and interfacing to already existent astropy functionalities. As reliable source detection is a quite complex task it may be most reasonable to implement an approved algorithm, e.g. the one that is used in SExtractor or Daophot. I've made a rough plan for coding the SExtractor algorithm. I've already written a simple „blob detection“ code (see link below) which may be useful as seed detection for PSF fitting.

9.Week (12. August):

  • Implement Background estimation algorithm from SExtractor using Kappa-Sigma clipping from astropy.stats
  • Implement function to create "template frame" by convolution, on which the detection runs
  • Implement Lutz’s one-pass algorithm to extract 8-connected contiguous pixels from the template frame

10.Week (19. August):

  • Implement multithresholding algorithm for determining isophotals
  • Implement source deblending algorithm from SExtractor
  • Check source detection against SExtractor and document results

11.Week (26. August):

  • Allow parsing the result of the source detection as seed to psf_photometry
  • Write documentation, give examples of parameter choices and results

12.Week (2. September):

  • Final documentation and cosmetic work

13.Week (9.September):

  • Final documentation and cosmetic work

Blog and contact information:

I will blog about my work on One summer for AstroPy. You can contact me via donath@stud.uni-heidelberg.de.

Clone this wiki locally