You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+50-30Lines changed: 50 additions & 30 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -62,7 +62,8 @@ ways.
62
62
63
63
*Libraries for manipulation of symbolic algebra, analytic integration etc.*
64
64
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.
66
67
*[sagemath](http://www.sagemath.org/) - Mathematical software system with features covering multiple aspects of mathematics, including algebra, combinatorics, numerical mathematics, number theory, and calculus.
67
68
68
69
@@ -73,7 +74,7 @@ ways.
73
74
74
75
## Bayesian Analysis
75
76
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.
77
78
*[arviz](https://arviz-devs.github.io/arviz/index.html) - Exploratory analysis of Bayesian models.
78
79
79
80
@@ -84,22 +85,29 @@ ways.
84
85
85
86
## Code Quality
86
87
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.
90
91
*[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.
91
96
92
97
93
98
## Data Storage
94
99
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.
98
106
99
107
100
108
## Debugging
101
109
102
-
*[pdb]() - Python debugger
110
+
*[pdb](https://docs.python.org/3/library/pdb.html) - The Python debugger. Part of the python standard library.
103
111
104
112
105
113
## Development Environments
@@ -129,6 +137,7 @@ Originally created for documenting the python language itself.
129
137
*[MetPy](https://unidata.github.io/MetPy/latest/) - MetPy is a collection of tools in Python for reading, visualizing and performing calculations with weather data.
130
138
*[NetworkX](http://networkx.github.io/) - A package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks.
131
139
*[nilearn](http://nilearn.github.io/) - Machine learning for Neuro-Imaging in python.
140
+
*[Parcels](http://oceanparcels.org/) - Track particles along circulating ocean currents.
132
141
*[PlasmaPy](http://docs.plasmapy.org/en/stable/) - Various tools for plasma physics.
133
142
*[psychopy](http://www.psychopy.org/) - An open-source application allowing you run a wide range of neuroscience, psychology and psychophysics experiments.
134
143
*[pyrocko](https://pyrocko.org/) - A seismology toolkit for python.
@@ -140,9 +149,9 @@ Originally created for documenting the python language itself.
140
149
141
150
## Error handling
142
151
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.
146
155
147
156
148
157
## Forecasting
@@ -153,30 +162,35 @@ Developed by Facebook.
153
162
154
163
## Gotchas
155
164
156
-
*[python-gotchas]() -
165
+
*[python-gotchas](https://github.com/satwikkansal/wtfpython) - A collection of surprising Python snippets and lesser-known features.
157
166
158
167
159
168
## GPU acceleration
160
169
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.
163
172
164
173
165
174
## Graphical interfaces
166
175
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.
168
177
169
178
170
179
## Job scheduling
171
180
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.
173
183
*[papermill](https://papermill.readthedocs.io/en/latest/) - A tool for parameterizing, executing, and analyzing multiple Jupyter Notebooks.
174
184
175
185
176
186
## Labelled data
177
187
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:
*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.
234
250
235
251
236
252
## Plotting
237
253
238
254
*Producing static plots of publication quality.*
239
255
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.
241
258
* [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.
244
261
* [xarray.plot](http://xarray.pydata.org/en/stable/plotting.html) - Submodule of xarray which makes plotting into a one-line job: `data['density'].plot()`.
245
262
* [colorcet](http://colorcet.pyviz.org/) - A set of useful [perceptually uniform](https://arxiv.org/abs/1509.03700) colormaps for plotting scientific data
* [Binder](https://mybinder.org/) - Online Jupyter Notebook hosting for GitHub repositories.
251
268
Allows users to run Jupyter notebooks from GitHub repositories in the cloud, without Python installed locally.
252
269
* [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.
255
272
256
273
257
274
## Profiling and benchmarking
258
275
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.
260
278
261
279
262
280
## Scripting
@@ -306,12 +324,14 @@ Basically magic, compatible with pytest, and the algorithms used in the implemen
306
324
307
325
## Visualisation
308
326
327
+
There are currently many competing visualisation libaries in python. 3D support is somewhat lacking though.**
328
+
309
329
* [animatplot](https://animatplot.readthedocs.io/en/stable/) - A wrapper around `matplotlib`'s `funcanimation` library - makes it very easy to animate matplotlib plots.
310
330
* [mayavi](http://docs.enthought.com/mayavi/mayavi/) -3D scientific data visualization and plotting in Python.
311
331
* [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.
0 commit comments