SciPy 1.0 — Fundamental Algorithms for Scientific Computing in Python
Paper · 2019 · Pauli Virtanen, Ralf Gommers, Travis E. Oliphant et al.
Summary
The paper describes SciPy, the open-source Python library that collects core numerical algorithms: optimization, integration, interpolation, linear algebra, signal and image processing, sparse matrices, spatial structures such as k-d trees, statistics and more. It marks the 1.0 release in late 2017, about 16 years after version 0.1. It treats that milestone as a statement that the API is stable enough for production pipelines.
The authors trace SciPy's origins in the late 1990s. A shared array object emerged from the Matrix-SIG mailing list, and graduate students wrapped proven Fortran and C codes for Python. These packages were merged into one library in 2001.
The paper then covers how the project runs: release cadence, maintainers, a community roadmap, and exchange with downstream libraries. Its main evidence is adoption. SciPy is a de facto standard, with hundreds of contributors, millions of yearly downloads, and use in gravitational-wave analysis and the M87 black hole image. This matters because large parts of scientific and machine-learning software depend on SciPy, so its quality and governance spread across the whole ecosystem.
Key points
- SciPy 1.0 came out in late 2017, roughly 16 years after the 0.1 release. The library builds on NumPy and in turn underlies scikit-learn and scikit-image.
- Early components wrapped established libraries such as ODEPACK, QUADPACK and MINPACK (via Multipack). F2PY was built to bind Fortran to Python.
- In 2018 there were 610 unique code contributors and more than 19,000 accepted commits. GitHub recorded about 20,000 unique visitors and 721 clones between May 14 and May 27, 2018.
- Downloads in 2017 were 13,096,468 from PyPI and 5,776,017 from the default conda channel, which the authors treat as a lower bound. SciPy is used by 47% of machine-learning projects on GitHub, and its website has been cited more than 3,000 times.
- The project follows a 6-monthly release cycle and has 15 active maintainers chosen from proven contributors. A living roadmap (Table 2) lists planned work, for example new global optimizers, new spline routines and PROPACK wrappers for faster SVD.
Interesting ideas
- I1. Agreeing early on one shared core data object, the array, let many independent packages interoperate instead of fragmenting.
- I2. Wrapping mature, well-tested Fortran and C libraries was preferred over rewriting them, which gave reliable algorithms quickly behind a friendlier interface.
- I3. Bumping to version 1.0 is treated as a public promise of API stability, a promise that downstream pipelines can rely on.
- I4. Code often grows in a domain-specific downstream package and is later promoted into the base library, as happened with binned statistics from an Astropy-affiliated package.
- I5. Usage counts are framed explicitly as lower bounds, because they cover only some install channels, which keeps the claims honest.
For Mova
How these ideas could serve Mova, our small open language model — its files, stages and tests:
- I1 (tree): Fix one canonical UD tree structure that the perceptron parser, gparse and the dialect converters all read and write, so every downstream stage consumes the same object.
- I2 (world): Wrap existing resources such as WordNet, FrameNet and Wikidata behind thin explainable adapters rather than re-deriving that knowledge by hand.
- I3 (frames): Declare a versioned, frozen interface for the frame and semantic-role output of crate prag, so readers and generators can depend on it without breaking.
- I4 (learn): Let repair rules or heuristics first prove themselves inside one task-specific reader, then promote the ones that generalize into the shared core.
- I5 (learn): Report silver-data agreement and test scores together with what they fail to cover, such as missing genres or untested constructions, so the evaluation is read correctly.
Institutions
📚 Shelves 6 Computer Science · 9,086 works Artificial Intelligence · 8,889 works Mathematics · 140 works Computational Theory and Mathematics · 116 works Decision Sciences · 85 works Information Systems and Management · 18 works
Appears in
Countries Australia Austria Estonia France Germany India Russia Slovenia United Kingdom United States
Agglomerations Atlanta Austin Bremen Cambridge Champaign–Urbana Chicago Denver Jyväskylä Los Angeles Madison Manchester Melbourne Munich Oxford Paris Sacramento Salt Lake City San Diego Seattle Sydney
Cite
Cite as Pauli Virtanen, Ralf Gommers, Travis E. Oliphant, Matt Haberland, Tyler Reddy, David Cournapeau, Evgeni Burovski, Pearu Peterson, Warren Weckesser, Jonathan Bright, Stéfan J. van der Walt, Matthew Brett, Joshua Wilson, K. Jarrod Millman, Nikolay Mayorov, Andrew R. J. Nelson, Eric Jones, Robert Kern, Eric Larson, CJ Carey, İlhan Polat, Yu Feng, Eric W. Moore, Jake VanderPlas, Denis Laxalde, Josef Perktold, Robert Cimrman, Ian Henriksen, E. A. Quintero, Charles R Harris, Anne M. Archibald, Antônio H. Ribeiro, Fabian Pedregosa and Paul van Mulbregt. 2019. SciPy 1.0 — Fundamental Algorithms for Scientific Computing in Python. arXiv:1907.10121 (Nature Methods 17, 261 (2020)).
@misc{virtanen2019scipy,
title = {{SciPy 1.0 — Fundamental Algorithms for Scientific Computing in Python}},
author = {Pauli Virtanen, Ralf Gommers, Travis E. Oliphant, Matt Haberland, Tyler Reddy, David Cournapeau, Evgeni Burovski, Pearu Peterson, Warren Weckesser, Jonathan Bright, Stéfan J. {van der Walt}, Matthew Brett, Joshua Wilson, K. Jarrod Millman, Nikolay Mayorov, Andrew R. J. Nelson, Eric Jones, Robert Kern, Eric Larson, CJ Carey, İlhan Polat, Yu Feng, Eric W. Moore, Jake VanderPlas, Denis Laxalde, Josef Perktold, Robert Cimrman, Ian Henriksen, E. A. Quintero, Charles R Harris, Anne M. Archibald, Antônio H. Ribeiro, Fabian Pedregosa and Paul {van Mulbregt}},
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
- Oliphant, T. E. Guide to NumPy (Trelgol Publishing USA, 2006), 1st edn. URL https://oez.es/Guide%20to% 20NumPy.pdf. ↗
- 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. ↗
- 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. ↗
- 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
- 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) ↗
- 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) ↗
- 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) ↗
- 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) ↗
- 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) ↗
- 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/. ↗
- 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. ↗
- Port, O. Simple solutions (3 Oct. 2005). BusinessWeek 24–24. URL https://www.scribd.com/document/ 134233902/Business-Week-03-Oct-2005. ↗
- Open Source Community. Numeric and scientific (2017). NumericAndScientific. URL https://wiki.python.org/moin/ ↗
- Open Source Community. PythonConferences. URL https://wiki.python.org/moin/Python conferences (2018). ↗
- 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. ↗
- Developers, C. The Python programming language (2019). URL https://github.com/python/cpython. ↗
- Hugunin, J. The matrix object proposal (very long) (1995). URL https://mail.python.org/pipermail/ matrix-sig/1995-August/000002.html. ↗
- Hugunin, J. Extending Python for numerical computation (1995). hugunin95numpy.html. URL http://hugunin.net/papers/ ↗
- Oliphant, T. E. Moving forward from the last decade of SciPy (2010). URL https://conference.scipy.org/ scipy2010/slides/travis_oliphant_keynote.pdf. ↗
- Oliphant, T. E. Some Python modules (1999). URL https://web.archive.org/web/19990125091242/ http://oliphant.netpedia.net:80/. ↗
- Oliphant, T. E. Modules to enhance numerical Python (2000). URL https://web.archive.org/web/ 20001206213500/http://oliphant.netpedia.net:80/. ↗
- Oliphant, T. E. Multipack (a collection of FORTRAN routines interfaced with NumPy). URL http://pylab.sourceforge.net/multipack.html. ↗
- 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. ↗
- 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
- 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. ↗
- 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) ↗
- Strangman, G. Python modules (2000). URL https://web.archive.org/web/20001022231108/http://www.nmr.mgh.harvard.edu/Neural_Systems_Group/gary/python.html. ↗
- SciPy Developers. SciPy.org (2001). URL https://web.archive.org/web/20010309040805/http://scipy.org:80/. ↗
- Vaught, T. N. SciPy developer mailing list now online (2001). URL https://mail.python.org/pipermail/ scipy-dev/2001-June/000000.html. ↗
- Jones, E. ANN: SciPy 0.10 – scientific computing with Python (2001). URL https://mail.python.org/ pipermail/python-list/2001-August/106419.html. ↗
- 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. ↗
- Vaught, T. N. [ANN] SciPy ’02 - Python for scientific computing workshop (2002). URL https://mail.python.org/pipermail/numpy-discussion/2002-June/001511.html. ↗
- 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. ↗
- Greenfield, P. How Python slithered into astronomy (2011). URL https://conference.scipy.org/ scipy2011/slides/greenfield_keynote_astronomy.pdf. ↗
- 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. ↗
- Ramachandran, P. MayaVi uses Python for scientific data visualization (2003). URL https://web.archive.org/ web/20030731122452/http://pythonology.org/success&story=mayavi. ↗
- 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) ↗
- MATLAB (The MathWorks, Inc., Natick, MA, United States). URL https://www.mathworks.com/products/ matlab.html. ↗
- Hunter, J. ANN: matplotlib 0.1 (2003). URL https://mail.python.org/pipermail/python-list/ 2003-April/193167.html. ↗
- 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/… ↗
- Dubois, P. F. Python: Batteries included. Comput. Sci. & Eng. 9, 7–9 (2007). URL https://doi.org/10.1109/ MCSE.2007.51. find
- Oliphant, T. E. Python for scientific computing. Comput. Sci. & Eng. 9, 10–20 (2007). URL https://doi.org/10. 1109/MCSE.2007.58. find
- 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) ↗
- 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) ↗
- 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) ↗
- 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
- 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) ↗
- 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) ↗
- 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) ↗
- 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) ↗
- Shi, X. Python for internet GIS applications. Comput. Sci. & Eng. 9, 56–59 (2007). URL https://doi.org/10. 1109/MCSE.2007.57. find
- 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) ↗
- 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) ↗
- 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. ↗
- Brandl, G. & the Sphinx Team. Sphinx - Python documentation generator (2007). URL http://www.sphinx-doc.org/en/master/. ↗
- Virtanen, P. et al. pydocweb: A tool for collaboratively documenting Python modules via the web (2008). URL https://code.google.com/archive/p/pydocweb/. ↗
- 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/. ↗
- 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/. ↗
- 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/. ↗
- 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. ↗
- 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) ↗
- 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) ↗
- 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
- 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) ↗
- 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) ↗
- GitHub. Network dependents - scipy/scipy (2019). URL https://github.com/scipy/scipy/network/ dependents. ↗
- 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) ↗
- 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. ↗
- 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) ↗
- 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) ↗
- Stan Development Team. PyStan: the Python interface to Stan (2018). URL http://mc-stan.org. ↗
- 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) ↗
- 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/. ↗
- 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) ↗
- Dierckx, P. Curve and Surface Fitting with Splines (Oxford University Press, Inc., New York, NY, USA, 1993). find
- 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
- 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) ↗
- 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. ↗
- 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
- Linguist developers. Linguist: Language savant (2019). URL https://github.com/github/linguist. ↗
- 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) ↗
- 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) ↗
- 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) ↗
- 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
- 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) ↗
- Brown, B., Lovato, J. & Russell, K. CDFLIB. URL https://people.sc.fsu.edu/˜jburkardt/f_src/ cdflib/cdflib.html. ↗
- Kernighan, B. W. The C Programming Language (Prentice Hall Professional Technical Reference, 1988), 2nd edn. find
- 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
- 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) ↗
- 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. ↗
- 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) ↗
- 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. ↗
- 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
- VanderPlas, J. Benchmarking nearest neighbor searches in Python (2013). URL https://jakevdp.github.io/ blog/2013/04/29/benchmarking-nearest-neighbor-searches-in-python/. ↗
- 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) ↗
- Molden, S. ENH: Enhancements to spatial.cKDTree (2015). URL https://github.com/scipy/scipy/pull/ 4374/. ↗
- 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
- Cormen, T. H., Stein, C., Rivest, R. L. & Leiserson, C. E. Introduction to Algorithms (McGraw-Hill Higher Education, 2001), 2nd edn. find
- 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) ↗
- Feng, Y. ENH: Faster count neighour in cKDTree / + weighted input data (2015). URL https://github.com/ scipy/scipy/pull/5647. ↗
- 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
- Anderson, E. et al. LAPACK Users’ Guide (Society for Industrial and Applied Mathematics, Philadelphia, PA, 1999), 3rd edn. find
- 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. ↗
- 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) ↗
- The NETLIB LP test problem set. URL http://www.numerical.rl.ac.uk/cute/netlib.html. ↗
- 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) ↗
- 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
- 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) ↗
- 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) ↗
- Wright, M. H. Direct search methods: Once scorned, now respectable. Pitman Res. Notes Math. Ser. 191–208 (1996). find
- 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) ↗
- 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
- 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) ↗
- Powell, M. J. A view of algorithms for optimization without derivatives. Math. Today-Bulletin Inst. Math. its Appl. 43, 170–174 (2007). find
- 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. ↗
- 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) ↗
- 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) ↗
- 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
- 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
- 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) ↗
- 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
- Kraft, D. A software package for sequential quadratic programming. Forschungsbericht- Deutsche Forschungs- und Versuchsanstalt fur Luft- und Raumfahrt (1988). find
- 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) ↗
- 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) ↗
- 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) ↗
- Conn, A. R., Gould, N. I. & Toint, P. L. Trust Region Methods (SIAM, 2000). URL https://doi.org/10.1137/ 1.9780898719857. find
- 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. ↗
- 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) ↗
- Griffiths, T. L. & Steyvers, M. Finding scientific topics. Proc. Natl. Acad. Sci. 101, 5228–5235 (2004). URL https://doi.org/10.1073/pnas.0307752101. ↗
- Dierckx, P. FITPACK. URL http://netlib.org/dierckx/. ↗
- Virtanen, P. ENH: interpolate: rewrite ppform evaluation in Cython (2013). URL https://github.com/scipy/ scipy/pull/2885. ↗
- Burovski, E. add b-splines (2013). URL https://github.com/scipy/scipy/pull/3174. ↗
- de Boor, C. A practical guide to splines (Springer-Verlag, 1978). URL http://cds.cern.ch/record/103783. ↗
- Mayorov, N. ENH: CubicSpline interpolator (2016). URL https://github.com/scipy/scipy/pull/5653. ↗
- 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) ↗
- 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) ↗
- Krekel, H. et al. pytest: helps you write better programs. URL https://docs.pytest.org/en/latest/. ↗
- Schlaich, M. pytest-cov - PyPI. URL https://pypi.org/project/pytest-cov/. ↗
- gcov—a test coverage program. URL https://gcc.gnu.org/onlinedocs/gcc/Gcov.html. ↗
- Reddy, T. Track SciPy code base % line coverage over time (2019). URL https://github.com/tylerjereddy/ scipy-cov-track. ↗
- Airspeed Velocity Developers. Airspeed Velocity: A simple Python benchmarking tool with web-based reporting (2019). URL https://github.com/airspeed-velocity/asv. ↗
- The SciPy Project Community. SciPy project governance (2017). URL https://docs.scipy.org/doc/scipy/ reference/dev/governance/governance.html. ↗
- SciPy Developers. SciPy Developer Guide (2019). core-dev/index.html. URL http://scipy.github.io/devdocs/dev/ ↗
- 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. ↗
- 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) ↗
- Lev, O., Dufresne, J., Kasim, R., Skinn, B. & Wilk, J. pypinfo: View PyPI download statistics with ease (2018). URL https://github.com/ofek/pypinfo. ↗
- Anaconda, Inc. Conda package download data (2019). anaconda-package-data. URL https://github.com/ContinuumIO/ ↗
- Jones, E., Oliphant, T. E., Peterson, P. et al. SciPy: Open source scientific tools for Python (2001–). URL http://www.scipy.org/. ↗
- Google Scholar. Scipy - Google Scholar (2019). URL https://scholar.google.com/scholar?q=SciPy. ↗
- 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) ↗
- 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. ↗
- Elliott, T. The state of the Octoverse: Machine learning (2019). URL https://github.blog/ 2019-01-24-the-state-of-the-octoverse-machine-learning/. ↗
- The SciPy Project Community. Scipy Roadmap (2017). URL https://docs.scipy.org/doc/scipy-1.0.0/ reference/roadmap.html. ↗
- The SciPy Project Community. Scipy Roadmap (2019). URL https://scipy.github.io/devdocs/roadmap. html. ↗
- The SciPy Project Community. reference/tutorial/. Scipy Tutorial (2018). URL https://docs.scipy.org/doc/scipy/ ↗
- 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
Updated
This page in Markdown → https://md.research.elamur.ai/free/en/papers/virtanen-2019-scipy-1-0-fundamental-algorithms/