├── .circleci └── config.yml ├── .gitignore ├── LICENSE ├── README.md └── scipy-1.0 ├── Makefile ├── README.md ├── ckdtree.tex ├── consortium.tex ├── core-dev.tex ├── covlett.tex ├── figure_preparation ├── asv.svg ├── asv_NM.pdf ├── asv_NM.svg ├── scipy_timeline.svg ├── scipy_timeline_NM.pdf ├── scipy_timeline_NM.svg ├── scipy_timeline_NM2.pdf └── scipy_timeline_NM2.svg ├── formatting_rebuttal.tex ├── naturemag-doi.bst ├── paper.pdf ├── paper.tex ├── poly.tex ├── rebuttal.tex ├── references.bib ├── scipy-optimize.tex ├── static ├── asv.pdf ├── jabbrv-ltwa-all.ldf ├── jabbrv-ltwa-en.ldf ├── jabbrv.sty ├── scipy_timeline.pdf └── wlscirep.cls ├── subpackages.tex └── supporting_info ├── asv_bench ├── cKDTree │ ├── asv.conf.json │ ├── asv.conf.json.cython018 │ ├── asv.conf.json.cython0273 │ ├── benchmark_patch_diff.txt │ ├── benchmarks.json.cython018 │ └── ckdtree_asv_supporting.tar.xz └── sparse │ ├── sparse_coo_dia_to_csr_csc.png │ └── sparse_iteration_bench.png ├── knn_complexity_confirm.png ├── scipy_historical_coverage.txt └── total_lines.txt /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | 3 | jobs: 4 | build: 5 | docker: 6 | - image: person142/latex:latest 7 | steps: 8 | - checkout 9 | - run: | 10 | apt-get install -y texlive-science 11 | mkdir /papers/artifacts 12 | cd scipy-1.0 13 | make 14 | cp paper.pdf /papers/artifacts 15 | - store_artifacts: 16 | path: /papers/artifacts 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | 3 | *.aux 4 | *.fdb_latexmk 5 | *.fls 6 | *.log 7 | *.bbl 8 | *.out 9 | *.blg 10 | paper.pdf 11 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2016- SciPy Developers. 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | a. Redistributions of source code must retain the above copyright notice, 8 | this list of conditions and the following disclaimer. 9 | b. Redistributions in binary form must reproduce the above copyright 10 | notice, this list of conditions and the following disclaimer in the 11 | documentation and/or other materials provided with the distribution. 12 | c. The names of the SciPy Developers may not be used to endorse or promote 13 | products derived from this software without specific prior written 14 | permission. 15 | 16 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 17 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS 20 | BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, 21 | OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 23 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 24 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 25 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 26 | THE POSSIBILITY OF SUCH DAMAGE. 27 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # scipy-articles 2 | This repository is meant for storing and collaborating on publications about 3 | SciPy written by the SciPy development team. 4 | 5 | **Repo organization**: one independent directory per article. Within that 6 | directory should be placed: 7 | 8 | - all article content (text, code, supporting data) 9 | - tests for code if needed 10 | - build scripts, style files, etc. to reproduce the complete article 11 | - a README file to explain how to build the article and details on where it has 12 | been or will be submitted, who are the lead authors, etc. 13 | 14 | **License**: all content in this repo is BSD-licensed. Using the same license 15 | as for SciPy itself helps in reusing code, documentation and text. 16 | Some content may have to be dual-licensed to conform to journal requirements 17 | (for example: The Journal of Open Source Software) mandates CC BY 4.0 for text 18 | and MIT for code). This will be made clear in the README of the article 19 | itself. 20 | 21 | **Governance**: decisions about content in this repository, and about which 22 | articles to write in the first place, are made by the SciPy development team in 23 | the same way as decisions about SciPy itself are made. 24 | 25 | ## Types of publications 26 | 27 | At the moment we foresee writing two kinds of articles: 28 | 29 | 1. Traditional full-length articles (peer reviewed). 30 | 2. Abstract articles (peer reviewed). 31 | 32 | An abstract article is a very brief article, aimed at providing a citable 33 | peer-reviewed paper with minimal effort that allows contributors to get 34 | academic credit for their work. See http://joss.theoj.org/about for more 35 | details on this. 36 | 37 | The purposes of these two types of articles are different. An abstract article 38 | is only meant to give credit to contributors to (a) particular release(s). 39 | The frequency of writing such an article is a balance between providing new 40 | contributors with credit and diluting citations. A reasonable frequency is 41 | probably once every 1.5 or 2 years. 42 | 43 | A full-length article contains content that will help readers understand the 44 | scope of SciPy, the development process, major new features, plans for future 45 | development, etc. It also provides a more significant level of credit, hence 46 | the higher bar for authorship (see below). We plan only a single such article 47 | at the moment, with the publication date coinciding with the 1.0 release. 48 | 49 | ## Authorship policy 50 | 51 | We aim to err on the side of being too inclusive rather than exclusive. 52 | Any concerns regarding the author list for a particular article can be brought 53 | up on the scipy-dev mailing list or directly with one of the authors or SciPy 54 | core developers. 55 | 56 | We believe it's not productive to define a criterion for inclusion as an author 57 | on a paper in terms of number of commits or lines of code written. Instead, we 58 | will use these guidelines: 59 | 60 | - For a full-length article, an author should have contributed at least either 61 | one major feature in SciPy or done a significant amount of maintenance work. 62 | - For an abstract article, an author should have made a nontrivial 63 | contribution. This means: fixing a typo is not enough, but a single bug fix 64 | can be. 65 | 66 | The author list for an abstract article will be ordered alphabetically or 67 | reverse-alphabetically (alternating, starting with alphabetically). 68 | 69 | The author list for a full article will be ordered by commit count over the 70 | period the paper covers. 71 | 72 | -------------------------------------------------------------------------------- /scipy-1.0/Makefile: -------------------------------------------------------------------------------- 1 | TEX = $(wildcard *.tex) 2 | 3 | .PHONY: paper 4 | paper: $(TEX) 5 | TEXINPUTS=.//: latexmk -pdf -use-make paper.tex 6 | 7 | .PHONY: covlett 8 | covlett: $(TEX) 9 | TEXINPUTS=.//: latexmk -pdf -use-make covlett.tex 10 | 11 | .PHONY: clean 12 | clean: 13 | @rm -f *~ 14 | latexmk -CA 15 | -------------------------------------------------------------------------------- /scipy-1.0/README.md: -------------------------------------------------------------------------------- 1 | # SciPy 1.0 Manuscript 2 | 3 | To access the latest pdf version of the paper draft, use this link to the builds on CircleCI and look at the "artifacts" tab of the most recent build: 4 | 5 | [![CircleCI](https://circleci.com/gh/scipy/scipy-articles/tree/master.svg?style=svg)](https://circleci.com/gh/scipy/scipy-articles/tree/master) 6 | -------------------------------------------------------------------------------- /scipy-1.0/ckdtree.tex: -------------------------------------------------------------------------------- 1 | The \texttt{scipy.spatial.ckdtree} module, which implements a space-partitioning data structure that 2 | organizes points in $k$-dimensional space, was rewritten in C++ with templated classes. 3 | Support was added for periodic boundary conditions, which are often used 4 | in simulations of physical processes. 5 | 6 | In 2013, the time complexity of the $k$-nearest neighbor search from 7 | \texttt{cKDTree.query} was approximately loglinear \cite{knn-jake}, 8 | consistent with its formal description \cite{kdtree-search-algo}. 9 | Since then, we have enhanced \texttt{cKDTree.query} by reimplementing it in 10 | C++, removing memory leaks, and allowing release of the global interpreter lock (GIL) so that 11 | multiple threads may be used\cite{gh-4374}. This generally improved 12 | performance on any given problem (Figure~\ref{fig:asvbench}) 13 | while preserving the asymptotic complexity. 14 | %(Figure~\ref{fig:knn-complexity}). 15 | 16 | In 2015, SciPy added the \texttt{sparse\_distance\_matrix} routine for generating 17 | approximate sparse distance matrices between \texttt{KDTree} objects by ignoring 18 | all distances that exceed a user-provided value. This routine is not 19 | limited to the conventional L2 (Euclidean) norm but supports any Minkowski 20 | $p$-norm between 1 and infinity. By default, the returned data structure is a 21 | Dictionary Of Keys (DOK) based sparse matrix, which is very efficient for matrix 22 | construction. This hashing approach to sparse matrix assembly can be 7 times 23 | faster than constructing with CSR format 24 | \cite{10.1007/978-3-540-75755-9_107}, and the C++ level sparse matrix construction 25 | releases the Python GIL for increased performance. Once the matrix is constructed, 26 | distance value retrieval has an amortized constant time complexity 27 | \cite{Cormen:2001:IA:580470}, and the DOK structure can be efficiently converted 28 | to a CSR, CSC, or COO matrix to allow for 29 | speedy arithmetic operations. 30 | 31 | In 2015 the \texttt{cKDTree} dual tree counting algorithm\cite{Moore2000ar} 32 | was enhanced to support weights\cite{ckdtree-weights}, which are 33 | essential in many scientific applications, e.g. computing correlation 34 | functions of galaxies\cite{0004-637X-750-1-38}. 35 | -------------------------------------------------------------------------------- /scipy-1.0/consortium.tex: -------------------------------------------------------------------------------- 1 | 2 | {\bfseries 3 | Aditya Vijaykumar$^{32,33}$, 4 | Alessandro Pietro Bardelli$^{10}$, 5 | Alex Rothberg$^{10}$, 6 | Andreas Hilboll$^{34}$, 7 | Andreas Kloeckner$^{35}$, 8 | Anthony Scopatz$^{2}$, 9 | Antony Lee$^{36}$, 10 | Ariel Rokem$^{37}$, 11 | C. Nathan Woods$^{9}$, 12 | Chad Fulton$^{38}$, 13 | Charles Masson$^{39}$, 14 | Christian H\"aggstr\"om$^{40}$, 15 | Clark Fitzgerald$^{41}$, 16 | David A. Nicholson$^{42}$, 17 | David R Hagen$^{43}$, 18 | Dmitrii V. Pasechnik$^{44}$, 19 | Emanuele Olivetti$^{45}$, 20 | Eric Martin$^{10}$, 21 | Eric Wieser$^{46}$, 22 | Fabrice Silva$^{47}$, 23 | Felix Lenders$^{48,49,50}$, 24 | Florian Wilhelm$^{51}$, 25 | G. Young$^{10}$, 26 | Gavin A. Price$^{52}$, 27 | Gert-Ludwig Ingold$^{53}$, 28 | Gregory E. Allen$^{54}$, 29 | Gregory R. Lee$^{55,56}$, 30 | Herv\'e Audren$^{57}$, 31 | Irvin Probst$^{58}$, 32 | J\"org P. Dietrich$^{59,60}$, 33 | Jacob Silterra$^{61}$, 34 | James T Webber$^{62}$, 35 | Janko Slavi\v{c}$^{63}$, 36 | Joel Nothman$^{64}$, 37 | Johannes Buchner$^{65,66}$, 38 | Johannes Kulick$^{67}$, 39 | Johannes L. Sch\"{o}nberger$^{10}$, 40 | Jos\'e Vin\'icius de Miranda Cardoso$^{68}$, 41 | Joscha Reimer$^{69}$, 42 | Joseph Harrington$^{70}$, 43 | Juan Luis Cano Rodr\'iguez$^{71}$, 44 | Juan Nunez-Iglesias$^{72}$, 45 | Justin Kuczynski$^{73}$, 46 | Kevin Tritz$^{74}$, 47 | Martin Thoma$^{75}$, 48 | Matthew Newville$^{76}$, 49 | Matthias K\"ummerer$^{77}$, 50 | Maximilian Bolingbroke$^{78}$, 51 | Michael Tartre$^{79}$, 52 | Mikhail Pak$^{80}$, 53 | Nathaniel J. Smith$^{10}$, 54 | Nikolai Nowaczyk$^{10}$, 55 | Nikolay Shebanov$^{81}$, 56 | Oleksandr Pavlyk$^{82}$, 57 | Per A. Brodtkorb$^{83}$, 58 | Perry Lee$^{10}$, 59 | Robert T. McGibbon$^{84}$, 60 | Roman Feldbauer$^{85}$, 61 | Sam Lewis$^{86}$, 62 | Sam Tygier$^{87}$, 63 | Scott Sievert$^{88}$, 64 | Sebastiano Vigna$^{89}$, 65 | Stefan Peterson$^{10}$, 66 | Surhud More$^{90,91}$, 67 | Tadeusz Pudlik$^{92}$, 68 | Takuya Oshima$^{93}$, 69 | Thomas J. Pingel$^{94}$, 70 | Thomas P. Robitaille$^{95}$, 71 | Thomas Spura$^{10}$, 72 | Thouis R. Jones$^{96}$, 73 | Tim Cera$^{10}$, 74 | Tim Leslie$^{10}$, 75 | Tiziano Zito$^{97}$, 76 | Tom Krauss$^{98}$, 77 | Utkarsh Upadhyay$^{99}$, 78 | Yaroslav O. Halchenko$^{100}$, 79 | Yoshiki V\'azquez-Baeza$^{101}$ 80 | } 81 | \newline 82 | \hfill \break 83 | $^{32}$International Centre for Theoretical Sciences, Tata Institute of Fundamental Research, Bengaluru 560089, India, 84 | $^{33}$Department of Physics, Birla Institute of Technology and Science, Pilani 330331, India, 85 | $^{34}$Institute of Environmental Physics, University of Bremen, Bremen, Germany, 86 | $^{35}$Department of Computer Science, University of Illinois at Urbana-Champaign, 201 N. Goodwin Ave, Urbana, IL 616801, USA, 87 | $^{36}$Laboratoire Photonique, Num\'erique et Nanosciences UMR 5298, Universit\'e de Bordeaux, Institut d'Optique Graduate School, CNRS, 33400 Talence, France, 88 | $^{37}$The University of Washington eScience Institute, The University of Washington, Seattle, WA 98105, USA, 89 | $^{38}$Federal Reserve Board of Governors, 20th and Constitution Ave. NW, Washington, DC 20551, U.S.A., 90 | $^{39}$Datadog Inc., 620 8th Avenue New York, NY 10018, USA, 91 | $^{40}$HQ, Orexplore, Torshamnsgatan 30B, Stockholm, Sweden, 92 | $^{41}$Statistics Department, University of California - Davis, Davis, CA 95616, USA, 93 | $^{42}$Emory University, Atlanta, GA 30322, USA, 94 | $^{43}$Applied BioMath, 561 Virginia Rd Ste 220, Concord, MA 01742, USA, 95 | $^{44}$Department of Computer Science, University of Oxford, Wolfson Building, Parks Road, OX1 3QD Oxford, UK, 96 | $^{45}$NeuroInformatics Laboratory, Bruno Kessler Foundation, Trento 38123, Italy, 97 | $^{46}$Department of Engineering, University of Cambridge, Trumpington St, Cambridge CB2 1PZ, UK, 98 | $^{47}$Aix Marseille Univ, CNRS, Centrale Marseille, LMA, Marseille, France, 99 | $^{48}$Interdisciplinary Center for Scientific Computing (IWR), Heidelberg University, Im Neuenheimer Feld 205 69120 Heidelberg, Germany, 100 | $^{49}$ABB Corporate Research, ABB AG, Wallstadter Str. 59 68526 Ladenburg, Germany, 101 | $^{50}$Institut f\"ur Mathematische Optimierung, Technische Universit\"at Carolo-Wilhelmina zu Braunschweig, Universit\"atsplatz 2 38106 Braunschweig, Germany, 102 | $^{51}$Independent Researcher, Cologne, Germany, 103 | $^{52}$Lawrence Berkeley National Laboratory, Berkeley, CA 94720, USA, 104 | $^{53}$Institut f{\"u}r Physik, Universit{\"a}t Augsburg, Universit{\"a}tsstra{\ss}e 1, 86135 Augsburg, Germany, 105 | $^{54}$Applied Research Laboratories, The University of Texas at Austin, P.O. Box 8029 Austin, TX 78713, USA, 106 | $^{55}$Department of Radiology, School of Medicine, University of Cincinnati, Cincinnati, OH 45221, USA, 107 | $^{56}$Department of Radiology, Cincinnati Children's Hospital Medical Center, Cincinnati, OH 45229, USA, 108 | $^{57}$Ascent Robotics Inc., 1-6-10 Hiroo Shibuya Tokyo, Japan, 109 | $^{58}$ENSTA Bretagne, 2 rue François Verny, Brest, France, 110 | $^{59}$Faculty of Physics, Ludwig-Maximilians-Universit\"at, Scheinerstr. 1, 81679 M\"unchen, Germany, 111 | $^{60}$Excellence Cluster Universe, Boltzmannstr. 2, 85748 Garching b. M\"unchen, Germany, 112 | $^{61}$Independent Researcher, USA, 113 | $^{62}$Data Sciences, Chan Zuckerberg Biohub, San Francisco, CA 94158, USA, 114 | $^{63}$Faculty of Mechanical Engineering, University of Ljubljana, A\v{s}ker\v{c}eva 6 1000 Ljubljana, Slovenia-EU, 115 | $^{64}$Sydney Informatics Hub, The University of Sydney, NSW 2006, Australia, 116 | $^{65}$Instituto de Astrof\'{i}sica, Pontificia Universidad Cat\'{o}lica de Chile, Casilla 306, Santiago 22, Chile, 117 | $^{66}$Max Planck Institute for Extraterrestrial Physics, Giessenbachstrasse, 85741 Garching, Germany, 118 | $^{67}$University of Stuttgart, Machine Learning and Robotics Lab, Universitätsstr. 38, 70569 Stuttgart, Germany, 119 | $^{68}$Department of Electrical Engineering, Universidade Federal de Campina Grande, 58429900 PB, Brazil, 120 | $^{69}$Department of Computer Science, Kiel University, 24098 Kiel, Germany, 121 | $^{70}$Planetary Sciences Group and Florida Space Institute and Department of Physics, University of Central Florida, 4111 Libra Drive Orlando Florida 32816-2385, USA, 122 | $^{71}$Independent Researcher, Spain, 123 | $^{72}$Monash Micro Imaging, Monash University, Clayton VIC 3800, Australia, 124 | $^{73}$Department of Molecular, Cellular, and Developmental Biology, University of Colorado, Boulder, Boulder, CO 80303, USA, 125 | $^{74}$Department of Physics and Astronomy, Johns Hopkins University, 3400 N. Charles Street, Baltimore, MD 21218, USA, 126 | $^{75}$Independent Researcher, Munich, Germany, 127 | $^{76}$Center for Advanced Radiation Sources, The University of Chicago, Chicago, IL 60637, USA, 128 | $^{77}$University of T\"ubingen, T\"ubingen, Germany, 129 | $^{78}$Independent Researcher, United Kingdom, 130 | $^{79}$Two Sigma Investments, 100 Avenue of the Americas 16th Floor, New York, NY 10013, USA, 131 | $^{80}$Department of Mechanical Engineering, Technical University of Munich, Boltzmannstr. 15, 85748 Garching, Germany, 132 | $^{81}$Independent Researcher, Berlin, Germany, 133 | $^{82}$Intel Corp., Austin, TX 78746, USA, 134 | $^{83}$Independent Researcher, Horten, Norway, 135 | $^{84}$D. E. Shaw Research, New York, NY 10036, USA, 136 | $^{85}$Division of Computational Systems Biology, Department of Microbiology and Ecosystem Science, University of Vienna, Althanstra{\ss}e 14, 1090 Vienna, Austria, 137 | $^{86}$Independent Researcher, Melbourne, Australia, 138 | $^{87}$School of Physics and Astronomy, University of Manchester, Oxford Road, M13 9PL, UK, 139 | $^{88}$Electrical and Computer Engineering, University of Wisconsin--Madison, 1415 Engineering Drive Madison, WI, USA, 140 | $^{89}$Dipartimento di Informatica, Universit\`a degli Studi di Milano, via Celoria 18, 20133 Milano MI, Italy, 141 | $^{90}$Inter-University Centre for Astronomy and Astrophysics, Ganeshkhind, Pune, 411007, India, 142 | $^{91}$Kavli Institute for the Physics and Mathematics of the Universe, Kashiwanoha 5-1-5, Kashiwa-shi, 2778583, Japan, 143 | $^{92}$Waymo LLC, Mountain View, CA 94043, USA, 144 | $^{93}$Faculty of Engineering, Niigata University, 8050 Ikarashi-Ninocho, Nishi-ku, Niigata, 9502181, Japan, 145 | $^{94}$Virginia Polytechnic Institute and State University, Blacksburg, VA 24061, USA, 146 | $^{95}$Aperio Software, Headingley Enterprise and Arts Centre, Bennett Road, Leeds, LS6 3HN, United Kingdom, 147 | $^{96}$Broad Institute, Cambridge, MA 02142, USA, 148 | $^{97}$Department of Psychology, Humboldt University of Berlin, Rudower Chaussee 18, 12489 Berlin, Germany, 149 | $^{98}$Epiq Solutions, Schaumburg, IL 60173, USA, 150 | $^{99}$Max Planck Institute for Software Systems, Kaiserslautern, Germany, 151 | $^{100}$Department of Psychology and Brain Sciences, Dartmouth College, Hanover, NH 03755, USA, 152 | $^{101}$Jacobs School of Engineering, University of California San Diego, 9500 Gilman Drive, La Jolla, CA 92161, USA -------------------------------------------------------------------------------- /scipy-1.0/core-dev.tex: -------------------------------------------------------------------------------- 1 | \author[1]{Pauli Virtanen} 2 | \author[2,*]{Ralf Gommers} 3 | \author[3,4,5,6,2]{Travis E. Oliphant} 4 | \author[7,8,*]{Matt Haberland} 5 | \author[9,*]{Tyler Reddy} 6 | \author[10]{David Cournapeau} 7 | \author[11]{Evgeni Burovski} 8 | \author[12,13]{Pearu Peterson} 9 | \author[10]{Warren Weckesser} 10 | \author[14]{Jonathan Bright} 11 | \author[15]{St\'efan J. van der Walt} 12 | \author[16]{Matthew Brett} 13 | \author[10]{Joshua Wilson} 14 | \author[15,17]{K. Jarrod Millman} 15 | \author[18]{Nikolay Mayorov} 16 | \author[19]{Andrew R. J. Nelson} 17 | \author[5]{Eric Jones} 18 | \author[5]{Robert Kern} 19 | \author[20]{Eric Larson} 20 | \author[21]{CJ Carey} 21 | \author[10]{\.{I}lhan Polat} 22 | \author[22]{Yu Feng} 23 | \author[23]{Eric W. Moore} 24 | \author[24]{Jake VanderPlas} 25 | \author[10]{Denis Laxalde} 26 | \author[10]{Josef Perktold} 27 | \author[25]{Robert Cimrman} 28 | \author[26]{Ian Henriksen} 29 | \author[10]{E. A. Quintero} 30 | \author[10,27]{Charles R Harris} 31 | \author[28]{Anne M. Archibald} 32 | \author[29]{Ant\^{o}nio H. Ribeiro} 33 | \author[30]{Fabian Pedregosa} 34 | \author[31]{Paul {van Mulbregt}} 35 | \author[ ]{SciPy 1.0 Contributors} 36 | \affil[1]{University of Jyv\"askyl\"a, FI-40014 University of Jyv\"askyl\"a, Finland} 37 | \affil[2]{Quansight LLC, Austin, TX, USA} 38 | \affil[3]{Ultrasound Imaging, Mayo Clinic, Rochester, MN 55902, USA} 39 | \affil[4]{Electrical Engineering, Brigham Young University, Provo, UT 84604, USA} 40 | \affil[5]{Enthought, Inc., Austin, TX 78701, USA} 41 | \affil[6]{Anaconda Inc, Austin, TX 78701, USA} 42 | \affil[7]{BioResource and Agricultural Engineering Department, California Polytechnic State University, San Luis Obispo, CA 93407, USA} 43 | \affil[8]{Department of Mathematics, University of California, Los Angeles, CA 90025, USA} 44 | \affil[9]{Los Alamos National Laboratory, Los Alamos, NM 87544} 45 | \affil[10]{Independent Researcher} 46 | \affil[11]{Higher School of Economics, Myasnitskaya 20, Moscow 101000 Russia} 47 | \affil[12]{Independent Researcher, Saue, Estonia} 48 | \affil[13]{Department of Mechanics and Applied Mathematics, Institute of Cybernetics at Tallinn Technical University, Akadeemia Rd 21 Tallinn, Estonia} 49 | \affil[14]{Independent Researcher, NY, USA} 50 | \affil[15]{Berkeley Institute for Data Science, University of California, Berkeley, CA 94720, USA} 51 | \affil[16]{School of Psychology, University of Birmingham, Edgbaston, Birmigham B15 2TT, UK} 52 | \affil[17]{Division of Biostatistics, University of California, Berkeley, CA 94720, USA} 53 | \affil[18]{WayRay LLC, Skolkovo Innovation Center, Moscow, 143026, Russia} 54 | \affil[19]{Australian Nuclear Science and Technology Organisation, Locked Bag 2001, Kirrawee DC, NSW 2232, Australia} 55 | \affil[20]{Institute for Learning and Brain Sciences, University of Washington, Seattle, WA 98195, USA} 56 | \affil[21]{College of Information and Computing Sciences, University of Massachusetts Amherst, Amherst, MA 01002, USA} 57 | \affil[22]{Berkeley Center for Cosmological Physics, University of California, Berkeley, CA 94720, USA} 58 | \affil[23]{Bruker Biospin Corp., 15 Fortune Drive, Billerica, MA 01821} 59 | \affil[24]{University of Washington, Seattle, WA 98195, USA} 60 | \affil[25]{New Technologies - Research Centre, University of West Bohemia, Univerzitní 8, 306 14, Plzeň, Czech Republic} 61 | \affil[26]{Oden Institute for Computational Engineering and Sciences, The University of Texas at Austin, Austin, Texas 78712, USA} 62 | \affil[27]{Space Dynamics Laboratory, 1695 North Research Park Way, North Logan, UT 84341, USA} 63 | \affil[28]{Anton Pannekoek Institute, P.O. Box 94249, 1090 GE Amsterdam, The Netherlands} 64 | \affil[29]{Graduate Program in Electrical Engineering, Universidade Federal de Minas Gerais, 6627 Av. Antonio Carlos 31270-901 Belo Horizonte, Brazil} 65 | \affil[30]{Google LLC, Montreal, QC H3B 2Y5, Canada} 66 | \affil[31]{Google LLC, 355 Main St., Cambridge, MA 02142, USA} 67 | \affil[*]{scipy.articles@gmail.com} -------------------------------------------------------------------------------- /scipy-1.0/covlett.tex: -------------------------------------------------------------------------------- 1 | % based on template: 2 | % https://tex.stackexchange.com/questions/15532/looking-for-cover-letter-template 3 | 4 | \documentclass[10pt,stdletter,dateno]{newlfm} 5 | 6 | % to adjust vertical spacing properties of 7 | % newlfm class see: https://tex.stackexchange.com/a/65533/43006 8 | %\unprtop{0mm} 9 | \topmarginsize{0mm} 10 | \topmarginskip{0in} 11 | \headermarginsize{0in} 12 | \headermarginskip{0in} 13 | \MinHead{0in} 14 | %\dateskipafter{0pt} 15 | %\dateskipbefore{0pt} 16 | \sigskipbefore{40pt} 17 | %\sigskipafter{0pt} 18 | \closeskipbefore{1pt} 19 | %\closeskipafter{0pt} 20 | %\addrfromskipbefore{0pt} 21 | \addrfromskipafter{0in} 22 | \addrtoskipbefore{0in} 23 | %\addrtoskipafter{0pt} 24 | \newlfmP{Headlinewd=0pt,Footlinewd=0pt} 25 | \newlfmP{sigsize=10pt} 26 | \bottommarginskip{10pt} 27 | \MinFoot{0pt} 28 | \leftmarginsize{0.95in} 29 | \rightmarginsize{0.95in} 30 | 31 | \usepackage{kpfonts} 32 | \usepackage{hyperref} 33 | \usepackage{url} 34 | 35 | \hypersetup{% 36 | linkbordercolor=blue,% hyperlink borders will be blue 37 | pdfborderstyle={/S/U/W 1}% border style will be underline of width 1pt 38 | } 39 | \widowpenalty=1000 40 | \clubpenalty=1000 41 | 42 | \namefrom{Ralf Gommers, 43 | Matt Haberland, 44 | and Tyler Reddy} 45 | \addrfrom{% 46 | \today\\[10pt] 47 | Ralf Gommers\\ 48 | Quansight Labs\\ 49 | The Netherlands\\ 50 | \texttt{ralf.gommers@gmail.com}\\ 51 | %phone number\\ 52 | \\ 53 | Matt Haberland\\ 54 | BioResource and Agricultural Engineering\\ 55 | California Polytechnic State University\\ 56 | San Luis Obispo, CA 93407, USA\\ 57 | \texttt{mhaberla@calpoly.edu}\\ 58 | %phone number\\ 59 | \\ 60 | Tyler Reddy\\ 61 | CCS-7 Applied Computer Science Group\\ 62 | Los Alamos National Laboratory\\ 63 | Los Alamos, NM 87545, USA\\ 64 | \texttt{treddy@lanl.gov}\\ 65 | %phone number\\ 66 | } 67 | 68 | \addrto{% 69 | Dr. Rita Strack\\ 70 | Nature Methods Editorial Office\\ 71 | One New York Plaza Suite 4500\\ 72 | New York, NY 10004, USA} 73 | 74 | \greetto{Dear Dr. Strack,} 75 | \closeline{Sincerely,} 76 | \begin{document} 77 | \begin{newlfm} 78 | 79 | We are submitting the enclosed manuscript describing a milestone 80 | 1.0 release of SciPy for consideration to be published in 81 | \emph{Nature Methods}, as informally discussed. 82 | SciPy is the fundamental scientific 83 | computing library in the Python programming language. 84 | 85 | Hundreds of experts have contributed to our library, which 86 | has been downloaded millions of times and has over 100,000 dependent 87 | code repositories, including many used in the life sciences. 88 | 89 | SciPy lies at the base of the ecosystem of life science computational 90 | methods. Many studies, including an extremely influential \emph{Nature 91 | Methods} paper (\href{https://www.nature.com/articles/nmeth.f.303} 92 | {Caporaso \emph{et al.}~2010}), describe software that 93 | includes SciPy as a dependency without citing it. Others in \emph{ 94 | Nature Methods} (e.g.,\href{https://www.nature.com/articles/s41592-018-0114-z}{ 95 | Gruber \emph{et al.}~2018};\href{https://www.nature.com/articles/s41592-019-0403-1}{ 96 | Moen \emph{et al.}~2019}) -- and some 3000+ other articles -- 97 | cite SciPy's website for lack of 98 | a better alternative. As SciPy is central to so many biological studies, 99 | the research community would benefit from an article about SciPy to reference. 100 | Our preprint \href{https://arxiv.org/abs/1907.10121}{available on arXiv} 101 | only partially fulfills this need; we appreciate your consideration of 102 | the manuscript for publication in \emph{Nature Methods}. 103 | 104 | We suggest the following three peer reviewers as suitable candidates, 105 | and we do not have any specific reviewer exclusion requests: 106 | 107 | \begin{enumerate} 108 | \item Alan Edelman, \texttt{edelman@math.mit.edu}, co-creator of Julia 109 | programming language and Faculty at MIT. 110 | \item William Stein, \texttt{wstein@gmail.com}, originator and 111 | lead developer of SageMath. 112 | \item Kazunori Akiyama, \texttt{kazu@haystack.mit.edu}, first author 113 | of event horizon imaging paper that cites SciPy. 114 | \end{enumerate} 115 | 116 | \end{newlfm} 117 | \end{document} 118 | -------------------------------------------------------------------------------- /scipy-1.0/figure_preparation/asv_NM.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scipy/scipy-articles/5498688844f80c965a8511241dee62c3033924e3/scipy-1.0/figure_preparation/asv_NM.pdf -------------------------------------------------------------------------------- /scipy-1.0/figure_preparation/scipy_timeline_NM.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scipy/scipy-articles/5498688844f80c965a8511241dee62c3033924e3/scipy-1.0/figure_preparation/scipy_timeline_NM.pdf -------------------------------------------------------------------------------- /scipy-1.0/figure_preparation/scipy_timeline_NM2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scipy/scipy-articles/5498688844f80c965a8511241dee62c3033924e3/scipy-1.0/figure_preparation/scipy_timeline_NM2.pdf -------------------------------------------------------------------------------- /scipy-1.0/figure_preparation/scipy_timeline_NM2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 22 | 45 | 47 | 55 | 61 | 62 | 70 | 76 | 77 | 84 | 92 | 98 | 99 | 107 | 113 | 114 | 123 | 129 | 130 | 139 | 145 | 146 | 155 | 161 | 162 | 171 | 177 | 178 | 187 | 193 | 194 | 203 | 209 | 210 | 219 | 225 | 226 | 229 | 236 | 237 | 240 | 247 | 248 | 251 | 258 | 259 | 262 | 269 | 270 | 273 | 280 | 281 | 284 | 291 | 292 | 295 | 302 | 303 | 312 | 318 | 319 | 320 | 322 | 323 | 325 | image/svg+xml 326 | 328 | 329 | 330 | 331 | 332 | 337 | 342 | 347 | 352 | 357 | 362 | 367 | 372 | 377 | 382 | 387 | 392 | 397 | 402 | 407 | SciPy 0.1 Released Creation of SciKits Development moves to GitHub scipy.sparse.csgraphscipy.optimize.minimize 2001 2005 2007 2008 2010 2011 2012 2013 2015 2017 Transition to NumPy First Cython code,scipy.spatial Move to 6-month release cycles Continuous integration with TravisCI Cython interface for BLAS/LAPACK SciPy 1.0 released 705 | 706 | -------------------------------------------------------------------------------- /scipy-1.0/formatting_rebuttal.tex: -------------------------------------------------------------------------------- 1 | % based on template: 2 | % https://tex.stackexchange.com/questions/15532/looking-for-cover-letter-template 3 | 4 | \documentclass[10pt,stdletter,dateno]{newlfm} 5 | 6 | % to adjust vertical spacing properties of 7 | % newlfm class see: https://tex.stackexchange.com/a/65533/43006 8 | %\unprtop{0mm} 9 | \topmarginsize{0mm} 10 | \topmarginskip{0in} 11 | \headermarginsize{0in} 12 | \headermarginskip{0in} 13 | \MinHead{0in} 14 | %\dateskipafter{0pt} 15 | %\dateskipbefore{0pt} 16 | \sigskipbefore{40pt} 17 | %\sigskipafter{0pt} 18 | \closeskipbefore{1pt} 19 | %\closeskipafter{0pt} 20 | %\addrfromskipbefore{0pt} 21 | \addrfromskipafter{0in} 22 | \addrtoskipbefore{0in} 23 | %\addrtoskipafter{0pt} 24 | \newlfmP{Headlinewd=0pt,Footlinewd=0pt} 25 | \newlfmP{sigsize=10pt} 26 | \bottommarginskip{10pt} 27 | \MinFoot{0pt} 28 | \leftmarginsize{0.95in} 29 | \rightmarginsize{0.95in} 30 | 31 | \usepackage{kpfonts} 32 | \usepackage{hyperref} 33 | \usepackage{url} 34 | 35 | \hypersetup{% 36 | linkbordercolor=blue,% hyperlink borders will be blue 37 | pdfborderstyle={/S/U/W 1}% border style will be underline of width 1pt 38 | } 39 | \widowpenalty=1000 40 | \clubpenalty=1000 41 | 42 | \namefrom{Ralf Gommers, 43 | Matt Haberland, 44 | and Tyler Reddy} 45 | \addrfrom{% 46 | \today\\[10pt] 47 | Ralf Gommers\\ 48 | Quansight Labs\\ 49 | The Netherlands\\ 50 | \texttt{ralf.gommers@gmail.com}\\ 51 | %phone number\\ 52 | \\ 53 | Matt Haberland\\ 54 | BioResource and Agricultural Engineering\\ 55 | California Polytechnic State University\\ 56 | San Luis Obispo, CA 93407, USA\\ 57 | \texttt{mhaberla@calpoly.edu}\\ 58 | %phone number\\ 59 | \\ 60 | Tyler Reddy\\ 61 | CCS-7 Applied Computer Science Group\\ 62 | Los Alamos National Laboratory\\ 63 | Los Alamos, NM 87545, USA\\ 64 | \texttt{treddy@lanl.gov}\\ 65 | %phone number\\ 66 | } 67 | 68 | \addrto{% 69 | Dr. Rita Strack\\ 70 | Nature Methods Editorial Office\\ 71 | One New York Plaza Suite 4500\\ 72 | New York, NY 10004, USA} 73 | 74 | \greetto{Dear Dr. Strack,} 75 | \closeline{Sincerely,} 76 | \begin{document} 77 | \begin{newlfm} 78 | 79 | Thank you for helping us prepare the manuscript for submission. Each of your comments are addressed below. 80 | 81 | \begin{quote} 82 | Our standard word limit is 3000 words for the Introduction, Results and Discussion. We appreciate that shortening to this length is impossible, but we do ask that you try to trim to below 6000 words. Based on the formatting in your paper, it might make sense to have some sections, like Package Organization, as a separate Box. This would take that part out of the word count and allow you to keep the current formatting. I think figure 1 should also be its own Box (Box 1) because it is all text. 83 | \end{quote} 84 | 85 | Figure 1 is now Box 1, and the Package Organization section is now Box 2. The word count in the main text has been reduced from over 7,000 to fewer than 6,300. If additional reductions to the main text are required, we can quickly move paragraphs 2-4 (200 words) of the Language Choices section to a box. The first message in the Matrix-SIG mailing list (70 words) could also be moved to a box if required. 86 | 87 | \begin{quote} 88 | Your abstract must be fewer than 80 words and should not include citations. 89 | \end{quote} 90 | 91 | The length of the abstract has been reduced to 74 words. 92 | 93 | \begin{quote} 94 | As a guideline, Articles/Brief Communications allow up to 50 references in the main text. Please shorten if possible. 95 | \end{quote} 96 | 97 | This guideline was later amended: 98 | 99 | \begin{quote} 100 | You can keep your references. I agree 50 is not possible in this case. 101 | \end{quote} 102 | 103 | Thank you for understanding the difficulty in trimming the reference list. 104 | 105 | \begin{quote} 106 | Equations and symbols that will be set apart from the text must be in an editable format. Do not use embedded images for equations or symbols. 107 | \end{quote} 108 | 109 | We have attempted to satisfy this requirement; please let us know if any of the symbols are not editable. 110 | 111 | \begin{quote} 112 | All figures and tables, including Supplementary items, must be cited in the text in numerical order. Please renumber figures after you’ve made any additional Boxes and be sure to call out each Box in order. 113 | \end{quote} 114 | 115 | All figures, tables, and boxes are mentioned in the text and numbered according to the order in which they are mentioned. 116 | 117 | \begin{quote} 118 | Figure legends should be concise. Begin with a brief title and then describe what is presented in the figure and detail all relevant statistical information. Avoid inappropriate methodological detail and any interpretation or discussion of figures. 119 | \end{quote} 120 | 121 | Methodological detail and interpretation of figures has been moved from figure legends to the main text. 122 | 123 | \begin{quote} 124 | Please see the attached file with comments for revising your figures, tables and their legends. 125 | \end{quote} 126 | 127 | Per the attached ``Guide to Preparing Final Artwork'', figures are now 180mm wide PDFs with all text in Arial font, 7 pt. 128 | 129 | \begin{quote} 130 | As mentioned in our previous letter, all corresponding authors on a manuscript should have an ORCID – please visit your account in our manuscript system to link your ORCID to your profile, or to create one if necessary. Any author who wishes to add their ORCID must do so before the paper is accepted – this will no longer be possible to add at proof stage. For more information please see our previous letter or visit www.springernature.com/orcid. 131 | \end{quote} 132 | 133 | The corresponding authors have added their ORCIDs. 134 | 135 | Thank you for your consideration of the revised manuscript. 136 | 137 | \end{newlfm} 138 | \end{document} 139 | -------------------------------------------------------------------------------- /scipy-1.0/naturemag-doi.bst: -------------------------------------------------------------------------------- 1 | %% This is `naturemag-doi.bst` v1.3, modified from naturemag.bst 2 | %% by: 3 | %% - LianTze Lim (liantze@gmail.com) Feb 27, 2017 added 4 | %% jabbrv.sty and modified .bst to automatically abbreviate 5 | %% journal names. 6 | %% - Fredrik Erlandsson (fredrik.e@gmail.com) Dec 6, 2016 submitted 7 | %% patch to support DOIs in incollection, inproceedings and misc 8 | %% types. 9 | %% - LianTze Lim (liantze@gmail.com) Oct 6, 2016 to support 10 | %% DOI fields. 11 | %% 12 | %% This is file `naturemag.bst', 13 | %% generated with the docstrip utility. 14 | %% 15 | %% The original source files were: 16 | %% 17 | %% merlin.mbs (with options: `head,seq-no,nm-rev,ed-rev,jnrlst,nmlm,x5,m1,yr-par,xmth,vol-bf,vnum-x,volp-com,num-xser,jnm-x,bkpg-x,pub-date,edparxc,ppx,ed,abr,xedn,jabr,amper,and-xcom,etal-it,eprint,url,url-blk,bibinfo,nfss,{}') 18 | %% physjour.mbs (with options: `seq-no,nm-rev,ed-rev,jnrlst,nmlm,x5,m1,yr-par,xmth,vol-bf,vnum-x,volp-com,num-xser,jnm-x,bkpg-x,pub-date,edparxc,ppx,ed,abr,xedn,jabr,amper,and-xcom,etal-it,eprint,url,url-blk,bibinfo,nfss,{}') 19 | %% geojour.mbs (with options: `seq-no,nm-rev,ed-rev,jnrlst,nmlm,x5,m1,yr-par,xmth,vol-bf,vnum-x,volp-com,num-xser,jnm-x,bkpg-x,pub-date,edparxc,ppx,ed,abr,xedn,jabr,amper,and-xcom,etal-it,eprint,url,url-blk,bibinfo,nfss,{}') 20 | %% photjour.mbs (with options: `seq-no,nm-rev,ed-rev,jnrlst,nmlm,x5,m1,yr-par,xmth,vol-bf,vnum-x,volp-com,num-xser,jnm-x,bkpg-x,pub-date,edparxc,ppx,ed,abr,xedn,jabr,amper,and-xcom,etal-it,eprint,url,url-blk,bibinfo,nfss,{}') 21 | %% merlin.mbs (with options: `tail,seq-no,nm-rev,ed-rev,jnrlst,nmlm,x5,m1,yr-par,xmth,vol-bf,vnum-x,volp-com,num-xser,jnm-x,bkpg-x,pub-date,edparxc,ppx,ed,abr,xedn,jabr,amper,and-xcom,etal-it,eprint,url,url-blk,bibinfo,nfss,{}') 22 | %% ---------------------------------------- 23 | %% *** Style for the journal Nature (created by Peter Czoschke) *** 24 | %% 25 | %% Copyright 1994-2002 Patrick W Daly 26 | % =============================================================== 27 | % IMPORTANT NOTICE: 28 | % This bibliographic style (bst) file has been generated from one or 29 | % more master bibliographic style (mbs) files, listed above. 30 | % 31 | % This generated file can be redistributed and/or modified under the terms 32 | % of the LaTeX Project Public License Distributed from CTAN 33 | % archives in directory macros/latex/base/lppl.txt; either 34 | % version 1 of the License, or any later version. 35 | % =============================================================== 36 | % Name and version information of the main mbs file: 37 | % \ProvidesFile{merlin.mbs}[2002/10/21 4.05 (PWD, AO, DPC)] 38 | % For use with BibTeX version 0.99a or later 39 | %------------------------------------------------------------------- 40 | % This bibliography style file is intended for texts in ENGLISH 41 | % This is a numerical citation style, and as such is standard LaTeX. 42 | % It requires no extra package to interface to the main text. 43 | % The form of the \bibitem entries is 44 | % \bibitem{key}... 45 | % Usage of \cite is as follows: 46 | % \cite{key} ==>> [#] 47 | % \cite[chap. 2]{key} ==>> [#, chap. 2] 48 | % where # is a number determined by the ordering in the reference list. 49 | % The order in the reference list is that by which the works were originally 50 | % cited in the text, or that in the database. 51 | %--------------------------------------------------------------------- 52 | 53 | ENTRY 54 | { address 55 | archive 56 | author 57 | booktitle 58 | chapter 59 | edition 60 | editor 61 | eprint 62 | howpublished 63 | institution 64 | journal 65 | key 66 | month 67 | note 68 | number 69 | organization 70 | pages 71 | publisher 72 | school 73 | series 74 | title 75 | type 76 | url 77 | doi 78 | volume 79 | year 80 | } 81 | {} 82 | { label } 83 | INTEGERS { output.state before.all mid.sentence after.sentence after.block } 84 | FUNCTION {init.state.consts} 85 | { #0 'before.all := 86 | #1 'mid.sentence := 87 | #2 'after.sentence := 88 | #3 'after.block := 89 | } 90 | STRINGS { s t} 91 | FUNCTION {output.nonnull} 92 | { 's := 93 | output.state mid.sentence = 94 | { ", " * write$ } 95 | { output.state after.block = 96 | { add.period$ write$ 97 | newline$ 98 | "\newblock " write$ 99 | } 100 | { output.state before.all = 101 | 'write$ 102 | { add.period$ " " * write$ } 103 | if$ 104 | } 105 | if$ 106 | mid.sentence 'output.state := 107 | } 108 | if$ 109 | s 110 | } 111 | FUNCTION {output} 112 | { duplicate$ empty$ 113 | 'pop$ 114 | 'output.nonnull 115 | if$ 116 | } 117 | FUNCTION {output.check} 118 | { 't := 119 | duplicate$ empty$ 120 | { pop$ "empty " t * " in " * cite$ * warning$ } 121 | 'output.nonnull 122 | if$ 123 | } 124 | FUNCTION {fin.entry} 125 | { add.period$ 126 | write$ 127 | newline$ 128 | } 129 | 130 | FUNCTION {new.block} 131 | { output.state before.all = 132 | 'skip$ 133 | { after.block 'output.state := } 134 | if$ 135 | } 136 | FUNCTION {new.sentence} 137 | { output.state after.block = 138 | 'skip$ 139 | { output.state before.all = 140 | 'skip$ 141 | { after.sentence 'output.state := } 142 | if$ 143 | } 144 | if$ 145 | } 146 | FUNCTION {add.blank} 147 | { " " * before.all 'output.state := 148 | } 149 | 150 | FUNCTION {date.block} 151 | { 152 | new.block 153 | } 154 | 155 | FUNCTION {not} 156 | { { #0 } 157 | { #1 } 158 | if$ 159 | } 160 | FUNCTION {and} 161 | { 'skip$ 162 | { pop$ #0 } 163 | if$ 164 | } 165 | FUNCTION {or} 166 | { { pop$ #1 } 167 | 'skip$ 168 | if$ 169 | } 170 | FUNCTION {new.block.checka} 171 | { empty$ 172 | 'skip$ 173 | 'new.block 174 | if$ 175 | } 176 | FUNCTION {new.block.checkb} 177 | { empty$ 178 | swap$ empty$ 179 | and 180 | 'skip$ 181 | 'new.block 182 | if$ 183 | } 184 | FUNCTION {new.sentence.checka} 185 | { empty$ 186 | 'skip$ 187 | 'new.sentence 188 | if$ 189 | } 190 | FUNCTION {new.sentence.checkb} 191 | { empty$ 192 | swap$ empty$ 193 | and 194 | 'skip$ 195 | 'new.sentence 196 | if$ 197 | } 198 | FUNCTION {field.or.null} 199 | { duplicate$ empty$ 200 | { pop$ "" } 201 | 'skip$ 202 | if$ 203 | } 204 | FUNCTION {emphasize} 205 | { duplicate$ empty$ 206 | { pop$ "" } 207 | { "\emph{" swap$ * "}" * } 208 | if$ 209 | } 210 | FUNCTION {bolden} 211 | { duplicate$ empty$ 212 | { pop$ "" } 213 | { "\textbf{" swap$ * "}" * } 214 | if$ 215 | } 216 | FUNCTION {tie.or.space.prefix} 217 | { duplicate$ text.length$ #3 < 218 | { "~" } 219 | { " " } 220 | if$ 221 | swap$ 222 | } 223 | 224 | FUNCTION {capitalize} 225 | { "u" change.case$ "t" change.case$ } 226 | 227 | FUNCTION {space.word} 228 | { " " swap$ * " " * } 229 | % Here are the language-specific definitions for explicit words. 230 | % Each function has a name bbl.xxx where xxx is the English word. 231 | % The language selected here is ENGLISH 232 | FUNCTION {bbl.and} 233 | { "and"} 234 | 235 | FUNCTION {bbl.etal} 236 | { "et~al." } 237 | 238 | FUNCTION {bbl.editors} 239 | { "eds." } 240 | 241 | FUNCTION {bbl.editor} 242 | { "ed." } 243 | 244 | FUNCTION {bbl.edby} 245 | { "edited by" } 246 | 247 | FUNCTION {bbl.edition} 248 | { "edn." } 249 | 250 | FUNCTION {bbl.volume} 251 | { "vol." } 252 | 253 | FUNCTION {bbl.of} 254 | { "of" } 255 | 256 | FUNCTION {bbl.number} 257 | { "no." } 258 | 259 | FUNCTION {bbl.nr} 260 | { "no." } 261 | 262 | FUNCTION {bbl.in} 263 | { "in" } 264 | 265 | FUNCTION {bbl.pages} 266 | { "" } 267 | 268 | FUNCTION {bbl.page} 269 | { "" } 270 | 271 | FUNCTION {bbl.chapter} 272 | { "chap." } 273 | 274 | FUNCTION {bbl.techrep} 275 | { "Tech. Rep." } 276 | 277 | FUNCTION {bbl.mthesis} 278 | { "Master's thesis" } 279 | 280 | FUNCTION {bbl.phdthesis} 281 | { "Ph.D. thesis" } 282 | 283 | MACRO {jan} {"Jan."} 284 | 285 | MACRO {feb} {"Feb."} 286 | 287 | MACRO {mar} {"Mar."} 288 | 289 | MACRO {apr} {"Apr."} 290 | 291 | MACRO {may} {"May"} 292 | 293 | MACRO {jun} {"Jun."} 294 | 295 | MACRO {jul} {"Jul."} 296 | 297 | MACRO {aug} {"Aug."} 298 | 299 | MACRO {sep} {"Sep."} 300 | 301 | MACRO {oct} {"Oct."} 302 | 303 | MACRO {nov} {"Nov."} 304 | 305 | MACRO {dec} {"Dec."} 306 | 307 | %------------------------------------------------------------------- 308 | % Begin module: 309 | % \ProvidesFile{physjour.mbs}[2002/01/14 2.2 (PWD)] 310 | MACRO {aa}{"Astron. \& Astrophys."} 311 | MACRO {aasup}{"Astron. \& Astrophys. Suppl. Ser."} 312 | MACRO {aj} {"Astron. J."} 313 | MACRO {aph} {"Acta Phys."} 314 | MACRO {advp} {"Adv. Phys."} 315 | MACRO {ajp} {"Amer. J. Phys."} 316 | MACRO {ajm} {"Amer. J. Math."} 317 | MACRO {amsci} {"Amer. Sci."} 318 | MACRO {anofd} {"Ann. Fluid Dyn."} 319 | MACRO {am} {"Ann. Math."} 320 | MACRO {ap} {"Ann. Phys. (NY)"} 321 | MACRO {adp} {"Ann. Phys. (Leipzig)"} 322 | MACRO {ao} {"Appl. Opt."} 323 | MACRO {apl} {"Appl. Phys. Lett."} 324 | MACRO {app} {"Astroparticle Phys."} 325 | MACRO {apj} {"Astrophys. J."} 326 | MACRO {apjsup} {"Astrophys. J. Suppl."} 327 | MACRO {apss} {"Astrophys. Space Sci."} 328 | MACRO {araa} {"Ann. Rev. Astron. Astrophys."} 329 | MACRO {baas} {"Bull. Amer. Astron. Soc."} 330 | MACRO {baps} {"Bull. Amer. Phys. Soc."} 331 | MACRO {cmp} {"Comm. Math. Phys."} 332 | MACRO {cpam} {"Commun. Pure Appl. Math."} 333 | MACRO {cppcf} {"Comm. Plasma Phys. \& Controlled Fusion"} 334 | MACRO {cpc} {"Comp. Phys. Comm."} 335 | MACRO {cqg} {"Class. Quant. Grav."} 336 | MACRO {cra} {"C. R. Acad. Sci. A"} 337 | MACRO {fed} {"Fusion Eng. \& Design"} 338 | MACRO {ft} {"Fusion Tech."} 339 | MACRO {grg} {"Gen. Relativ. Gravit."} 340 | MACRO {ieeens} {"IEEE Trans. Nucl. Sci."} 341 | MACRO {ieeeps} {"IEEE Trans. Plasma Sci."} 342 | MACRO {ijimw} {"Interntl. J. Infrared \& Millimeter Waves"} 343 | MACRO {ip} {"Infrared Phys."} 344 | MACRO {irp} {"Infrared Phys."} 345 | MACRO {jap} {"J. Appl. Phys."} 346 | MACRO {jasa} {"J. Acoust. Soc. America"} 347 | MACRO {jcp} {"J. Comp. Phys."} 348 | MACRO {jetp} {"Sov. Phys.--JETP"} 349 | MACRO {jfe} {"J. Fusion Energy"} 350 | MACRO {jfm} {"J. Fluid Mech."} 351 | MACRO {jmp} {"J. Math. Phys."} 352 | MACRO {jne} {"J. Nucl. Energy"} 353 | MACRO {jnec} {"J. Nucl. Energy, C: Plasma Phys., Accelerators, Thermonucl. Res."} 354 | MACRO {jnm} {"J. Nucl. Mat."} 355 | MACRO {jpc} {"J. Phys. Chem."} 356 | MACRO {jpp} {"J. Plasma Phys."} 357 | MACRO {jpsj} {"J. Phys. Soc. Japan"} 358 | MACRO {jsi} {"J. Sci. Instrum."} 359 | MACRO {jvst} {"J. Vac. Sci. \& Tech."} 360 | MACRO {nat} {"Nature"} 361 | MACRO {nature} {"Nature"} 362 | MACRO {nedf} {"Nucl. Eng. \& Design/Fusion"} 363 | MACRO {nf} {"Nucl. Fusion"} 364 | MACRO {nim} {"Nucl. Inst. \& Meth."} 365 | MACRO {nimpr} {"Nucl. Inst. \& Meth. in Phys. Res."} 366 | MACRO {np} {"Nucl. Phys."} 367 | MACRO {npb} {"Nucl. Phys. B"} 368 | MACRO {nt/f} {"Nucl. Tech./Fusion"} 369 | MACRO {npbpc} {"Nucl. Phys. B (Proc. Suppl.)"} 370 | MACRO {inc} {"Nuovo Cimento"} 371 | MACRO {nc} {"Nuovo Cimento"} 372 | MACRO {pf} {"Phys. Fluids"} 373 | MACRO {pfa} {"Phys. Fluids A: Fluid Dyn."} 374 | MACRO {pfb} {"Phys. Fluids B: Plasma Phys."} 375 | MACRO {pl} {"Phys. Lett."} 376 | MACRO {pla} {"Phys. Lett. A"} 377 | MACRO {plb} {"Phys. Lett. B"} 378 | MACRO {prep} {"Phys. Rep."} 379 | MACRO {pnas} {"Proc. Nat. Acad. Sci. USA"} 380 | MACRO {pp} {"Phys. Plasmas"} 381 | MACRO {ppcf} {"Plasma Phys. \& Controlled Fusion"} 382 | MACRO {phitrsl} {"Philos. Trans. Roy. Soc. London"} 383 | MACRO {prl} {"Phys. Rev. Lett."} 384 | MACRO {pr} {"Phys. Rev."} 385 | MACRO {physrev} {"Phys. Rev."} 386 | MACRO {pra} {"Phys. Rev. A"} 387 | MACRO {prb} {"Phys. Rev. B"} 388 | MACRO {prc} {"Phys. Rev. C"} 389 | MACRO {prd} {"Phys. Rev. D"} 390 | MACRO {pre} {"Phys. Rev. E"} 391 | MACRO {ps} {"Phys. Scripta"} 392 | MACRO {procrsl} {"Proc. Roy. Soc. London"} 393 | MACRO {rmp} {"Rev. Mod. Phys."} 394 | MACRO {rsi} {"Rev. Sci. Inst."} 395 | MACRO {science} {"Science"} 396 | MACRO {sciam} {"Sci. Am."} 397 | MACRO {sam} {"Stud. Appl. Math."} 398 | MACRO {sjpp} {"Sov. J. Plasma Phys."} 399 | MACRO {spd} {"Sov. Phys.--Doklady"} 400 | MACRO {sptp} {"Sov. Phys.--Tech. Phys."} 401 | MACRO {spu} {"Sov. Phys.--Uspeki"} 402 | MACRO {st} {"Sky and Telesc."} 403 | % End module: physjour.mbs 404 | %------------------------------------------------------------------- 405 | % Begin module: 406 | % \ProvidesFile{geojour.mbs}[2002/07/10 2.0h (PWD)] 407 | MACRO {aisr} {"Adv. Space Res."} 408 | MACRO {ag} {"Ann. Geophys."} 409 | MACRO {anigeo} {"Ann. Geofis."} 410 | MACRO {angl} {"Ann. Glaciol."} 411 | MACRO {andmet} {"Ann. d. Meteor."} 412 | MACRO {andgeo} {"Ann. d. Geophys."} 413 | MACRO {andphy} {"Ann. Phys.-Paris"} 414 | MACRO {afmgb} {"Arch. Meteor. Geophys. Bioklimatol."} 415 | MACRO {atph} {"Atm\'osphera"} 416 | MACRO {aao} {"Atmos. Ocean"} 417 | MACRO {ass}{"Astrophys. Space Sci."} 418 | MACRO {atenv} {"Atmos. Environ."} 419 | MACRO {aujag} {"Aust. J. Agr. Res."} 420 | MACRO {aumet} {"Aust. Meteorol. Mag."} 421 | MACRO {blmet} {"Bound.-Lay. Meteorol."} 422 | MACRO {bams} {"Bull. Amer. Meteorol. Soc."} 423 | MACRO {cch} {"Clim. Change"} 424 | MACRO {cdyn} {"Clim. Dynam."} 425 | MACRO {cbul} {"Climatol. Bull."} 426 | MACRO {cap} {"Contrib. Atmos. Phys."} 427 | MACRO {dsr} {"Deep-Sea Res."} 428 | MACRO {dhz} {"Dtsch. Hydrogr. Z."} 429 | MACRO {dao} {"Dynam. Atmos. Oceans"} 430 | MACRO {eco} {"Ecology"} 431 | MACRO {empl}{"Earth, Moon and Planets"} 432 | MACRO {envres} {"Environ. Res."} 433 | MACRO {envst} {"Environ. Sci. Technol."} 434 | MACRO {ecms} {"Estuarine Coastal Mar. Sci."} 435 | MACRO {expa}{"Exper. Astron."} 436 | MACRO {geoint} {"Geofis. Int."} 437 | MACRO {geopub} {"Geofys. Publ."} 438 | MACRO {geogeo} {"Geol. Geofiz."} 439 | MACRO {gafd} {"Geophys. Astrophys. Fluid Dyn."} 440 | MACRO {gfd} {"Geophys. Fluid Dyn."} 441 | MACRO {geomag} {"Geophys. Mag."} 442 | MACRO {georl} {"Geophys. Res. Lett."} 443 | MACRO {grl} {"Geophys. Res. Lett."} 444 | MACRO {ga} {"Geophysica"} 445 | MACRO {gs} {"Geophysics"} 446 | MACRO {ieeetap} {"IEEE Trans. Antenn. Propag."} 447 | MACRO {ijawp} {"Int. J. Air Water Pollut."} 448 | MACRO {ijc} {"Int. J. Climatol."} 449 | MACRO {ijrs} {"Int. J. Remote Sens."} 450 | MACRO {jam} {"J. Appl. Meteorol."} 451 | MACRO {jaot} {"J. Atmos. Ocean. Technol."} 452 | MACRO {jatp} {"J. Atmos. Terr. Phys."} 453 | MACRO {jastp} {"J. Atmos. Solar-Terr. Phys."} 454 | MACRO {jce} {"J. Climate"} 455 | MACRO {jcam} {"J. Climate Appl. Meteor."} 456 | MACRO {jcm} {"J. Climate Meteor."} 457 | MACRO {jcy} {"J. Climatol."} 458 | MACRO {jgr} {"J. Geophys. Res."} 459 | MACRO {jga} {"J. Glaciol."} 460 | MACRO {jh} {"J. Hydrol."} 461 | MACRO {jmr} {"J. Mar. Res."} 462 | MACRO {jmrj} {"J. Meteor. Res. Japan"} 463 | MACRO {jm} {"J. Meteor."} 464 | MACRO {jpo} {"J. Phys. Oceanogr."} 465 | MACRO {jra} {"J. Rech. Atmos."} 466 | MACRO {jaes} {"J. Aeronaut. Sci."} 467 | MACRO {japca} {"J. Air Pollut. Control Assoc."} 468 | MACRO {jas} {"J. Atmos. Sci."} 469 | MACRO {jmts} {"J. Mar. Technol. Soc."} 470 | MACRO {jmsj} {"J. Meteorol. Soc. Japan"} 471 | MACRO {josj} {"J. Oceanogr. Soc. Japan"} 472 | MACRO {jwm} {"J. Wea. Mod."} 473 | MACRO {lao} {"Limnol. Oceanogr."} 474 | MACRO {mwl} {"Mar. Wea. Log"} 475 | MACRO {mau} {"Mausam"} 476 | MACRO {meteor} {"``Meteor'' Forschungsergeb."} 477 | MACRO {map} {"Meteorol. Atmos. Phys."} 478 | MACRO {metmag} {"Meteor. Mag."} 479 | MACRO {metmon} {"Meteor. Monogr."} 480 | MACRO {metrun} {"Meteor. Rundsch."} 481 | MACRO {metzeit} {"Meteor. Z."} 482 | MACRO {metgid} {"Meteor. Gidrol."} 483 | MACRO {mwr} {"Mon. Weather Rev."} 484 | MACRO {nwd} {"Natl. Weather Dig."} 485 | MACRO {nzjmfr} {"New Zeal. J. Mar. Freshwater Res."} 486 | MACRO {npg} {"Nonlin. Proc. Geophys."} 487 | MACRO {om} {"Oceanogr. Meteorol."} 488 | MACRO {ocac} {"Oceanol. Acta"} 489 | MACRO {oceanus} {"Oceanus"} 490 | MACRO {paleoc} {"Paleoceanography"} 491 | MACRO {pce} {"Phys. Chem. Earth"} 492 | MACRO {pmg} {"Pap. Meteor. Geophys."} 493 | MACRO {ppom} {"Pap. Phys. Oceanogr. Meteor."} 494 | MACRO {physzeit} {"Phys. Z."} 495 | MACRO {pps} {"Planet. Space Sci."} 496 | MACRO {pss} {"Planet. Space Sci."} 497 | MACRO {pag} {"Pure Appl. Geophys."} 498 | MACRO {qjrms} {"Quart. J. Roy. Meteorol. Soc."} 499 | MACRO {quatres} {"Quat. Res."} 500 | MACRO {rsci} {"Radio Sci."} 501 | MACRO {rse} {"Remote Sens. Environ."} 502 | MACRO {rgeo} {"Rev. Geophys."} 503 | MACRO {rgsp} {"Rev. Geophys. Space Phys."} 504 | MACRO {rdgeo} {"Rev. Geofis."} 505 | MACRO {revmeta} {"Rev. Meteorol."} 506 | MACRO {sgp}{"Surveys in Geophys."} 507 | MACRO {sp} {"Solar Phys."} 508 | MACRO {ssr} {"Space Sci. Rev."} 509 | MACRO {tellus} {"Tellus"} 510 | MACRO {tac} {"Theor. Appl. Climatol."} 511 | MACRO {tagu} {"Trans. Am. Geophys. Union (EOS)"} 512 | MACRO {wrr} {"Water Resour. Res."} 513 | MACRO {weather} {"Weather"} 514 | MACRO {wafc} {"Weather Forecast."} 515 | MACRO {ww} {"Weatherwise"} 516 | MACRO {wmob} {"WMO Bull."} 517 | MACRO {zeitmet} {"Z. Meteorol."} 518 | % End module: geojour.mbs 519 | %------------------------------------------------------------------- 520 | % Begin module: 521 | % \ProvidesFile{photjour.mbs}[1999/02/24 2.0b (PWD)] 522 | 523 | MACRO {appopt} {"Appl. Opt."} 524 | MACRO {bell} {"Bell Syst. Tech. J."} 525 | MACRO {ell} {"Electron. Lett."} 526 | MACRO {jasp} {"J. Appl. Spectr."} 527 | MACRO {jqe} {"IEEE J. Quantum Electron."} 528 | MACRO {jlwt} {"J. Lightwave Technol."} 529 | MACRO {jmo} {"J. Mod. Opt."} 530 | MACRO {josa} {"J. Opt. Soc. America"} 531 | MACRO {josaa} {"J. Opt. Soc. Amer.~A"} 532 | MACRO {josab} {"J. Opt. Soc. Amer.~B"} 533 | MACRO {jdp} {"J. Phys. (Paris)"} 534 | MACRO {oc} {"Opt. Commun."} 535 | MACRO {ol} {"Opt. Lett."} 536 | MACRO {phtl} {"IEEE Photon. Technol. Lett."} 537 | MACRO {pspie} {"Proc. Soc. Photo-Opt. Instrum. Eng."} 538 | MACRO {sse} {"Solid-State Electron."} 539 | MACRO {sjot} {"Sov. J. Opt. Technol."} 540 | MACRO {sjqe} {"Sov. J. Quantum Electron."} 541 | MACRO {sleb} {"Sov. Phys.--Leb. Inst. Rep."} 542 | MACRO {stph} {"Sov. Phys.--Techn. Phys."} 543 | MACRO {stphl} {"Sov. Techn. Phys. Lett."} 544 | MACRO {vr} {"Vision Res."} 545 | MACRO {zph} {"Z. f. Physik"} 546 | MACRO {zphb} {"Z. f. Physik~B"} 547 | MACRO {zphd} {"Z. f. Physik~D"} 548 | 549 | MACRO {CLEO} {"CLEO"} 550 | MACRO {ASSL} {"Adv. Sol.-State Lasers"} 551 | MACRO {OSA} {"OSA"} 552 | % End module: photjour.mbs 553 | %% Copyright 1994-2002 Patrick W Daly 554 | MACRO {acmcs} {"ACM Comput. Surv."} 555 | 556 | MACRO {acta} {"Acta Inf."} 557 | 558 | MACRO {cacm} {"Commun. ACM"} 559 | 560 | MACRO {ibmjrd} {"IBM J. Res. Dev."} 561 | 562 | MACRO {ibmsj} {"IBM Syst.~J."} 563 | 564 | MACRO {ieeese} {"IEEE Trans. Software Eng."} 565 | 566 | MACRO {ieeetc} {"IEEE Trans. Comput."} 567 | 568 | MACRO {ieeetcad} 569 | {"IEEE Trans. Comput. Aid. Des."} 570 | 571 | MACRO {ipl} {"Inf. Process. Lett."} 572 | 573 | MACRO {jacm} {"J.~ACM"} 574 | 575 | MACRO {jcss} {"J.~Comput. Syst. Sci."} 576 | 577 | MACRO {scp} {"Sci. Comput. Program."} 578 | 579 | MACRO {sicomp} {"SIAM J. Comput."} 580 | 581 | MACRO {tocs} {"ACM Trans. Comput. Syst."} 582 | 583 | MACRO {tods} {"ACM Trans. Database Syst."} 584 | 585 | MACRO {tog} {"ACM Trans. Graphic."} 586 | 587 | MACRO {toms} {"ACM Trans. Math. Software"} 588 | 589 | MACRO {toois} {"ACM Trans. Office Inf. Syst."} 590 | 591 | MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."} 592 | 593 | MACRO {tcs} {"Theor. Comput. Sci."} 594 | 595 | FUNCTION {bibinfo.check} 596 | { swap$ 597 | duplicate$ missing$ 598 | { 599 | pop$ pop$ 600 | "" 601 | } 602 | { duplicate$ empty$ 603 | { 604 | swap$ pop$ 605 | } 606 | { swap$ 607 | "\bibinfo{" swap$ * "}{" * swap$ * "}" * 608 | } 609 | if$ 610 | } 611 | if$ 612 | } 613 | FUNCTION {bibinfo.warn} 614 | { swap$ 615 | duplicate$ missing$ 616 | { 617 | swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ 618 | "" 619 | } 620 | { duplicate$ empty$ 621 | { 622 | swap$ "empty " swap$ * " in " * cite$ * warning$ 623 | } 624 | { swap$ 625 | "\bibinfo{" swap$ * "}{" * swap$ * "}" * 626 | } 627 | if$ 628 | } 629 | if$ 630 | } 631 | FUNCTION {format.eprint} 632 | { eprint duplicate$ empty$ 633 | 'skip$ 634 | { "\eprint" 635 | archive empty$ 636 | 'skip$ 637 | { "[" * archive * "]" * } 638 | if$ 639 | "{" * swap$ * "}" * 640 | } 641 | if$ 642 | } 643 | FUNCTION {format.url} 644 | { url empty$ 645 | { "" } 646 | { "\urlprefix\url{" url * "}" * } 647 | if$ 648 | } 649 | FUNCTION {format.doi} 650 | { doi empty$ 651 | { "" } 652 | { "\doiprefix " doi * } 653 | if$ 654 | } 655 | 656 | STRINGS { bibinfo} 657 | INTEGERS { nameptr namesleft numnames } 658 | 659 | FUNCTION {format.names} 660 | { 'bibinfo := 661 | duplicate$ empty$ 'skip$ { 662 | 's := 663 | "" 't := 664 | #1 'nameptr := 665 | s num.names$ 'numnames := 666 | numnames 'namesleft := 667 | { namesleft #0 > } 668 | { s nameptr 669 | "{vv~}{ll}{, f.}{, jj}" 670 | format.name$ 671 | bibinfo bibinfo.check 672 | 't := 673 | nameptr #1 > 674 | { 675 | nameptr #1 676 | #1 + = 677 | numnames #5 678 | > and 679 | { "others" 't := 680 | #1 'namesleft := } 681 | 'skip$ 682 | if$ 683 | namesleft #1 > 684 | { ", " * t * } 685 | { 686 | s nameptr "{ll}" format.name$ duplicate$ "others" = 687 | { 't := } 688 | { pop$ } 689 | if$ 690 | t "others" = 691 | { 692 | " " * bbl.etal emphasize * 693 | } 694 | { 695 | "\&" 696 | space.word * t * 697 | } 698 | if$ 699 | } 700 | if$ 701 | } 702 | 't 703 | if$ 704 | nameptr #1 + 'nameptr := 705 | namesleft #1 - 'namesleft := 706 | } 707 | while$ 708 | } if$ 709 | } 710 | FUNCTION {format.names.ed} 711 | { 712 | format.names 713 | } 714 | FUNCTION {format.authors} 715 | { author "author" format.names 716 | } 717 | FUNCTION {get.bbl.editor} 718 | { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } 719 | 720 | FUNCTION {format.editors} 721 | { editor "editor" format.names duplicate$ empty$ 'skip$ 722 | { 723 | " " * 724 | get.bbl.editor 725 | "(" swap$ * ")" * 726 | * 727 | } 728 | if$ 729 | } 730 | FUNCTION {format.note} 731 | { 732 | note empty$ 733 | { "" } 734 | { note #1 #1 substring$ 735 | duplicate$ "{" = 736 | 'skip$ 737 | { output.state mid.sentence = 738 | { "l" } 739 | { "u" } 740 | if$ 741 | change.case$ 742 | } 743 | if$ 744 | note #2 global.max$ substring$ * "note" bibinfo.check 745 | } 746 | if$ 747 | } 748 | 749 | FUNCTION {format.title} 750 | { title 751 | duplicate$ empty$ 'skip$ 752 | { "t" change.case$ } 753 | if$ 754 | "title" bibinfo.check 755 | } 756 | FUNCTION {output.bibitem} 757 | { newline$ 758 | "\bibitem{" write$ 759 | cite$ write$ 760 | "}" write$ 761 | newline$ 762 | "" 763 | before.all 'output.state := 764 | } 765 | 766 | FUNCTION {n.dashify} 767 | { 768 | 't := 769 | "" 770 | { t empty$ not } 771 | { t #1 #1 substring$ "-" = 772 | { t #1 #2 substring$ "--" = not 773 | { "--" * 774 | t #2 global.max$ substring$ 't := 775 | } 776 | { { t #1 #1 substring$ "-" = } 777 | { "-" * 778 | t #2 global.max$ substring$ 't := 779 | } 780 | while$ 781 | } 782 | if$ 783 | } 784 | { t #1 #1 substring$ * 785 | t #2 global.max$ substring$ 't := 786 | } 787 | if$ 788 | } 789 | while$ 790 | } 791 | 792 | FUNCTION {word.in} 793 | { bbl.in capitalize 794 | " " * } 795 | 796 | FUNCTION {format.date} 797 | { 798 | "" 799 | duplicate$ empty$ 800 | year "year" bibinfo.check duplicate$ empty$ 801 | { swap$ 'skip$ 802 | { "there's a month but no year in " cite$ * warning$ } 803 | if$ 804 | * 805 | } 806 | { swap$ 'skip$ 807 | { 808 | swap$ 809 | " " * swap$ 810 | } 811 | if$ 812 | * 813 | } 814 | if$ 815 | duplicate$ empty$ 816 | 'skip$ 817 | { 818 | before.all 'output.state := 819 | " (" swap$ * ")" * 820 | } 821 | if$ 822 | } 823 | FUNCTION {format.btitle} 824 | { title "title" bibinfo.check 825 | duplicate$ empty$ 'skip$ 826 | { 827 | emphasize 828 | } 829 | if$ 830 | } 831 | FUNCTION {either.or.check} 832 | { empty$ 833 | 'pop$ 834 | { "can't use both " swap$ * " fields in " * cite$ * warning$ } 835 | if$ 836 | } 837 | FUNCTION {format.bvolume} 838 | { volume empty$ 839 | { "" } 840 | { bbl.volume volume tie.or.space.prefix 841 | "volume" bibinfo.check * * 842 | series "series" bibinfo.check 843 | duplicate$ empty$ 'pop$ 844 | { swap$ bbl.of space.word * swap$ 845 | emphasize * } 846 | if$ 847 | "volume and number" number either.or.check 848 | } 849 | if$ 850 | } 851 | FUNCTION {format.number.series} 852 | { volume empty$ 853 | { number empty$ 854 | { series field.or.null } 855 | { series empty$ 856 | { number "number" bibinfo.check } 857 | { output.state mid.sentence = 858 | { bbl.number } 859 | { bbl.number capitalize } 860 | if$ 861 | number tie.or.space.prefix "number" bibinfo.check * * 862 | bbl.in space.word * 863 | series "series" bibinfo.check * 864 | } 865 | if$ 866 | } 867 | if$ 868 | } 869 | { "" } 870 | if$ 871 | } 872 | 873 | FUNCTION {format.edition} 874 | { edition duplicate$ empty$ 'skip$ 875 | { 876 | output.state mid.sentence = 877 | { "l" } 878 | { "t" } 879 | if$ change.case$ 880 | "edition" bibinfo.check 881 | " " * bbl.edition * 882 | } 883 | if$ 884 | } 885 | INTEGERS { multiresult } 886 | FUNCTION {multi.page.check} 887 | { 't := 888 | #0 'multiresult := 889 | { multiresult not 890 | t empty$ not 891 | and 892 | } 893 | { t #1 #1 substring$ 894 | duplicate$ "-" = 895 | swap$ duplicate$ "," = 896 | swap$ "+" = 897 | or or 898 | { #1 'multiresult := } 899 | { t #2 global.max$ substring$ 't := } 900 | if$ 901 | } 902 | while$ 903 | multiresult 904 | } 905 | FUNCTION {format.pages} 906 | { pages duplicate$ empty$ 'skip$ 907 | { duplicate$ multi.page.check 908 | { 909 | n.dashify 910 | } 911 | { 912 | } 913 | if$ 914 | "pages" bibinfo.check 915 | } 916 | if$ 917 | } 918 | FUNCTION {format.journal.pages} 919 | { pages duplicate$ empty$ 'pop$ 920 | { swap$ duplicate$ empty$ 921 | { pop$ pop$ format.pages } 922 | { 923 | ", " * 924 | swap$ 925 | n.dashify 926 | "pages" bibinfo.check 927 | * 928 | } 929 | if$ 930 | } 931 | if$ 932 | } 933 | FUNCTION {format.vol.num.pages} 934 | { volume field.or.null 935 | duplicate$ empty$ 'skip$ 936 | { 937 | "volume" bibinfo.check 938 | } 939 | if$ 940 | bolden 941 | format.journal.pages 942 | } 943 | 944 | FUNCTION {format.chapter.pages} 945 | { chapter empty$ 946 | 'format.pages 947 | { type empty$ 948 | { bbl.chapter } 949 | { type "l" change.case$ 950 | "type" bibinfo.check 951 | } 952 | if$ 953 | chapter tie.or.space.prefix 954 | "chapter" bibinfo.check 955 | * * 956 | pages empty$ 957 | 'skip$ 958 | { ", " * format.pages * } 959 | if$ 960 | } 961 | if$ 962 | } 963 | 964 | FUNCTION {format.booktitle} 965 | { 966 | booktitle "booktitle" bibinfo.check 967 | emphasize 968 | } 969 | FUNCTION {format.in.ed.booktitle} 970 | { format.booktitle duplicate$ empty$ 'skip$ 971 | { 972 | editor "editor" format.names.ed duplicate$ empty$ 'pop$ 973 | { 974 | " " * 975 | get.bbl.editor 976 | "(" swap$ * ") " * 977 | * swap$ 978 | * } 979 | if$ 980 | word.in swap$ * 981 | } 982 | if$ 983 | } 984 | FUNCTION {empty.misc.check} 985 | { author empty$ title empty$ howpublished empty$ 986 | month empty$ year empty$ note empty$ 987 | and and and and and 988 | { "all relevant fields are empty in " cite$ * warning$ } 989 | 'skip$ 990 | if$ 991 | } 992 | FUNCTION {format.thesis.type} 993 | { type duplicate$ empty$ 994 | 'pop$ 995 | { swap$ pop$ 996 | "t" change.case$ "type" bibinfo.check 997 | } 998 | if$ 999 | } 1000 | FUNCTION {format.tr.number} 1001 | { number "number" bibinfo.check 1002 | type duplicate$ empty$ 1003 | { pop$ bbl.techrep } 1004 | 'skip$ 1005 | if$ 1006 | "type" bibinfo.check 1007 | swap$ duplicate$ empty$ 1008 | { pop$ "t" change.case$ } 1009 | { tie.or.space.prefix * * } 1010 | if$ 1011 | } 1012 | FUNCTION {format.article.crossref} 1013 | { 1014 | key duplicate$ empty$ 1015 | { pop$ 1016 | journal duplicate$ empty$ 1017 | { "need key or journal for " cite$ * " to crossref " * crossref * warning$ } 1018 | { "journal" bibinfo.check emphasize word.in swap$ * } 1019 | if$ 1020 | } 1021 | { word.in swap$ * " " *} 1022 | if$ 1023 | " \cite{" * crossref * "}" * 1024 | } 1025 | FUNCTION {format.crossref.editor} 1026 | { editor #1 "{vv~}{ll}" format.name$ 1027 | "editor" bibinfo.check 1028 | editor num.names$ duplicate$ 1029 | #2 > 1030 | { pop$ 1031 | "editor" bibinfo.check 1032 | " " * bbl.etal 1033 | emphasize 1034 | * 1035 | } 1036 | { #2 < 1037 | 'skip$ 1038 | { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = 1039 | { 1040 | "editor" bibinfo.check 1041 | " " * bbl.etal 1042 | emphasize 1043 | * 1044 | } 1045 | { 1046 | " \& " 1047 | * editor #2 "{vv~}{ll}" format.name$ 1048 | "editor" bibinfo.check 1049 | * 1050 | } 1051 | if$ 1052 | } 1053 | if$ 1054 | } 1055 | if$ 1056 | } 1057 | FUNCTION {format.book.crossref} 1058 | { volume duplicate$ empty$ 1059 | { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ 1060 | pop$ word.in 1061 | } 1062 | { bbl.volume 1063 | capitalize 1064 | swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word * 1065 | } 1066 | if$ 1067 | editor empty$ 1068 | editor field.or.null author field.or.null = 1069 | or 1070 | { key empty$ 1071 | { series empty$ 1072 | { "need editor, key, or series for " cite$ * " to crossref " * 1073 | crossref * warning$ 1074 | "" * 1075 | } 1076 | { series emphasize * } 1077 | if$ 1078 | } 1079 | { key * } 1080 | if$ 1081 | } 1082 | { format.crossref.editor * } 1083 | if$ 1084 | " \cite{" * crossref * "}" * 1085 | } 1086 | FUNCTION {format.incoll.inproc.crossref} 1087 | { 1088 | editor empty$ 1089 | editor field.or.null author field.or.null = 1090 | or 1091 | { key empty$ 1092 | { format.booktitle duplicate$ empty$ 1093 | { "need editor, key, or booktitle for " cite$ * " to crossref " * 1094 | crossref * warning$ 1095 | } 1096 | { word.in swap$ * } 1097 | if$ 1098 | } 1099 | { word.in key * " " *} 1100 | if$ 1101 | } 1102 | { word.in format.crossref.editor * " " *} 1103 | if$ 1104 | " \cite{" * crossref * "}" * 1105 | } 1106 | FUNCTION {format.org.or.pub} 1107 | { 't := 1108 | "" 1109 | year empty$ 1110 | { "empty year in " cite$ * warning$ } 1111 | 'skip$ 1112 | if$ 1113 | address empty$ t empty$ and 1114 | year empty$ and 1115 | 'skip$ 1116 | { 1117 | add.blank "(" * 1118 | t empty$ 1119 | { address "address" bibinfo.check * 1120 | } 1121 | { t * 1122 | address empty$ 1123 | 'skip$ 1124 | { ", " * address "address" bibinfo.check * } 1125 | if$ 1126 | } 1127 | if$ 1128 | year empty$ 1129 | 'skip$ 1130 | { t empty$ address empty$ and 1131 | 'skip$ 1132 | { ", " * } 1133 | if$ 1134 | year "year" bibinfo.check 1135 | * 1136 | } 1137 | if$ 1138 | ")" * 1139 | } 1140 | if$ 1141 | } 1142 | FUNCTION {format.publisher.address} 1143 | { publisher "publisher" bibinfo.warn format.org.or.pub 1144 | } 1145 | 1146 | FUNCTION {format.organization.address} 1147 | { organization "organization" bibinfo.check format.org.or.pub 1148 | } 1149 | 1150 | FUNCTION {format.journal} 1151 | { 1152 | "{\emph{\JournalTitle{" journal * "}}}" * 1153 | } 1154 | 1155 | FUNCTION {article} 1156 | { output.bibitem 1157 | format.authors "author" output.check 1158 | new.block 1159 | format.title "title" output.check 1160 | new.block 1161 | crossref missing$ 1162 | { 1163 | %journal 1164 | "journal" bibinfo.check 1165 | %% Automatically abbreviate journal names 1166 | format.journal "journal" output.check 1167 | add.blank 1168 | format.vol.num.pages output 1169 | format.date "year" output.check 1170 | } 1171 | { format.article.crossref output.nonnull 1172 | format.pages output 1173 | } 1174 | if$ 1175 | new.block 1176 | format.url output 1177 | new.block 1178 | format.doi output 1179 | new.block 1180 | format.note output 1181 | format.eprint output 1182 | fin.entry 1183 | } 1184 | FUNCTION {book} 1185 | { output.bibitem 1186 | author empty$ 1187 | { format.editors "author and editor" output.check 1188 | add.blank 1189 | } 1190 | { format.authors output.nonnull 1191 | crossref missing$ 1192 | { "author and editor" editor either.or.check } 1193 | 'skip$ 1194 | if$ 1195 | } 1196 | if$ 1197 | new.block 1198 | format.btitle "title" output.check 1199 | crossref missing$ 1200 | { format.bvolume output 1201 | new.block 1202 | format.number.series output 1203 | new.sentence 1204 | format.publisher.address output 1205 | } 1206 | { 1207 | new.block 1208 | format.book.crossref output.nonnull 1209 | format.date "year" output.check 1210 | } 1211 | if$ 1212 | format.edition output 1213 | new.block 1214 | format.url output 1215 | new.block 1216 | format.note output 1217 | format.eprint output 1218 | fin.entry 1219 | } 1220 | FUNCTION {booklet} 1221 | { output.bibitem 1222 | format.authors output 1223 | new.block 1224 | format.title "title" output.check 1225 | new.block 1226 | howpublished "howpublished" bibinfo.check output 1227 | address "address" bibinfo.check output 1228 | format.date output 1229 | new.block 1230 | format.url output 1231 | new.block 1232 | format.note output 1233 | format.eprint output 1234 | fin.entry 1235 | } 1236 | 1237 | FUNCTION {inbook} 1238 | { output.bibitem 1239 | author empty$ 1240 | { format.editors "author and editor" output.check 1241 | } 1242 | { format.authors output.nonnull 1243 | crossref missing$ 1244 | { "author and editor" editor either.or.check } 1245 | 'skip$ 1246 | if$ 1247 | } 1248 | if$ 1249 | new.block 1250 | format.btitle "title" output.check 1251 | crossref missing$ 1252 | { 1253 | format.bvolume output 1254 | format.chapter.pages "chapter and pages" output.check 1255 | new.block 1256 | format.number.series output 1257 | new.sentence 1258 | format.publisher.address output 1259 | } 1260 | { 1261 | format.chapter.pages "chapter and pages" output.check 1262 | new.block 1263 | format.book.crossref output.nonnull 1264 | format.date "year" output.check 1265 | } 1266 | if$ 1267 | format.edition output 1268 | new.block 1269 | format.url output 1270 | new.block 1271 | format.note output 1272 | format.eprint output 1273 | fin.entry 1274 | } 1275 | 1276 | FUNCTION {incollection} 1277 | { output.bibitem 1278 | format.authors "author" output.check 1279 | new.block 1280 | format.title "title" output.check 1281 | new.block 1282 | crossref missing$ 1283 | { format.in.ed.booktitle "booktitle" output.check 1284 | format.bvolume output 1285 | format.number.series output 1286 | format.chapter.pages output 1287 | new.sentence 1288 | format.publisher.address output 1289 | format.edition output 1290 | } 1291 | { format.incoll.inproc.crossref output.nonnull 1292 | format.chapter.pages output 1293 | } 1294 | if$ 1295 | new.block 1296 | format.url output 1297 | new.block 1298 | format.doi output 1299 | new.block 1300 | format.note output 1301 | format.eprint output 1302 | fin.entry 1303 | } 1304 | FUNCTION {inproceedings} 1305 | { output.bibitem 1306 | format.authors "author" output.check 1307 | new.block 1308 | format.title "title" output.check 1309 | new.block 1310 | crossref missing$ 1311 | { format.in.ed.booktitle "booktitle" output.check 1312 | format.bvolume output 1313 | format.number.series output 1314 | format.pages output 1315 | new.sentence 1316 | publisher empty$ 1317 | { format.organization.address output } 1318 | { organization "organization" bibinfo.check output 1319 | format.publisher.address output 1320 | } 1321 | if$ 1322 | } 1323 | { format.incoll.inproc.crossref output.nonnull 1324 | format.pages output 1325 | } 1326 | if$ 1327 | new.block 1328 | format.url output 1329 | new.block 1330 | format.doi output 1331 | new.block 1332 | format.note output 1333 | format.eprint output 1334 | fin.entry 1335 | } 1336 | FUNCTION {conference} { inproceedings } 1337 | FUNCTION {manual} 1338 | { output.bibitem 1339 | author empty$ 1340 | { organization "organization" bibinfo.check 1341 | duplicate$ empty$ 'pop$ 1342 | { output 1343 | address "address" bibinfo.check output 1344 | } 1345 | if$ 1346 | } 1347 | { format.authors output.nonnull } 1348 | if$ 1349 | new.block 1350 | format.btitle "title" output.check 1351 | author empty$ 1352 | { organization empty$ 1353 | { 1354 | address new.block.checka 1355 | address "address" bibinfo.check output 1356 | } 1357 | 'skip$ 1358 | if$ 1359 | } 1360 | { 1361 | organization address new.block.checkb 1362 | organization "organization" bibinfo.check output 1363 | address "address" bibinfo.check output 1364 | } 1365 | if$ 1366 | format.edition output 1367 | format.date output 1368 | new.block 1369 | format.url output 1370 | new.block 1371 | format.note output 1372 | format.eprint output 1373 | fin.entry 1374 | } 1375 | 1376 | FUNCTION {mastersthesis} 1377 | { output.bibitem 1378 | format.authors "author" output.check 1379 | new.block 1380 | format.btitle 1381 | "title" output.check 1382 | new.block 1383 | bbl.mthesis format.thesis.type output.nonnull 1384 | school "school" bibinfo.warn output 1385 | address "address" bibinfo.check output 1386 | format.date "year" output.check 1387 | new.block 1388 | format.url output 1389 | new.block 1390 | format.note output 1391 | format.eprint output 1392 | fin.entry 1393 | } 1394 | 1395 | FUNCTION {misc} 1396 | { output.bibitem 1397 | format.authors output 1398 | title howpublished new.block.checkb 1399 | format.title output 1400 | howpublished new.block.checka 1401 | howpublished "howpublished" bibinfo.check output 1402 | format.date output 1403 | new.block 1404 | format.url output 1405 | new.block 1406 | format.doi output 1407 | new.block 1408 | format.note output 1409 | format.eprint output 1410 | fin.entry 1411 | empty.misc.check 1412 | } 1413 | FUNCTION {phdthesis} 1414 | { output.bibitem 1415 | format.authors "author" output.check 1416 | new.block 1417 | format.btitle 1418 | "title" output.check 1419 | new.block 1420 | bbl.phdthesis format.thesis.type output.nonnull 1421 | school "school" bibinfo.warn output 1422 | address "address" bibinfo.check output 1423 | format.date "year" output.check 1424 | new.block 1425 | format.url output 1426 | new.block 1427 | format.note output 1428 | format.eprint output 1429 | fin.entry 1430 | } 1431 | 1432 | FUNCTION {proceedings} 1433 | { output.bibitem 1434 | editor empty$ 1435 | { organization "organization" bibinfo.check output 1436 | } 1437 | { format.editors output.nonnull } 1438 | if$ 1439 | new.block 1440 | format.btitle "title" output.check 1441 | format.bvolume output 1442 | format.number.series output 1443 | editor empty$ 1444 | { publisher empty$ 1445 | 'skip$ 1446 | { 1447 | new.sentence 1448 | format.publisher.address output 1449 | } 1450 | if$ 1451 | } 1452 | { publisher empty$ 1453 | { 1454 | new.sentence 1455 | format.organization.address output } 1456 | { 1457 | new.sentence 1458 | organization "organization" bibinfo.check output 1459 | format.publisher.address output 1460 | } 1461 | if$ 1462 | } 1463 | if$ 1464 | new.block 1465 | format.url output 1466 | new.block 1467 | format.note output 1468 | format.eprint output 1469 | fin.entry 1470 | } 1471 | 1472 | FUNCTION {techreport} 1473 | { output.bibitem 1474 | format.authors "author" output.check 1475 | new.block 1476 | format.title 1477 | "title" output.check 1478 | new.block 1479 | format.tr.number output.nonnull 1480 | institution "institution" bibinfo.warn output 1481 | address "address" bibinfo.check output 1482 | format.date "year" output.check 1483 | new.block 1484 | format.url output 1485 | new.block 1486 | format.note output 1487 | format.eprint output 1488 | fin.entry 1489 | } 1490 | 1491 | FUNCTION {unpublished} 1492 | { output.bibitem 1493 | format.authors "author" output.check 1494 | new.block 1495 | format.title "title" output.check 1496 | format.date output 1497 | new.block 1498 | format.url output 1499 | new.block 1500 | format.note "note" output.check 1501 | format.eprint output 1502 | fin.entry 1503 | } 1504 | 1505 | FUNCTION {default.type} { misc } 1506 | READ 1507 | STRINGS { longest.label } 1508 | INTEGERS { number.label longest.label.width } 1509 | FUNCTION {initialize.longest.label} 1510 | { "" 'longest.label := 1511 | #1 'number.label := 1512 | #0 'longest.label.width := 1513 | } 1514 | FUNCTION {longest.label.pass} 1515 | { number.label int.to.str$ 'label := 1516 | number.label #1 + 'number.label := 1517 | label width$ longest.label.width > 1518 | { label 'longest.label := 1519 | label width$ 'longest.label.width := 1520 | } 1521 | 'skip$ 1522 | if$ 1523 | } 1524 | EXECUTE {initialize.longest.label} 1525 | ITERATE {longest.label.pass} 1526 | FUNCTION {begin.bib} 1527 | { preamble$ empty$ 1528 | 'skip$ 1529 | { preamble$ write$ newline$ } 1530 | if$ 1531 | "\begin{thebibliography}{" longest.label * "}" * 1532 | write$ newline$ 1533 | "\expandafter\ifx\csname url\endcsname\relax" 1534 | write$ newline$ 1535 | " \def\url#1{\texttt{#1}}\fi" 1536 | write$ newline$ 1537 | "\expandafter\ifx\csname urlprefix\endcsname\relax\def\urlprefix{URL }\fi" 1538 | write$ newline$ 1539 | "\expandafter\ifx\csname doiprefix\endcsname\relax\def\doiprefix{DOI }\fi" 1540 | write$ newline$ 1541 | "\providecommand{\bibinfo}[2]{#2}" 1542 | write$ newline$ 1543 | "\providecommand{\eprint}[2][]{\url{#2}}" 1544 | write$ newline$ 1545 | } 1546 | EXECUTE {begin.bib} 1547 | EXECUTE {init.state.consts} 1548 | ITERATE {call.type$} 1549 | FUNCTION {end.bib} 1550 | { newline$ 1551 | "\end{thebibliography}" write$ newline$ 1552 | } 1553 | EXECUTE {end.bib} 1554 | %% End of customized bst file 1555 | %% 1556 | %% End of file `nature.bst'. 1557 | 1558 | -------------------------------------------------------------------------------- /scipy-1.0/paper.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scipy/scipy-articles/5498688844f80c965a8511241dee62c3033924e3/scipy-1.0/paper.pdf -------------------------------------------------------------------------------- /scipy-1.0/poly.tex: -------------------------------------------------------------------------------- 1 | Historically, SciPy relied heavily on the venerable FITPACK 2 | Fortran library by P.~Dierckx \cite{Dierckx:1993:CSF:151103, FITPACK} for 3 | univariate interpolation and approximation of data, but the original monolithic 4 | design and API for interaction between SciPy and FITPACK was limiting for both 5 | users and developers. 6 | 7 | Implementing a new, modular design of polynomial interpolators was spread over 8 | several releases. The goals of this effort were to have a set of basic objects 9 | representing piecewise polynomials, to implement a collection of algorithms 10 | for constructing various interpolators, and to provide users with building 11 | blocks for constructing additional interpolators. 12 | 13 | At the lowest level of the new design are classes which represent univariate 14 | piecewise polynomials: \code{PPoly} (SciPy~0.13)\cite{scipy-gh2885}, 15 | \code{BPoly} (SciPy~0.13) and \code{BSpline} (SciPy~0.19)\cite{scipy-gh3174}, 16 | which allow 17 | efficient vectorized evaluations, differentiation, integration and root-finding. 18 | \code{PPoly} represents piecewise polynomials in the power basis in terms of 19 | breakpoints and coefficients at each interval. \code{BPoly} is similar, and 20 | represents piecewise polynomials in the Bernstein basis (which is suitable 21 | for e.g., constructing B\'{e}zier curves). \code{BSpline} represents spline 22 | curves, i.e., linear combinations of B-spline basis elements.\cite{deBoor1978} 23 | 24 | In the next layer, these polynomial classes are used for constructing several 25 | common ways of interpolating data: \code{CubicSpline} (SciPy~0.18) 26 | \cite{scipy-gh5653} constructs a twice 27 | differentiable piecewise cubic function, \code{Akima1DInterpolator} 28 | and \code{PCHIPInterpolator} implement two classic prescriptions for 29 | constructing a $C^1$ continuous monotone shape-preserving interpolator. 30 | \cite{FritschCarlson1980, Akima1970} 31 | -------------------------------------------------------------------------------- /scipy-1.0/rebuttal.tex: -------------------------------------------------------------------------------- 1 | % based on template: 2 | % https://tex.stackexchange.com/questions/15532/looking-for-cover-letter-template 3 | 4 | \documentclass[10pt,stdletter,dateno]{newlfm} 5 | 6 | % to adjust vertical spacing properties of 7 | % newlfm class see: https://tex.stackexchange.com/a/65533/43006 8 | %\unprtop{0mm} 9 | \topmarginsize{0mm} 10 | \topmarginskip{0in} 11 | \headermarginsize{0in} 12 | \headermarginskip{0in} 13 | \MinHead{0in} 14 | %\dateskipafter{0pt} 15 | %\dateskipbefore{0pt} 16 | \sigskipbefore{40pt} 17 | %\sigskipafter{0pt} 18 | \closeskipbefore{1pt} 19 | %\closeskipafter{0pt} 20 | %\addrfromskipbefore{0pt} 21 | \addrfromskipafter{0in} 22 | \addrtoskipbefore{0in} 23 | %\addrtoskipafter{0pt} 24 | \newlfmP{Headlinewd=0pt,Footlinewd=0pt} 25 | \newlfmP{sigsize=10pt} 26 | \bottommarginskip{10pt} 27 | \MinFoot{0pt} 28 | \leftmarginsize{0.95in} 29 | \rightmarginsize{0.95in} 30 | 31 | \usepackage{kpfonts} 32 | \usepackage{hyperref} 33 | \usepackage{url} 34 | 35 | \hypersetup{% 36 | linkbordercolor=blue,% hyperlink borders will be blue 37 | pdfborderstyle={/S/U/W 1}% border style will be underline of width 1pt 38 | } 39 | \widowpenalty=1000 40 | \clubpenalty=1000 41 | 42 | \namefrom{Ralf Gommers, 43 | Matt Haberland, 44 | and Tyler Reddy} 45 | \addrfrom{% 46 | \today\\[10pt] 47 | Ralf Gommers\\ 48 | Quansight Labs\\ 49 | The Netherlands\\ 50 | \texttt{ralf.gommers@gmail.com}\\ 51 | %phone number\\ 52 | \\ 53 | Matt Haberland\\ 54 | BioResource and Agricultural Engineering\\ 55 | California Polytechnic State University\\ 56 | San Luis Obispo, CA 93407, USA\\ 57 | \texttt{mhaberla@calpoly.edu}\\ 58 | %phone number\\ 59 | \\ 60 | Tyler Reddy\\ 61 | CCS-7 Applied Computer Science Group\\ 62 | Los Alamos National Laboratory\\ 63 | Los Alamos, NM 87545, USA\\ 64 | \texttt{treddy@lanl.gov}\\ 65 | %phone number\\ 66 | } 67 | 68 | \addrto{% 69 | Dr. Rita Strack\\ 70 | Nature Methods Editorial Office\\ 71 | One New York Plaza Suite 4500\\ 72 | New York, NY 10004, USA} 73 | 74 | \greetto{Dear Dr. Strack,} 75 | \closeline{Sincerely,} 76 | \begin{document} 77 | \begin{newlfm} 78 | 79 | We appreciate the careful review and helpful suggestions from you and the reviewers. Each comment is quoted and addressed below in the order of the original review, with the exception that the requests from both reviewers to address GPU/distributed computing have been combined. We also link the relevant GitHub issues in which we discussed and implemented each suggestion. As requested, the corresponding changes are underlined in the revised manuscript. 80 | 81 | \begin{quote} 82 | I would like a longer discussion about the future of SciPy particularly SciPy’s lack of the two features that are starting to become understood as essential to scientific computing: built-in automatic reverse-mode differentiation and heterogenous computation (e.g. CPU, DSP, GPU, etc.). Will SciPy adapt to support these increasingly vital features? Is it even possible without a substantial rewrite? 83 | \end{quote} 84 | 85 | \begin{quote} 86 | Page 6. Distributed and GPU is considered out of scope but is conversely is believed to be required in the future for data and scientific analysis. A discussion of alternatives and how you interact with other ecosystems should be considered (e.g., RAPIDS, Dask, etc). How does SciPy progress with the rapidly evolving hardware? 87 | \end{quote} 88 | 89 | The SciPy maintainers have discussed the inclusion of automatic differentiation capabilities several times in recent years, but the conclusion has been that this need is currently fulfilled by existing libraries such as JAX (\url{https://github.com/google/jax}), a Google research project. JAX can automatically perform AD on generic Python and NumPy code with minimal modifications, so it cooperates well with SciPy. Users who need AD capabilities with a more permissive license can use Autograd (\url{https://github.com/HIPS/autograd}), a core component of JAX, and ad (\url{https://pythonhosted.org/ad/}). However, the latter packages are no longer actively maintained, so we will continue to evaluate the demand to add their capabilities -- and our ability to maintain them -- as part of SciPy. 90 | 91 | At the SciPy 1.0 release point, support for heterogeneous computation was explicitly out of scope, but we have since added to the roadmap our intention to support distributed and GPU arrays. NumPy is changing its API such that many parts of SciPy will be able to accept any array that implements the \texttt{ndarray} interface; support for parts that don't immediately work well with distributed/GPU arrays will be added over time. For instance, SciPy 1.4 will feature a backend system in \texttt{scipy.fft} that allows calling SciPy functions on GPU and even multi-GPU systems via CuPy and Dask. This will be extended to most other subpackages in subsequent releases, with \texttt{linalg} and \texttt{special} high on the list. There are not immediate plans to tailor algorithms for distributed or GPU arrays, but in the meantime SciPy provides a reference implementation of algorithms and an API on which downstream libraries can model their code. 92 | 93 | To address this comment, we have made changes to the Project Scope and Discussion sections as discussed in GitHub \#245 (\url{https://github.com/scipy/scipy-articles/pull/245}). 94 | 95 | \begin{quote} 96 | Scientific software is depressingly underfunded. I imagine the economic cost of SciPy is in the tens (if not hundreds) of millions of dollars yet, as you mention, the actual direct financial contributions were a magnitude (or two) less. How did the SciPy community address this disparity? Are there lessons to be learned for the larger scientific community? 97 | \end{quote} 98 | 99 | We added a ``Funding'' subsection to the ``Project organization and community'' section on page 13 to address this (GitHub \#246, \url{https://github.com/scipy/scipy-articles/pull/246}). 100 | 101 | \begin{quote} 102 | A clear distinction between CPython and Python is stressed, which might not be relevant to many audiences as alternatives like PyPI are likely not well understood. This is also an example of where the paper may delve too much into technical details. 103 | \end{quote} 104 | 105 | We've removed the sentence referring to CPython on page 2 of the manuscript--we agree that this is indeed too technical to be of interest for the likely audience (GitHub \#238, \url{https://github.com/scipy/scipy-articles/pull/238}). 106 | 107 | \begin{quote} 108 | Page 3. Figure 1. There should be a date on when the announcement was initially released and potentially medium used. 109 | \end{quote} 110 | 111 | The exact date of the announcement and the name of the mailing list that was used have been added to the caption to Figure 1 on page 3 (GitHub \#237, \url{https://github.com/scipy/scipy-articles/pull/237}). 112 | 113 | \begin{quote} 114 | Page 5. A very brief mention of what GitHub is should be stated; bench chemist may be unaware of this platform. 115 | \end{quote} 116 | 117 | We've introduced GitHub in a new sentence added to the ``SciPy today'' section, page 5 (GitHub \#233, \url{https://github.com/scipy/scipy-articles/pull/233}). 118 | 119 | \begin{quote} 120 | Page 5. Figure 2. The term ``SciKit'' is only briefly mentioned before this figure and is never fleshed out. With the current phrasing, it is unclear if SciKits are competitors or extensions of SciPy, their relationship should be well defined. 121 | \end{quote} 122 | 123 | The nature of SciKits is now discussed in more detail in a modified sentence on page 4, prior to their mention in Figure 2 (GitHub \#235, \url{https://github.com/scipy/scipy-articles/pull/235}). 124 | 125 | \begin{quote} 126 | Page 5. Figure 2. The term ``continuous integration'' needs to be defined before this image. 127 | \end{quote} 128 | 129 | Continuous integration is now defined in the ``Test and benchmark suite'' section, page 11 (GitHub \#239, \url{https://github.com/scipy/scipy-articles/pull/239}). As the definition did not fit in any context before the figure, and because readers might also be unfamiliar with Cython, BLAS/LAPACK, and other terms mentioned in the figure, the figure caption now refers the interested reader to the corresponding sections (GitHub \#253, \url{https://github.com/scipy/scipy-articles/pull/253}). 130 | 131 | \begin{quote} 132 | Page 7. Many Fortran packages like ODEPACK and ARPACK are discussed without context. Readers are unlikely to be familiar with these libraries (even BLAS is questionable). While enumerating the capabilities of each package is clearly beyond scope simply categorizing them in some fashion would be worthwhile. 133 | \end{quote} 134 | 135 | The ``Language choices'' section (page 7) has been revised: the external Fortran packages have been grouped into six distinct categories based on what the libraries provide, and the purpose of each C library used by SciPy is briefly mentioned. BLAS and LAPACK are now defined on page 8 (GitHub \#240, \url{https://github.com/scipy/scipy-articles/pull/240}). 136 | 137 | \begin{quote} 138 | Page 11. From the text, it is unclear why testing and code coverage are useful metrics. Some mention of correctness is likely required and could be a good time to mention that these metrics give both contributors courage that they are not breaking the package and maintainers some faith that a contribution does not harm the package. 139 | \end{quote} 140 | 141 | Page 11 of the revised manuscript now contains a new paragraph outlining the value and purpose of test-driven development, including the suggested mention of increasing confidence in code changes (GitHub \#234, \url{https://github.com/scipy/scipy-articles/pull/234}). 142 | 143 | \begin{quote} 144 | Page 11. The compiled coverage of 45\% seems surprisingly low and perhaps should be remarked on. The maintainers also appear to have allowed remarkable amounts of untested compiled code in recent years. One could make an argument that the correctness of SciPy is much more important than the feature set as it is currently thought of as a dependable resource. 145 | \end{quote} 146 | 147 | The ``Test suite'' subsection on page 11 now explains why the compiled code is more robust than the raw 45 \% coverage figure might suggest (GitHub \#250, \url{https://github.com/scipy/scipy-articles/pull/250}). 148 | 149 | \begin{quote} 150 | Links to SciPy cookbooks or tutorials would be useful to highlight to give readers immediate examples of how SciPy would be helpful. These tutorials are only linked in your Discussion section and maybe missed. 151 | \end{quote} 152 | 153 | We've added a mention of the SciPy Tutorial and API Reference much earlier in a new sentence of the ``Package organization'' subsection on page 6 (GitHub \#241, \url{https://github.com/scipy/scipy-articles/pull/241}). 154 | 155 | \begin{quote} 156 | Overall the paper is well written, but some additional attention to presenting this towards a general audience should be exercised. In particular, the “Background” section should be greatly minimized and moved to another part of the paper (or removed entirely) so that readers can be first presented with capabilities. 157 | \end{quote} 158 | 159 | Per the editor's recommendation, we have substantially streamlined the Background section from $\approx$2000 words to $\approx$1500 words (GitHub \#242, \url{https://github.com/scipy/scipy-articles/pull/242}; \#243, \url{https://github.com/scipy/scipy-articles/pull/243}; and \#244, \url{https://github.com/scipy/scipy-articles/pull/244}). 160 | 161 | Thank you again for your helpful comments and for your consideration of the revised manuscript. 162 | 163 | \end{newlfm} 164 | \end{document} 165 | -------------------------------------------------------------------------------- /scipy-1.0/scipy-optimize.tex: -------------------------------------------------------------------------------- 1 | \newcommand{\RR}{\ensuremath{\mathbb{R}}} 2 | The \texttt{scipy.optimize} subpackage provides functions for the numerical 3 | solution of several classes of root finding and optimization problems. 4 | Here we highlight recent additions through SciPy~1.0. 5 | 6 | %\subsubsection{Root Finding} 7 | %The general ``root finding'' problem is to find a root $\mathbf{x} \in \RR^m$ of $\mathbf{f}: \RR^m \rightarrow \RR^m$, that is, to solve 8 | %\begin{equation} 9 | %\mathbf{f}(\mathbf{x}) = \mathbf{0} 10 | %\end{equation} 11 | %for a solution $\mathbf{x}$.\footnote{Equivalently the problem is to simultaneously find the roots $x_i \in \RR$ of several scalar functions $f_i : \RR \rightarrow \RR$, that is, to solve $f_i(x_0, x_1, \dots, x_{m-1}) = 0$ for $x_i$, $i \in \{0, 1, \dots {m-1}\}$.} The function \texttt{scipy.optimize.root} provides a common interface to several algorithms for solving problems of this type. For the special case\footnote{that is, to solve a single scalar equation $f(x) = 0$ for a single scalar variable $x$} $m = 1$, any one of several specialized functions \texttt{brentq}, \texttt{brenth}, \texttt{ridder}, \texttt{bisect}, or \texttt{newton} may provide improved performance or accuracy. (Have there been any recent improvements? Do we want to summarize the methods as @antonior92 has done for $minimize$? Do we have to explain that these methods only provide \emph{one} solution, and that they are iterative based on a user-provided guess? Do we have to explain the notion of tolerance? Is this a good template for the beginning of the following subsections?) 12 | 13 | 14 | \subsubsection*{Linear Optimization} 15 | 16 | A new interior-point optimizer for continuous linear programming problems, \texttt{linprog} with \texttt{method='interior-point'}, was released with SciPy~1.0. Implementing the core algorithm of the commercial solver MOSEK \cite{andersen2000mosek}, it solves all of the 90+ NETLIB LP benchmark problems \cite{netlib} tested. Unlike some interior point methods, this homogeneous self-dual formulation provides certificates of infeasibility or unboundedness as appropriate. 17 | 18 | A presolve routine \cite{andersen1995presolving} solves trivial problems and otherwise performs problem simplifications, such as bound tightening and removal of fixed variables, and one of several routines for eliminating redundant equality constraints is automatically chosen to reduce the chance of numerical difficulties caused by singular matrices. Although the main solver implementation is pure Python, end-to-end sparse matrix support and heavy use of SciPy's compiled linear system solvers---often for the same system with multiple right hand sides due to the predictor-corrector approach---provide speed sufficient for problems with tens of thousands of variables and constraints. 19 | 20 | Compared to the previously implemented simplex method, the new interior-point method is faster for all but the smallest problems, and is suitable for solving medium- and large-sized problems on which the existing simplex implementation fails. However, the interior point method typically returns a solution near the center of an optimal face, yet basic solutions are often preferred for sensitivity analysis and for use in mixed integer programming algorithms. This motivates the need for a crossover routine or a new implementation of the simplex method for sparse problems in a future release, either of which would require an improved sparse linear system solver with efficient support for rank-one updates. 21 | 22 | \subsubsection*{Nonlinear Optimization} 23 | \paragraph{Local Minimization} 24 | The \texttt{minimize} function provides a unified interface for finding local minima of nonlinear optimization problems. Four new methods for unconstrained optimization were added to \texttt{minimize} in recent versions of SciPy: \texttt{dogleg}, \texttt{trust-ncg}, \texttt{trust-exact}, and \texttt{trust-krylov}. All are trust-region methods that build a local model of the objective function based on first and second derivative information, approximate the best point within a local ``trust region'', and iterate until a local minimum of the original objective function is reached, but each has unique characteristics that make it appropriate for certain types of problems. For instance, \texttt{trust-exact} achieves fast convergence by solving the trust-region subproblem almost exactly, but it requires the second derivative Hessian matrix to be stored and factored every iteration, which may preclude the solution of large problems ($\geq 1000$ variables). On the other hand, \texttt{trust-ncg} and \texttt{trust-krylov} are well-suited to large-scale optimization problems because they do not need to store and factor the Hessian explicitly, instead using second derivative information in a faster, approximate way. A detailed comparison of the characteristics of all \texttt{minimize} methods is presented in Table~\ref{tab:minimize-si}; it illustrates the level of completeness that SciPy aims for when covering a numerical method or topic. 25 | 26 | \paragraph{Global Minimization} 27 | As \texttt{minimize} may return any local minimum, some problems require the use of a global optimization routine. The new \texttt{scipy.optimize.differential\textunderscore evolution} function \cite{Wormington1999,Storn1997} is a stochastic global optimizer that works by evolving a population of candidate solutions. In each iteration, trial candidates are generated by combination of candidates from the existing population. If the trial candidates represent an improvement, then the population is updated. Most recently, the SciPy benchmark suite gained a comprehensive set of 196 global optimization problems for tracking the performance of existing solvers over time and for evaluating whether the performance of new solvers merits their inclusion in the package. 28 | 29 | \setlength{\tabcolsep}{3pt} 30 | \begin{table}[H] 31 | \centering 32 | \caption{Optimization methods from \texttt{minimize}, which solves problems of the form $\min_x f(x)$, where $x \in \mathbb{R}^n$ and $f: \mathbb{R}^n \rightarrow \mathbb{R}$ . The field \textit{version added} specifies the algorithm's first appearance in SciPy. Algorithms with \textit{version added} ``0.6*'' were added in version 0.6 or before. 33 | The field \textit{wrapper} indicates whether the implementation available in SciPy wraps a function written in a compiled language 34 | (e.g. C or FORTRAN). The fields \textit{\nth{1}} and \textit{\nth{2} derivatives} 35 | indicates whether first or second order derivatives are required. When \textit{\nth{2} derivatives} is flagged 36 | with $\sim$ the algorithm does not require second-order derivatives from 37 | the user; it computes an approximation internally and uses it to accelerate method convergence. 38 | \textit{Iterative Hessian factorization} denotes algorithms that factorize the Hessian in an iterative way, 39 | which does not require explicit matrix factorization or storage of the Hessian. 40 | \textit{Local convergence} gives a lower bound on the rate of convergence of the iterations sequence once the 41 | iterate is sufficiently close to the solution: linear (L), superlinear (S) and quadratic (Q). Convergence rates denoted S$^*$ indicate that the algorithm 42 | has a superlinear rate for the parameters used in SciPy, but can achieve a quadratic convergence rate with other parameter choices. 43 | \textit{Global convergence} is marked for the algorithms with guarantees of convergence to a stationary 44 | point (i.e.\ a point $x^*$ for which $\nabla f(x^*) = 0$); this is \emph{not} a guarantee of convergence to a global minimum. 45 | \textit{Lines-search (LS) or trust-region (TR)} indicates which of the two globalization approaches is employed by the algorithm. 46 | The table also indicates which algorithms 47 | can deal with constraints on the variables. We distinguish among \textit{bound constraints} (i.e.\ $x^l \le x \le x^u$), 48 | \textit{equality constraints} (i.e.\ $c_{\text{eq}}(x) = 0$) and \textit{inequality constraints} (i.e.\ $c_{\text{ineq}}(x) \ge 0$).} 49 | \begin{tabular}{cccccccccccccc} 50 | & \rotatebox{80}{\texttt{Nelder-Mead}} & \rotatebox{80}{\texttt{Powell}} & \rotatebox{80}{\texttt{COBYLA}} & \rotatebox{80}{\texttt{CG}} & \rotatebox{80}{\texttt{BFGS}}& \rotatebox{80}{\texttt{L-BFGS-B}} & \rotatebox{80}{\texttt{SLSQP}} & \rotatebox{80}{\texttt{TNC}} & \rotatebox{80}{\texttt{Newton-CG}} & \rotatebox{80}{\texttt{dogleg}} & \rotatebox{80}{\texttt{trust-ncg}} & \rotatebox{80}{\texttt{trust-exact}} & \rotatebox{80}{\texttt{trust-krylov}} \\ 51 | \hline 52 | Version added & 0.6* & 0.6* & 0.6* & 0.6* & 0.6* & 0.6* & 0.9 & 0.6* & 0.6* & 0.13 & 0.13 & 0.19 & 1.0 \\ 53 | \hline 54 | Wrapper & & & \cmark & & & \cmark & \cmark & \cmark & & & & & \cmark \\ 55 | \hline 56 | \nth{1} derivatives & & & & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark \\ 57 | \hline 58 | \nth{2} derivatives & & & & & $\sim$ & $\sim$ & $\sim$ & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark \\ 59 | \hline 60 | \makecell{Iterative Hessian \\ 61 | factorization} & & & & & & & & \cmark & \cmark & & \cmark & & \cmark \\ 62 | \hline 63 | Local convergence& & & & L & S & L & S & S$^*$ & S$^*$ & Q & S$^*$ & Q & S$^*$ \\ 64 | \hline 65 | Global convergence & & & & & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark & \cmark \\ 66 | \hline 67 | \makecell{Line-search (LS) or\\ trust-region (TR)} & Neither & LS & TR & LS & LS & LS & LS & LS & LS & TR & TR & TR & TR \\ 68 | \hline 69 | Bound constraints &&&&&&\cmark&\cmark&\cmark&\cmark&&&& \\ 70 | \hline 71 | Equality constraints &&&&&&&\cmark&&&&& \\ 72 | \hline 73 | Inequality constraint &&&\cmark&&&&\cmark&&&&& \\ 74 | \hline 75 | References & 76 | \inlinecite{nelder_simplex_1965, wright_direct_1996} & 77 | \inlinecite{powell_efficient_1964} & 78 | \inlinecite{powell_direct_1994, powell_direct_1998, powell_view_2007} & 79 | \inlinecite{polak_note_1969, nocedal_numerical_2006} & 80 | \inlinecite{nocedal_numerical_2006} & 81 | \inlinecite{byrd_limited_1995, zhu_algorithm_1997} & 82 | \inlinecite{schittkowski_nonlinear_1982, schittkowski_nonlinear_1982-1, schittkowski_convergence_1983, kraft_software_1988} & 83 | \inlinecite{nash_newton-type_1984} & 84 | \inlinecite{nocedal_numerical_2006} & 85 | \inlinecite{powell_new_1970, nocedal_numerical_2006} & 86 | \inlinecite{steihaug_conjugate_1983, nocedal_numerical_2006} & 87 | \inlinecite{conn_trust_2000, more_computing_1983} & 88 | \inlinecite{gould_solving_1999, doi:10.1080/10556788.2018.1449842} \\ 89 | \hline 90 | \end{tabular} 91 | \label{tab:minimize-si} 92 | \end{table} 93 | 94 | 95 | -------------------------------------------------------------------------------- /scipy-1.0/static/asv.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scipy/scipy-articles/5498688844f80c965a8511241dee62c3033924e3/scipy-1.0/static/asv.pdf -------------------------------------------------------------------------------- /scipy-1.0/static/jabbrv.sty: -------------------------------------------------------------------------------- 1 | %% Copyright 2010 Erich Hoover 2 | %% E-mail: ehoover@mines.edu 3 | %% 4 | %% ============================================= 5 | %% IMPORTANT NOTICE: 6 | %% 7 | %% This work may be distributed and/or modified under the conditions 8 | %% of the LaTeX Project Public License, either version 1.3c of this 9 | %% license or (at your option) any later version. 10 | %% The latest version of this license is available at 11 | %% http://www.latex-project.org/lppl.txt 12 | %% ============================================= 13 | %% 14 | %% This package provides the "\JournalTitle{}" command, where 15 | %% "<title>" is a journal title that you wish to have automatically 16 | %% abbreviated. For example, 17 | %% \JournalTitle{Journal of the Optical Society of America} 18 | %% will be replaced to read 19 | %% J. Opt. Soc. Am. 20 | %% 21 | %% The default behavior of this package is to place a period after 22 | %% each abbreviation. For publications that require period-less 23 | %% abbreviations simply include the package option "noperiod": 24 | %% \usepackage[noperiod]{jabbrv} 25 | %% 26 | %% This package also ignores undefined abbreviations (does not 27 | %% abbreviate them) by default. In order to make sure that all the 28 | %% words you expect to be abbreviated are actually abbreviated then 29 | %% include the "warnundef" option: 30 | %% \usepackage[warnundef]{jabbrv} 31 | %% Please note that this option outputs a LaTeX warning for each 32 | %% title word that does not have an abbreviation, possibly resulting 33 | %% in a large number of warnings in the output log. 34 | %% 35 | %% To change the language used for the set of abbreviations (english 36 | %% by default), use the ``lang=<value>'' option with the Unix 37 | %% language code for <value>; for example: 38 | %% \usepackage[lang=es]{jabbrv} 39 | %% sets the abbreviation language to Spanish. 40 | %% 41 | %% In order to add customize abbreviations this package provides 42 | %% three additional commands: \DefineJournalAbbreviation, 43 | %% \DefineJournalPartialAbbreviation and \DefineSpuriousJournalWord. 44 | %% \DefineSpuriousJournalWord simply takes a single case-sensitive 45 | %% parameter, this parameter will be added to the list of words to 46 | %% completely remove in the output. \DefineJournalAbbreviation takes 47 | %% two parameters, the first parameter is the case-sensitive word to 48 | %% abbreviate and the second parameter is the actual abbreviation, 49 | %% for example: 50 | %% \DefineJournalAbbreviation{Journal}{J} 51 | %% Important Note!: Adding a period after the abbreviation is 52 | %% automatically handled by the package, if you do not wish to 53 | %% have periods after abbreviations then enable the "noperiod" 54 | %% package option. \DefineJournalPartialAbbreviation takes two 55 | %% parameters juts like \DefineJournalAbbreviation; however, 56 | %% \DefineJournalPartialAbbreviation creates an entry that matches 57 | %% any title that begins with the first parameter, for example: 58 | %% \DefineJournalPartialAbbreviation{Communica}{Commun} 59 | %% will match longer words such as ``Communications'' and 60 | %% abbreviate any such word with the given abbreviated form. Please 61 | %% note that care should be taken with creating custom partial 62 | %% abbreviations, as such abbreviations that are not approved by 63 | %% the ISSN may match unintended title words. 64 | %% 65 | %% Please note that this package is still very much in the beta 66 | %% stage, while it should work just fine it has not yet been 67 | %% extensively tested. 68 | %% 69 | \NeedsTeXFormat{LaTeX2e}[1995/06/01] 70 | \ProvidesPackage{jabbrv}[2010/08/18 v0.2 71 | Automatic Journal Title Abbreviation Package] 72 | \RequirePackage{kvoptions}[2006/08/17] 73 | 74 | % Special if statement for ensuring there are no double-spaces in the resulting entries 75 | \newif\if@gobble@space@ 76 | 77 | % Special if for warning when an abbreviation is not defined 78 | \newif\if@warn@noabbrv@ \@warn@noabbrv@false 79 | 80 | % Special if for if a partial abbreviation match was found 81 | \newif\if@partial@found@ 82 | 83 | % Special if for handling exceptions to the abbreviation rules 84 | \newif\if@abbreviate@journal@ 85 | 86 | % Special definition for the period so that a double-period doesn't result at the end of the entry 87 | \newif\if@show@period@ \@show@period@true 88 | \newif\if@end@period@ 89 | \newif\if@no@space@ \@no@space@false 90 | \newif\if@special@period@ 91 | \def\journal@abbrv@period@noperiod{\global\@end@period@true} 92 | \def\journal@abbrv@period@period{% 93 | \if@show@period@% 94 | .% 95 | \fi% 96 | } 97 | \def\journal@abbrv@period{% 98 | \ifx\journal@char@stop\@jrnl@temp@char% 99 | \journal@abbrv@period@noperiod% 100 | \else% 101 | \ifx.\@jrnl@temp@char% 102 | \else% 103 | \journal@abbrv@period@period% 104 | \fi% 105 | \fi% 106 | } 107 | 108 | % Custom ``comma below'' command (use only if \textcommabelow is defined): 109 | \global\let\jabbrv@textcommabelow=\textcommabelow 110 | \gdef\J@C{% 111 | \expandafter\ifx\csname jabbrv@textcommabelow\endcsname\relax% 112 | \def\jabbrv@comma{}% 113 | \else% 114 | \def\jabbrv@comma{\jabbrv@textcommabelow}% 115 | \fi% 116 | \jabbrv@comma% 117 | } 118 | 119 | % Redefinitions for diacritical marks so that they can be processed as command names 120 | \def\jabbrv@redefine@diacritic{% 121 | \def\`{@GRAVEACCENT@}% 122 | \def\'{@ACUTEACCENT@}% 123 | \def\^{@CIRCUMFLEX@}% 124 | \def\"{@UMLAUT@}% 125 | \def\={@MACRONACCENT@}% 126 | \def\~{@TILDE@}% 127 | \def\aa{@RINGa@}% 128 | \def\AA{@RINGA@}% 129 | \def\ae{@aeDIPHTHONG@}% 130 | \def\AE{@AEDIPHTHONG@}% 131 | \def\c{@CEDILLA@}% 132 | \def\o{@SLASHo@}% 133 | \def\O{@SLASHO@}% 134 | \def\oe{@oeDIPHTHONG@}% 135 | \def\OE{@OEDIPHTHONG@}% 136 | \def\ss{@ESZETT@}% 137 | \def\t{@TIE@}% 138 | \def\v{@CARON@}% 139 | \def\&{@AND@}% 140 | % Custom \J@C may be called directly or defined through \textcommabelow: 141 | \def\J@C{@JABBRVCOMMA@}% 142 | \let\textcommabelow=\J@C% 143 | } 144 | \global\let\jabbrv@graveaccent=\` 145 | \global\let\jabbrv@accuteaccent=\' 146 | \global\let\jabbrv@circumflex=\^ 147 | \global\let\jabbrv@umlaut=\" 148 | \global\let\jabbrv@macronaccent=\= 149 | \global\let\jabbrv@tilde=\~ 150 | \global\let\jabbrv@ringa=\aa 151 | \global\let\jabbrv@ringA=\AA 152 | \global\let\jabbrv@aediphthong=\ae 153 | \global\let\jabbrv@AEdiphthong=\AE 154 | \global\let\jabbrv@cedilla=\c 155 | \global\let\jabbrv@slasho=\o 156 | \global\let\jabbrv@slashO=\O 157 | \global\let\jabbrv@oediphthong=\oe 158 | \global\let\jabbrv@OEdiphthong=\OE 159 | \global\let\jabbrv@eszett=\ss 160 | \global\let\jabbrv@tie=\t 161 | \global\let\jabbrv@caron=\v 162 | \global\let\jabbrv@and=\& 163 | % Custom: 164 | \global\let\jabbrv@comma=\J@C 165 | % When outputing abbreviations or un-abbreviated words the diacritic match 166 | % list should be disabled (return things to normal): 167 | \def\jabbrv@normal@diacritic{% 168 | \let\`=\jabbrv@graveaccent% 169 | \let\'=\jabbrv@accuteaccent% 170 | \let\^=\jabbrv@circumflex% 171 | \let\"=\jabbrv@umlaut% 172 | \let\==\jabbrv@macronaccent% 173 | \let\~=\jabbrv@tilde% 174 | \let\c=\jabbrv@cedilla% 175 | \let\aa=\jabbrv@ringa% 176 | \let\AA=\jabbrv@ringA% 177 | \let\ae=\jabbrv@aediphthong% 178 | \let\AE=\jabbrv@AEdiphthong% 179 | \let\o=\jabbrv@slasho% 180 | \let\O=\jabbrv@slashO% 181 | \let\oe=\jabbrv@oediphthong% 182 | \let\OE=\jabbrv@OEdiphthong% 183 | \let\ss=\jabbrv@eszett% 184 | \let\t=\jabbrv@tie% 185 | \let\v=\jabbrv@caron% 186 | \let\&=\jabbrv@and% 187 | % Custom \J@C may be called directly or defined through \textcommabelow: 188 | \let\J@C=\jabbrv@comma% 189 | \let\textcommabelow=\jabbrv@comma% 190 | } 191 | 192 | % Define Common Abbreviations (see language definition files for the list): 193 | \providecommand{\DefineJournalAbbreviation}[2]{ 194 | \begingroup 195 | \jabbrv@redefine@diacritic 196 | \expandafter\gdef\csname journal@abbrv@#1\endcsname{% 197 | \begingroup% 198 | \jabbrv@normal@diacritic% 199 | #2% 200 | \endgroup% 201 | \@gobble@space@false% 202 | \journal@abbrv@period% 203 | } 204 | \endgroup 205 | } 206 | 207 | % Define specific journals that are exceptions: 208 | \providecommand{\DefineJournalException}[2]{ 209 | \begingroup 210 | \jabbrv@redefine@diacritic 211 | \expandafter\gdef\csname journal@exception@#1\endcsname{% 212 | \begingroup% 213 | \jabbrv@normal@diacritic% 214 | #2% 215 | \endgroup% 216 | \@gobble@space@false% 217 | } 218 | \endgroup 219 | } 220 | 221 | % Define Common Partial Abbreviations (see language definition files for the list): 222 | \providecommand{\DefineJournalPartialAbbreviation}[2]{ 223 | \begingroup 224 | \jabbrv@redefine@diacritic 225 | \expandafter\gdef\csname journal@partial@abbrv@#1\endcsname{% 226 | \begingroup% 227 | \jabbrv@normal@diacritic% 228 | #2% 229 | \endgroup% 230 | \@gobble@space@false% 231 | \journal@abbrv@period% 232 | } 233 | \endgroup 234 | } 235 | 236 | % Define Suprious Word Removal: 237 | \providecommand{\DefineSpuriousJournalWord}[1]{% 238 | \expandafter\def\csname journal@abbrv@#1\endcsname{\journal@output@space}% 239 | } 240 | \DefineSpuriousJournalWord{of} 241 | \DefineSpuriousJournalWord{in} 242 | \DefineSpuriousJournalWord{and} 243 | \DefineSpuriousJournalWord{the} 244 | 245 | % Handle the rather generic \futurelet code: 246 | \newtoks\temp@journal@text 247 | \newtoks\temp@journal@text@ 248 | \temp@journal@text{} 249 | \def\journal@char@stop{} 250 | \def\@journal@space{\afterassignment\@journal@space@\let\@tempa= } 251 | \def\@journal@space@{\journal@char@loop} 252 | \def\@journal@gobble#1{\journal@char@loop} 253 | \def\@journal@character#1{% 254 | \temp@journal@text\expandafter{\the\temp@journal@text#1}% 255 | \journal@char@loop% 256 | } 257 | \def\journal@char@loop{% 258 | \futurelet\@jrnl@temp@char% 259 | \journal@char@loop@% 260 | } 261 | 262 | % Code for finding the length of a string: 263 | \newcounter{jabbrv@strlen@count} 264 | \def\jabbrv@strlen@stop{} 265 | \def\jabbrv@strlen#1{% 266 | \setcounter{jabbrv@strlen@count}{1}% 267 | \expandafter\jabbrv@strlen@ #1\jabbrv@strlen@stop% 268 | } 269 | \def\jabbrv@strlen@#1{% 270 | \@ifnextchar\jabbrv@strlen@stop% 271 | {}% 272 | {% 273 | \addtocounter{jabbrv@strlen@count}{1}% 274 | \expandafter\jabbrv@strlen@% 275 | }% 276 | } 277 | 278 | % The following ``for loop'' command is a convenience function for going over the word's characters 279 | \newcommand{\jabbrv@for@loop}[5][1]{% 280 | \setcounter{#2}{#3}% 281 | \ifnum#4\relax% 282 | #5% 283 | \addtocounter{#2}{#1}% 284 | \jabbrv@for@loop[#1]{#2}{\value{#2}}{#4}{#5}% 285 | \fi% 286 | } 287 | 288 | % Gobble a given number of characters off the end of a string 289 | \newcounter{jabbrv@gobble@temp} 290 | \def\jabbrv@gobble@stop{} 291 | \def\jabbrv@gobble@ending#1#2#3{% 292 | \setcounter{jabbrv@gobble@temp}{#3}% 293 | \addtocounter{jabbrv@gobble@temp}{-#2}% 294 | \temp@journal@text@{}% 295 | \expandafter\jabbrv@gobble@ending@ #1\jabbrv@gobble@stop% 296 | } 297 | \def\jabbrv@gobble@ending@#1{% 298 | \expandafter\ifnum\value{jabbrv@gobble@temp} > 0\relax% 299 | \temp@journal@text@\expandafter{\the\temp@journal@text@#1}% 300 | \fi% 301 | \@ifnextchar\jabbrv@gobble@stop% 302 | {}% 303 | {% 304 | \addtocounter{jabbrv@gobble@temp}{-1}% 305 | \expandafter\jabbrv@gobble@ending@% 306 | }% 307 | } 308 | 309 | % Find partial title word matches 310 | \newcounter{jabbrv@loop@i} 311 | \newcounter{jabbrv@loop@max} 312 | \def\journal@output@abbrv@partial{% 313 | \@partial@found@false% 314 | \jabbrv@strlen{\the\temp@journal@text}% 315 | \setcounter{jabbrv@loop@max}{\value{jabbrv@strlen@count}}% 316 | \jabbrv@for@loop{jabbrv@loop@i}{0}{\value{jabbrv@loop@i} < \value{jabbrv@loop@max}}{% 317 | \jabbrv@gobble@ending{\the\temp@journal@text}{\value{jabbrv@loop@i}}{\value{jabbrv@loop@max}}% 318 | \expandafter\ifx\csname journal@partial@abbrv@\the\temp@journal@text@\endcsname\relax% 319 | % No known partial abbreviation 320 | \else% 321 | \@partial@found@true% 322 | \csname journal@partial@abbrv@\the\temp@journal@text@\endcsname% 323 | \setcounter{jabbrv@loop@i}{\value{jabbrv@loop@max}}% 324 | \fi% 325 | }% 326 | } 327 | 328 | % Output single spaces even when there are multiple spaces together 329 | \def\journal@output@space{% 330 | \if@gobble@space@% 331 | \else% 332 | \space% 333 | \@gobble@space@true% 334 | \fi% 335 | } 336 | 337 | % Output the correct abbreviation for a title word 338 | \def\journal@output@abbrv{% 339 | \if@special@period@% 340 | \journal@abbrv@period% 341 | \else% 342 | \if@no@space@% 343 | .% There was a user-entered period with no space after it 344 | \else% 345 | \journal@output@space% 346 | \fi% 347 | \expandafter\ifx\csname journal@abbrv@\the\temp@journal@text\endcsname\relax% 348 | \journal@output@abbrv@partial% 349 | \if@partial@found@% 350 | % Partial match was output, do nothing. 351 | \else% 352 | % No known abbreviation 353 | \if@warn@noabbrv@% 354 | \@latex@warning{No abbreviation defined for `\the\temp@journal@text'}% 355 | \fi% 356 | \begingroup% 357 | \jabbrv@normal@diacritic% 358 | \the\temp@journal@text% 359 | \endgroup% 360 | \global\@end@period@false % reset the "need a period at the end" indicator 361 | \@gobble@space@false% 362 | \fi% 363 | \else% 364 | % Replace with abbreviation 365 | \expandafter\csname journal@abbrv@\the\temp@journal@text\endcsname% 366 | \fi% 367 | \fi% 368 | \@special@period@false% 369 | } 370 | 371 | % Loop through the \futurelet characters finding title words to replace 372 | \def\journal@char@loop@{% 373 | % The space character is the ``special token'' - use this character to find 374 | % title words to abbreviate 375 | \ifx \@sptoken\@jrnl@temp@char% 376 | \journal@output@abbrv% 377 | \temp@journal@text{}% 378 | \@no@space@false% 379 | \let\@tempa\@journal@space% 380 | \else% 381 | % Properly handle where the user has entered abbreviations themselves, 382 | % in that case we don't want to get a double-period at the end of the entry. 383 | \ifx .\@jrnl@temp@char% 384 | \journal@output@abbrv% 385 | \temp@journal@text{}% 386 | \@no@space@true% 387 | \@special@period@true% 388 | \let\@tempa\@journal@gobble% 389 | \else% 390 | % \journal@char@stop is specially defined so this routine knows 391 | % when the entire text has been read (where to stop) 392 | \ifx \journal@char@stop\@jrnl@temp@char% 393 | \journal@output@abbrv% 394 | \let\@tempa\@gobble% 395 | \else% 396 | % Measure all other characters and include them in the title word 397 | \@special@period@false% 398 | \let\@tempa\@journal@character% 399 | \fi% 400 | \fi% 401 | \fi% 402 | \@tempa% 403 | } 404 | 405 | % Eat a period at the end of the entry if the next character is also a period 406 | \def\@jrnl@eat@period#1{% 407 | \if@end@period@% 408 | \ifx.#1\else% 409 | \ifx\newblock#1% 410 | .\newblock% 411 | \else% 412 | \journal@abbrv@period@period% 413 | \fi% 414 | \fi% 415 | \fi% 416 | #1% 417 | } 418 | 419 | % Skip groups after the \JournalTitle command 420 | \def\@jrnl@eat@period@groupskip{% 421 | \@ifnextchar\egroup% 422 | {\@jrnl@eat@period@groupskip@}% 423 | {\@jrnl@eat@period}% 424 | } 425 | \def\@jrnl@eat@period@groupskip@{% 426 | \egroup \expandafter\@jrnl@eat@period\bgroup% 427 | } 428 | 429 | % Call \journal{<title>}, where <title> is the title for which 430 | % journal abbreviation replacements should be performed. 431 | \providecommand{\JournalTitle}[1]{% 432 | \@abbreviate@journal@true% 433 | \@end@period@false% 434 | \begingroup% 435 | \jabbrv@redefine@diacritic% 436 | \edef\journal@fulltitle{#1}% 437 | \ifcsname journal@exception@#1\endcsname% 438 | \csname journal@exception@#1\endcsname% 439 | \global\@abbreviate@journal@false% 440 | \fi% 441 | \endgroup% 442 | \if@abbreviate@journal@% 443 | \begingroup% 444 | \@gobble@space@true% 445 | \@special@period@false% 446 | \jabbrv@redefine@diacritic% 447 | \expandafter\journal@char@loop% 448 | #1% 449 | \journal@char@stop% 450 | \endgroup% 451 | \fi% 452 | % If the next character is not a period then add one in 453 | % if the last character would have been a period 454 | \@jrnl@eat@period@groupskip% 455 | } 456 | 457 | % Declare an option for disabling periods 458 | \DeclareVoidOption{noperiod}{\@show@period@false} 459 | 460 | % Declare an option for enabling undefined abbreviation warnings 461 | \DeclareVoidOption{warnundef}{\@warn@noabbrv@true} 462 | 463 | % Declare an option for the default abbreviation list 464 | \gdef\jabbrv@lang{en} 465 | \define@key{jabbrv}{lang}{\gdef\jabbrv@lang{#1}} 466 | 467 | % Process the option list and input the language definitions 468 | \ProcessKeyvalOptions{jabbrv} 469 | \InputIfFileExists{jabbrv-ltwa-all.ldf}{}{% 470 | \@latex@error{The master abbreviation language file `jabbrv-ltwa-all.ldf' was not found}{Make sure the file is in the appropriate folder and recompile.}% 471 | } 472 | \InputIfFileExists{jabbrv-ltwa-\jabbrv@lang.ldf}{}{% 473 | \@latex@error{Abbreviation language `jabbrv-ltwa-\jabbrv@lang.ldf' not found}{Select a valid language and recompile.}% 474 | } 475 | -------------------------------------------------------------------------------- /scipy-1.0/static/scipy_timeline.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scipy/scipy-articles/5498688844f80c965a8511241dee62c3033924e3/scipy-1.0/static/scipy_timeline.pdf -------------------------------------------------------------------------------- /scipy-1.0/static/wlscirep.cls: -------------------------------------------------------------------------------- 1 | % 2 | % An unofficial LaTeX class for Scientific Report articles. 3 | % 4 | % Copyright Overleaf (WriteLaTeX) 2016. 5 | % 6 | % Based on the SelfArx document class. 7 | % 8 | \NeedsTeXFormat{LaTeX2e} 9 | % \ProvidesClass{wlscirep}[18/03/2016, v1.1] 10 | % \ProvidesClass{wlscirep}[03/11/2016, v1.2] 11 | \ProvidesClass{wlscirep}[27/02/2017, v1.3] 12 | \RequirePackage[utf8]{inputenc} 13 | \RequirePackage[english]{babel} 14 | 15 | \RequirePackage{ifthen} 16 | \RequirePackage{calc} 17 | \AtEndOfClass{\RequirePackage{microtype}} 18 | \DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} 19 | \ProcessOptions* 20 | \LoadClass{article} 21 | \RequirePackage{times} % Loads the Times-Roman Fonts 22 | \RequirePackage{mathptmx} % Loads the Times-Roman Math Fonts 23 | \RequirePackage{ifpdf} 24 | 25 | \RequirePackage{amsmath,amsfonts,amssymb} 26 | \RequirePackage{graphicx,xcolor} 27 | \RequirePackage{booktabs} 28 | 29 | % Settings for the author block 30 | \RequirePackage{authblk} 31 | \setlength{\affilsep}{1.5em} 32 | \renewcommand\Authfont{\fontsize{12}{12}\usefont{OT1}{phv}{b}{n}} 33 | \renewcommand\Affilfont{\fontsize{10}{12}\usefont{OT1}{phv}{m}{n}} 34 | 35 | \RequirePackage[left=2cm,% 36 | right=2cm,% 37 | top=2.25cm,% 38 | bottom=2.25cm,% 39 | headheight=12pt,% 40 | letterpaper]{geometry}% 41 | 42 | \RequirePackage[labelfont={bf,sf},% 43 | labelsep=period,% 44 | justification=raggedright]{caption} 45 | 46 | \RequirePackage[colorlinks=true, allcolors=blue]{hyperref} 47 | 48 | % Set up of the bibliography style 49 | 50 | % \RequirePackage[numbers]{natbib} 51 | \RequirePackage[superscript,biblabel,nomove]{cite} 52 | %% Nov 3, 2016: Support DOI 53 | \bibliographystyle{naturemag-doi} 54 | 55 | % 56 | % headers and footers 57 | % 58 | \RequirePackage{fancyhdr} % custom headers/footers 59 | \RequirePackage{lastpage} % Number of pages in the document 60 | \pagestyle{fancy} % Enables the custom headers/footers 61 | % Headers 62 | \lhead{}% 63 | \chead{}% 64 | \rhead{}% 65 | % Footers 66 | \lfoot{}% 67 | \cfoot{}% 68 | \rfoot{\small\sffamily\bfseries\thepage/\pageref{LastPage}}% 69 | \renewcommand{\headrulewidth}{0pt}% % No header rule 70 | \renewcommand{\footrulewidth}{0pt}% % No footer rule 71 | 72 | % 73 | % section/subsection/paragraph set-up 74 | % 75 | \RequirePackage[explicit]{titlesec} 76 | \titleformat{\section} 77 | {\color{color1}\large\sffamily\bfseries} 78 | {\thesection} 79 | {0.5em} 80 | {#1} 81 | [] 82 | \titleformat{name=\section,numberless} 83 | {\color{color1}\large\sffamily\bfseries} 84 | {} 85 | {0em} 86 | {#1} 87 | [] 88 | \titleformat{\subsection} 89 | {\sffamily\bfseries} 90 | {\thesubsection} 91 | {0.5em} 92 | {#1} 93 | [] 94 | \titleformat{\subsubsection} 95 | {\sffamily\small\bfseries\itshape} 96 | {\thesubsubsection} 97 | {0.5em} 98 | {#1} 99 | [] 100 | \titleformat{\paragraph}[runin] 101 | {\sffamily\small\bfseries} 102 | {} 103 | {0em} 104 | {#1} 105 | \titlespacing*{\section}{0pc}{3ex \@plus4pt \@minus3pt}{5pt} 106 | \titlespacing*{\subsection}{0pc}{2.5ex \@plus3pt \@minus2pt}{0pt} 107 | \titlespacing*{\subsubsection}{0pc}{2ex \@plus2.5pt \@minus1.5pt}{0pt} 108 | \titlespacing*{\paragraph}{0pc}{1.5ex \@plus2pt \@minus1pt}{10pt} 109 | 110 | % 111 | % tableofcontents set-up 112 | % 113 | \usepackage{titletoc} 114 | \contentsmargin{0cm} 115 | \titlecontents{section}[\tocsep] 116 | {\addvspace{4pt}\small\bfseries\sffamily} 117 | {\contentslabel[\thecontentslabel]{\tocsep}} 118 | {} 119 | {\hfill\thecontentspage} 120 | [] 121 | \titlecontents{subsection}[\tocsep] 122 | {\addvspace{2pt}\small\sffamily} 123 | {\contentslabel[\thecontentslabel]{\tocsep}} 124 | {} 125 | {\ \titlerule*[.5pc]{.}\ \thecontentspage} 126 | [] 127 | \titlecontents*{subsubsection}[\tocsep] 128 | {\footnotesize\sffamily} 129 | {} 130 | {} 131 | {} 132 | [\ \textbullet\ ] 133 | 134 | \RequirePackage{enumitem} 135 | %\setlist{nolistsep} % Uncomment to remove spacing between items in lists (enumerate, itemize) 136 | 137 | % Remove brackets from numbering in List of References 138 | \renewcommand{\@biblabel}[1]{\bfseries\color{color1}#1.} 139 | 140 | % 141 | % article meta data 142 | % 143 | \newcommand{\keywords}[1]{\def\@keywords{#1}} 144 | 145 | \def\xabstract{abstract} 146 | \long\def\abstract#1\end#2{\def\two{#2}\ifx\two\xabstract 147 | \long\gdef\theabstract{\ignorespaces#1} 148 | \def\go{\end{abstract}}\else 149 | \typeout{^^J^^J PLEASE DO NOT USE ANY \string\begin\space \string\end^^J 150 | COMMANDS WITHIN ABSTRACT^^J^^J}#1\end{#2} 151 | \gdef\theabstract{\vskip12pt BADLY FORMED ABSTRACT: PLEASE DO 152 | NOT USE {\tt\string\begin...\string\end} COMMANDS WITHIN 153 | THE ABSTRACT\vskip12pt}\let\go\relax\fi 154 | \go} 155 | 156 | % 157 | % custom title page 158 | % 159 | \renewcommand{\@maketitle}{% 160 | {% 161 | \thispagestyle{empty}% 162 | \vskip-36pt% 163 | {\raggedright\sffamily\bfseries\fontsize{20}{25}\selectfont \@title\par}% 164 | \vskip10pt 165 | {\raggedright\sffamily\fontsize{12}{16}\selectfont \@author\par} 166 | \vskip18pt% 167 | {% 168 | \noindent 169 | {\parbox{\dimexpr\linewidth-2\fboxsep\relax}{\color{color1}\large\sffamily\textbf{ABSTRACT}}} 170 | }% 171 | \vskip10pt 172 | {% 173 | \noindent 174 | \colorbox{color2}{% 175 | \parbox{\dimexpr\linewidth-2\fboxsep\relax}{% 176 | \sffamily\small\textbf\\\theabstract 177 | }% 178 | }% 179 | % \vskip18pt% 180 | % \noindent 181 | % \parbox{\dimexpr\linewidth-2\fboxsep\relax}{% 182 | % {\color{color1}\keywordname\hspace*{1em}} \@keywords% 183 | %}% 184 | }% 185 | \vskip25pt% 186 | }% 187 | }% 188 | %----------------------------------------------- 189 | \setlength{\columnsep}{0.55cm} % Distance between the two columns of text 190 | \setlength{\fboxrule}{0.75pt} % Width of the border around the abstract 191 | 192 | \definecolor{color1}{RGB}{0,0,0} % Color of section headings 193 | \definecolor{color2}{gray}{1} % Color of the box behind the abstract 194 | \newcommand{\keywordname}{Keywords:} % Defines the keywords heading name 195 | 196 | \newlength{\tocsep} 197 | \setlength\tocsep{1.5pc} % Sets the indentation of the sections in the table of contents 198 | \setcounter{tocdepth}{3} % Show only three levels in the table of contents section: sections, subsections and subsubsections 199 | 200 | \usepackage{lipsum} % Required to insert dummy text 201 | %----------------------------------------------- 202 | \let\oldbibliography\thebibliography 203 | \renewcommand{\thebibliography}[1]{% 204 | \addcontentsline{toc}{section}{\hspace*{-\tocsep}\refname}% 205 | \oldbibliography{#1}% 206 | \setlength\itemsep{0pt}% 207 | } 208 | %% Automatically abbreviate journal names 209 | \RequirePackage{jabbrv} -------------------------------------------------------------------------------- /scipy-1.0/subpackages.tex: -------------------------------------------------------------------------------- 1 | The SciPy library is organized as a collection of subpackages. The 16 2 | subpackages include mathematical building blocks (e.g. linear algebra, Fourier 3 | transforms, special functions), data structures (e.g. sparse matrices, $k$-D trees), 4 | algorithms (e.g. numerical optimization and integration, clustering, interpolation, 5 | graph algorithms, computational geometry), and higher-level data analysis 6 | functionality (e.g. signal and image processing, statistical methods). 7 | 8 | Here we summarize the scope and capabilities of each subpackage. 9 | Additional information is available in the SciPy Tutorial\cite{SciPy_tutorials} and 10 | API Reference\cite{SciPy_API}. 11 | 12 | \begin{description}[leftmargin=!, labelwidth=\widthof{\bfseries \texttt{interpolate}}] 13 | \itemsep0em 14 | \item[\texttt{cluster}] 15 | The \texttt{cluster} subpackage contains \texttt{cluster.vq}, which provides vector quantization and $k$-means algorithms, and \texttt{cluster.hierarchy}, which provides functions for hierarchical and 16 | agglomerative clustering. 17 | \item[\texttt{constants}] 18 | Physical and mathematical constants, including the CODATA recommended 19 | values of the fundamental physical constants\cite{CODATA2014}. 20 | \item[\texttt{fftpack}] 21 | Fast Fourier Transform routines. In addition to the FFT itself, the subpackage 22 | includes functions for the discrete sine and cosine transforms and for 23 | pseudo-differential operators. 24 | \item[\texttt{integrate}] 25 | The \texttt{integrate} subpackage provides tools for the numerical 26 | computation of single and multiple definite integrals and for the 27 | solution of ordinary differential equations, including initial value 28 | problems and two-point boundary value problems. 29 | \item[\texttt{interpolate}] 30 | The \texttt{interpolate} subpackage contains spline functions and 31 | classes, one-dimensional and multi-dimensional (univariate and 32 | multivariate) interpolation classes, Lagrange and Taylor polynomial 33 | interpolators, and wrappers for FITPACK\cite{Dierckx:1993:CSF:151103} and DFITPACK functions. 34 | \item[\texttt{io}] 35 | A collection of functions and classes for reading and writing MATLAB\cite{matlab}, IDL, 36 | Matrix Market\cite{boisvert1997matrix}, Fortran, NetCDF\cite{rew1990netcdf}, 37 | Harwell-Boeing\cite{harwellboeing}, WAV and ARFF data files. 38 | \item[\texttt{linalg}] 39 | Linear algebra functions, including 40 | elementary functions of a matrix, such as the trace, determinant, norm and 41 | condition number; 42 | basic solver for $Ax = b$; 43 | specialized solvers for Toeplitz matrices, circulant matrices, triangular 44 | matrices and other structured matrices; least squares solver and 45 | pseudo-inverse calculations; eigenvalue and eigenvector calculations 46 | (basic and generalized); matrix decompositions, including Cholesky, Schur, 47 | Hessenberg, $LU$, $LDL^{\intercal}$, $QR$, $QZ$, singular value, and polar; 48 | and functions to create specialized matrices, such as diagonal, Toeplitz, 49 | Hankel, companion, Hilbert, and more. 50 | \item[\texttt{ndimage}] 51 | This subpackage contains various functions for multi-dimensional image 52 | processing, including convolution and assorted linear and nonlinear 53 | filters (Gaussian filter, median filter, Sobel filter, etc.); 54 | interpolation; region labeling and processing; and mathematical morphology 55 | functions. 56 | \item[\texttt{misc}] 57 | A collection of functions that did not fit into the other subpackages. 58 | While this subpackage still exists in SciPy 1.0, effort is underway 59 | to deprecate or relocate the contents of this subpackage and remove it. 60 | \item[\texttt{odr}] 61 | Orthogonal distance regression, including Python wrappers for the Fortran 62 | library ODRPACK\cite{ODRPACK_Boggs}. 63 | \item[\texttt{optimize}] 64 | This subpackage includes simplex and interior-point linear programming 65 | solvers, implementations of many nonlinear minimization algorithms, 66 | a routine for least-squares curve fitting, and 67 | a collection of general nonlinear solvers for root-finding. 68 | \item[\texttt{signal}] 69 | The \texttt{signal} subpackage focuses on signal processing and 70 | basic linear systems theory. Functionality includes 71 | convolution and correlation, splines, filtering and filter design, 72 | continuous and discrete time linear systems, waveform generation, 73 | window functions, wavelet computations, peak finding, and spectral 74 | analysis. 75 | \item[\texttt{sparse}] 76 | This subpackage includes implementations of several representations of 77 | sparse matrices.\newline % \texttt{scipy.sparse.linalg} extends past margin 78 | \texttt{scipy.sparse.linalg} provides a collection of linear algebra routines that work with 79 | sparse matrices, including linear equation solvers, eigenvalue decomposition, singular value 80 | decomposition and LU factorization. 81 | \texttt{scipy.sparse.csgraph} provides a collections of graph algorithms 82 | for which the graph is represented using a sparse matrix. Algorithms 83 | include connected components, shortest path, minimum spanning tree 84 | and more. 85 | \item[\texttt{spatial}] 86 | This subpackage provides spatial data structures and algorithms, 87 | including the $k$-d tree, Delaunay triangulation, convex hulls and Voronoi 88 | diagrams. \texttt{scipy.spatial.distance} provides 89 | a large collection of distance functions, along with functions for 90 | computing the distance between all pairs of vectors in a given collection 91 | of points or between all pairs from two collections of points. 92 | \item[\texttt{special}] 93 | The name comes from the class of functions traditionally known as ``special 94 | functions'', but over time, the subpackage has grown to include functions 95 | beyond the classical special functions. A more appropriate characterization 96 | of this subpackage is simply ``useful functions''. 97 | It includes a large collection of the classical special functions 98 | such as Airy, Bessel, etc.; families of orthogonal polynomials; 99 | the Gamma function, and functions related to it; 100 | functions for computing the PDF, CDF and quantile function for several 101 | probability distributions; 102 | information theory functions; 103 | combinatorial functions \texttt{comb} and \texttt{factorial}; 104 | and more. 105 | \item[\texttt{stats}] 106 | The \texttt{stats} subpackage provides a large collection of continuous 107 | and discrete probability distributions, each with methods to compute 108 | the PDF or PMF, CDF, moments and other statistics, generation of random 109 | variates, and more; 110 | statistical tests, including tests on equality of means/medians/variance 111 | (such as the t-test) and tests whether a sample is drawn from a 112 | certain distribution (such as the Kolmogorov-Smirnov test); 113 | measures of correlation, including Pearson's $r$, Kendall's $\tau$, and 114 | Spearman's $\rho$ coefficients; 115 | descriptive statistics including trimmed values; 116 | kernel density estimation; 117 | and transformations of data such as the Box-Cox power transformation. 118 | \end{description} 119 | -------------------------------------------------------------------------------- /scipy-1.0/supporting_info/asv_bench/cKDTree/asv.conf.json: -------------------------------------------------------------------------------- 1 | { 2 | // The version of the config file format. Do not change, unless 3 | // you know what you are doing. 4 | "version": 1, 5 | 6 | // The name of the project being benchmarked 7 | "project": "scipy", 8 | 9 | // The project's homepage 10 | "project_url": "https://scipy.org/scipylib/", 11 | 12 | // The URL of the source code repository for the project being 13 | // benchmarked 14 | "repo": "..", 15 | "dvcs": "git", 16 | "branches": ["master"], 17 | 18 | // The base URL to "how a commit for the project. 19 | "show_commit_url": "http://github.com/scipy/scipy/commit/", 20 | 21 | // The Pythons you'd like to test against. If not provided, defaults 22 | // to the current version of Python used to run `asv`. 23 | "pythons": ["2.7"], 24 | 25 | // The matrix of dependencies to test. Each key is the name of a 26 | // package (in PyPI) and the values are version numbers. An empty 27 | // list indicates to just test against the default (latest) 28 | // version. 29 | "conda_channels": ["conda-forge"], 30 | "matrix": { 31 | "numpy": ["1.8.2"], 32 | "lapack":[], 33 | "blas":[], 34 | "Tempita": [], 35 | "Cython": ["0.21.1"], 36 | "pytest": [], 37 | "six": [], 38 | }, 39 | 40 | // The directory (relative to the current directory) that benchmarks are 41 | // stored in. If not provided, defaults to "benchmarks" 42 | "benchmark_dir": "benchmarks", 43 | 44 | // The directory (relative to the current directory) to cache the Python 45 | // environments in. If not provided, defaults to "env" 46 | "env_dir": "env", 47 | 48 | "environment_type": "conda", 49 | "wheel_cache_size": 10, 50 | 51 | // The directory (relative to the current directory) that raw benchmark 52 | // results are stored in. If not provided, defaults to "results". 53 | "results_dir": "results", 54 | 55 | // The directory (relative to the current directory) that the html tree 56 | // should be written to. If not provided, defaults to "html". 57 | "html_dir": "html", 58 | 59 | // The number of characters to retain in the commit hashes. 60 | "hash_length": 8, 61 | 62 | // The commits after which the regression search in `asv publish` 63 | // should start looking for regressions. Dictionary whose keys are 64 | // regexps matching to benchmark names, and values corresponding to 65 | // the commit (exclusive) after which to start looking for 66 | // regressions. The default is to start from the first commit 67 | // with results. If the commit is `null`, regression detection is 68 | // skipped for the matching benchmark. 69 | 70 | "regressions_first_commits": { 71 | "io_matlab\\.StructArr\\..*": "67c089a6", // structarrs weren't properly implemented before this 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /scipy-1.0/supporting_info/asv_bench/cKDTree/asv.conf.json.cython018: -------------------------------------------------------------------------------- 1 | { 2 | // The version of the config file format. Do not change, unless 3 | // you know what you are doing. 4 | "version": 1, 5 | 6 | // The name of the project being benchmarked 7 | "project": "scipy", 8 | 9 | // The project's homepage 10 | "project_url": "https://scipy.org/scipylib/", 11 | 12 | // The URL of the source code repository for the project being 13 | // benchmarked 14 | "repo": "..", 15 | "dvcs": "git", 16 | "branches": ["bench_018"], 17 | 18 | // The base URL to "how a commit for the project. 19 | "show_commit_url": "http://github.com/scipy/scipy/commit/", 20 | 21 | // The Pythons you'd like to test against. If not provided, defaults 22 | // to the current version of Python used to run `asv`. 23 | "pythons": ["2.7"], 24 | 25 | // The matrix of dependencies to test. Each key is the name of a 26 | // package (in PyPI) and the values are version numbers. An empty 27 | // list indicates to just test against the default (latest) 28 | // version. 29 | "conda_channels": ["conda-forge"], 30 | "matrix": { 31 | "numpy": ["1.8.2"], 32 | "Tempita": [], 33 | "Cython": ["0.18"], 34 | "pytest": [], 35 | "six": [], 36 | }, 37 | 38 | // The directory (relative to the current directory) that benchmarks are 39 | // stored in. If not provided, defaults to "benchmarks" 40 | "benchmark_dir": "benchmarks", 41 | 42 | // The directory (relative to the current directory) to cache the Python 43 | // environments in. If not provided, defaults to "env" 44 | "env_dir": "env", 45 | 46 | "environment_type": "virtualenv", 47 | "wheel_cache_size": 10, 48 | 49 | // The directory (relative to the current directory) that raw benchmark 50 | // results are stored in. If not provided, defaults to "results". 51 | "results_dir": "results", 52 | 53 | // The directory (relative to the current directory) that the html tree 54 | // should be written to. If not provided, defaults to "html". 55 | "html_dir": "html", 56 | 57 | // The number of characters to retain in the commit hashes. 58 | "hash_length": 8, 59 | 60 | // The commits after which the regression search in `asv publish` 61 | // should start looking for regressions. Dictionary whose keys are 62 | // regexps matching to benchmark names, and values corresponding to 63 | // the commit (exclusive) after which to start looking for 64 | // regressions. The default is to start from the first commit 65 | // with results. If the commit is `null`, regression detection is 66 | // skipped for the matching benchmark. 67 | 68 | "regressions_first_commits": { 69 | "io_matlab\\.StructArr\\..*": "67c089a6", // structarrs weren't properly implemented before this 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /scipy-1.0/supporting_info/asv_bench/cKDTree/asv.conf.json.cython0273: -------------------------------------------------------------------------------- 1 | { 2 | // The version of the config file format. Do not change, unless 3 | // you know what you are doing. 4 | "version": 1, 5 | 6 | // The name of the project being benchmarked 7 | "project": "scipy", 8 | 9 | // The project's homepage 10 | "project_url": "https://scipy.org/scipylib/", 11 | 12 | // The URL of the source code repository for the project being 13 | // benchmarked 14 | "repo": "..", 15 | "dvcs": "git", 16 | "branches": ["bench_0273"], 17 | 18 | // The base URL to "how a commit for the project. 19 | "show_commit_url": "http://github.com/scipy/scipy/commit/", 20 | 21 | // The Pythons you'd like to test against. If not provided, defaults 22 | // to the current version of Python used to run `asv`. 23 | "pythons": ["2.7"], 24 | 25 | // The matrix of dependencies to test. Each key is the name of a 26 | // package (in PyPI) and the values are version numbers. An empty 27 | // list indicates to just test against the default (latest) 28 | // version. 29 | "conda_channels": ["conda-forge"], 30 | "matrix": { 31 | "numpy": ["1.8.2"], 32 | "Tempita": [], 33 | "Cython": ["0.27.3"], 34 | "pytest": [], 35 | "six": [], 36 | }, 37 | 38 | // The directory (relative to the current directory) that benchmarks are 39 | // stored in. If not provided, defaults to "benchmarks" 40 | "benchmark_dir": "benchmarks", 41 | 42 | // The directory (relative to the current directory) to cache the Python 43 | // environments in. If not provided, defaults to "env" 44 | "env_dir": "env", 45 | 46 | "environment_type": "virtualenv", 47 | "wheel_cache_size": 10, 48 | 49 | // The directory (relative to the current directory) that raw benchmark 50 | // results are stored in. If not provided, defaults to "results". 51 | "results_dir": "results", 52 | 53 | // The directory (relative to the current directory) that the html tree 54 | // should be written to. If not provided, defaults to "html". 55 | "html_dir": "html", 56 | 57 | // The number of characters to retain in the commit hashes. 58 | "hash_length": 8, 59 | 60 | // The commits after which the regression search in `asv publish` 61 | // should start looking for regressions. Dictionary whose keys are 62 | // regexps matching to benchmark names, and values corresponding to 63 | // the commit (exclusive) after which to start looking for 64 | // regressions. The default is to start from the first commit 65 | // with results. If the commit is `null`, regression detection is 66 | // skipped for the matching benchmark. 67 | 68 | "regressions_first_commits": { 69 | "io_matlab\\.StructArr\\..*": "67c089a6", // structarrs weren't properly implemented before this 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /scipy-1.0/supporting_info/asv_bench/cKDTree/benchmark_patch_diff.txt: -------------------------------------------------------------------------------- 1 | diff --git a/benchmarks/benchmarks/spatial.py b/benchmarks/benchmarks/spatial.py 2 | index e7b129ac7..e34117eb0 100644 3 | --- a/benchmarks/benchmarks/spatial.py 4 | +++ b/benchmarks/benchmarks/spatial.py 5 | @@ -61,7 +61,7 @@ class Query(Benchmark): 6 | self.data = np.random.uniform(size=(n, m)) 7 | self.queries = np.random.uniform(size=(r, m)) 8 | 9 | - self.T = cKDTree(self.data, leafsize=leafsize, boxsize=boxsize) 10 | + self.T = cKDTree(self.data, leafsize=leafsize) 11 | 12 | def setup(self, mnr, p, boxsize, leafsize): 13 | Query.do_setup(self, mnr, p, boxsize, leafsize) 14 | -------------------------------------------------------------------------------- /scipy-1.0/supporting_info/asv_bench/cKDTree/ckdtree_asv_supporting.tar.xz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scipy/scipy-articles/5498688844f80c965a8511241dee62c3033924e3/scipy-1.0/supporting_info/asv_bench/cKDTree/ckdtree_asv_supporting.tar.xz -------------------------------------------------------------------------------- /scipy-1.0/supporting_info/asv_bench/sparse/sparse_coo_dia_to_csr_csc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scipy/scipy-articles/5498688844f80c965a8511241dee62c3033924e3/scipy-1.0/supporting_info/asv_bench/sparse/sparse_coo_dia_to_csr_csc.png -------------------------------------------------------------------------------- /scipy-1.0/supporting_info/asv_bench/sparse/sparse_iteration_bench.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scipy/scipy-articles/5498688844f80c965a8511241dee62c3033924e3/scipy-1.0/supporting_info/asv_bench/sparse/sparse_iteration_bench.png -------------------------------------------------------------------------------- /scipy-1.0/supporting_info/knn_complexity_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scipy/scipy-articles/5498688844f80c965a8511241dee62c3033924e3/scipy-1.0/supporting_info/knn_complexity_confirm.png -------------------------------------------------------------------------------- /scipy-1.0/supporting_info/scipy_historical_coverage.txt: -------------------------------------------------------------------------------- 1 | # SciPy 1.0.0 coverage assessment 2 | # command used: docker run -it --env-file env-scipy-1.0.0 scipy-cov 3 | # Python line coverage total: 87% 4 | # Compiled language line coverage total: 45 % 5 | 6 | # SciPy 0.19.1 coverage assessment 7 | # command used: docker run -it --env-file env_files/env-scipy-0.19.1 scipy-cov 8 | # Python line coverage total: 83% 9 | # Compiled language line coverage total: 46 % 10 | 11 | # SciPy 0.18.1 coverage assessment 12 | # command used: docker run -it --env-file env_files/env-scipy-0.18.1 scipy-cov 13 | # SciPy 0.18.1 full test suite requires exclusion 14 | # of test_gzip_py3(); see: https://github.com/scipy/scipy/issues/2152 15 | # Python line coverage total: 81% 16 | # Compiled language line coverage total: 49 % 17 | 18 | # SciPy 0.17.1 coverage assessment 19 | # command used: docker run -it --env-file env_files/env-scipy-0.17.1 scipy-cov 20 | # Python line coverage total: 81% 21 | # Compiled language line coverage total: 50 % 22 | 23 | # SciPy 0.16.1 coverage assessment 24 | # command used: docker run -it --env-file env_files/env-scipy-0.16.1 scipy-cov 25 | # required exclusion of test_gzip_py3() again & a symlink outlined 26 | # in the Dockerfile 27 | # Python line coverage total: 80% 28 | # Compiled language line coverage total: 52 % 29 | 30 | # SciPy 0.15.1 coverage assessment 31 | # command used: docker run -it --env-file env_files/env-scipy-0.15.1 scipy-cov 32 | # required exclusion of test_gzip_py3() again & a symlink outlined 33 | # in the Dockerfile 34 | # required scale back to NumPy 1.12 35 | # Python line coverage total: 79% 36 | # Compiled language line coverage total: 52 % 37 | 38 | # SciPy 0.14.1 coverage assessment 39 | # similar constraints / workflow as 0.15.1 above 40 | # command used: docker run -it --env-file env_files/env-scipy-0.14.1 scipy-cov 41 | # Python line coverage total: 82% 42 | # Compiled language line coverage total: 53 % 43 | 44 | # SciPy 0.13.3 coverage assessment 45 | # required checkout of runtests.py from v0.14.1 to support gcov argument 46 | # had to dial Cython back to 0.21 & NumPy to 1.7.0 47 | # command used: docker run -it --env-file env_files/env-scipy-0.13.3 scipy-cov 48 | # Python line coverage total: 79 % 49 | # Compiled language line coverage total: 51 % 50 | 51 | # SciPy 0.12.1 coverage assessment 52 | # similar control flow to 0.13.3 above 53 | # command used: docker run -it --env-file env_files/env-scipy-0.12.1 scipy-cov 54 | # Python line coverage total: 76 % 55 | # Compiled language line coverage total: 52 % 56 | 57 | # in addition to detailed notes above, a summary data 58 | # table that can be parsed with NumPy / matplotlib 59 | # is helpful below 60 | 61 | # SciPy commit hash | Python line % | Compiled line % 62 | v1.0.0 87 45 63 | v0.19.1 83 46 64 | v0.18.1 81 49 65 | v0.17.1 81 50 66 | v0.16.1 80 52 67 | v0.15.1 79 52 68 | v0.14.1 82 53 69 | v0.13.3 79 51 70 | v0.12.1 76 52 71 | -------------------------------------------------------------------------------- /scipy-1.0/supporting_info/total_lines.txt: -------------------------------------------------------------------------------- 1 | # values extracted from Python coverage packages & 2 | # gcov via gcovr 3 | # SciPy commit hash | Python total lines | Compiled total lines 4 | v1.0.0 106878 462574 5 | v0.19.1 43823 436900 6 | v0.18.1 44711 353417 7 | v0.17.1 42566 340903 8 | v0.16.1 40094 322398 9 | v0.15.1 38339 304898 10 | v0.14.1 37301 277643 11 | v0.13.3 36638 338926 12 | v0.12.1 33844 273634 13 | --------------------------------------------------------------------------------