Skip to content

Commit 2151ca1

Browse files
committed
First edition
1 parent c27306d commit 2151ca1

File tree

1 file changed

+50
-30
lines changed

1 file changed

+50
-30
lines changed

README.md

Lines changed: 50 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ ways.
6262

6363
*Libraries for manipulation of symbolic algebra, analytic integration etc.*
6464

65-
* [SymPy]() -
65+
* [SymPy](https://www.sympy.org/en/index.html) - SymPy is a Python library for symbolic mathematics.
66+
It aims to become a full-featured computer algebra system (CAS) while keeping the code as simple as possible in order to be comprehensible and easily extensible.
6667
* [sagemath](http://www.sagemath.org/) - Mathematical software system with features covering multiple aspects of mathematics, including algebra, combinatorics, numerical mathematics, number theory, and calculus.
6768

6869

@@ -73,7 +74,7 @@ ways.
7374

7475
## Bayesian Analysis
7576

76-
* [pymc]() -
77+
* [pymc3](https://docs.pymc.io/) - Package for Bayesian statistical modeling and probabilistic machine learning which focuses on advanced Markov chain Monte Carlo and variational fitting algorithms.
7778
* [arviz](https://arviz-devs.github.io/arviz/index.html) - Exploratory analysis of Bayesian models.
7879

7980

@@ -84,22 +85,29 @@ ways.
8485

8586
## Code Quality
8687

87-
* [PEP8]() -
88-
* [flake8]() -
89-
* [pycodestyle]() -
88+
*Tools to help you write neat and error-free python code/*
89+
90+
* [PEP8](https://www.python.org/dev/peps/pep-0008/) - The official style guide for python code.
9091
* [structure](https://docs.python-guide.org/writing/structure/) - The officially recommended way to structure any python project.
92+
* [flake8](http://flake8.pycqa.org/en/latest/) - A command-line tool which will tell you where you've violated PEP8's recommendations.
93+
* [pyflakes](https://pypi.org/project/pyflakes/) - Similar to flake8, but shinstead checks for logistic erros (e.g. unused module imports).
94+
* [pycodestyle](https://media.readthedocs.org/pdf/pycodestyle/latest/pycodestyle.pdf) - A wrapper for flake8 and pyflakes which runs them both.
95+
* [pylint](http://pylint.pycqa.org/en/latest/intro.html) - A tool that checks for errors in Python code, tries to enforce a coding standard and looks for code smells.
9196

9297

9398
## Data Storage
9499

95-
* [netcdf4]() -
96-
* [xarray]() -
97-
* [MITgcm]() -
100+
* [netcdf4-python](http://unidata.github.io/netcdf4-python/) - netCDF is a popular file format for multidimensional data, developed by the weather and forecasting community. Use this format unless you have a good reason not to.
101+
netcdf4-python is a Python interface to the netCDF C library.
102+
* [xarray](http://xarray.pydata.org/en/stable/io.html#netcdf) - xarray's data model is based on netCDF, and provides the easiest way of reading and writing netCDF4 files in python.
103+
Will also load the data lazily, which is extremely useful when dealing with large amounts of data.
104+
* [xmitgcm](https://xmitgcm.readthedocs.io/en/latest/) - A python package for reading MITgcm binary MDS files into xarray data structures.
105+
Included as an example of how to go about loading unusual binary file formats into xarray data structures intelligently.
98106

99107

100108
## Debugging
101109

102-
* [pdb]() - Python debugger
110+
* [pdb](https://docs.python.org/3/library/pdb.html) - The Python debugger. Part of the python standard library.
103111

104112

105113
## Development Environments
@@ -129,6 +137,7 @@ Originally created for documenting the python language itself.
129137
* [MetPy](https://unidata.github.io/MetPy/latest/) - MetPy is a collection of tools in Python for reading, visualizing and performing calculations with weather data.
130138
* [NetworkX](http://networkx.github.io/) - A package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks.
131139
* [nilearn](http://nilearn.github.io/) - Machine learning for Neuro-Imaging in python.
140+
* [Parcels](http://oceanparcels.org/) - Track particles along circulating ocean currents.
132141
* [PlasmaPy](http://docs.plasmapy.org/en/stable/) - Various tools for plasma physics.
133142
* [psychopy](http://www.psychopy.org/) - An open-source application allowing you run a wide range of neuroscience, psychology and psychophysics experiments.
134143
* [pyrocko](https://pyrocko.org/) - A seismology toolkit for python.
@@ -140,9 +149,9 @@ Originally created for documenting the python language itself.
140149

141150
## Error handling
142151

143-
* [errors]() -
144-
* [warnings]() - Throw proper warnings instead of using print statements. Python standard library module.
145-
* [logging]()
152+
* [errors](https://docs.python.org/3/tutorial/errors.html) - How to properly raise and handle errors in python.
153+
* [warnings](https://docs.python.org/3/library/warnings.html) - Throw proper warnings instead of using print statements. Python standard library module.
154+
* [logging](https://docs.python.org/3/library/logging.html) - Standard library module for properly logging information about what's going on as your code runs.
146155

147156

148157
## Forecasting
@@ -153,30 +162,35 @@ Developed by Facebook.
153162

154163
## Gotchas
155164

156-
* [python-gotchas]() -
165+
* [python-gotchas](https://github.com/satwikkansal/wtfpython) - A collection of surprising Python snippets and lesser-known features.
157166

158167

159168
## GPU acceleration
160169

161-
* [py-cuda]() -
162-
* [numba]() -
170+
* [cupy](https://cupy.chainer.org/) - An implementation of a NumPy-compatible multi-dimensional array on CUDA.
171+
* [numba](http://numba.pydata.org/numba-doc/0.13/CUDAJit.html) - Numba can compile python functions into CUDA code.
163172

164173

165174
## Graphical interfaces
166175

167-
* [pyqt5]() -
176+
* [pyqt5](http://pyqt.sourceforge.net/Docs/PyQt5/) - Library which lets you use the Qt GUI framework (itself written in C++) from python.
168177

169178

170179
## Job scheduling
171180

172-
* [experi]() -
181+
* [experi](https://experi.readthedocs.io/en/latest/) - An interface for managing computational experiments with many independent variables.
182+
* [lancet](http://ioam.github.io/lancet/) - Launch jobs, organize the output, and dissect the results.
173183
* [papermill](https://papermill.readthedocs.io/en/latest/) - A tool for parameterizing, executing, and analyzing multiple Jupyter Notebooks.
174184

175185

176186
## Labelled data
177187

178-
* [pandas]() -
179-
* [xarray]() -
188+
* [pandas](https://pandas.pydata.org/) - Major library for data analysis, made more powerful through the use of labelled data.
189+
* [xarray](http://xarray.pydata.org/en/stable/) - N-dimensional labelled arrays and datasets.
190+
Allows you to perform operations with incredible ease and clarity:
191+
```python
192+
average_temp = data['temperature'].sel('longitude'=40).mean(dim='time')
193+
```
180194

181195

182196
## Mathematical library functions
@@ -229,18 +243,21 @@ ds['density'].mean(dim='time')
229243

230244
## Physical Units
231245

232-
* [pint]() -
233-
* [astropy.units]()
246+
*Keep track of which physical units your numbers are written in.*
247+
248+
* [pint](https://pint.readthedocs.io/en/0.9/) - Package to define, operate and manipulate physical quantities.
249+
* [astropy.units](http://docs.astropy.org/en/stable/units/) - Submodule of astropy which handles units. Units multiply numpy arrays directly.
234250

235251

236252
## Plotting
237253

238254
*Producing static plots of publication quality.*
239255

240-
* [matplotlib]() -
256+
* [matplotlib](https://matplotlib.org/) - A 2D plotting library which produces publication quality figures in a variety of hardcopy formats and interactive environments across platforms.
257+
The standard way to plot data in python.
241258
* [anatomy of matplotlib](https://github.com/matplotlib/AnatomyOfMatplotlib) - Tutorial on how matplotlib is structured.
242-
* [scientific-matplotlib]() -
243-
* [seaborn]() -
259+
* [scientific-matplotlib](https://github.com/garrettj403/SciencePlots) - Matplotlib stylesheets for scientifc plots.
260+
* [seaborn](https://seaborn.pydata.org/) - A data visualisation library based on matplotlib. Produces much prettier plots than out-of-the-box matplotlib will.
244261
* [xarray.plot](http://xarray.pydata.org/en/stable/plotting.html) - Submodule of xarray which makes plotting into a one-line job: `data['density'].plot()`.
245262
* [colorcet](http://colorcet.pyviz.org/) - A set of useful [perceptually uniform](https://arxiv.org/abs/1509.03700) colormaps for plotting scientific data
246263

@@ -250,13 +267,14 @@ ds['density'].mean(dim='time')
250267
* [Binder](https://mybinder.org/) - Online Jupyter Notebook hosting for GitHub repositories.
251268
Allows users to run Jupyter notebooks from GitHub repositories in the cloud, without Python installed locally.
252269
* [nb_pdf_template](https://github.com/t-makaro/nb_pdf_template) - A more accurate representation of jupyter notebooks when converting to pdfs.
253-
* [RISE]() - A plugin for Jupyter which turns notebooks into slick presentations.
254-
* [jupyter-rise]() -
270+
* [RISE](https://rise.readthedocs.io/en/docs_hot_fixes/) - A plugin for Jupyter which turns notebooks into slick presentations.
271+
* [jupyter-rise](https://github.com/binder-examples/jupyter-rise) - Automatically launch the RISE plugin from Binder. Great for giving presentations remotely.
255272

256273

257274
## Profiling and benchmarking
258275

259-
* [py-spy](https://github.com/benfred/py-spy) - A profiler for python code which doesn't interfere with the running prohttps://palletsprojects.com/p/click/cess.
276+
* [py-spy](https://github.com/benfred/py-spy) - A profiler for python code which doesn't interfere with the running process.
277+
* [pytest-benchmark](https://pytest-benchmark.readthedocs.io/en/stable/) - A pytest fixture for benchmarking code.
260278

261279

262280
## Scripting
@@ -306,12 +324,14 @@ Basically magic, compatible with pytest, and the algorithms used in the implemen
306324

307325
## Visualisation
308326

327+
There are currently many competing visualisation libaries in python. 3D support is somewhat lacking though.**
328+
309329
* [animatplot](https://animatplot.readthedocs.io/en/stable/) - A wrapper around `matplotlib`'s `funcanimation` library - makes it very easy to animate matplotlib plots.
310330
* [mayavi](http://docs.enthought.com/mayavi/mayavi/) - 3D scientific data visualization and plotting in Python.
311331
* [cartopy](https://scitools.org.uk/cartopy/docs/latest/) - A library for cartographic projections and plots, with matplotlib support.
312-
* [bokeh]() -
313-
* [plotly]() -
314-
* [holoviews]() -
332+
* [bokeh](https://bokeh.pydata.org/en/latest/) - Bokeh is an interactive visualization library that targets modern web browsers for presentation.
333+
* [plotly](https://plot.ly/python/) - Plotly's Python graphing library makes interactive, publication-quality graphs online.
334+
* [holoviews](http://holoviews.org/) - Stop plotting your data - annotate your data and let it visualize itself.
315335
* [ipyvolume](https://ipyvolume.readthedocs.io/en/latest/index.html#built-on-ipywidgets) - 3d plotting for Python in the Jupyter notebook.
316336
* [vispy](http://vispy.org/index.htmlhttp://vispy.org/index.html) - Interactive scientific visualisation in python.
317337
* [yt](http://yt-project.org/) - Very powerful software suite for analysing and visualising volumetric data.

0 commit comments

Comments
 (0)