This lesson motivates the use of Python. The Python programming language is compared with other systems for geo-scientific data processing and analysis.
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 differences but many similarities.
Exercise
- Install Python (2.6.x), Scipy/Numpy, Ipython and Matplotlib on your machine or use a ZMAW system.
Read Think Python: How to Think Like a Computer Scientist 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 Tutorial, chapter 1-7 and try the examples.