Sunday, 23 June 2013

GSoC - Week-1

This week was mainly spent in refactoring the astroquery.irsa_dust module. A detailed discussion of the entire implementation can be found at this pull-request.  And as it currently stands most of the API for this is almost finalized except for some tweaks that may come up in the final review.

Apart from this the order in which the remaining modules of astroquery will be refactored may be found here.

Some other things that were also tackled this week were to monkeypatch the remote tests that most commonly resulted in network errors/ timeouts. Again more details here.

Currently SIMBAD is on the top of our to-do list. So I have been trying to familiarize myself with this web service and also made some preliminary attempts at re-writing the code, coherent with the finalized API.

P.S. Anyone with an Astronomical incline, could probably fork the revised irsa_dust module , use it and give feedback!

Sunday, 16 June 2013

GSoC - Coding period starts!


The GSoC coding period starts from 17th June (today!). The last week has been quite enjoyable. The best part of GSoC is that it offers you the opportunity to learn many many new and useful things. This week I have mostly been trying my hand at refactoring the irsa_dust module in astroquery as per the API finalized last week.

One very useful software that I had mainly heard about but never used myself is the IPython Notebook. It is great for creating examples to demonstrate functionality and can be shared using gists and nbviewer It has very handy features like auto-completion - and I am glad that I have it installed and running now!

Another very useful thing I learnt is testing in python. Astropy uses pytest as its main testing framework. It is very simple to write tests in this. In-fact its catch line is No API!. Given its superb test discovery rules and features - it sure is fun to get started writing tests using pytest.

One very useful trick my mentor showed me is to use the @pytest.mark.parametrize decorator. This is very useful if say you want to test a function for several different values of a parameter(s). Rather than writing redundant tests you could do something like :

This will then test the funtion for each value of the parameters coordinate and radius and check that the output is as expected.

Another feature that I also learnt about is monkeypatching. This can be used to create dummy objects, that can mimic the behavior of a real resource - for instance HTTP response and request objects. This can be used in astroquery to create patches that replace actual responses/requests to the remote server.

Also this week I received  a one-year student membership to ACM (that includes a subscription to the digital library) as a part of GSoC!


Saturday, 8 June 2013

GSoC - week 2 of interim period


This week I have mainly been reading up the Astroquery code base as well as relevant portions of Astropy. I also looked up on some advanced Python techniques like decorators, descriptors, generators and context managers and OOP done via Python. I found some really helpful resources on the web, I will just list them here:

This is definitely a must read:
http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html

http://www.pgbovine.net/python-idioms.htm

This may require a sign in but it has some really good links:
https://www.udacity.com/wiki/cs212/python_learning_aids

http://wiki.python.org/moin/PythonDecoratorLibrary#Property_Definition

And also an ebook:
http://www.linuxtopia.org/online_books/programming_books/python_programming/

Finally the best compilation of all python aspects at one place - The Hitchhiker's  guide to Python!:
http://docs.python-guide.org/en/latest/

Also the API for Astroquery is almost finalized! And the revised version may be found here:
http://astroquery.readthedocs.org/en/latest/astroquery/api.html

Thats all for now!

Thursday, 30 May 2013

Astropy : Getting started

The community bonding period of GSoC lasts till 17th June. This is a great opportunity to get familiar with your organization and the repo to which you will be contributing. So far I have set up my work environment. The Python programming I did so far was never a part of an entire software project , so I have been configuring my environment to make this process efficient.

The two sources that have been a huge help to me starting from the application period are:

http://docs.astropy.org/en/latest/development/codeguide.html

http://docs.astropy.org/en/latest/development/workflow/development_workflow.html

They provide very clear step by step guidelines of contributing to Astropy.

Also I have configured my emacs as per the directions given  in http://docs.astropy.org/en/latest/development/codeguide_emacs.html
This makes it very easy to maintain the required indents, pep8 guidelines, etc when developing with emacs. It is very much a must-do. Astropy has also generously provided me with the license to a full-fledged commercial Python IDE - PyCharm. So I am also trying my hand at that.

Another very useful suggestion I got from Astropy  is to become acquainted with virtualenv. So I have also created a virtualenv for Astropy/Astroquery on my system.

Besides this I have been reading up on a few topics :

Firstly I have been looking up the PEP 8 style guide for Python.

Also since we will be documenting everything with Sphinx, I found a nice tutorial that gave me a good introduction to this.

I had already forked the repos for astroquery and astropy. So now I am  getting familiar with the codebase.

Apart from this there is a growing list of Tasks (thanks org-mode!) that I intend to finish in the community bonding period.

Looking forward to an exciting summer!

The GSoC'13 results are out and my proposal to Astropy under the Python Software foundation is accepted! Through this summer I will be working on astroquery so that its first stable version can be released. Astroquery is an affiliated package of Astropy aimed to make it easy for Astronomers to access online data sources like ViZier, SIMBAD, IRSA and others, from Python programs.

I will be updating this blog weekly as we progress through this summer. Your suggestions for this project are welcome to the astropy-dev mailing list.

Tuesday, 23 April 2013

GSoC'13 and the exciting world of Open Source

Applications for the Google Summer of Code are now open! I have always been intending to apply for GSoC since I heard of it probably last year. Unfortunately though last year - I just couldn't spare the time to apply to GSoC. I really am regretting this now. The application and pre-application phase of GSoC in itself provide an amazing learning experience.

I have relied heavily on Open Source for all my Computer Science needs.  Emacs, TeX,  Unix, ..., all the tools I am so used to are thanks to legends like Richard Stallman, Knuth,  Dennis Ritchie and the remarkable Open Source vision.  Every time I log into my Linux system, I can't help looking upto OSS for giving me the flexibility and freedom to get my things done with such ease and style. Truly the best things in the world are free. And while I have often thought of making contributions big or small to Open Source, I never really got around to it till GSoC'13 arrived. This time round I had really made up my mind to apply.

...And I am really glad that I did. There are 177 mentoring organizations in participating in this year's GSoC - thus offering lots of diversity to probably satisfy anyone's interests. After scouring the list for long hours, I came across Astropy under the Python Software Foundation. I have always wanted to explore Astronomy while also building up on my programming skills and applying here presented me with the wonderful opportunity to get the best of both worlds this summer! Thus began my application period filled with goodies : I joined mailing lists, idled on the IRC but most importantly I created a git-hub account.  I learnt to fork a repository, work on a patch and open a pull request. It was also immensely satisfying when my patch was finally merged.

I can't thank GSoC enough for introducing me to the exciting world of open source.  I am really itching to make more contributions, I also found a couple of other interesting repos like NLTK. But with exams round the corner I will probably have to wait for a couple of weeks, before I dive deeper into the exciting world of open source. :-)

printf("Hello World!\n");

Some meanings first...

Vyom (Sanskrit : व्योम ) :  In Sanskrit Vyom means the infinite and endless space.
ping :  To know about this go to the shell and type   man ping  :-)


*   *   *

I am a Computer Science student, fascinated by Astronomy... This blog is about my experiences and explorations in these two remarkable fields.