Skip to content

Commit c27306d

Browse files
committed
Finished domain-specific section
1 parent 95d72ab commit c27306d

File tree

1 file changed

+62
-28
lines changed

1 file changed

+62
-28
lines changed

README.md

Lines changed: 62 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ resources, all particularly useful for scientific Python users.
55

66
Intended for students and researchers in the sciences who want to get
77
the most out of the open-source Python ecosystem.
8+
Aims to provide a list of tools useful for common tasks for scientists,
9+
without mentioning things which they are unlikely ever to need
10+
(e.g. authentication, databases, networking, NLP).
811

912
There is a section of [must-haves for beginners](#beginners-recommendations).
1013

@@ -20,13 +23,15 @@ ways.
2023
- [Algebra](#algebra)
2124
- [Animations](#animations)
2225
- [Bayesian Analysis](#bayesian-analysis)
26+
- [Better Scientific Software](#better-scientific-software)
2327
- [Code Quality](#code-quality)
2428
- [Data Storage](#data-storage)
25-
- [Dates and Times](#dates-and-times)
2629
- [Debugging](#debugging)
2730
- [Development Environments](#development-environments)
2831
- [Documentation](#documentation)
2932
- [Domain-specific](#domain-specific)
33+
- [Error Handling](#error-handling)
34+
- [Forecasting](#forecasting)
3035
- [Gotchas](#gotchas)
3136
- [GPU Acceleration](#gpu-acceleration)
3237
- [Graphical Interfaces](#graphical-interfaces)
@@ -41,6 +46,7 @@ ways.
4146
- [Plotting](#plotting)
4247
- [Presentations](#presentations)
4348
- [Profiling and Benchmarking](#profiling-and-benchmarking)
49+
- [Scripting](#scripting)
4450
- [Speed](#speed)
4551
- [Statistics](#statistics)
4652
- [Testing](#testing)
@@ -57,17 +63,23 @@ ways.
5763
*Libraries for manipulation of symbolic algebra, analytic integration etc.*
5864

5965
* [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.
6167

6268

6369
## Animations
6470

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.
6672

6773

6874
## Bayesian Analysis
6975

7076
* [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.
7183

7284

7385
## Code Quality
@@ -85,11 +97,6 @@ ways.
8597
* [MITgcm]() -
8698

8799

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-
93100
## Debugging
94101

95102
* [pdb]() - Python debugger
@@ -107,29 +114,41 @@ Has a professional version, which is free for students.
107114

108115
## Documentation
109116

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.
111119
* [nbconvert](https://nbconvert.readthedocs.io/en/latest/) - Convert jupyter notebooks to other formats such as PDF, LaTeX, HTML.
112120

113121

114122
## Domain-specific
115123

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.*
117125

118-
* [astropy]() -
126+
* [astropy](http://www.astropy.org/) - Various tools and functionality for astronomy and astrophysics.
119127
* [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.
122129
* [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.
125134
* [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.
127138
* [TomoPy](https://tomopy.readthedocs.io/en/latest/) - Package for tomographic data processing and image reconstruction.
128139

129140

141+
## Error handling
142+
143+
* [errors]() -
144+
* [warnings]() - Throw proper warnings instead of using print statements. Python standard library module.
145+
* [logging]()
146+
147+
130148
## Forecasting
131149

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.
133152

134153

135154
## Gotchas
@@ -175,7 +194,7 @@ Ultimately just a contiguous-in-memory C array, wrapped very nicely with python.
175194

176195
## Optimisation problems
177196

178-
* [nlopt]() -
197+
* [nlopt](https://github.com/stevengj/nlopt) - Library for nonlinear optimization, wrapping many algorithms for global and local, constrained or unconstrained, optimization.
179198

180199

181200
## Package Management
@@ -222,22 +241,33 @@ ds['density'].mean(dim='time')
222241
* [anatomy of matplotlib](https://github.com/matplotlib/AnatomyOfMatplotlib) - Tutorial on how matplotlib is structured.
223242
* [scientific-matplotlib]() -
224243
* [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()`.
226245
* [colorcet](http://colorcet.pyviz.org/) - A set of useful [perceptually uniform](https://arxiv.org/abs/1509.03700) colormaps for plotting scientific data
227246

228247

229248
## Presentations and sharing work
230249

231-
* [RISE]() -
232250
* [Binder](https://mybinder.org/) - Online Jupyter Notebook hosting for GitHub repositories.
233251
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.
234254
* [jupyter-rise]() -
235-
* [nb_pdf_template]() -
236255

237256

238257
## Profiling and benchmarking
239258

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, with as 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.
241271

242272

243273
## Speed
@@ -276,19 +306,23 @@ Basically magic, compatible with pytest, and the algorithms used in the implemen
276306

277307
## Visualisation
278308

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.
282312
* [bokeh]() -
283313
* [plotly]() -
284314
* [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.
285319

286320

287321
## Workflow
288322

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.*
290324

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.
292326
* [jupyter notebooks](https://jupyter.org/) -
293327
* [jupyterlab](https://jupyterlab.readthedocs.io/en/stable/) - A development environment in which you can write Jupyter notebooks.
294328
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
303337
* Next, wrap your data into clearer, higher-level objects with either `Pandas` or `xarray` (use `xarray` if your data has more than one dimension).
304338
* Before writing new analysis functions, check if someone has already solved your problem for you in `scipy` , or in one of python's domain-specific scientific software packages.
305339
* 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

Comments
 (0)