Strumenti Utente

Strumenti Sito


roberto.depietri:pub:python:start

Il linguaggio Python (in ambito scientifico)

Il linguaggio Python è stato concepito da Guido Van Rossum alla fine degli anni ‘80 come linguaggio per interfacciarsi al sistema operativo distribuito Amoeba di Tanenbaum.

Una sua caratteristica che lascia in un primo momento perplessi è che usa l'allineamento del testo come caratteristica sintattica. Questa idea ha una storia che ha origine da una osservazione di Donald E. Knuth: We will perhaps eventually be writing only small modules that are identified by name as they are used to build larger ones, so that devices like indentation, rather than delimiters, might become feasible for expressing local structure in the source language. tratta da "Structured Programming with go to Statements" pubblicato in origine in "Computing Surveys", Volume 6 del Dicembre 1974 in una uscita speciale dedicata al "Programming".

Ulteriori informazioni posso essere tratte dalle seguenti introduzione al linguaggio:

Tutorial di Enrico Franchi

Introduzione a Python (Simone Campagna, CINECA)

Standard Library di Python (Simone Campagna, CINECA)

Per una rapida introduzione e verifica di come usare il linguaggio python in ambito scientifico è disponibile presso il DiFeST una macchina virtuale (Ubuntu 12.04.3 LTS) in cui è installata una distribuzione quasi completa di python e delle estensioni necessarie (utili) al calcolo in ambiente scientifico

  ssh -X  -l roberto.depietri@ubuntu-didattica.fis.unipr.it

in cui è disponibile un interfaccia iterativa al linguaggio: "ipython" (interactive-python). Il modo più semplice per usare il linguaggio in ambito scientifico è attraverso il comando

  > ipython --pylab

che fornisce una shell interativa in cui dare i vari comandi da dare all'interprete. Come vedremo il linguaggio python non nasce in ambito scientifico e quindi un suo uso per il nostro scopo di effettuare calcoli scientifici necessita di caricare estensioni "scientifiche". Infatti se chiediamo al sistema cosa fa "ipython –pylab" questo ci dice:

  > man iphthon
    ...
    --pylab
            Pre-load matplotlib and  numpy  for  interactive  use  with  the
            default matplotlib backend.
    …

ovvero partiremo con l'interfaccia iterativa a python con precariate le estensioni:

  • numpy che definisce: array N-dimensionali, algebra lineare, trasformate di Fourier, . . .
  • matplotlib una libreria per disegnare figure con qualità pronte per la pubblicazione.

Altra estensione (ormai di ampio uso) estremamente utile in ambito scientifico è fornita da

  • sciy libreria di metodi matematici pronti per l'uso.

Queste estensioni ci permetto di usare il linguaggio python per le nostre esigenze di calcolo scientifico in modo rapido sia in modo iterativo che per realizzare semplici programmi di trattamento dei dati sperimentali o la generazione delle figure necessarie per la loro presentazione.

Ad esempio:

  $ ipython --pylab
  
  Python 2.7.4 (default, Apr 19 2013, 18:28:01)
  Type "copyright", "credits" or "license" for more information.
  
  IPython 0.13.2 -- An enhanced Interactive Python.
  ?         -> Introduction and overview of IPython's features.
  %quickref -> Quick reference.
  help      -> Python's own help system.
  object?   -> Details about 'object', use 'object??' for extra details.
  
  Welcome to pylab, a matplotlib-based Python environment [backend: Agg].
  For more information, type 'help(pylab)'.
  
  In [1]: from scipy import special, optimize
  In [2]: f = lambda x: -special.jv(3, x)
  In [3]: xmin,fmin,t1,t2,t3=optimize.fmin(f, 1.0,full_output=True)
  In [4]: x = linspace(0, 10, 5000)
  In [5]: x
  Out[5]:
  array([  0.00000000e+00,   2.00040008e-03,   4.00080016e-03, ...,
           9.99599920e+00,   9.99799960e+00,   1.00000000e+01])
  In [6]: plot(x, special.jv(3, x), '-', xmin, -fmin, 'o')
  In [7]: savefig('plot.png', dpi=96)
  In [8]: quit
  
  $ display plot.png

A questo punto ci siamo fatti un idea delle potenzialità di python per soddisfare molte delle nostre necessità nel calcolo scientifico.

The Python language (Tutorial)

Introduzione a Python (Simone Campagna, CINECA)

Tutorial di Enrico Franchi

Standard Library di Python (Simone Campagna, CINECA)

Parse Options: optparse

Plotting: matplotlib

Numpy

MPI4py

roberto.depietri/pub/python/start.txt · Ultima modifica: 20/01/2014 11:57 da roberto.depietri