Python dla każdego naukowca - 2013ftp.us4us.eu/EDU/2013/Python-dla-naukowca/Python-2013-01.pdf ·...

36
JĘZYK PYTHON NARZĘDZIE DLA KAŻDEGO NAUKOWCA Dr Marcin Lewandowski [ [email protected] ] PYTHON-2013 Marcin Lewandowski [ [email protected] ] 1 Strona kursu: http://us4us.eu/wydarzenia/kursy/

Transcript of Python dla każdego naukowca - 2013ftp.us4us.eu/EDU/2013/Python-dla-naukowca/Python-2013-01.pdf ·...

JĘZYK PYTHON – NARZĘDZIE DLA KAŻDEGO NAUKOWCA Dr Marcin Lewandowski [ [email protected] ]

PYTHON-2013 Marcin Lewandowski [ [email protected] ]

1 Strona kursu: http://us4us.eu/wydarzenia/kursy/

O mnie… • Z wykształcenia Fizyk, na co dzień inżynier • Zainteresowania i Praca:

• elektronika, software, ultradźwięki, systemy pomiarowo-kontrolne, …

• Doświadczenia naukowe, wdrożeniowe i komercyjne • 20+ lat doświadczenia Software, fan Pythona od 10+ lat

• Pracuję w Zakładzie Ultradźwięków IPPT PAN, gdzie:

• Zajmuję się: • Projektowaniem elektronicznych systemów ultradźwiękowych dla

zastosowań medycznych i przemysłowych • Nowymi technikami przetwarzania i obrazowania sygnałów

ultradźwiękowych • Obecnie prowadzę dwa duże projekty dot. budowy uniwersalnej

badawczej platformy USG

2 PYTHON-2013 Marcin Lewandowski [ [email protected] ]

Dla kogo ten wykład? • Dla każdego:

• kto chce się nauczyć Pythona i … ułatwić sobie życie wykorzystując go w codziennej pracy

• poznać 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???

3 PYTHON-2013 Marcin Lewandowski [ [email protected] ]

PLAN • Wykład z ćwiczeniami

• Wtorki 14.00-16.00 (2x45min), sala 228 • Do ćwiczeń: komputer PC (Windows, Linux, Mac)

• Zakres wykładu (wstępny):

• Wprowadzenie do języka Python (język, składania, narzędzia, biblioteki)

• Interaktywna konsola iPython • 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.

PYTHON-2013 Marcin Lewandowski [ [email protected] ] 4

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.

5 PYTHON-2013 Marcin Lewandowski [ [email protected] ]

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]

6 PYTHON-2013 Marcin Lewandowski [ [email protected] ]

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]

7 PYTHON-2013 Marcin Lewandowski [ [email protected] ]

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

8 PYTHON-2013 Marcin Lewandowski [ [email protected] ]

Dlaczego PYTHON? c.d. • Jakość software – dzięki czytelności i cechom języka

(OOP, modułowość, 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, etc.

9 PYTHON-2013 Marcin Lewandowski [ [email protected] ]

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.

10 PYTHON-2013 Marcin Lewandowski [ [email protected] ]

Do czego można użyć 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, …

11 PYTHON-2013 Marcin Lewandowski [ [email protected] ]

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

12 PYTHON-2013 Marcin Lewandowski [ [email protected] ]

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 (~ 50-100 linii) • Moduł wrappera do VISA (~ 600 linii kodu C)

13 PYTHON-2013 Marcin Lewandowski [ [email protected] ]

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

14 PYTHON-2013 Marcin Lewandowski [ [email protected] ]

Przykłady z życia (4)

• GUI – biblioteka wxPython (~350 linii) • Obsługa dataloggera, modemu i komunikacji (~600 linii)

15 PYTHON-2013 Marcin Lewandowski [ [email protected] ]

Przykłady z życia (5) – matplotlib

16 PYTHON-2013 Marcin Lewandowski [ [email protected] ]

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

17 PYTHON-2013 Marcin Lewandowski [ [email protected] ]

Książki o Pythonie (1) • M.Lutz,

Learning Python: Powerful Object-Oriented Programming, 4-th ed., O'Reilly Media, 2009 (1216 str.)

18 PYTHON-2013 Marcin Lewandowski [ [email protected] ]

KLASYKA!

Książki o Pythonie (2) • M.Lutz, Programming Python, O'Reilly Media, 3-th ed., 2006 (1600 str.)

19 PYTHON-2013 Marcin Lewandowski [ [email protected] ]

KLASYKA!

Książki o Pythonie (3) P.Barry, D.Griffiths,

Head First Programming, O'Reilly Media, 2009

P.Barry, Head First Python, O'Reilly Media, 2011

PYTHON-2013 Marcin Lewandowski [ [email protected] ] 20

COOL!

Książki o Pythonie (4) • W.McKinney, Python for Data Analysis, O'Reilly Media, 2012.

PYTHON-2013 Marcin Lewandowski [ [email protected] ] 21

POLECAM!

Książki – Python po polsku • M.Lutz,

Python. Wprowadzenie, 4. wydanie, Helion 2010 (1184 str.)

• M.Summerfield, Python 3. Kompletne wprowadzenie do programowania, 2. wydanie, 2010 (640 str.)

• Python. Od podstaw, Helion 2006 (704 str.) • J.E.F.Friedl, Wyrażenia regularne, Helion, 2001

22 PYTHON-2013 Marcin Lewandowski [ [email protected] ]

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

23 PYTHON-2013 Marcin Lewandowski [ [email protected] ]

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/)

24 PYTHON-2013 Marcin Lewandowski [ [email protected] ]

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/

25 PYTHON-2013 Marcin Lewandowski [ [email protected] ]

PYTHON ŚRODOWISKO

26 PYTHON-2013 Marcin Lewandowski [ [email protected] ]

Może już mam Pythona? > python –V Python 2.7.3 -- EPD 7.3-2 (32-bit)

BINGO!

27 PYTHON-2013 Marcin Lewandowski [ [email protected] ]

http://www.python.org/download/ Download Python • The current production versions are Python 2.7.3 and

Python 3.3.0. • 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, try Python 3.3. Some existing third-party software is not yet compatible with Python 3; if you need to use such software, you can download Python 2.7.x instead.

28 PYTHON-2013 Marcin Lewandowski [ [email protected] ]

http://www.activestate.com/activepython

• ActivePython 2.7.2.5 & 3.2.2.3 • Windows (x86) • Windows (64-bit, x64) • Mac OS X (Universal) • Linux (x86) • Linux (x86_64) • Solaris • HP-UX • AIX

Dystrybucja komercyjna!

29 PYTHON-2013 Marcin Lewandowski [ [email protected] ]

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.

30 PYTHON-2013 Marcin Lewandowski [ [email protected] ]

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

31 PYTHON-2013 Marcin Lewandowski [ [email protected] ]

Dystrybucja komercyjna!

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! <<<

32 PYTHON-2013 Marcin Lewandowski [ [email protected] ]

Dystrybucja komercyjna!

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 :-o

• 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

33 PYTHON-2013 Marcin Lewandowski [ [email protected] ]

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 – „dla twardzieli”

34 PYTHON-2013 Marcin Lewandowski [ [email protected] ]

<<< POLECAM!

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)

35 PYTHON-2013 Marcin Lewandowski [ [email protected] ]

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

36 PYTHON-2013 Marcin Lewandowski [ [email protected] ]