Elamur Research
☰
home / papers / 2019 / SciPy 1.0--Fundamental Algorithms for Scientific Computing in Python

SciPy 1.0--Fundamental Algorithms for Scientific Computing in Python

Written for the Research library (claude-opus-5-5) from the paper text. Original — arxiv.org/pdf/1907.10121v1

Summary

Scientists working in Python need a reliable, well-tested set of numerical algorithms that sits between the low-level NumPy array layer and specialised domain packages. This paper describes SciPy, the open-source library that has played that role since version 0.1 in 2001, and marks its 1.0 release in late 2017. The authors trace its origins to the Numeric era, when graduate students wrapped established Fortran and C codes such as ODEPACK, QUADPACK and MINPACK for interactive use. They then lay out the library's current scope: optimization, integration, interpolation, linear algebra, sparse matrices, signal and image processing, spatial data structures, statistics and special functions. They also explain how the project is developed and governed, covering maintainers, release cadence, testing culture and a public roadmap. The main result is evidence of very wide adoption: hundreds of contributors, millions of downloads a year and use in major science such as LIGO and the first M87 black hole image. The paper serves as SciPy's standard citation and as a guide to what the library reliably provides.

Key points

  • By May 2018, SciPy had 610 unique code contributors and more than 19,000 accepted commits. It is maintained by 15 active maintainers and follows a roughly 6-month release cycle.
  • In 2017, SciPy was downloaded 13,096,468 times from PyPI and 5,776,017 times via the default conda channel. These figures are a lower bound on total installs.
  • SciPy is used by about 47% of machine learning projects on GitHub. It ships with macOS and the Intel Distribution for Python, and its website had been cited more than 3,000 times.
  • SciPy builds on NumPy and in turn underpins higher-level libraries such as scikit-learn and scikit-image. Some features moved into SciPy from other projects, for example binned statistics, which started in an Astropy-affiliated package.
  • Roadmap items after 1.0 include PROPACK wrappers for faster SVD, quaternion rotation support in spatial, NURBS and tensor-product splines in interpolate, and more global optimizers.

Our summary of the paper, in our own words — not its text. The work belongs to its authors; read it at the links above.

Fields: Mathematics & statistics

Cited by

392 papers of our library cite it (of the 140673 whose bibliographies we read); 6 of them have a page here, 386 not yet.

Cite

The paper itself, not this page. BibTeX from the library's record of the work. DOI 10.1038/s41592-019-0686-2 · arXiv 1907.10121

@misc{virtanen2019scipy,
  title = {{SciPy 1.0--Fundamental Algorithms for Scientific Computing in Python}},
  author = {Virtanen, Pauli and Gommers, Ralf and Oliphant, Travis E. and Haberland, Matt and Reddy, Tyler and Cournapeau, David and Burovski, Evgeni and Peterson, Pearu and Weckesser, Warren and Bright, Jonathan and Walt, Stéfan J. van der and Brett, Matthew and Wilson, Joshua and Millman, K. Jarrod and Mayorov, Nikolay and Nelson, Andrew R. J. and Jones, Eric and Kern, Robert and Larson, Eric and Carey, CJ and Polat, İlhan and Feng, Yu and Moore, Eric W. and VanderPlas, Jake and Laxalde, Denis and Perktold, Josef and Cimrman, Robert and Henriksen, Ian and Quintero, E. A. and Harris, Charles R and Archibald, Anne M. and Ribeiro, Antônio H. and Pedregosa, Fabian and Mulbregt, Paul van},
  year = {2019},
  doi = {10.1038/s41592-019-0686-2},
  eprint = {1907.10121},
  archivePrefix = {arXiv},
  url = {https://doi.org/10.1038/s41592-019-0686-2}
}

References

156 references, 0 of them with a card of ours. ↗ leads to the work, «find» searches for one we have no id for yet.

  1. Oliphant, T. E. Guide to NumPy (Trelgol Publishing USA, 2006), 1st edn. URL https://oez.es/Guide%20to% 20NumPy.pdf. ↗
  2. van der Walt, S., Colbert, S. C. & Varoquaux, G. The NumPy array: a structure for efficient numerical computation. Comput. Sci. & Eng. 13, 22–30 (2011). URL https://doi.org/10.1109/MCSE.2011.37. ↗
  3. Pedregosa, F. et al. Scikit-learn: Machine learning in Python. J. Mach. Learn. Res. 12, 2825–2830 (2011). URL http://www.jmlr.org/papers/volume12/pedregosa11a/pedregosa11a.pdf. ↗
  4. van der Walt, S. et al. scikit-image: image processing in Python. PeerJ 2, e453 (2014). URL https://doi.org/10. 7717/peerj.453. find
  5. Nitz, A. et al. gwastro/pycbc: PyCBC v1.13.2 release (2018). URL https://doi.org/10.5281/zenodo. 1596771. — [doi:10.5281/zenodo](https://doi.org/10.5281/zenodo) ↗
  6. Vallisneri, M., Kanner, J., Williams, R., Weinstein, A. & Stephens, B. The LIGO open science center. J. Physics: Conf. Ser. 610, 012021 (2015). URL https://doi.org//10.1088/1742-6596/610/1/012021. — [doi:10.1088/1742-6596/610/1/012021](https://doi.org/10.1088/1742-6596/610/1/012021) ↗
  7. Abbott, B. P. et al. GW150914: First results from the search for binary black hole coalescence with Advanced LIGO. Phys. Rev. D 93, 122003 (2016). URL https://doi.org/10.1103/PhysRevD.93.122003. — [doi:10.1103/physrevd.93.122003](https://doi.org/10.1103/physrevd.93.122003) ↗
  8. Abbott, B. P. et al. GW170817: Observation of gravitational waves from a binary neutron star inspiral. Phys. Rev. Lett. 119, 161101 (2017). URL https://doi.org/10.1103/PhysRevLett.119.161101. — [doi:10.1103/physrevlett.119.161101](https://doi.org/10.1103/physrevlett.119.161101) ↗
  9. The Event Horizon Telescope Collaboration et al. First M87 event horizon telescope results. III. data processing and calibration. The Astrophys. J. Lett. 875, L3 (2019). URL https://doi.org/10.3847/2041-8213/ab0c57. — [doi:10.3847/2041-8213/ab0c57](https://doi.org/10.3847/2041-8213/ab0c57) ↗
  10. Blanton, K. At Mathworks, support + fun = success: CEO Jack Little believes in power of his workers – and their ideas (20 Apr. 1997). The Boston Globe J5. URL https://www.newspapers.com/clip/26952040/the\_ boston\_globe/. ↗
  11. Howell, D. Jack Dangermond’s digital mapping lays it all out (14 Aug. 2009). Investor’s Bus. Dly. URL https://web.archive.org/web/20100510064955/http://www.investors.com/ NewsAndAnalysis/Article.aspx?id=503454. ↗
  12. Port, O. Simple solutions (3 Oct. 2005). BusinessWeek 24–24. URL https://www.scribd.com/document/ 134233902/Business-Week-03-Oct-2005. ↗
  13. Open Source Community. Numeric and scientific (2017). NumericAndScientific. URL https://wiki.python.org/moin/ ↗
  14. Open Source Community. PythonConferences. URL https://wiki.python.org/moin/Python conferences (2018). ↗
  15. van Rossum, G. Python/C API reference manual (2001). URL http://citeseerx.ist.psu.edu/viewdoc/ download?doi=10.1.1.211.6702&rep=rep1&type=pdf. ↗
  16. Developers, C. The Python programming language (2019). URL https://github.com/python/cpython. ↗
  17. Hugunin, J. The matrix object proposal (very long) (1995). URL https://mail.python.org/pipermail/ matrix-sig/1995-August/000002.html. ↗
  18. Hugunin, J. Extending Python for numerical computation (1995). hugunin95numpy.html. URL http://hugunin.net/papers/ ↗
  19. Oliphant, T. E. Moving forward from the last decade of SciPy (2010). URL https://conference.scipy.org/ scipy2010/slides/travis\_oliphant\_keynote.pdf. ↗
  20. Oliphant, T. E. Some Python modules (1999). URL https://web.archive.org/web/19990125091242/ http://oliphant.netpedia.net:80/. ↗
  21. Oliphant, T. E. Modules to enhance numerical Python (2000). URL https://web.archive.org/web/ 20001206213500/http://oliphant.netpedia.net:80/. ↗
  22. Oliphant, T. E. Multipack (a collection of FORTRAN routines interfaced with NumPy). URL http://pylab. sourceforge.net/multipack.html. find
  23. Hindmarsh, A. C. ODEPACK, a systematized collection of ODE solvers. Sci. Comput. 55–64 (1983). URL https: //www3.nd.edu/˜powers/ame.60636/hindmarsh1983.pdf. find
  24. Piessens, R., de Doncker-Kapenga, E., Überhuber, C. W. & Kahaner, D. K. QUADPACK: a subroutine package for automatic integration (Springer-Verlag, New York, NY, USA, 1983). URL https://doi.org/10.1007/ 978-3-642-61786-7. find
  25. Moré, J. J., Garbow, B. S. & Hillstrom, K. E. User guide for MINPACK-1. Tech. Rep. ANL-80-74, Argonne National Laboratory, Argonne, IL, USA (1980). URL http://cds.cern.ch/record/126569/files/CM-P00068642. pdf. ↗
  26. Peterson, P. F2PY: a tool for connecting Fortran and Python programs. Int. J. Comput. Sci. Eng. 4, 296–305 (2009). URL https://doi.org/10.1504/IJCSE.2009.029165. — [doi:10.1504/ijcse.2009.029165](https://doi.org/10.1504/ijcse.2009.029165) ↗
  27. Strangman, G. Python modules (2000). URL https://web.archive.org/web/20001022231108/http: //www.nmr.mgh.harvard.edu/Neural\_Systems\_Group/gary/python.html. ↗
  28. SciPy Developers. SciPy.org (2001). URL https://web.archive.org/web/20010309040805/http:// scipy.org:80/. ↗
  29. Vaught, T. N. SciPy developer mailing list now online (2001). URL https://mail.python.org/pipermail/ scipy-dev/2001-June/000000.html. ↗
  30. Jones, E. ANN: SciPy 0.10 – scientific computing with Python (2001). URL https://mail.python.org/ pipermail/python-list/2001-August/106419.html. ↗
  31. Vaught, T. N. Reference documentation and tutorial documentation are now available for download as tarballs (2002). URL https://web.archive.org/web/20021013204556/http://www.scipy.org:80/ scipy/site\_content/site\_news/docs\_released1. ↗
  32. Vaught, T. N. [ANN] SciPy ’02 - Python for scientific computing workshop (2002). URL https://mail.python. org/pipermail/numpy-discussion/2002-June/001511.html. ↗
  33. Ascher, D., Dubois, P. F., Hinsen, K., Hugunin, J. & Oliphant, T. E. An open source project: Numerical Python (2001). URL http://www.numpy.org/\_downloads/numeric-manual.pdf. ↗
  34. Greenfield, P. How Python slithered into astronomy (2011). URL https://conference.scipy.org/ scipy2011/slides/greenfield\_keynote\_astronomy.pdf. ↗
  35. Schroeder, W., Martin, K. & Lorensen, B. The Visualization Toolkit: An Object-Oriented Approach to 3D Graphics (Kitware, 2004), 3rd edn. URL http://cds.cern.ch/record/798217/files/1930934122\_TOC.pdf. ↗
  36. Ramachandran, P. MayaVi uses Python for scientific data visualization (2003). URL https://web.archive.org/ web/20030731122452/http://pythonology.org/success&story=mayavi. ↗
  37. Kluyver, T. et al. Jupyter Notebooks – a publishing format for reproducible computational workflows. In Loizides, F. & Schmidt, B. (eds.) Positioning and Power in Academic Publishing: Players, Agents and Agendas, 87 – 90 (IOS Press, 2016). URL http://doi.org/10.3233/978-1-61499-649-1-87. — [doi:10.3233/978-1-61499-649-1-87](https://doi.org/10.3233/978-1-61499-649-1-87) ↗
  38. MATLAB (The MathWorks, Inc., Natick, MA, United States). URL https://www.mathworks.com/products/ matlab.html. ↗
  39. Hunter, J. ANN: matplotlib 0.1 (2003). URL https://mail.python.org/pipermail/python-list/ 2003-April/193167.html. ↗
  40. Greenfield, P., Miller, J. T., Hsu, J. & White, R. L. numarray: A new scientific array package for Python. PyCon DC (2003). URL http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.112.9899&rep= rep1&type=pdf. \#\# 41. NumPy Developers. v1.0 (2006). URL https://github.com/numpy/numpy/releases/tag/… ↗
  41. Dubois, P. F. Python: Batteries included. Comput. Sci. & Eng. 9, 7–9 (2007). URL https://doi.org/10.1109/ MCSE.2007.51. find
  42. Oliphant, T. E. Python for scientific computing. Comput. Sci. & Eng. 9, 10–20 (2007). URL https://doi.org/10. 1109/MCSE.2007.58. find
  43. Pérez, F. & Granger, B. E. IPython: a system for interactive scientific computing. Comput. Sci. & Eng. 9 (2007). URL https://doi.org/10.1109/MCSE.2007.53. — [doi:10.1109/mcse.2007.53](https://doi.org/10.1109/mcse.2007.53) ↗
  44. Hunter, J. D. Matplotlib: A 2D graphics environment. Comput. Sci. & Eng. 9, 90–95 (2007). URL https://doi. org/10.1109/MCSE.2007.55. — [doi:10.1109/mcse.2007.55](https://doi.org/10.1109/mcse.2007.55) find
  45. Myers, C. R., Gutenkunst, R. N. & Sethna, J. P. Python unleashed on systems biology. Comput. Sci. & Eng. 9 (2007). URL https://doi.org/10.1109/MCSE.2007.60. — [doi:10.1109/mcse.2007.60](https://doi.org/10.1109/mcse.2007.60) ↗
  46. Greenfield, P. Reaching for the stars with Python. Comput. Sci. & Eng. 9, 38–40 (2007). URL https://doi.org/ 10.1109/MCSE.2007.62. — [doi:10.1109/mcse.2007.62](https://doi.org/10.1109/mcse.2007.62) find
  47. Krauss, R. W. & Book, W. J. A Python module for modeling and control design of flexible robots. Comput. Sci. & Eng. 9, 41–45 (2007). URL https://doi.org/10.1109/MCSE.2007.44. — [doi:10.1109/mcse.2007.44](https://doi.org/10.1109/mcse.2007.44) ↗
  48. Bienstman, P., Vanholme, L., Bogaerts, W., Dumon, P. & Vandersteegen, P. Python in nanophotonics research. Comput. Sci. & Eng. 9, 46–47 (2007). URL https://doi.org/10.1109/MCSE.2007.59. — [doi:10.1109/mcse.2007.59](https://doi.org/10.1109/mcse.2007.59) ↗
  49. Mardal, K.-A., Skavhaug, O., Lines, G. T., Staff, G. A. & Ødegård, Å. Using Python to solve partial differential equations. Comput. Sci. & Eng. 9, 48–51 (2007). URL https://doi.org/10.1109/MCSE.2007.64. — [doi:10.1109/mcse.2007.64](https://doi.org/10.1109/mcse.2007.64) ↗
  50. Millman, K. J. & Brett, M. Analysis of functional magnetic resonance imaging in Python. Comput. Sci. & Eng. 9, 52–55 (2007). URL https://doi.org/10.1109/MCSE.2007.46. — [doi:10.1109/mcse.2007.46](https://doi.org/10.1109/mcse.2007.46) ↗
  51. Shi, X. Python for internet GIS applications. Comput. Sci. & Eng. 9, 56–59 (2007). URL https://doi.org/10. 1109/MCSE.2007.57. find
  52. Bäcker, A. Computational physics education with Python. Comput. Sci. & Eng. 9, 30–33 (2007). URL https: //doi.org/10.1109/MCSE.2007.48. — [doi:10.1109/mcse.2007.48](https://doi.org/10.1109/mcse.2007.48) find
  53. Myers, C. R. & Sethna, J. P. Python for education: Computational methods for nonlinear systems. Comput. Sci. & Eng. 9, 75–79 (2007). URL https://doi.org/10.1109/MCSE.2007.56. \#\# 55. SciPy Developers. Scikits (2019). URL https://www.scipy.org/scikits.html. — [doi:10.1109/mcse.2007.56](https://doi.org/10.1109/mcse.2007.56) ↗
  54. Millman, K. J. & Pérez, F. Developing open-source scientific practice. Implement. Reproducible Res. CRC Press. Boca Raton, FL 149–183 (2014). URL http://www.jarrodmillman.com/publications/ millman2014developing.pdf. ↗
  55. Brandl, G. & the Sphinx Team. Sphinx - Python documentation generator (2007). URL http://www.sphinx-doc. org/en/master/. ↗
  56. Virtanen, P. et al. pydocweb: A tool for collaboratively documenting Python modules via the web (2008). URL https://code.google.com/archive/p/pydocweb/. ↗
  57. van der Walt, S. The SciPy documentation project (technical overview). In Varoquaux, G., Vaught, T. & Millman, K. J. (eds.) Proceedings of the 7th Python in Science Conference (SciPy 2008), 27–28 (2008). URL http://conference. scipy.org/proceedings/scipy2008/paper\_5/. find
  58. Harrington, J. The SciPy documentation project. In Varoquaux, G., Vaught, T. & Millman, K. J. (eds.) Proceedings of the 7th Python in Science Conference (SciPy 2008), 33–35 (2008). URL http://conference.scipy.org/ proceedings/scipy2008/paper\_7/. ↗
  59. Harrington, J. & Goldsmith, D. Progress report: NumPy and SciPy documentation in 2009. In Varoquaux, G., van der Walt, S. & Millman, K. J. (eds.) Proceedings of the 8th Python in Science Conference (SciPy 2009), 84–87 (2009). URL http://conference.scipy.org/proceedings/scipy2009/paper\_14/. ↗
  60. Pérez, F., Langtangen, H. P. & LeVeque, R. CSE 2009: Python for scientific computing at CSE 2009. SIAM News (2009). URL https://archive.siam.org/news/news.php?id=1595. ↗
  61. Millman, K. J. & Aivazis, M. Python for scientists and engineers. Comput. Sci. & Eng. 13, 9–12 (2011). URL https://doi.org/10.1109/MCSE.2011.36. — [doi:10.1109/mcse.2011.36](https://doi.org/10.1109/mcse.2011.36) ↗
  62. Pérez, F., Granger, B. E. & Hunter, J. D. Python: an ecosystem for scientific computing. Comput. Sci. & Eng. 13, 13–21 (2011). URL https://doi.org/10.1109/MCSE.2010.119. — [doi:10.1109/mcse.2010.119](https://doi.org/10.1109/mcse.2010.119) ↗
  63. Behnel, S. et al. Cython: The best of both worlds. Comput. Sci. & Eng. 13, 31–39 (2011). URL https://doi.org/ 10.1109/MCSE.2010.118. — [doi:10.1109/mcse.2010.118](https://doi.org/10.1109/mcse.2010.118) find
  64. Ramachandran, P. & Varoquaux, G. Mayavi: 3D visualization of scientific data. Comput. Sci. & Eng. 13, 40–51 (2011). URL https://doi.org/10.1109/MCSE.2011.35. — [doi:10.1109/mcse.2011.35](https://doi.org/10.1109/mcse.2011.35) ↗
  65. Muller, E. et al. Research topic: Python in neuroscience (2008). URL http://doi.org/10.3389/fninf.2015. 00011. \#\# 68. NumFocus Team. NumFocus: Open code = better science (2019). URL https://numfocus.org. — [doi:10.3389/fninf.2015](https://doi.org/10.3389/fninf.2015) ↗
  66. GitHub. Network dependents - scipy/scipy (2019). URL https://github.com/scipy/scipy/network/ dependents. ↗
  67. Boisvert, R. F., Howe, S. E. & Kahaner, D. K. The guide to available mathematical software problem classification system. Commun. Stat. Comput. 20, 811–842 (1991). URL https://doi.org/10.1080/03610919108812986. — [doi:10.1080/03610919108812986](https://doi.org/10.1080/03610919108812986) ↗
  68. Seabold, S. & Perktold, J. Statsmodels: Econometric and statistical modeling with Python. In Proceedings of the 9th Python in Science Conference (SciPy 2010), 57–61 (2010). URL http://conference.scipy.org/ proceedings/scipy2010/pdfs/seabold.pdf. ↗
  69. Salvatier, J., Wiecki, T. V. & Fonnesbeck, C. Probabilistic programming in Python using PyMC3. PeerJ Comput. Sci. 2, e55 (2016). URL https://doi.org/10.7717/peerj-cs.55. — [doi:10.7717/peerj-cs.55](https://doi.org/10.7717/peerj-cs.55) ↗
  70. Foreman-Mackey, D., Hogg, D. W., Lang, D. & Goodman, J. emcee: The MCMC Hammer. Publ. Astron. Soc. Pac. 125, 306 (2013). URL https://doi.org/10.1086/670067. 1202.3665. — [doi:10.1086/670067](https://doi.org/10.1086/670067) ↗
  71. Stan Development Team. PyStan: the Python interface to Stan (2018). URL http://mc-stan.org. ↗
  72. Meurer, A. et al. SymPy: symbolic computing in Python. PeerJ Comput. Sci. 3, e103 (2017). URL https://doi. org/10.7717/peerj-cs.103. — [doi:10.7717/peerj-cs.103](https://doi.org/10.7717/peerj-cs.103) find
  73. Hagberg, A., Schult, D. & Swart, P. Exploring network structure, dynamics, and function using NetworkX. In Varoquaux, G., Vaught, T. & Millman, K. J. (eds.) Proceedings of the 7th Python in Science Conference (SciPy 2008), 11–15 (2008). URL http://conference.scipy.org/proceedings/scipy2008/paper\_2/. ↗
  74. Mohr, P. J., Newell, D. B. & Taylor, B. N. CODATA recommended values of the fundamental physical constants: 2014. J. Phys. Chem. Ref. Data 45, 043102 (2016). URL https://doi.org/10.1063/1.4954402. — [doi:10.1063/1.4954402](https://doi.org/10.1063/1.4954402) ↗
  75. Dierckx, P. Curve and Surface Fitting with Splines (Oxford University Press, Inc., New York, NY, USA, 1993). find
  76. Boisvert, R. F., Pozo, R., Remington, K., Barrett, R. F. & Dongarra, J. J. Matrix Market: a web resource for test matrix collections. In Quality of Numerical Software, 125–137 (Springer, 1997). URL https://doi.org/10.1007/ 978-1-5041-2940-4\_9. find
  77. Rew, R. & Davis, G. NetCDF: an interface for scientific data access. IEEE Comput. Graph. Appl. 10, 76–82 (1990). URL https://doi.org/10.1109/38.56302. — [doi:10.1109/38.56302](https://doi.org/10.1109/38.56302) ↗
  78. Duff, I. S., Grimes, R. G. & Lewis, J. G. Users’ guide for the Harwell-Boeing sparse matrix collection (Release I) (1992). URL http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.41.8922. ↗
  79. Boggs, P. T., Byrd, R. H., Rogers, J. E. & Schnabel, R. B. User’s Reference Guide for ODRPACK Version 2.01: Software for Weight Orthogonal Distance Regression (U.S. Department of Commerce, National Institute of Standards and Technology, 1992). find
  80. Linguist developers. Linguist: Language savant (2019). URL https://github.com/github/linguist. ↗
  81. Koelbel, C. H. & Zosel, M. E. The High Performance FORTRAN Handbook (MIT Press, Cambridge, MA, USA, 1993). URL https://doi.org/10.1063/1.4823319. — [doi:10.1063/1.4823319](https://doi.org/10.1063/1.4823319) ↗
  82. Swarztrauber, P. N. FFT algorithms for vector computers. Parallel Comput. 1, 45 – 63 (1984). URL https: //doi.org/10.1016/S0167-8191(84)90413-7. — [doi:10.1016/s0167-8191(84)90413-7](https://doi.org/10.1016/s0167-8191%2884%2990413-7) find
  83. Swarztrauber, P. N. Vectorizing the FFTs. In Parallel Computations, 51 – 83 (Academic Press, 1982). URL https: //doi.org/10.1016/B978-0-12-592101-5.50007-5. — [doi:10.1016/b978-0-12-592101-5.50007-5](https://doi.org/10.1016/b978-0-12-592101-5.50007-5) find
  84. Lehoucq, R. B., Sorensen, D. C. & Yang, C. ARPACK users’ guide: Solution of large scale eigenvalue problems with implicitly restarted Arnoldi methods. Tech. Rep., Rice University (1997). URL https://doi.org/10.1137/1. 9780898719628. — [doi:10.1137/1](https://doi.org/10.1137/1) find
  85. Amos, D. E. Algorithm 644: A portable package for Bessel functions of a complex argument and nonnegative order. ACM Trans. Math. Softw. 12, 265–273 (1986). URL http://doi.acm.org/10.1145/7921.214331. — [doi:10.1145/7921.214331](https://doi.org/10.1145/7921.214331) ↗
  86. Brown, B., Lovato, J. & Russell, K. CDFLIB. URL https://people.sc.fsu.edu/˜jburkardt/f\_src/ cdflib/cdflib.html. ↗
  87. Kernighan, B. W. The C Programming Language (Prentice Hall Professional Technical Reference, 1988), 2nd edn. find
  88. Lenders, F., Kirches, C. & Potschka, A. trlib: a vector-free implementation of the GLTR method for iterative solution of the trust region problem. Optim. Methods Softw. 33, 420–449 (2018). URL https://doi.org/10.1080/ 10556788.2018.1449842. find
  89. Li, X. S. An overview of SuperLU: Algorithms, implementation, and user interface. ACM Trans. Math. Softw. 31, 302–325 (2005). URL https://doi.org/10.1145/1089014.1089017. — [doi:10.1145/1089014.1089017](https://doi.org/10.1145/1089014.1089017) ↗
  90. Li, X. et al. SuperLU users’ guide. Tech. Rep. LBNL-44289, Lawrence Berkeley National Laboratory (1999). URL http://www.secs.oakland.edu/˜frick/SuperLU/superlu\_ug.pdf. ↗
  91. Barber, C. B., Dobkin, D. P. & Huhdanpaa, H. The quickhull algorithm for convex hulls. ACM Trans. Math. Softw. 22, 469–483 (1996). URL http://doi.acm.org/10.1145/235815.235821. \#\# 95. Moshier, S. L. cephes. URL http://www.netlib.org/cephes/. — [doi:10.1145/235815.235821](https://doi.org/10.1145/235815.235821) ↗
  92. Lam, S. K., Pitrou, A. & Seibert, S. Numba: A LLVM-based Python JIT compiler. In Proceedings of the Second Workshop on the LLVM Compiler Infrastructure in HPC, LLVM ’15, 7:1–7:6 (ACM, New York, NY, USA, 2015). URL http://doi.acm.org/10.1145/2833157.2833162. ↗
  93. Bolz, C. F., Cuni, A., Fijalkowski, M. & Rigo, A. Tracing the meta-level: PyPy’s tracing JIT compiler. In Proceedings of the 4th Workshop on the Implementation, Compilation, Optimization of Object-Oriented Languages and Programming Systems, ICOOOLPS ’09, 18–25 (ACM, New York, NY, USA, 2009). URL htt… find
  94. VanderPlas, J. Benchmarking nearest neighbor searches in Python (2013). URL https://jakevdp.github.io/ blog/2013/04/29/benchmarking-nearest-neighbor-searches-in-python/. ↗
  95. Maneewongvatana, S. & Mount, D. M. Analysis of approximate nearest neighbor searching with clustered point sets (1999). URL https://arxiv.org/pdf/cs/9901013.pdf. — [arXiv:cs/9901013](https://arxiv.org/abs/cs/9901013) ↗
  96. Molden, S. ENH: Enhancements to spatial.cKDTree (2015). URL https://github.com/scipy/scipy/pull/ 4374/. ↗
  97. Aspnäs, M., Signell, A. & Westerholm, J. Efficient assembly of sparse matrices using hashing. In Kågström, B., Elmroth, E., Dongarra, J. & Waśniewski, J. (eds.) Applied Parallel Computing. State of the Art in Scientific Computing, 900–907 (Springer Berlin Heidelberg, Berlin, Heidelberg, 2007). U… find
  98. Cormen, T. H., Stein, C., Rivest, R. L. & Leiserson, C. E. Introduction to Algorithms (McGraw-Hill Higher Education, 2001), 2nd edn. find
  99. Moore, A. W. et al. Fast algorithms and efficient statistics: N-point correlation functions. In Banday, A. J., Zaroubi, S. & Bartelmann, M. (eds.) European Southern Observatory Symposia: Mining the Sky (Springer, Berlin, Heidelberg, 2001). URL https://doi.org/10.1007/10849171\_5. — [doi:10.1007/10849171\_5](https://doi.org/10.1007/10849171_5) ↗
  100. Feng, Y. ENH: Faster count neighour in cKDTree / + weighted input data (2015). URL https://github.com/ scipy/scipy/pull/5647. ↗
  101. Martin, A. M., Giovanelli, R., Haynes, M. P. & Guzzo, L. The clustering characteristics of HI-selected galaxies from the 40% ALFALFA survey. The Astrophys. J. 750, 38 (2012). URL https://doi.org/10.1088/0004-637X/ 750/1/38. — [doi:10.1088/0004-637x/](https://doi.org/10.1088/0004-637x/) find
  102. Anderson, E. et al. LAPACK Users’ Guide (Society for Industrial and Applied Mathematics, Philadelphia, PA, 1999), 3rd edn. find
  103. Henriksen, I. Circumventing the linker: Using SciPy’s BLAS and LAPACK within Cython. In Huff, K. & Bergstra, J. (eds.) Proceedings of the 14th Python in Science Conference (SciPy 2015), 49 – 52 (2015). URL http://conference. scipy.org/proceedings/scipy2015/ian\_henriksen.html. find
  104. Andersen, E. D. & Andersen, K. D. The MOSEK interior point optimizer for linear programming: an implementation of the homogeneous algorithm. In High Performance Optimization, 197–232 (Springer, 2000). URL https://doi. org/10.1007/978-1-4757-3216-0\_8. — [doi:10.1007/978-1-4757-3216-0\_8](https://doi.org/10.1007/978-1-4757-3216-0_8) find
  105. The NETLIB LP test problem set. URL http://www.numerical.rl.ac.uk/cute/netlib.html. ↗
  106. Andersen, E. D. & Andersen, K. D. Presolving in linear programming. Math. Program. 71, 221–245 (1995). URL https://doi.org/10.1007/BF01586000. — [doi:10.1007/bf01586000](https://doi.org/10.1007/bf01586000) ↗
  107. Wormington, M., Panaccione, C., M., M. K. & Bowen, D. K. Characterization of structures from X-ray scattering data using genetic algorithms. Phil. Trans. R. Soc. Lond. A 357, 2827–2848 (1999). URL https://doi.org/10.1098/ rsta.1999.0469. find
  108. Storn, R. & Price, K. Differential evolution - a simple and efficient heuristic for global optimization over continuous spaces. J. Glob. Optim. 11, 341–359 (1997). URL https://doi.org/10.1023/A:1008202821328. — [doi:10.1023/a:1008202821328](https://doi.org/10.1023/a:1008202821328) ↗
  109. Nelder, J. A. & Mead, R. A simplex method for function minimization. The Comput. J. 7, 308–313 (1965). URL https://doi.org/10.1093/comjnl/7.4.308. — [doi:10.1093/comjnl/7.4.308](https://doi.org/10.1093/comjnl/7.4.308) ↗
  110. Wright, M. H. Direct search methods: Once scorned, now respectable. Pitman Res. Notes Math. Ser. 191–208 (1996). find
  111. Powell, M. J. An efficient method for finding the minimum of a function of several variables without calculating derivatives. The Comput. J. 7, 155–162 (1964). URL https://doi.org/10.1093/comjnl/7.2.155. — [doi:10.1093/comjnl/7.2.155](https://doi.org/10.1093/comjnl/7.2.155) ↗
  112. Powell, M. J. A direct search optimization method that models the objective and constraint functions by linear interpolation. In Advances in Optimization and Numerical Analysis, 51–67 (Springer, 1994). URL https://doi.org/10.1007/ 978-94-015-8330-5\_4. find
  113. Powell, M. J. Direct search algorithms for optimization calculations. Acta numerica 7, 287–336 (1998). URL https://doi.org/10.1017/S0962492900002841. — [doi:10.1017/s0962492900002841](https://doi.org/10.1017/s0962492900002841) ↗
  114. Powell, M. J. A view of algorithms for optimization without derivatives. Math. Today-Bulletin Inst. Math. its Appl. 43, 170–174 (2007). find
  115. Polak, E. & Ribiere, G. Note sur la convergence de méthodes de directions conjuguées. Revue française d’informatique et de recherche opérationnelle. Série rouge 3, 35–43 (1969). URL http://www.numdam.org/article/M2AN\_ 1969\_\_3\_1\_35\_0.pdf. ↗
  116. Nocedal, J. & Wright, S. Numerical Optimization (Springer Science & Business Media, 2006), 2nd edn. URL https://doi.org/10.1007/978-0-387-40065-5. — [doi:10.1007/978-0-387-40065-5](https://doi.org/10.1007/978-0-387-40065-5) ↗
  117. Byrd, R. H., Lu, P., Nocedal, J. & Zhu, C. A limited memory algorithm for bound constrained optimization. SIAM J. on Sci. Comput. 16, 1190–1208 (1995). URL https://doi.org/10.1137/0916069. — [doi:10.1137/0916069](https://doi.org/10.1137/0916069) ↗
  118. Zhu, C., Byrd, R. H., Lu, P. & Nocedal, J. Algorithm 778: L-BFGS-B: Fortran subroutines for large-scale bound-constrained optimization. ACM Transactions on Math. Softw. (TOMS) 23, 550–560 (1997). URL https://doi.org/ 10.1145/279232.279236. — [doi:10.1145/279232.279236](https://doi.org/10.1145/279232.279236) find
  119. Schittkowski, K. The nonlinear programming method of Wilson, Han, and Powell with an augmented Lagrangian type line search function. Part 1: Convergence analysis. Numer. Math. 38, 83–114 (1982). URL https://doi.org/10. 1007/BF01395810. find
  120. Schittkowski, K. The nonlinear programming method of Wilson, Han, and Powell with an augmented Lagrangian type line search function. Part 2: An efficient implementation with linear least squares subproblems. Numer. Math. 38, 115–127 (1982). URL https://doi.org/10.1007/BF01395811. — [doi:10.1007/bf01395811](https://doi.org/10.1007/bf01395811) ↗
  121. Schittkowski, K. On the convergence of a sequential quadratic programming method with an augmented Lagrangian line search function. Math. Oper. und Stat. Ser. Optim. 14, 197–216 (1983). URL https://doi.org/10.1080/ 02331938308842847. find
  122. Kraft, D. A software package for sequential quadratic programming. Forschungsbericht- Deutsche Forschungs- und Versuchsanstalt fur Luft- und Raumfahrt (1988). find
  123. Nash, S. G. Newton-type minimization via the Lanczos method. SIAM J. on Numer. Analysis 21, 770–788 (1984). URL https://doi.org/10.1137/0721052. — [doi:10.1137/0721052](https://doi.org/10.1137/0721052) ↗
  124. Powell, M. J. A new algorithm for unconstrained optimization. Nonlinear programming 31–65 (1970). URL https: //doi.org/10.1016/B978-0-12-597050-1.50006-3. — [doi:10.1016/b978-0-12-597050-1.50006-3](https://doi.org/10.1016/b978-0-12-597050-1.50006-3) find
  125. Steihaug, T. The conjugate gradient method and trust regions in large scale optimization. SIAM J. on Numer. Analysis 20, 626–637 (1983). URL https://doi.org/10.1137/0720042. — [doi:10.1137/0720042](https://doi.org/10.1137/0720042) ↗
  126. Conn, A. R., Gould, N. I. & Toint, P. L. Trust Region Methods (SIAM, 2000). URL https://doi.org/10.1137/ 1.9780898719857. find
  127. Moré, J. J. & Sorensen, D. C. Computing a trust region step. SIAM J. on Sci. Stat. Comput. 4, 553–572 (1983). URL https://doi.org/10.1137/0904038. ↗
  128. Gould, N. I. M., Lucidi, S., Roma, M. & Toint, P. L. Solving the trust-region subproblem using the Lanczos method. SIAM J. on Optim. 9, 504–525 (1999). URL https://doi.org/10.1137/S1052623497322735. — [doi:10.1137/s1052623497322735](https://doi.org/10.1137/s1052623497322735) ↗
  129. Griffiths, T. L. & Steyvers, M. Finding scientific topics. Proc. Natl. Acad. Sci. 101, 5228–5235 (2004). URL https://doi.org/10.1073/pnas.0307752101. ↗
  130. Dierckx, P. FITPACK. URL http://netlib.org/dierckx/. ↗
  131. Virtanen, P. ENH: interpolate: rewrite ppform evaluation in Cython (2013). URL https://github.com/scipy/ scipy/pull/2885. ↗
  132. Burovski, E. add b-splines (2013). URL https://github.com/scipy/scipy/pull/3174. ↗
  133. de Boor, C. A practical guide to splines (Springer-Verlag, 1978). URL http://cds.cern.ch/record/103783. ↗
  134. Mayorov, N. ENH: CubicSpline interpolator (2016). URL https://github.com/scipy/scipy/pull/5653. ↗
  135. Fritsch, F. N. & Carlson, R. E. Monotone piecewise cubic interpolation. SIAM J. on Numer. Analysis 17, 238–246 (1980). URL https://doi.org/10.1137/0717021. — [doi:10.1137/0717021](https://doi.org/10.1137/0717021) ↗
  136. Akima, H. A new method of interpolation and smooth curve fitting based on local procedures. J. ACM 17, 589–602 (1970). URL https://doi.org/10.1145/321607.321609. — [doi:10.1145/321607.321609](https://doi.org/10.1145/321607.321609) ↗
  137. Krekel, H. et al. pytest: helps you write better programs. URL https://docs.pytest.org/en/latest/. ↗
  138. Schlaich, M. pytest-cov - PyPI. URL https://pypi.org/project/pytest-cov/. ↗
  139. gcov—a test coverage program. URL https://gcc.gnu.org/onlinedocs/gcc/Gcov.html. ↗
  140. Reddy, T. Track SciPy code base % line coverage over time (2019). URL https://github.com/tylerjereddy/ scipy-cov-track. ↗
  141. Airspeed Velocity Developers. Airspeed Velocity: A simple Python benchmarking tool with web-based reporting (2019). URL https://github.com/airspeed-velocity/asv. ↗
  142. The SciPy Project Community. SciPy project governance (2017). URL https://docs.scipy.org/doc/scipy/ reference/dev/governance/governance.html. ↗
  143. SciPy Developers. SciPy Developer Guide (2019). core-dev/index.html. URL http://scipy.github.io/devdocs/dev/ ↗
  144. Eghbal, N. Roads and bridges: The unseen labor behind our digital infrastructure. Tech. Rep., Ford Foundation (2016). URL http://brochures.sisalp.fr/ roads-and-bridges-the-unseen-labor-behind-our-digital-infrastructure.pdf. ↗
  145. Collaboration, T. A. et al. The Astropy project: Building an open-science project and status of the v2.0 core package. The Astron. J. 156, 123 (2018). URL https://doi.org/10.3847/1538-3881/aabc4f. — [doi:10.3847/1538-3881/aabc4f](https://doi.org/10.3847/1538-3881/aabc4f) ↗
  146. Lev, O., Dufresne, J., Kasim, R., Skinn, B. & Wilk, J. pypinfo: View PyPI download statistics with ease (2018). URL https://github.com/ofek/pypinfo. ↗
  147. Anaconda, Inc. Conda package download data (2019). anaconda-package-data. URL https://github.com/ContinuumIO/ ↗
  148. Jones, E., Oliphant, T. E., Peterson, P. et al. SciPy: Open source scientific tools for Python (2001–). URL http: //www.scipy.org/. find
  149. Google Scholar. Scipy - Google Scholar (2019). URL https://scholar.google.com/scholar?q=SciPy. ↗
  150. Abbott, B. P. et al. Observation of gravitational waves from a binary black hole merger. Phys. Rev. Lett. 116, 061102 (2016). URL https://doi.org/10.1103/PhysRevLett.116.061102. — [doi:10.1103/physrevlett.116.061102](https://doi.org/10.1103/physrevlett.116.061102) ↗
  151. Intel Software. The Intel distribution for Python (2018). URL https://software.intel.com/en-us/ articles/intel-optimized-packages-for-the-intel-distribution-for-python. ↗
  152. Elliott, T. The state of the Octoverse: Machine learning (2019). URL https://github.blog/ 2019-01-24-the-state-of-the-octoverse-machine-learning/. ↗
  153. The SciPy Project Community. Scipy Roadmap (2017). URL https://docs.scipy.org/doc/scipy-1.0.0/ reference/roadmap.html. ↗
  154. The SciPy Project Community. Scipy Roadmap (2019). URL https://scipy.github.io/devdocs/roadmap. html. ↗
  155. The SciPy Project Community. reference/tutorial/. Scipy Tutorial (2018). URL https://docs.scipy.org/doc/scipy/ ↗
  156. Abbasi, H. Sparse: A more modern sparse array library. In Akici, F., Lippa, D., Niederhut, D. & Pacer, M. (eds.) Proceedings of the 17th Python in Science Conference, 27–30 (2018). URL https://doi.org/10.25080/ Majora-4af1f417-00a. \#\# Acknowledgements We thank everyone who has contributed to SciPy 1… find