Python for Physics and Astronomy: Difference between revisions
No edit summary |
No edit summary |
||
(16 intermediate revisions by the same user not shown) | |||
Line 2: | Line 2: | ||
This resource was developed as | This resource was developed as a component of a | ||
[http://prancer.physics.louisville.edu/astrowiki/index.php/Research_Methods Research Methods] class | [http://prancer.physics.louisville.edu/astrowiki/index.php/Research_Methods Research Methods] class Various examples that may be useful for | ||
developing small Python programs are collected [http://prancer.physics.louisville.edu/astrowiki/index.php/Python_examples here]. They are a basis for a few exercises that were assigned during the course are are available [http://prancer.physics.louisville.edu/astrowiki/index.php/Python_assignments here]. | developing small Python programs are collected [http://prancer.physics.louisville.edu/astrowiki/index.php/Python_examples here]. They are a basis for a few exercises that were assigned during the course are are available [http://prancer.physics.louisville.edu/astrowiki/index.php/Python_assignments here]. | ||
This resource is maintained so that it is reasonable current with the latest releases of Python 3 and component modules. The code discussed has been tested in Python 3.6, though some pieces of older code may still be lurking, they should be recognizable and easily modified if errors occur. | |||
Line 34: | Line 36: | ||
##[http://prancer.physics.louisville.edu/astrowiki/index.php/Graphical_User_Interface_with_Python#Interfacing_an_Instrument:_Phidgets Interfacing an Instrument] | ##[http://prancer.physics.louisville.edu/astrowiki/index.php/Graphical_User_Interface_with_Python#Interfacing_an_Instrument:_Phidgets Interfacing an Instrument] | ||
##[http://prancer.physics.louisville.edu/astrowiki/index.php/Graphical_User_Interface_with_Python#Events_and_Control_Within_the_User_Interface Events and Control] | ##[http://prancer.physics.louisville.edu/astrowiki/index.php/Graphical_User_Interface_with_Python#Events_and_Control_Within_the_User_Interface Events and Control] | ||
[http://prancer.physics.louisville.edu/astrowiki/index.php/Graphical_User_Interface_with_Python#Widgets Widgets] | ##[http://prancer.physics.louisville.edu/astrowiki/index.php/Graphical_User_Interface_with_Python#Widgets Widgets] | ||
#[http://prancer.physics.louisville.edu/astrowiki/index.php/Graphics_with_Python Graphics with Python] | #[http://prancer.physics.louisville.edu/astrowiki/index.php/Graphics_with_Python Graphics with Python] | ||
##[http://prancer.physics.louisville.edu/astrowiki/index.php/Graphics_with_Python#Installation_of_matplotlib Matplotlib] | ##[http://prancer.physics.louisville.edu/astrowiki/index.php/Graphics_with_Python#Installation_of_matplotlib Matplotlib] | ||
Line 44: | Line 46: | ||
##[http://prancer.physics.louisville.edu/astrowiki/index.php/Python_assignments Assignments] | ##[http://prancer.physics.louisville.edu/astrowiki/index.php/Python_assignments Assignments] | ||
#[http://prancer.physics.louisville.edu/astrowiki/index.php/NumPy,_SciPy_and_SciKits NumPy, SciPy and SciKits] | #[http://prancer.physics.louisville.edu/astrowiki/index.php/NumPy,_SciPy_and_SciKits NumPy, SciPy and SciKits] | ||
##[http://prancer.physics.louisville.edu/astrowiki/index.php/NumPy,_SciPy_and_SciKits# | ##[http://prancer.physics.louisville.edu/astrowiki/index.php/NumPy,_SciPy_and_SciKits#NumPy NumPy] | ||
###Arrays | ###[http://prancer.physics.louisville.edu/astrowiki/index.php/NumPy,_SciPy_and_SciKits#Arrays Arrays] | ||
###Indexing | ###[http://prancer.physics.louisville.edu/astrowiki/index.php/NumPy,_SciPy_and_SciKits#Indexing Indexing] | ||
###Functions | ###[http://prancer.physics.louisville.edu/astrowiki/index.php/NumPy,_SciPy_and_SciKits#Functions_Broadcasting_Over_an_Array Functions and Broadcasting] | ||
###Matrix and | ###[http://prancer.physics.louisville.edu/astrowiki/index.php/NumPy,_SciPy_and_SciKits#Matrix_and_Vector_Math_in_NumPy Matrix and Vector Math] | ||
###Fourier Transforms | ###[http://prancer.physics.louisville.edu/astrowiki/index.php/NumPy,_SciPy_and_SciKits#Fourier_Transforms_in_NumPy Fourier Transforms in NumPy] | ||
##[http://prancer.physics.louisville.edu/astrowiki/index.php/NumPy,_SciPy_and_SciKits#SciPy_and_SciKits SciPy and SciKits] | ##[http://prancer.physics.louisville.edu/astrowiki/index.php/NumPy,_SciPy_and_SciKits#SciPy_and_SciKits SciPy and SciKits] | ||
###Interpolation | ###[http://prancer.physics.louisville.edu/astrowiki/index.php/NumPy,_SciPy_and_SciKits#Interpolation Interpolation] | ||
###Integration | ###[http://prancer.physics.louisville.edu/astrowiki/index.php/NumPy,_SciPy_and_SciKits#Integration Integration] | ||
###Differentiation | ###[http://prancer.physics.louisville.edu/astrowiki/index.php/NumPy,_SciPy_and_SciKits#Differentiation Differentiation] | ||
###Statistics | ###[http://prancer.physics.louisville.edu/astrowiki/index.php/NumPy,_SciPy_and_SciKits#Statistics Statistics] | ||
##[http://prancer.physics.louisville.edu/astrowiki/index.php/Python_examples Examples] | ##[http://prancer.physics.louisville.edu/astrowiki/index.php/Python_examples Examples] | ||
##[http://prancer.physics.louisville.edu/astrowiki/index.php/Python_assignments Assignments] | ##[http://prancer.physics.louisville.edu/astrowiki/index.php/Python_assignments Assignments] | ||
Line 60: | Line 62: | ||
##[http://prancer.physics.louisville.edu/astrowiki/index.php/Image_processing_with_Python_and_SciPy#Python_Imaging_Library_-_PIL Python Imaging Library - PIL] | ##[http://prancer.physics.louisville.edu/astrowiki/index.php/Image_processing_with_Python_and_SciPy#Python_Imaging_Library_-_PIL Python Imaging Library - PIL] | ||
##[http://prancer.physics.louisville.edu/astrowiki/index.php/Image_processing_with_Python_and_SciPy#Images_with_NumPy_and_SciPy Images with NumPy and SciPy] | ##[http://prancer.physics.louisville.edu/astrowiki/index.php/Image_processing_with_Python_and_SciPy#Images_with_NumPy_and_SciPy Images with NumPy and SciPy] | ||
##[http://prancer.physics.louisville.edu/astrowiki/index.php/Image_processing_with_Python_and_SciPy# | ##[http://prancer.physics.louisville.edu/astrowiki/index.php/Image_processing_with_Python_and_SciPy#Astronomical_FITS_Files Astronomical FITS Files] | ||
##[http://prancer.physics.louisville.edu/astrowiki/index.php/Image_processing_with_Python_and_SciPy# | ##[http://prancer.physics.louisville.edu/astrowiki/index.php/Image_processing_with_Python_and_SciPy#Other_Processing Other Processing] | ||
##[http://prancer.physics.louisville.edu/astrowiki/index.php/Image_processing_with_Python_and_SciPy#SciKits SciKits] | ##[http://prancer.physics.louisville.edu/astrowiki/index.php/Image_processing_with_Python_and_SciPy#SciKits SciKits] | ||
##[http://prancer.physics.louisville.edu/astrowiki/index.php/Image_processing_with_Python_and_SciPy#AstroImageJ_and_Alsvid AstroImageJ and Alsvid] | |||
##[http://prancer.physics.louisville.edu/astrowiki/index.php/Python_examples Examples] | ##[http://prancer.physics.louisville.edu/astrowiki/index.php/Python_examples Examples] | ||
##[http://prancer.physics.louisville.edu/astrowiki/index.php/Python_assignments Assignments] | ##[http://prancer.physics.louisville.edu/astrowiki/index.php/Python_assignments Assignments] | ||
#[http://prancer.physics.louisville.edu/astrowiki/index.php/User_Interfaces User | #[http://prancer.physics.louisville.edu/astrowiki/index.php/User_Interfaces User Interfaces] | ||
##[http://prancer.physics.louisville.edu/astrowiki/index.php/User_Interfaces#Command_Line_Interfacing_and_Access_to_the_Operating_System Command | ##[http://prancer.physics.louisville.edu/astrowiki/index.php/User_Interfaces#Command_Line_Interfacing_and_Access_to_the_Operating_System Command Line Interfacing and Access to the Operating System] | ||
##[http://prancer.physics.louisville.edu/astrowiki/index.php/User_Interfaces# | ##[http://prancer.physics.louisville.edu/astrowiki/index.php/User_Interfaces#Graphical_User_Interface_to_Plotting Graphical User Interface to Plotting] | ||
##[http://prancer.physics.louisville.edu/astrowiki/index.php/User_Interfaces# | ##[http://prancer.physics.louisville.edu/astrowiki/index.php/User_Interfaces#Running_a_Bokeh_Server_for_Live_Plotting_of_Python_Data Running a Bokeh Server for LIve Plotting of Python Data] | ||
##[http://prancer.physics.louisville.edu/astrowiki/index.php/User_Interfaces#Running_a_Server_for_Javascript_in_a_Browser_Engine Running a Server for Javascript in a Browser Engine] | |||
#[http://prancer.physics.louisville.edu/astrowiki/index.php/How_to_Create_a_Javascript_Program How to create a javascript program] | #[http://prancer.physics.louisville.edu/astrowiki/index.php/How_to_Create_a_Javascript_Program How to create a javascript program] | ||
Line 74: | Line 78: | ||
These topics may be added to a longer version of this course or as working notes when time allows. | These topics may be added to a longer version of this course or as working notes when time allows. | ||
#Bayesian methods with Python and Markov Chain Monte Carlo (MCMC) analyses | |||
#Real world interfacing | #Real world interfacing | ||
##Instrumentation and communication | ##Instrumentation and communication | ||
##Serial ports | ##Serial ports | ||
##USB | ##USB | ||
##TCPIP | ##Ethernet and TCPIP | ||
## | #Parallel processing | ||
## | ##Using all the processors (CPUs) in your computer | ||
##Using graphical processing units (GPUs) | |||
##Artificial intelligence computing with tensor processing units (TPUs) | |||
#Working with the web | #Working with the web | ||
##HTTP servers | ##HTTP servers | ||
##Getting data from servers | ##Getting data from servers | ||
##Sending data to servers | ##Sending data to servers | ||
##Using Python with the Common Gateway Interface (CGI) | |||
##Using Python with CGI | |||
##Programming for server-side processing | ##Programming for server-side processing | ||
#Python and other languages | #Python and other languages | ||
##Bash scripting in Unix-like systems | ##Bash scripting in Unix-like systems | ||
##Gnu Data Language (GDL) as a replacement for IDL or bridge to Python | |||
##Very simple C | ##Very simple C | ||
## | ##Connecting Python to the browser engine | ||
## | ##Chrome and Firefox for web development | ||
##Java for astronomical calculations: AstroCC and AstroImageJ | ##Java for astronomical calculations: AstroCC and AstroImageJ |
Latest revision as of 06:41, 17 April 2018
The Python programming language is a widely used tool for basic research and engineering. Its rapid rise in popularity is supported by comprehensive, largely open-source, contributions from scientists who use it for their own work. This short course offers an introduction to Python with examples drawn from physics and astronomy.
This resource was developed as a component of a
Research Methods class Various examples that may be useful for
developing small Python programs are collected here. They are a basis for a few exercises that were assigned during the course are are available here.
This resource is maintained so that it is reasonable current with the latest releases of Python 3 and component modules. The code discussed has been tested in Python 3.6, though some pieces of older code may still be lurking, they should be recognizable and easily modified if errors occur.
The topics and examples covered --
- Why program? Choosing a language.
- Very simple Python
- Elements of Python programming
- Solving problems with Python
- Graphical User Interfaces with Python
- Graphics with Python
- NumPy, SciPy and SciKits
- Image processing with Python and SciPy
- User Interfaces
- How to create a javascript program
These topics may be added to a longer version of this course or as working notes when time allows.
- Bayesian methods with Python and Markov Chain Monte Carlo (MCMC) analyses
- Real world interfacing
- Instrumentation and communication
- Serial ports
- USB
- Ethernet and TCPIP
- Parallel processing
- Using all the processors (CPUs) in your computer
- Using graphical processing units (GPUs)
- Artificial intelligence computing with tensor processing units (TPUs)
- Working with the web
- HTTP servers
- Getting data from servers
- Sending data to servers
- Using Python with the Common Gateway Interface (CGI)
- Programming for server-side processing
- Python and other languages
- Bash scripting in Unix-like systems
- Gnu Data Language (GDL) as a replacement for IDL or bridge to Python
- Very simple C
- Connecting Python to the browser engine
- Chrome and Firefox for web development
- Java for astronomical calculations: AstroCC and AstroImageJ