SciPy 1.0: fundamental algorithms for scientific computing in Python
Jazyk angličtina Země Spojené státy americké Médium print-electronic
Typ dokumentu historické články, časopisecké články, přehledy
Grantová podpora
P 27703
Austrian Science Fund FWF - Austria
PubMed
32015543
PubMed Central
PMC7056644
DOI
10.1038/s41592-019-0686-2
PII: 10.1038/s41592-019-0686-2
Knihovny.cz E-zdroje
- MeSH
- algoritmy * MeSH
- biologické modely MeSH
- dějiny 20. století MeSH
- dějiny 21. století MeSH
- lineární modely MeSH
- nelineární dynamika MeSH
- počítačová simulace MeSH
- počítačové zpracování signálu MeSH
- programovací jazyk * MeSH
- software * MeSH
- výpočetní biologie dějiny metody MeSH
- Check Tag
- dějiny 20. století MeSH
- dějiny 21. století MeSH
- Publikační typ
- časopisecké články MeSH
- historické články MeSH
- přehledy MeSH
SciPy is an open-source scientific computing library for the Python programming language. Since its initial release in 2001, SciPy has become a de facto standard for leveraging scientific algorithms in Python, with over 600 unique code contributors, thousands of dependent packages, over 100,000 dependent repositories and millions of downloads per year. In this work, we provide an overview of the capabilities and development practices of SciPy 1.0 and highlight some recent technical developments.
Anton Pannekoek Institute Amsterdam The Netherlands
Australian Nuclear Science and Technology Organisation Lucas Heights NSW Australia
Berkeley Center for Cosmological Physics University of California Berkeley Berkeley CA USA
Berkeley Institute for Data Science University of California Berkeley Berkeley CA USA
Bruker Biospin Corp Billerica MA USA
College of Information and Computing Sciences University of Massachusetts Amherst Amherst MA USA
Department of Mathematics Brigham Young University Provo UT USA
Department of Mathematics University of California Los Angeles Los Angeles CA USA
Division of Biostatistics University of California Berkeley Berkeley CA USA
Electrical Engineering Brigham Young University Provo UT USA
Google LLC Montreal Quebec Canada
Independent researcher Amsterdam the Netherlands
Independent researcher Belmont Massachusetts USA
Independent researcher Logan Utah USA
Independent researcher Montreal Quebec Canada
Independent researcher New York NY USA
Independent researcher San Francisco CA USA
Independent researcher Saue Estonia
Independent researcher Tokyo Japan
Independent researcher Toulouse France
Institute for Learning and Brain Sciences University of Washington Seattle WA USA
Los Alamos National Laboratory Los Alamos NM USA
National Research University Higher School of Economics Moscow Russia
New Technologies Research Centre University of West Bohemia Plzeň Czech Republic
School of Psychology University of Birmingham Edgbaston Birmingham UK
Space Dynamics Laboratory North Logan UT USA
Ultrasound Imaging Mayo Clinic Rochester MN USA
University of Jyväskylä Jyväskylä Finland
Zobrazit více v PubMed
Oliphant, T.E. Guide to NumPy 1st edn (Trelgol Publishing USA, 2006).
van der Walt S, Colbert SC, Varoquaux G. The NumPy array: a structure for efficient numerical computation. Comput. Sci. Eng. 2011;13:22–30.
Pedregosa F, et al. Scikit-learn: machine learning in Python. J. Mach. Learn. Res. 2011;12:2825–2830.
van der Walt S, et al. scikit-image: image processing in Python. Peer J. 2014;2:e453. PubMed PMC
Nitz, A. et al. gwastro/pycbc: PyCBC v1.13.2 release, 10.5281/zenodo.1596771 (27 November 2018).
Vallisneri M, Kanner J, Williams R, Weinstein A, Stephens B. The LIGO Open Science Center. J. Phys. Conf. Ser. 2015;610:012021.
Abbott BP, et al. GW150914: First results from the search for binary black hole coalescence with Advanced LIGO. Phys. Rev. D. 2016;93:122003. PubMed PMC
Abbott BP, et al. GW170817: observation of gravitational waves from a binary neutron star inspiral. Phys. Rev. Lett. 2017;119:161101. PubMed
The Event Horizon Telescope Collaboration. et al. First M87 event horizon telescope results. III. Data processing and calibration. Astrophys. J. Lett. 2019;875:L3.
Blanton, K. At Mathworks, support + fun = success: CEO Jack Little believes in power of his workers–and their ideas. The Boston Globe, J5 (20 April 1997).
Howell, D. Jack Dangermond’s digital mapping lays it all out. Investor’s Business Daily (14 August 2009).
Port, O. Simple solutions. BusinessWeek, 24–24 (3 October 2005).
van Rossum, G. Python/C API Reference Manual, http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.211.6702&rep=rep1&type=pdf (2001).
Hugunin, J. The matrix object proposal (very long), https://mail.python.org/pipermail/matrix-sig/1995-August/000002.html (18 August 1995).
Hugunin, J. Extending Python for numerical computation, http://hugunin.net/papers/hugunin95numpy.html (1995).
Oliphant, T. E. Moving forward from the last decade of SciPy. Presentation slides, https://conference.scipy.org/scipy2010/slides/travis_oliphant_keynote.pdf (1 July 2010).
Oliphant, T. E. Some Python modules. Web Archive, https://web.archive.org/web/19990125091242/http://oliphant.netpedia.net:80/ (25 January 1999).
Oliphant, T. E. Modules to enhance Numerical Python. Web Archive, https://web.archive.org/web/20001206213500/http://oliphant.netpedia.net:80/ (6 December 2000).
Peterson P. F2PY: a tool for connecting Fortran and Python programs. Int. J. Comput. Sci. Eng. 2009;4:296–305.
Strangman, G. Python modules. Web Archive, https://web.archive.org/web/20001022231108/http://www.nmr.mgh.harvard.edu/Neural_Systems_Group/gary/python.html (2000).
SciPy Developers. SciPy.org. Web Archive, https://web.archive.org/web/20010309040805/http://scipy.org:80/ (2001).
Vaught, T. N. SciPy Developer mailing list now online, https://mail.python.org/pipermail/scipy-dev/2001-June/000000.html (2001).
Jones, E. ANN: SciPy 0.10–scientific computing with Python, https://mail.python.org/pipermail/python-list/2001-August/106419.html (2001).
Vaught, T.N. Reference documentation and Tutorial documentation are now available for download as tarballs. Web Archivehttps://web.archive.org/web/20021013204556/http://www.scipy.org:80/scipy/site_content/site_news/docs_released1 (2002).
Vaught, T. N. [ANN] SciPy ‘02 - Python for Scientific Computing Workshop, https://mail.python.org/pipermail/numpy-discussion/2002-June/001511.html (2002).
Ascher, D., Dubois, P. F., Hinsen, K., Hugunin, J. & Oliphant, T. E. An open source project: Numerical Python, 10.5281/zenodo.3599566 (2001).
Greenfield, P. How Python slithered Into astronomy. Presentation, https://conference.scipy.org/scipy2011/slides/greenfield_keynote_astronomy.pdf (2011).
Greenfield, P., Miller, J.T., Hsu, J.T. & White, R.L. numarray: a new scientific array package for Python. PyCon DC (2003).
NumPy Developers. v1.0, https://github.com/numpy/numpy/releases/tag/v1.0 (25 October 2006).
Millman, K. J. & Pérez, F. Developing open-source scientific practice. in Implementing Reproducible Research (CRC Press) 149–183 (2014).
Brandl, G. & the Sphinx team. Sphinx - Python Documentation Generator, http://www.sphinx-doc.org/en/master/ (2007).
Virtanen, P. et al. pydocweb: a tool for collaboratively documenting Python modules via the web. Web Archive, https://code.google.com/archive/p/pydocweb/ (2008).
Harrington, J. The SciPy documentation project. In Proceedings of the 7th Python in Science Conference (eds G. Varoquaux, G., Vaught, T. & Millman, K. J.) 33–35 (2008).
van der Walt, S. The SciPy documentation project (technical overview). In Proceedings of the 7th Python in Science Conference (eds G. Varoquaux, G., Vaught, T. & Millman, K. J.) 27–28 (2008).
Harrington, J. & Goldsmith, D. Progress report: NumPy and SciPy documentation in 2009. In Proceedings of the 8th Python in Science Conference (eds Varoquaux, G., van der Walt, S. & Millman, K. J.) 84–87 (2009).
Pérez, F., Langtangen, H. P. & LeVeque, R. Python for scientific computing. In SIAM Conference on Computational Science and Engineering,42 (5) (2009).
Dubois PF. Python: batteries included. Comput. Sci. Eng. 2007;9:7–9.
Millman KJ, Aivazis M. Python for scientists and engineers. Comput. Sci. Eng. 2011;13:9–12.
Pérez F, Granger BE, Hunter JD. Python: an ecosystem for scientific computing. Comput. Sci. Eng. 2011;13:13–21.
Behnel S, et al. Cython: the best of both worlds. Comput. Sci. Eng. 2011;13:31–39.
Ramachandran P, Varoquaux G. Mayavi: 3D visualization of scientific data. Comput. Sci. Eng. 2011;13:40–51.
Muller E, et al. Python in neuroscience. Front. Neuroinform. 2015;9:11. PubMed PMC
GitHub. Network dependents - scipy/scipy, https://github.com/scipy/scipy/network/dependents (2019).
Boisvert RF, Howe SE, Kahaner DK. The guide to available mathematical software problem classification system. Commun. Stat. Simul. Comput. 1991;20:811–842.
Seabold, S. & Perktold, J. Statsmodels: econometric and statistical modeling with Python. In Proceedings of the 9th Python in Science Conference 57–61 (2010).
Salvatier J, Wiecki TV, Fonnesbeck C. Probabilistic programming in Python using PyMC3. PeerJ Comput. Sci. 2016;2:e55. PubMed PMC
Foreman-Mackey D, Hogg DW, Lang D, Goodman J. emcee: the MCMC hammer. Publ. Astron. Soc. Pac. 2013;125:306–312.
Meurer A, et al. SymPy: symbolic computing in Python. PeerJ Comput. Sci. 2017;3:e103.
Hagberg, A. A., Schult, D. A. & Swart, P. J. Exploring network structure, dynamics, and function using NetworkX. In Proceedings of the 7th Python in Science Conference. (eds G. Varoquaux, G., Vaught, T. & Millman, K. J.) 11–15 (2008).
Koelbel, C.H. & Zosel, M.E. The High Performance FORTRAN Handbook (MIT Press, 1993).
Piessens, R., de Doncker-Kapenga, E., Uberhuber, C.W. & Kahaner, D.K. QUADPACK: A Subroutine Package for Automatic Integration (Springer, 1983).
Hindmarsh, A.C. ODEPACK, a systematized collection of ODE solvers. Scientific Computing 55–64 (1983).
Dierckx, P. Curve and Surface Fitting with Splines (Oxford Univ. Press, 1993).
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).
Moré. Jorge J., Garbow, B. S. & Hillstrom, K. E. User guide for MINPACK-1. Report ANL-80–74 (Argonne National Laboratory, 1980).
Swarztrauber, P. N. Vectorizing the FFTs. In Parallel Computations (ed. Rodrigue, G.) 51–83 (Academic, 1982).
Swarztrauber PN. FFT algorithms for vector computers. Parallel Comput. 1984;1:45–63.
Lehoucq, R.B., Sorensen, D.C. & Yang, C. ARPACK users’ guide: solution of large scale eigenvalue problems with implicitly restarted Arnoldi methods. (Rice University, 1997).
Amos DE. Algorithm 644: A portable package for Bessel functions of a complex argument and nonnegative order. ACM Trans. Math. Softw. 1986;12:265–273.
Brown, B., Lovato, J. & Russell, K. CDFLIB, https://people.sc.fsu.edu/~jburkardt/f_src/cdflib/cdflib.html (accessed 6 July 2018).
Kernighan, B. W. & Ritchie, D. M. The C Programming Language 2nd edn (Prentice Hall Professional Technical Reference, 1988).
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. 2018;33:420–449.
Li, X.S. et al. SuperLU Users’ Guide. Report LBNL-44289 (Lawrence Berkeley National Laboratory, 1999).
Li XS. An overview of SuperLU: algorithms, implementation, and user interface. ACM Trans. Math. Softw. 2005;31:302–325.
Barber CB, Dobkin DP, Huhdanpaa H. The Quickhull algorithm for convex hulls. ACM Trans. Math. Softw. 1996;22:469–483.
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 7:1–7:6 (ACM, 2015).
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 18–25 (ACM, 2009).
VanderPlas, J. Benchmarking nearest neighbor searches in Python, https://jakevdp.github.io/blog/2013/04/29/benchmarking-nearest-neighbor-searches-in-python/ (19 April 2013).
Maneewongvatana, S. & Mount, D. M. Analysis of approximate nearest neighbor searching with clustered point sets. Preprint at https://arxiv.org/pdf/cs/9901013.pdf (1999).
Molden, S. ENH: Enhancements to spatial.cKDTree, https://github.com/scipy/scipy/pull/4374/ (7 January 2015).
Aspnas, M., Signell, A. & Westerholm, J. Efficient assembly of sparse matrices using hashing. In Applied Parallel Computing. State of the Art in Scientific Computing (eds Kagstrom, B. et al.) 900–907 (Springer, 2007).
Cormen, T. H., Stein, C., Rivest, R. L. & Leiserson, C. E. Introduction to Algorithms 2nd edn (McGraw-Hill Higher Education, 2001).
Moore A. W. et al. Fast algorithms and efficient statistics: N-point correlation functions. In Mining the Sky. ESO Astrophysics Symposia (European Southern Observatory) (eds Banday, A. J., Zaroubi, S. & Bartelmann, M.) 71–82 (Springer, 2001).
Feng, Y. ENH: Faster count_neighour in cKDTree / + weighted input data https://github.com/scipy/scipy/pull/5647 (2015).
Martin AM, Giovanelli R, Haynes MP, Guzzo L. The clustering characteristics of HI-selected galaxies from the 40% ALFALFA survey. Astrophys. J. 2012;750:38.
Anderson, E. et al. LAPACK Users’ Guide 3rd edn (Society for Industrial and Applied Mathematics, 1999).
Henriksen, I. Circumventing the linker: using SciPy’s BLAS and LAPACK within Cython. In Proceedings of the 14th Python in Science Conference(SciPy 2015) (eds Huff, K. & Bergstra, J.) 49–52 (2015).
Andersen, E. D. & Andersen, K. D. (2000) The Mosek interior point optimizer for linear programming: an implementation of the homogeneous algorithm. In High Performance Optimization 197–232 (Springer, 2000).
The NETLIB LP test problem set, http://www.numerical.rl.ac.uk/cute/netlib.html (2019).
Andersen ED, Andersen KD. Presolving in linear programming. Math. Program. 1995;71:221–245.
Wormington M, Panaccione C, Matney Kevin M, Bowen DK. Characterization of structures from X-ray scattering data using genetic algorithms. Philos. Trans. R. Soc. Lond. A. 1999;357:2827–2848.
Storn R, Price K. Differential evolution — a simple and efficient heuristic for global optimization over continuous spaces. J. Glob. Optim. 1997;11:341–359.
Griffiths TL, Steyvers M. Finding scientific topics. Proc. Natl Acad. Sci. USA. 2004;101(Suppl. 1):5228–5235. PubMed PMC
Dierckx, P. Curve and Surface Fitting with Splines (Oxford Univ. Press, 1993).
Virtanen, P. ENH: interpolate: rewrite ppform evaluation in Cython, https://github.com/scipy/scipy/pull/2885 (2013).
Burovski, E. add b-splines, https://github.com/scipy/scipy/pull/3174 (27 December 2013).
de Boor, C. A Practical Guide to Splines (Springer, 1978).
Mayorov, N. ENH: CubicSpline interpolator, https://github.com/scipy/scipy/pull/5653 (2 January 2016).
Fritsch FN, Carlson RE. Monotone piecewise cubic interpolation. SIAM J. Numer. Anal. 1980;17:238–246.
Akima H. A new method of interpolation and smooth curve fitting based on local procedures. J. Assoc. Comput. Mach. 1970;17:589–602.
Beck, K. Test-driven Development: By Example (Addison-Wesley, 2003).
Silver A. Collaborative software development made easy. Nature. 2017;550:143–144. PubMed
Eghbal, N. Roads and Bridges: The Unseen Labor Behind Our Digital Infrastructure (Ford Foundation, 2016).
The Astropy Collaboration. et al. The Astropy Project: building an open-science project and status of the v2.0 core package. Astron. J. 2018;156:123.
Lev, O., Dufresne, J., Kasim, R., Skinn, B. & Wilk, J. pypinfo: view PyPI download statistics with ease, https://github.com/ofek/pypinfo (2018).
Abbott BP, et al. Observation of gravitational waves from a binary black hole merger. Phys. Rev. Lett. 2016;116:061102. PubMed
David Liu. The Intel distribution for Python, https://software.intel.com/en-us/articles/intel-optimized-packages-for-the-intel-distribution-for-python (25 August 2017, updated 30 October 2017, accessed 25 July 2018).
Nelder JA, Mead R. A simplex method for function minimization. Comput. J. 1965;7:308–313.
Wright, M. H. Direct search methods: once scorned, now respectable. Pitman Research Notes in Mathematics Series 191–208 (1996).
Powell MJD. An efficient method for finding the minimum of a function of several variables without calculating derivatives. Comput. J. 1964;7:155–162.
Powell, M. J. D. A direct search optimization method that models the objective and constraint functions by linear interpolation. In Advances in Optimization and Numerical Analysis (eds Gomez, S. & Hennart, J. P.) 51–67 (Springer, 1994).
Powell MJD. Direct search algorithms for optimization calculations. Acta Numerica. 1998;7:287–336.
Powell MJD. A view of algorithms for optimization without derivatives. Math. Today Bull. Inst. Math. Appl. 2007;43:170–174.
Polak E, Ribiere G. Note sur la convergence de methodes de directions conjuguees. Rev. française d’informatique et. de. Rech. op.érationnelle. 1969;3:35–43.
Nocedal, J. & Wright, S. Numerical Optimization 2nd edn (Springer Science & Business Media, 2006).
Byrd RH, Lu P, Nocedal J, Zhu C. A limited memory algorithm for bound constrained optimization. SIAM J. Sci. Comput. 1995;16:1190–1208.
Zhu C, Byrd RH, Lu P, Nocedal J. Algorithm 778: L-BFGS-B: Fortran subroutines for large-scale bound-constrained optimization. ACM Trans. Math. Softw. 1997;23:550–560.
Schittkowski K. On the convergence of a sequential quadratic programming method with an augmented Lagrangian line search function. Mathematische Operationsforschung und Statistik. Ser. Optim. 1983;14:197–216.
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. 1982;38:115–127.
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. 1982;38:83–114.
Kraft, D. A software package for sequential quadratic programming. Report DFVLR-FR 88–28 (Deutsche Forschungs- und Versuchsanstalt für Luft- und Raumfahrt, 1988).
Nash SG. Newton-type minimization via the Lanczos method. SIAM J. Numer. Anal. 1984;21:770–788.
Powell, M. J. D. A new algorithm for unconstrained optimization. Nonlinear Programming 31–65 (1970).
Steihaug T. The conjugate gradient method and trust regions in large scale optimization. SIAM J. Numer. Anal. 1983;20:626–637.
Conn, A.R., Gould, N.I.M. & Toint, P.L. Trust Region Methods (SIAM, 2000).
Moré JJ, Sorensen DC. Computing a trust region step. SIAM J. Sci.Statist. Comput. 1983;4:553–572.
Gould NIM, Lucidi S, Roma M, Toint PL. Solving the trust-region subproblem using the Lanczos method. SIAM J. Optim. 1999;9:504–525.
Abbasi, H. Sparse: a more modern sparse array library. In Proceedings of the 17th Python in Science Conference (eds Akici, F. et al.) 27–30 (2018).
Mohr PJ, Newell DB, Taylor BN. CODATA recommended values of the fundamental physical constants: 2014. J. Phys. Chem. Ref. Data. 2016;45:043102. PubMed PMC
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).
Rew R, Davis G. NetCDF: an interface for scientific data access. IEEE Comput. Graph. Appl. 1990;10:76–82.
Duff, I.S., Grimes, R.G. & Lewis, J.G. Users’ guide for the Harwell-Boeing sparse matrix collection (release I), http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.41.8922 (1992).
Observation of super-Alfvénic slippage of reconnecting magnetic field lines on the Sun
JWST sighting of decametre main-belt asteroids and view on meteorite sources
Sacroiliac joint auricular surface morphology modulates its mechanical environment
The kinetics of uracil-N-glycosylase distribution inside replication foci
Identification of methylation-sensitive human transcription factors using meSMiLE-seq
Stimulus duration encoding occurs early in the moth olfactory pathway
Variations in plume activity reveal the dynamics of water-filled faults on Enceladus
Quantum Chemistry-Based Prediction of Electron Ionization Mass Spectra for Environmental Chemicals
A quantitative description of light-limited cyanobacterial growth using flux balance analysis
Terahertz magnetic response of plasmonic metasurface resonators: origin and orientation dependence
Geographic variation of mutagenic exposures in kidney cancer genomes