|
| 1 | +## Python for Geoscientists |
| 2 | + |
| 3 | +A notebook-based introduction to python, jupyter notebooks and programming workflows with examples from python packages for the Earth Sciences. |
| 4 | + |
| 5 | + |
| 6 | + |
| 7 | + |
| 8 | +The material is broken down into a number of sections of, approximately, increasing difficulty. |
| 9 | + |
| 10 | + 1. [Introduction to python / jupyter](CourseContent/Notebooks/Introduction2Python/1-IntroductionToIpython.ipynb) |
| 11 | + 1. [Introduction to version control with git](CourseContent/Notebooks/Introduction2VersionControl/1-GettingStartedWithGit.ipynb) |
| 12 | + 1. [Getting Started with Numpy / Scipy](CourseContent/Notebooks/Numpy+Scipy/1-IntroductionToNumpy.ipynb) |
| 13 | + 1. [Introduction to Matplotlib](CourseContent/Notebooks/Plotting/1-IntroductionToMatplotlib.ipynb) |
| 14 | + 1. [Stripy for meshing / mapping the Sphere](CourseContent/Notebooks/SphericalMeshing/SphericalTriangulations/Ex1-Spherical-Triangulations.ipynb) |
| 15 | + 1. [Making beautiful and useful maps with Cartopy](CourseContent/Notebooks/Mapping/0-Preliminaries.ipynb) |
| 16 | + 1. [Finite Differences with numpy](CourseContent/Notebooks/SolveMathProblems/1-IntroductionToNumericalSolutions.ipynb) |
| 17 | + |
| 18 | + |
| 19 | +### Description |
| 20 | + |
| 21 | +Python has become a popular language for scientific computing, boasting a rich set of libraries |
| 22 | +relevant to geoscientists working with data. It has all the friendly features and conveniences you |
| 23 | +would expect of a modern programming language. The Python programming language offers |
| 24 | +adaptability and versatility to the types of analyses, modelling, and workflows that geoscientists |
| 25 | +utilise. The tools and workflows you will explore in this course are presented as Jupyter notebooks |
| 26 | +and can easily be adapted to your own research. |
| 27 | + |
| 28 | +We are also going to focus on problem-solving approaches to computation - developing a systematic approach to programming, testing, debugging and documentation. We will make use of git for version control which is a tool / strategy that you will definitely find helpful in future. We will do all of our work within the literate programming environment of jupyter notebooks / jupyter lab. |
| 29 | + |
| 30 | +We will introduce/review the 'standard' scientific python toolkits such as numpy, scipy, matplotlib, pandas. We will teach you how to manipulate and transform data in simple ways, plotting, mapping, visualisation, interpolation, gridding, function fitting, and exporting data / images into common, interchangeable data formats such as hdf5 and netcdf, geotiff. |
| 31 | + |
| 32 | +We will learn how to orchestrate common earth science python software applications, seismic data set acquisition and analysis (obspy), meshing and interpolation (stripy). We will learn how to solve very simple differential equations with application to geothermal energy and ground water flow, statistical analysis of data sets. |
| 33 | + |
| 34 | + |
| 35 | +### Dependencies |
| 36 | + |
| 37 | +We have distributed this as a Docker image for portability, but it is possible to install python3 and additional dependencies on your computer to make this run natively: |
| 38 | + |
| 39 | +- `numpy` |
| 40 | +- `scipy` |
| 41 | +- `matplotlib` |
| 42 | +- `cartopy` (requires GDAL libraries) |
| 43 | +- `lavavu` (for SphericalTriangulation notebooks only) |
| 44 | +- `pandas` |
| 45 | +- `scikit-learn` |
| 46 | +- `obspy` |
| 47 | +- `jupyter` |
| 48 | + |
| 49 | +These may all be installed with **pip**: |
| 50 | + |
| 51 | +```sh |
| 52 | +python3 -m pip install jupyter |
| 53 | +``` |
| 54 | + |
| 55 | +or through **conda**, which comes with [Anaconda](https://docs.anaconda.com/anaconda/install/): |
| 56 | + |
| 57 | +```sh |
| 58 | +conda install jupyter |
| 59 | +``` |
| 60 | + |
| 61 | + |
| 62 | +### Acknowledgements |
| 63 | + |
| 64 | +This coursework was created by a number of collaborators whom we want to acknowledge: |
| 65 | + |
| 66 | +- Louis Moresi (for the course structure and the majority of the notebooks) |
| 67 | +- Nathanial Butterworth (machine learning and introductionary notebooks) |
| 68 | +- Rohitash Chandra (machine learning and data wrangling) |
| 69 | +- Ben Mather (advanced finite difference notebooks) |
0 commit comments