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
-[Profiling and Benchmarking](#profiling-and-benchmarking)
49
+
-[Scripting](#scripting)
44
50
-[Speed](#speed)
45
51
-[Statistics](#statistics)
46
52
-[Testing](#testing)
@@ -57,17 +63,23 @@ ways.
57
63
*Libraries for manipulation of symbolic algebra, analytic integration etc.*
58
64
59
65
*[SymPy]() -
60
-
*[sage]()
66
+
*[sagemath](http://www.sagemath.org/) - Mathematical software system with features covering multiple aspects of mathematics, including algebra, combinatorics, numerical mathematics, number theory, and calculus.
61
67
62
68
63
69
## Animations
64
70
65
-
*[animatplot]() -
71
+
*[animatplot](https://animatplot.readthedocs.io/en/stable/) - A wrapper around `matplotlib`'s `funcanimation` library - makes it very easy to animate matplotlib plots.
66
72
67
73
68
74
## Bayesian Analysis
69
75
70
76
*[pymc]() -
77
+
*[arviz](https://arviz-devs.github.io/arviz/index.html) - Exploratory analysis of Bayesian models.
78
+
79
+
80
+
## Better Scientific Software
81
+
82
+
*[Better Scientific Software](https://bssw.io/) - Articles and resources on how to write better scientific software.
71
83
72
84
73
85
## Code Quality
@@ -85,11 +97,6 @@ ways.
85
97
*[MITgcm]() -
86
98
87
99
88
-
## Dates and Times
89
-
90
-
*[dateutil](https://dateutil.readthedocs.io/en/stable/) - Provides powerful extensions to the standard datetime module available in Python.
91
-
92
-
93
100
## Debugging
94
101
95
102
*[pdb]() - Python debugger
@@ -107,29 +114,41 @@ Has a professional version, which is free for students.
107
114
108
115
## Documentation
109
116
110
-
*[sphinx]() -
117
+
*[sphinx](http://www.sphinx-doc.org/en/master/) - Sphinx is a tool that makes it easy to create intelligent and beautiful documentation, from the docstrings in your code.
118
+
Originally created for documenting the python language itself.
111
119
*[nbconvert](https://nbconvert.readthedocs.io/en/latest/) - Convert jupyter notebooks to other formats such as PDF, LaTeX, HTML.
112
120
113
121
114
122
## Domain-specific
115
123
116
-
*Libraries of tools tools developed for python users in various fields of science.*
124
+
*Libraries of tools developed for python users in various fields of science.*
117
125
118
-
*[astropy]() -
126
+
*[astropy](http://www.astropy.org/) - Various tools and functionality for astronomy and astrophysics.
119
127
*[Biopython](https://biopython.org/) - Tools for biological computation.
120
-
*[cartopy]() -
121
-
*[geoviews](http://geoviews.org/) - makes it easy to explore and visualize geographical, meteorological, and oceanographic datasets, such as those used in weather, climate, and remote sensing research.
128
+
*[geoviews](http://geoviews.org/) - Makes it easy to explore and visualize geographical, meteorological, and oceanographic datasets, such as those used in weather, climate, and remote sensing research.
122
129
*[MetPy](https://unidata.github.io/MetPy/latest/) - MetPy is a collection of tools in Python for reading, visualizing and performing calculations with weather data.
123
-
*[PlasmaPy]() -
124
-
*[psychopy]() -
130
+
*[NetworkX](http://networkx.github.io/) - A package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks.
131
+
*[nilearn](http://nilearn.github.io/) - Machine learning for Neuro-Imaging in python.
132
+
*[PlasmaPy](http://docs.plasmapy.org/en/stable/) - Various tools for plasma physics.
133
+
*[psychopy](http://www.psychopy.org/) - An open-source application allowing you run a wide range of neuroscience, psychology and psychophysics experiments.
125
134
*[pyrocko](https://pyrocko.org/) - A seismology toolkit for python.
126
-
*[SpectroscoPyx](https://github.com/PlasmaPy/SpectroscoPyx) - A community developed python package for spectroscopy.
135
+
*[scikit-beam](https://github.com/scikit-beam/scikit-beam) - Data analysis tools for X-Ray, Neutron and Electron sciences
136
+
*[scikit-spectra](http://hugadams.github.io/scikit-spectra/) - A community developed python package for spectroscopy.
137
+
*[SunPy](https://sunpy.org/) - SunPy is a data-analysis environment specializing in providing the software necessary to analyze solar and heliospheric data in Python.
127
138
*[TomoPy](https://tomopy.readthedocs.io/en/latest/) - Package for tomographic data processing and image reconstruction.
128
139
129
140
141
+
## Error handling
142
+
143
+
*[errors]() -
144
+
*[warnings]() - Throw proper warnings instead of using print statements. Python standard library module.
145
+
*[logging]()
146
+
147
+
130
148
## Forecasting
131
149
132
-
*[prophet]() -
150
+
*[prophet](https://facebook.github.io/prophet/) - Tool for producing high quality forecasts for time series data that has multiple seasonality with linear or non-linear growth.
151
+
Developed by Facebook.
133
152
134
153
135
154
## Gotchas
@@ -175,7 +194,7 @@ Ultimately just a contiguous-in-memory C array, wrapped very nicely with python.
175
194
176
195
## Optimisation problems
177
196
178
-
*[nlopt]() -
197
+
*[nlopt](https://github.com/stevengj/nlopt) - Library for nonlinear optimization, wrapping many algorithms for global and local, constrained or unconstrained, optimization.
* [anatomy of matplotlib](https://github.com/matplotlib/AnatomyOfMatplotlib) - Tutorial on how matplotlib is structured.
223
242
* [scientific-matplotlib]() -
224
243
* [seaborn]() -
225
-
* [xarray.plot]() -
244
+
* [xarray.plot](http://xarray.pydata.org/en/stable/plotting.html) - Submodule of xarray which makes plotting into a one-line job: `data['density'].plot()`.
226
245
* [colorcet](http://colorcet.pyviz.org/) - A set of useful [perceptually uniform](https://arxiv.org/abs/1509.03700) colormaps for plotting scientific data
227
246
228
247
229
248
## Presentations and sharing work
230
249
231
-
* [RISE]() -
232
250
* [Binder](https://mybinder.org/) - Online Jupyter Notebook hosting for GitHub repositories.
233
251
Allows users to run Jupyter notebooks from GitHub repositories in the cloud, without Python installed locally.
252
+
* [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.
234
254
* [jupyter-rise]() -
235
-
* [nb_pdf_template]() -
236
255
237
256
238
257
## Profiling and benchmarking
239
258
240
-
* [py-spy](https://github.com/benfred/py-spy) - A profiler for python code which doesn't interfere with the running process.
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.
260
+
261
+
262
+
## Scripting
263
+
264
+
*Tools which are likely to be useful when writing python scripts to automate common tasks.*
265
+
266
+
* [click](https://palletsprojects.com/p/click/) - Run your scripts from the command line, withas little extra code as possible.
267
+
* [dateutil](https://dateutil.readthedocs.io/en/stable/) - Provides powerful extensions to the standard datetime module available in Python.
268
+
* [gitpython](https://gitpython.readthedocs.io/en/stable/) - Interact with git from python. Useful for tasks like checking if your simulation code has uncommitted changes before executing it.
269
+
* [pathlib](https://docs.python.org/3/library/pathlib.html) - Use this anytime you want to do anything with a file path. Obviates the need for`os`and`sys` most of the time.
270
+
A module in the python standard library.
241
271
242
272
243
273
## Speed
@@ -276,19 +306,23 @@ Basically magic, compatible with pytest, and the algorithms used in the implemen
276
306
277
307
## Visualisation
278
308
279
-
* [animatplot]() -
280
-
* [mayavi]() -
281
-
* [cartopy]()
309
+
* [animatplot](https://animatplot.readthedocs.io/en/stable/) - A wrapper around `matplotlib`'s `funcanimation` library - makes it very easy to animate matplotlib plots.
310
+
* [mayavi](http://docs.enthought.com/mayavi/mayavi/) -3D scientific data visualization and plotting in Python.
311
+
* [cartopy](https://scitools.org.uk/cartopy/docs/latest/) - A library for cartographic projections and plots, with matplotlib support.
282
312
* [bokeh]() -
283
313
* [plotly]() -
284
314
* [holoviews]() -
315
+
* [ipyvolume](https://ipyvolume.readthedocs.io/en/latest/index.html#built-on-ipywidgets) - 3d plotting for Python in the Jupyter notebook.
316
+
* [vispy](http://vispy.org/index.htmlhttp://vispy.org/index.html) - Interactive scientific visualisation in python.
317
+
* [yt](http://yt-project.org/) - Very powerful software suite for analysing and visualising volumetric data.
318
+
Written by astrophysicists, but since applied to many other domains.
285
319
286
320
287
321
## Workflow
288
322
289
-
*Don't just write and run python scripts. Tools to make your workflow faster, clearer, and easier to come back to later.*
323
+
*Don't just write and run python scripts. Tools to make your workflow faster, clearer, and easier to come back to later.*
290
324
291
-
* [ipython](https://ipython.readthedocs.io/en/stable/) - Run python interactively, like MatLab! Forms the backend of jupyter notebooks.
325
+
* [ipython](https://ipython.readthedocs.io/en/stable/) - Run python interactively, like MatLab! Forms the backend of Jupyter notebooks.
292
326
* [jupyter notebooks](https://jupyter.org/) -
293
327
* [jupyterlab](https://jupyterlab.readthedocs.io/en/stable/) - A development environment in which you can write Jupyter notebooks.
294
328
The spiritual successor to spyder, in that it is designed specifically for scientists.
@@ -303,4 +337,4 @@ The spiritual successor to spyder, in that it is designed specifically for scien
303
337
* Next, wrap your data into clearer, higher-level objects with either `Pandas`or`xarray` (use `xarray`if your data has more than one dimension).
304
338
* Before writing new analysis functions, check if someone has already solved your problem for you in`scipy` , orin one of python's domain-specific scientific software packages.
305
339
* As soon as you start writing your own analysis functions, test they're correct with unit tests written with `pytest`.
306
-
* Analyse your data interactively with`ipython`, and record your work in a `jupyter notebook`.
340
+
* Analyse your data interactively with`ipython`, and record your work in a `Jupyter notebook`.
0 commit comments