Język PYTHON ‑ narzędzie dla każdego naukowca

advertisement
JĘZYK PYTHON
- NARZĘDZIE DLA KAŻDEGO NAUKOWCA
Marcin Lewandowski
[ [email protected] ]
SŁOWO WSTĘPNE
2
O mnie…
• Z wykształcenia Fizyk, na co dzieo inżynier
• Zainteresowania i Praca:
–
–
–
–
–
Elektronika
Software
Ultradźwięki
Aparatura medyczna
…
• Doświadczenia naukowe, wdrożeniowe i komercyjne
• 20+ lat doświadczenia w Software
• Fan Pythona od ok. 10 lat
3
FORMUŁA
• Wykład z elementami dwiczeo (stąd prośba o
notebooki)
• Zorganizowany dla:
– Doktorantów IPPT/Biocentrum Ochota
– Pracowników naukowych IPPT
• Nominalnie 2x 45 min
4
Dla kogo ten wykład?
• Dla każdego:
– kto chce się nauczyd Pythona i …
ułatwid sobie życie wykorzystując go w codziennej
pracy
– poznad konkretne narzędzia/biblioteki/metody
przydatne w pracy naukowo-badawczej
• Nie jest wymagane żadne doświadczenie
programistyczne!
• A jakie jest doświadczenie/potrzeby Słuchaczy???
5
Co to jest Python?
• WIKIPEDIA http://en.wikipedia.org/wiki/Python_(programming_language)
– Python is a general-purpose high-level programming language.[2] Its
design philosophy emphasizes code readability.[3] Python claims to
"[combine] remarkable power with very clear syntax",[4] and its
standard library is large and comprehensive. Its use of indentation for
block delimiters is unusual among popular programming languages.
– Python supports multiple programming paradigms (primarily object
oriented, imperative, and functional) and features a fully dynamic type
system and automatic memory management, similar to that of Perl,
Ruby, Scheme, and Tcl. Like other dynamic languages, Python is often
used as a scripting language.
– The language has an open, community-based development model
managed by the non-profit Python Software Foundation, which
maintains the de facto definition of the language in CPython, the
reference implementation.
6
Historia Pythona
• WIKIPEDIA http://en.wikipedia.org/wiki/Python_(programming_language)
– Python was conceived in the late 1980s[5] and its implementation was started
in December 1989[6] by Guido van Rossum at CWI in the Netherlands as a
successor to the ABC programming language (itself inspired by SETL)[7] capable
of exception handling and interfacing with the Amoeba operating system.[8]
Van Rossum is Python's principal author, and his continuing central role in
deciding the direction of Python.
– Python 2.0 was released on 16 October 2000, with many major new features
including a full garbage collector and support for Unicode. However, the most
important change was to the development process itself, with a shift to a
more transparent and community-backed process.[9] Python 3.0, a major,
backwards-incompatible release, was released on 3 December 2008[10] after a
long period of testing. Many of its major features have been backported to the
backwards-compatible Python 2.6.[11]
7
Zastosowanie Pythona
• WIKIPEDIA http://en.wikipedia.org/wiki/Python_(programming_language)
– Python is often used as a scripting language for web applications, e.g. via
mod_python for the Apache web server. With Web Server Gateway Interface a
standard API has been developed to facilitate these applications. Web
application frameworks or application servers like Django, Pylons, TurboGears,
web2py and Zope support developers in the design and maintenance of
complex applications. Libraries like NumPy, Scipy and Matplotlib allow Python
to be used effectively in scientific computing.
– Python has been successfully embedded in a number of software products as
a scripting language, including in finite element method software such as
Abaqus, 3D animation packages such as Maya, MotionBuilder, Softimage,
Cinema 4D, BodyPaint 3D, modo, and Blender, and 2D imaging programs like
GIMP, Inkscape, Scribus, and Paint Shop Pro.[24] ESRI is now promoting Python
as the best choice for writing scripts in ArcGIS.[25] It has even been used in
several videogames.[26]
8
Dlaczego PYTHON?
• Interpretowany język wysokiego poziomu, łatwy
do nauczenia, pisania programów, uruchamiania i
debuggowania
• Interaktywny, przenośny i nowoczesny
(obiektowy, funkcjonalny) oraz czytelny
• Rozszerzalny i ”wbudowywalny” - pozwala na
integrację z innym oprogramowaniem i
bibliotekami
• Zawiera BARDZO bogate biblioteki („batteries
included”)
• Za darmo i Open Source
9
Dlaczego PYTHON? c.d.
• Jakość software – dzięki czytelności i cechom języka
(OOP, modułowośd, etc.)
• Produktywność – znacznie większa niż w przypadku
klasycznych języków kompilowanych np. Java/C++
(mniej kodu-mniej błędów)
• Przenośność – skryptów, ale także wieloplatformowe
biblioteki systemowe, GUI, WEB, dostępu do baz
danych
• Integracja – dzięki możliwościom
wbudowania/rozszerzania Pythona; integracja z C/C++,
.NET, Java, interfejsy sieciowe SOAP, XML-RPC, CORBA,
etc.
10
WIKIPEDIA
http://en.wikipedia.org/wiki/Comparison_of_programming_languages
•
•
30 - Data from Code Complete. The Statements ratio column "shows typical ratios
of source statements in several high-level languages to the equivalent code in C. A
higher ratio means that each line of code in the language listed accomplishes more
than does each line of code in C.
31 - The ratio of line count tests won by each language to the number won by C
when using the Compare to feature at
http://shootout.alioth.debian.org/debian/c.php. Last updated May, 2006. C gcc
was used for C, C++ g++ was used for C++, FORTRAN G95 was used for FORTRAN,
Java JDK Server was used for Java, and Smalltalk GST was used for Smalltalk.
11
Do czego można użyd Pythona?
• Programowania systemowe (tzw. shell tools) – Python posiada
biblioteki/interfejs do funkcji systemowych
• GUI – przenośne/wieloplatformowe graficzne interfejsy
użytkownika (Tk, wxPython, Qt, GTK)
• WEB – skrypty po stronie klienta i serwera. Pełne wsparcie
protokołów sieciowych TCP/IP oraz XML. Frameworks do budowy
aplikacji WEBowych (Django, Zope, Pylons, …)
• Integracja komponentów – Pyhon jako „klej” do komponentów w
C/C++/Fortran/Java/.NET…
• Obsługa baz danych – interfejsy do Oracle, Informix, ODBC, MySQL,
PostgreSQL, SQLite, …
• Szybkie prototypowanie
• Numeryka i zastosowania naukowe – obliczenia, symulacja,
wizualizacja, …
12
Przykłady z życia (1)
• Proste skrypty do konwersji danych:
– img2mat – plik binarny (obraz 2D) na plik tekstowy do Matlaba
(25 linii)
– Wczytanie/konwersja/zapis pliku CSV (~20-50 linii)
– Obsługa plików HDF5 – kompatybilnych z MATLAB (~20-50 linii)
• Harmonics – obliczanie harmonicznych (FFT) dla dużych
zbiorów danych (~300 linii):
– Wczytywanie danych z plików pomiarów (kostka danych, dla
każdego punktu wektor 1024 próbek)
– Obliczanie FFT – biblioteka Numeric
– Zapis wyników w formacie CSV
13
Przykłady z życia (2)
• SG3 – system akwizycji danych ech ultradźwiękowych:
– Sterowanie beamformera przez RS-232 (~ 150 linii)
– Sterowanie modułu akwizycji przez USB (~ 150 linii)
– Moduł wrappera do systemu akwizycji (~ 500 linii kodu C)
• Sterowanie i automatyzacja pomiarów przez
HPIB/GPIB/IEEE-488
– Sterowanie oscyloskopów, generatorów, mierników (~ 50100 linii)
– Moduł wrappera do VISA (~ 600 linii kodu C)
14
Przykłady z życia (3)
Aplikacja do wprowadzania
danych i uruchamiania solvera
pola ultradźwiękowego (~500
linii):
• GUI – biblioteka wxPython
• Obsługa plików CSV
• pliki dokumentacji
parametrów w HTML
• Zapis plików danych FORTRAN
15
Przykłady z życia (4)
• GUI – biblioteka wxPython (~350 linii)
• Obsługa dataloggera, modemu i komunikacji (~600 linii)
16
Przykłady z życia (5)
matplotlib
17
Dla wciąż wątpiących
• Poparcie! http://docs.python.org/howto/advocacy.html
• Kto używa?
http://wiki.python.org/moin/OrganizationsUsingPython
• Gdzie jest używany?
http://en.wikipedia.org/wiki/List_of_Python_software
18
Ogólny plan wykładu
• Wprowadzenie do języka Python:
–
–
–
–
–
cechy i możliwości,
struktura języka,
konstrukcje programowe,
struktury danych,
operacje wejścia/wyjścia.
• Narzędzia i biblioteki:
– narzędzia deweloperskie,
– przegląd dostępnych bibliotek,
– budowa własnych rozszerzeo.
• Zastosowania:
–
–
–
–
–
zastosowania obliczeniowe i naukowe,
wizualizacja i tworzenie wykresów,
zbieranie i przetwarzanie danych,
obróbka i konwersja plików danych,
integracja z oprogramowaniem naukowym.
19
Książki o Pythonie (1)
• M. Lutz,
Learning Python:
Powerful ObjectOriented Programming,
4. wydanie, O'Reilly
Media, 2009 (1216 str.)
20
Książki o Pythonie (2)
• M. Lutz,
Programming Python,
O'Reilly Media, 3.
wydanie, 2006 (1600
str.)
21
Książki o Pythonie (3)
• P. Barry, D. Griffiths,
Head First
Programming,
O'Reilly Media, 2009.
22
Książki – Python po polsku
• M. Lutz, Python. Wprowadzenie, 3. wydanie, Helion
2009 (736 str.)
• Python. Od podstaw, Helion 2006 (704 str.)
• G. Wilson, Przetwarzanie danych dla programistów,
Helion, 2006 (264 str.)
• J. E. F. Friedl, Wyrażenia regularne, Helion, 2001
23
Książki – Python dla nauki
• H. P. Langtangen, A Primer on Scientific Programming
with Python, Springer, 2009.
• H. P. Langtangen, Python Scripting for Computational
Science, Springer, 2009.
• S. Vaingast, Beginning Python Visualization. Crafting
Visual Transformation Scripts, Apress, 2009.
• S. Tosi, Matplotlib for Python Developers, PACKT,
2009
24
Darmowe książki o Pythonie
• A. Downey, Think Python. How to Think Like a Computer
Scientist, Green Tea Press, 2008
(http://www.thinkpython.com)
• Dive Into Python (http://diveintopython.org/)
• Dive Into Python 3 (http://diveintopython3.org/)
• Learning with Python 2nd Edition
(http://openbookproject.net/thinkCSpy/)
• A Byte of Python v1.92 (for Python 3.0)
(http://www.swaroopch.com/notes/Python)
• Advanced Scientific Programming in Python
(http://portal.g-node.org/python-summerschool-2009/)
25
Python w sieci
• Python.org:
– http://python.org/
– http://docs.python.org/
– http://www.python.org.pl/
• KSIĄŻKI/TUTORIALE:
– http://www.rmi.net/~lutz/ – Mark Lutz home page
– http://www.mindview.net/Books/TIPython – Thinking
in Python
– http://gnosis.cx/TPiP/ – Text Processing in Python
• RECEPTY:
– http://code.activestate.com/recipes/langs/python/
26
PYTHON ŚRODOWISKO
27
Może już mam Pythona?
> python –V
Python 2.6.4
BINGO!
28
http://www.python.org/download/
Download Python
• The current production versions are Python 2.6.4
and Python 3.1.1.
• Start with one of these versions for learning
Python or if you want the most stability; they're
both considered stable production releases.
• If you don't know which version to use, start with
Python 2.6.4; more existing third party software
is compatible with Python 2 than Python 3 right
now.
29
http://www.activestate.com/activepython/
• ActivePython 2.6.4.10
–
–
–
–
–
–
–
–
–
–
–
Windows (x86)
Windows (64-bit, x64)
Mac OS X (Universal)
Linux (x86)
Linux (x86_64)
Solaris 8+ (SPARC)
Solaris 8+ (SPARC 64-bit)
Solaris 10+ (x86)
HP-UX 11.00 (PA-RISC)
AIX (PowerPC 64)
AIX (PowerPC)
Dystrybucja
komercyjna!
30
Portable Python
http://portablepython.com/
• Portable Python is a Python® programming
language preconfigured to run directly from
any USB storage device, enabling you to have,
at any time, a portable programming
environment. Just download it, extract to your
portable storage device or hard drive and in
10 minutes you are ready to create your next
Python® application.
31
Enthought Python Distribution
http://enthought.com/
• Easy to use.
– Python facilitates simple yet sophisticated data manipulation.
– Included modules support the quick integration of GUI front-ends.
– EPD's 75+ libraries (including SciPy, NumPy, matplotlib) have been
meticulously configured for maximum compatibility.
– Unified and searchable documentation is available for every package.
– Platform-specific one-click installers ensure immediate access to the powerful
EPD toolset.
• Easy to integrate and extend.
–
–
–
–
Read data from many formats — HDF, CDF, CSV, Matlab™, and Excel™.
Integrate your own extensions easily with EPD.
Add a custom local repository to house your additions.
Platform-agnostic scripts can be run on any OS.
• Multi-platform 32-bit & 64-bit, with updates, virtual training, and
support - 199$/user
• Single-platform 32-bit Trial and Academic – free of cost
32
PyIMSL™ Studio
http://www.vni.com/
• PyIMSL Studio is a collection of development tools and numerical
algorithms for modelers and implementation teams creating
analytic applications. The key component of PyIMSL Studio is
PyIMSL, a set of Python wrappers to the algorithms in the Visual
Numerics, Inc. IMSL C Library:
–
–
–
–
–
–
–
–
–
–
Linear Systems
Eigensystem Analysis
Interpolation and Approximation
Quadrature
Differential Equations
Transforms
Nonlinear Equations
Optimization
Special Functions
Statistics and Random Number Generation
33
Dystrybucje egzotyczne
• http://www.python.org/download/other/
– MS DOS
PythonD is a 32-bit, multi-threaded, networking- and
OpenGL-enabled Python interpreter for DOS and
Windows.
– Python for AIX, Python for AROS, Python for AS/400
(OS/400), Python for BeOS, Python for iPod, Python for
OS/2, Python for OS/390 and z/OS, Python for Palm OS,
Python for PlayStation and PSP, Python for Psion, Python
for QNX, Python for (what used to be Acorn) RISC OS,
Python for Series 60, Python for Sparc Solaris, Python for
VMS, Python for VxWorks, Python for Windows CE or
Pocket PC, Python for Sharp Zaurus, Python for MorphOS
34
Narzędzia deweloperskie
• Środowiska IDE
– IDLE – razem z Pythonem
– PythonWin (http://sourceforge.net/projects/pywin32) –
element PyWin32 – tylko dla systemów Windows!
– ECLISPE + PyDev (http://pydev.org)
– KOMODO IDE (http://www.activestate.com/komodo) –
komercyjny!
• Edytory
–
–
–
–
SciTE (http://www.scintilla.org/SciTE)
KOMODO Edit (http://www.activestate.com/komodo_edit)
VIM
EMACS
35
IDLE
• IDLE is the Python IDE built with
the tkinter GUI toolkit.
• IDLE has the following features:
– coded in 100% pure Python, using
the tkinter GUI toolkit
– cross-platform: works on Windows
and Unix
– multi-window text editor with
multiple undo, Python colorizing
and many other features, e.g.
smart indent and call tips
– Python shell window (a.k.a.
interactive interpreter)
– debugger (not complete, but you
can set breakpoints, view and step)
36
KOMODO IDE
http://www.activestate.com/komodo/
• Multi-language Support
– Browser-side technologies:
CSS, HTML, JavaScript, and
XML
– Server-side languages:
Perl, PHP, Python, Ruby,
and Tcl
– Web template languages:
RHTML, Template-Toolkit,
HTML-Smarty, and Django
• Multi-language Graphical
Debugger
• 295$/user
37
Download