PYTHON. Avagy hosszú az út a BioPythonig

Hasonló dokumentumok
Imperatív programozás

Szkriptnyelvek. 1. UNIX shell

Számítógépes Hálózatok. 1. Gyakorlat

Ismerkedés a Python programnyelvvel. és annak micropython változatával

Operációs Rendszerek II. labor. 2. alkalom

Python tanfolyam Python bevezető I. rész

Python I. Vincze Dávid Miskolci Egyetem, IIT

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

Imperatív programozás

A Python programozási nyelv

AWK programozás, minták, vezérlési szerkezetek

S z á m í t ó g é p e s a l a p i s m e r e t e k

Programozási nyelvek Python

Számítógépes Hálózatok. 1. gyakorlat

Az Összetett hálózatok vizsgálata elektronikus tantárgy részletes követeleményrendszere

Operációs rendszerek. 4. gyakorlat. BASH bevezetés, script írása, futtatása UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Hálózatok építése és üzemeltetése

BASH script programozás II. Vezérlési szerkezetek

PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

2018, Diszkrét matematika

Operációs rendszerek. 9. gyakorlat. BASH recap, reguláris kifejezések UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

AWK programozás, minták, vezérlési szerkezetek

Imperatív programozás

2015, Diszkrét matematika

Ismerkedés a Python programnyelvvel. és annak micropython változatával

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

Programozás II. 2. Dr. Iványi Péter

Számítógépes Hálózatok GY 1.hét

Python bevezető foglalkozás Python bevezető foglalkozás

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

Java és web programozás

Szkriptnyelvek II. Perl programok

Programozás I. Első ZH segédlet

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

AWK programozás Bevezetés

Delphi programozás I.

A Python programozási nyelv

Informatika terméktervezőknek

Gyors tippek linuxra

Matlab alapok. Baran Ágnes. Baran Ágnes Matlab alapok Elágazások, függvények 1 / 15

1. Alapok. #!/bin/bash

2018, Funkcionális programozás

Webprogramozás szakkör

Szoftvertechnológia alapjai Java előadások

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

Operációs rendszerek 2 3. alkalom - Reguláris kifejezések, grep, sed. Windisch Gergely windisch.gergely@nik.uni-obuda.hu

Programozás I gyakorlat. 10. Stringek, mutatók

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT

2018, Diszkrét matematika

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Operációs rendszerek gyak.

Mintavételes szabályozás mikrovezérlő segítségével

A JavaScript főbb tulajdonságai

Fordított és szkript nyelvek összehasonlító elemzése. Sergyán Szabolcs

Rekurzió. Dr. Iványi Péter

Youtube videó letöltés és konvertálás Linuxon

Bevezetés a programozásba I.

Szoftvertervezés és -fejlesztés I.

15. Programok fordítása és végrehajtása

4. Laborgyakorlat. A fájlokról ezeket az adatokat, a fájlrendszer tárolja. Számunkra az 1, 3, 4. oszlopok lesznek az érdekesek.

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Gyakorló feladatok Gyakorló feladatok

Vezérlési szerkezetek Vezérlési szerkezetek: feltételes elágazás és ciklusok

3D-s technológiák a játékfejlesztésben UDK bevezetés

Funkcionális és logikai programozás. { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem }

2018, Diszkre t matematika. 10. elo ada s

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

Programozási nyelvek JAVA EA+GY 1. gyakolat

Bevezetés a programozásba I.

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Függvények. Dr. Bécsi Tamás 6. Előadás

Függvények Függvények

Operációs rendszerek. 10. gyakorlat. AWK - bevezetés UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

1. Alapok. Programozás II

3. ZH-ban a minimum pontszám 15

1. Egyszerű (primitív) típusok. 2. Referencia típusok

3. Gyakorlat Ismerkedés a Java nyelvvel

Programozás alapjai 6. előadás. Wagner György Általános Informatikai Tanszék

Szövegek C++ -ban, a string osztály

Komputeralgebra Rendszerek

Bevezetés a programozásba. 9. Előadás: Rekordok

Bevezetés a Python programozási nyelvbe

Objektumorientált Programozás VI.

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Mutatók. Dr. Bécsi Tamás 7. Előadás

1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

2016, Diszkrét matematika

BASH SCRIPT SHELL JEGYZETEK

Java II. I A Java programozási nyelv alapelemei

C programozási nyelv

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

A MATLAB alapjai. Kezdő lépések. Változók. Aktuális mappa Parancs ablak. Előzmények. Részei. Atomerőművek üzemtana

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

Operációs rendszerek gyakorlat

Átírás:

PYTHON Avagy hosszú az út a BioPythonig

Miért a Python? Mert ez áll a legközelebb az ember által beszélt nyelvhez. Mert ez a leggyorsabb az ismert script nyelvek közül Mert rengeteg modul érhető el hozzá Mert a rövid egyszerű feladatokat is könnyü megoldani, de támogatja az objektum orientált gondolkodásmódot is. Mert a PyMOL-hoz így tudunk majd plug-in-t írni. Mai óra anyaga nagyrészt itt meg van részletesebben: http://docs.python.org/release/2.5.2/tut/tut.html

Hogyan használjuk a Pythont? Parancssorból Például: python -c "print 'Hello World'" Mint parancs értelmező ~$ python Python 2.5.2 (r252:60911, Jan 20 2010, 21:48:48) [GCC 4.2.4 (Ubuntu 4.2.4-1ubuntu3)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> the_world_is_flat = 1 >>> if the_world_is_flat:... print "Be careful not to fall off!"... Be careful not to fall off! >>> Python scriptek Python utasítások előre megírt sorozata, melyeket egy szövegfile tárol

Script futtatás A python parancs értelmező stdin-jére irányítjuk a forrás filet Például: echo print 'hello world!' python Vagy: cat hello.py python De van egy jobb módja is: Kellemes konvenció: Ha egy szövegfile #! karakter sorozattal kezdödik, akkor az elsö sor további része a filehoz tartozó interpretert jelöli Pl: #!/bin/bash vagy #!/usr/bin/perl Vagy mi esetünkben: #!/usr/bin/python A ~$whereis python utasítással lehet kideríteni, hogy mit kell a #! után írni

Script futtatás Ezek után csak annyi a dolgunk, hogy: Megírjuk a script file-t, elején az interpreter megjelölésével Például legyen ez a hello.py: #!/usr/bin/python print hello world Futtatási jogot adunk a script file-nak ~$ chmod 777 hello.py Futtatjuk a scriptet ~$./hello.py

A Hello World-ön túl Megjegyzések: # Aritmetika: + - * / Complex számok: 1+1j Stringek (füzérek) : jelek közt vagy ' ' közt Több soros string: és között Összefüzés: + jellel

Az első értelmes program #!/usr/bin/python # Fibonacci sorozat: # Az utolsó két elem összege a következö elem. a, b = 0, 1 # Csoportos értékadás while b < 1000: print b a, b = b, a+b A blokkokat a behúzások definiálják!!!

Elágazások #!/usr/bin/python x = int(raw_input("please enter an integer: ")) if x < 0: x = 0 print 'Negative changed to zero' elif x == 0: print 'Zero' elif x == 1: print 'Single' else: print 'More'

Tömbök Def: a = ['spam', 'eggs', 100, 1234] Elem: a[0] Intervallum: a[1:2] vagy a[1:-1] Lista hossza: len(a) A stringek speciális tömbök, így a fentiek a stringekre is alkalmazhatóak

FOR ciklus #!/usr/bin/python a = ['cat', 'window', 'defenestrate'] for x in a: print x #VAGY for i in range(len(a)): print i, a[i] #VAGY for i, v in enumerate(a): print i, v

Break és Continue #!/usr/bin/python for n in range(2, 10): for x in range(2, n): if n % x == 0: print n, 'equals', x, '*', n/x break else: print n, 'is a prime number' ########## a=2*3*5*7*11*11*13*17 d=2 while a>1: if not a%d==0: d=d+1 continue print d, a a=a/d

Még a tömbökröl T.append(x) a T tömböt végére beszúrja x-et T.extend(L) A T és L tömböt egymás után fűzi T.insert(i, x) Az i-edik helyre beszúrja x-et T.pop() Törli az utolsó elemet, és vissza adja értékét T.pop(i) Törli az i-edik elemet, és vissza adja értékét T.index(x) Megmondja hol fordul elösször elő x Hasonló: T.count(x), T.remove(x) T.sort() - Rendezi a tömböt T.reverse() - Megcseréli a sorrendet

Szótárak Olyan tömbök, melyeket egészek helyett szavakkal indexelhetünk tel = {'jack': 4098, 'sape': 4139} tel['guido'] = 4127 print tel['jack'] print tel For ciklus ilyenkor így néz ki: knights = {'gallahad': 'the pure', 'robin': 'the brave'} for k, v in knights.iteritems(): print k, v

Függvények #!/usr/bin/python def fib(n): result = [] a, b = 0, 1 while b < n: result.append(b) a, b = b, a+b return result print fib(100)

Alapértelmezett értékek #!/usr/bin/python def bogus(a,b,c=1,d=1): return a*b+c*d # Lehetséges hívások: bogus(1,2) bogus(1,2,3) bogus(1,2,3,4) bogus(1,2,d=6) bogus(d=6, a=1, b=2) # Ha nem akarjuk elöre megadni az argumentumok számát: def bogus(*args): for i in args: print i,

Modulok Pythonban a függvények többsége valamilyen modulban található! Ezek lényegében fügvény könyvtárak, melyeket tipikusan C-ben vagy Pythonban írtak. C-ben írt modulok függvényei gyorsak Pythonban mi is könnyen írhatunk modul-t Ami minket a legjobban izgat majd: BioPython

Olvasás #!/usr/bin/python # Olvasás a stdin-röl: import sys print sys.stdin.readlines() print sys.argv # Olvasás fileból: fpin=open('filename') print fpin.readline() for i in fpin.readlines(): print i

Példa: PDB atom koordináták #!/usr/bin/python fpin=open('10gs.pdb') atoms=[] for i in fpin.readlines(): if i[0:6]=='atom ': atoms.append([float(i[31:38]), float(i[39:46]), float(i[47:54])]) print atoms

Casting A Python igen rugalmasan kezeli a változókat: A lokális változókat nem kell elöre definiálni, csupán csak elkezdjük használni Azért célszerü inicializálni! Azt sem szükséges megadni mi lesz a változóban Ami épp benne van olyan típusu lesz a változó Változó név prefixekkel célszerü magunknak jelölni, hogy egy adott változóba milyen típusu értékeket szánunk Viszont idönként szükség van rá, hogy változó típusok között convertáljunk. Ilyenkor a tipus neve lesz a konvertáló függvény neve is Leggyakoribb típusok: int egész float lebegö pontos érték (valós vagy complex) str karakter sorozat (string)

Hatáskör Függvényekben eddig mi lokális változókat használtunk Ugyan az a változó név minden függvényben más változóra mutat. Mi van ha szeretnénk egy változót minden függvényböl egyszerre látni? A global kulcsszóval jelezzük a python számára, hogy az adott változó névvel egy közösen használt értékre szeretnénk hivazkozni (példa mindjárt) A függvényeken kívül használt változók autómatikusan globálisak BEST PRACTICE: kerüljük a globális változókat Nincsenek statikus változók: minden függvény hívásnál nullázódik a függvény lokális változóinak értéke

Példa #!/usr/bin/python def bogus(): global g l='local inside' g='global inside' return l, g l='local outside' g='global outside' print l,g print bogus() print l, g