Friday, October 29, 2010

Seminar on clouds

Yesterday, I gave a seminar talk to our department faculty and students, titled as "An Aerosol - Cloud Condensation Nuclei and Cloud Droplet Concentration Closure Study" that is summarizing a majority of my thesis related work on aerosol and cloud micro-physical research, starting and finishing with the presentation slides shown above and at the very end of this post.

One of the most exciting parts of the talk was after I finished demonstrating my research results and showed a few of the technicalities of the research. First of all, thanks go to Dr. Jefferson R. Snider for providing his IDL-based parcel model code and being patient with me while I was re-writing the model in Python. Both versions of the code could be accessed through ccnworks by browsing the source tab, and looking under the thesis folder or alternatively, directly contacting to Dr. Snider to get the latest updated version of the model.

When I was working on the model conversion, at one point I had stuck getting similar outputs from the two languages using the same initial conditions, and with the almost identically progressing code. (Some might object on the definitions of two conditions' being "the same" and "almost identical" in the land of high-precision floating point arithmetic.) Continuing in my numerical instability problem, I had created a simple animation to better demonstrate the issue I was experiencing. As some eyes might easily catch, the droplets in parcel model reaching to so bigger sizes comparing to the results produced by IDL, solely based on condensational growth theory. It took a while to find and correct the variable that was updating its original reference while it was supposed to be operating on a copy of the content instead. This issue and a few other discrepancies were fixed in around May 2010. As a personal important todo note at this point is to restructure the parcel model code so that it behaves as an external library, thus making all the important thermodynamical and cloud micro-physics related functions greatly re-usable. This is when I figure passing dictionaries (or changing the structure of the code) to outer scope of the original file that they are declared in.

The final technicality demonstration comes from the work of Dobashi et. al., (2008) (Their "Feedback Control of Cumuliform Cloud Formation based on Computational Fluid Dynamics" titled work.) Those are by far the most realistic cloud appearances I have ever seen in a physical cloud formation processes applied simulation study. Although cloud modellers are usually interested in studying temporal and spatial statistical properties of clouds rather than synthesizing their realistic shapes and appearances, such a similar work would have a great educational use in visualising and thus better demonstrating the physical processes governing the cloud formation and further precipitation development. I can say that the authors should have prototyped their simulations using a C-like language in order to make low level access to CPU/GPU because of the high computation demands, but there are fast computation techniques available in Python that would make this undertaking possible to be realized be it simulating a research flight or playing in between sequences of a simulation to probe important properties of the formation.

For the curious, I share high-quality PDF version of the slides. Note that I had to take out a couple pages from this original presentation in order to fit 45 minutes allocated presentation time, and it was unfortunate that one of the expected audience was not in the classroom to see a few indistinguishably minute research unrelated points. All analyses and plots in my slides are performed/created using Python and its scientific tool-stack with some additional annotation help from OpenOffice on the slides using DejaVu-Sans font; for the first time with full consistency. There is one exception to the pure Python code, that is when the Python based model calculations taking up five to ten times more than the original IDL-based code, and that is where exactly Cython magic were sought and applied to boost million-times executed functions. Here, I greet the community once more, for making the scientific computation freely, publicly, and easily available to everyone without putting any restrictions in both code and verbal discussions level as how this core work should really be in its very essence within the science endeavor.

I also salute Matthew Turk and his work for that fantastic presentation style even though I couldn't copy his great architectural design throughout my slides. Yet not him, I have other masters around me for letting me embrace Tufte's sayings :)

My work on clouds is on-going and leading me to a PhD level research after successful completion of my Masters thesis within the next month. Feel free to say hi or ask more clouds if you share any research similarities.

Now, it is time for some abstraction: Youth Uprising - Rarefaction

Please keep up imagination and creativity flames are burning all along...

Tuesday, October 19, 2010

Vim magic2 - search and replace in visual selection

Since I thought making generic analysis and plotting routines would have been harder for 8-9 different source airborne data, I am showing some pure uniqueness and laziness of variable name selections on the given screenshot. Like in many cases VIM is here to my rescue :) First we switch to line selection mode by Shift-V combination and highlight the area of interest and then hitting ":" and continuing typing by s/06/08/g in the command insertion area. The magic is done --all the "06" instances are replaced by "08"s readying the code for our April08 case.

Thursday, October 14, 2010

Vim magic: Synchronized scrolling

As shown in this screen capture, I have two minor modifications to my original closure-fitting code. The original code runs using the lab PCASP size ranges and excluding the first PCASP channels data, "zair-fit" version uses the field calibrated PCASP size bins, and still excluding the first two channels. The final file "zair-fit2" runs the code with the size bins and including the pseudo-problematic first two channel PCASP concentration data.
VIM provides me a very practical way to synchronized scrolling of all open windows so that I can easily compare the results from those well-formatted table structure outputs. Solution is simple: execute the following line in each window as shown in this blog entry.
:set scrollbind