#acl AdminGroup:read,write,delete,revert EditorGroup:read All:read #format wiki #language en #pragma section-numbers off This lesson motivates the use of Python. The Python programming language is compared with other systems for geo-scientific data processing and analysis. = (Free) Software for Geo-scientific Data Processing and Analysis = == Comparison of Programming Languages == Ideal programming language for geo-scientific data processing and analysis * Fast array operations * Image processing and numeric/scientific routines * Visualization * Various data formats * Processing of files and metadata * Short development cycles * Very high level of abstraction * Interactive Ideal programming language for geo-scientific data processing and analysis? * Assembler * Fortran, C/C++, Java * Perl, Python * Matlab, IDL * Visual and menu driven environments, ENVI, GIS == Programming versus visual environments == * Visual environments are very useful for specific tasks * Closed commerical software * Programming offers more flexibility * GIS scripting with python == Scripting verus Traditional Programming == * Traditional programming refers to building usually large, monolithic systems * Fortran, C/C++, Java * Scripting means programming at a high and flexible abstraction level * Perl, Python, Ruby, Scheme, Tcl * Scientific computing environments * IDL, Matlab/Octave, Maple, Mathematica, R == Why Python? == === Scalability === * The ability to scale from easy to difficult problems and the ability for beginners and experts to be comfortable. * Python is easy enough to be a first language and powerful enough to write complex applications * Scientific computing is more than number crunching * Converting data formats * Extracting metadata from text * Working with a large number of files and directories * Object oriented programming possible, but not required * Simple interfacing of C,C++ and Fortran code * Heterogeneous data structures are easy to use * Readable and compact code * Freely available, open source, and runs on Unix, Mac and Windows == Scientific Python Environment == * Basic Python has limited instruction set * Extensions (modules) * Scientific modules (scipy/numpy) * Interactive environment (ipython) * Plots and visualization (pylab) === Getting started with IPython and Pylab === Invoking the IPython shell {{{ ipython -pylab }}} loads matplotlib module and enables interactive plotting Quit with CTRL-D Getting help {{{ help() help modules }}} list available modules '''Features of IPython''': * Command history (up, down) * Word completion by typing TAB * System commands through magic functions cd, ls, env, pwd * Access to Unix shell by prefix !, e.g. {{{!ls -s | sort -g}}} * Debugging and profiling * Program control: {{{run}}} * Print interactive variables {{{who, whos}}} === Are you a Matlab user? === The exercise is to plot a sine wave: Matlab/Octave: {{{ >> x=linspace(0,2*pi,100) >> y=sin(x) >> plot(x,y) }}} Pylab: {{{ In [1]: x=linspace(0,2*pi,100) In [2]: y=sin(x) In [3]: plot(x,y) }}} So, it works pretty much the same way! Of course there are some [[http://www.scipy.org/NumPy_for_Matlab_Users| differences]] but many similarities. = Exercise = * Install Python (2.6.x), Scipy/Numpy, Ipython and Matplotlib on your machine or use a ZMAW system. * Read [[http://www.greenteapress.com/thinkpython/html/| Think Python: How to Think Like a Computer Scientist]] [[http://www.greenteapress.com/thinkpython/thinkpython.pdf|pdf]] Chapter 1-3 and solve the exercises 2.1, 2.2, 2.3, 3.1, 3.2, 3.3, 3.4 * Read the Python [[http://docs.python.org/tutorial/ | Tutorial]], chapter 1-7 and try the examples. * Read [[http://www.euroscipy.org/file/3776?vid=download|EuroSciPy 2010 lecture notes]] = Links = * http://python.org/ * http://scipy.org/ * http://matplotlib.sourceforge.net/ * http://www.pyngl.ucar.edu/ * http://gmt.soest.hawaii.edu/ * http://techreport.com/discussions.x/16713