SciPy là một thư viện máy tính khoa học mã nguồn mở dành cho ngôn ngữ lập trình Python. Kể từ lần phát hành đầu tiên vào năm 2001, SciPy đã trở thành một tiêu chuẩn thực tế để tận dụng các thuật toán khoa học trong Python, với hơn 600 người đóng góp mã duy nhất, hàng nghìn gói phụ thuộc, hơn 100.000 kho lưu trữ phụ thuộc và hàng triệu lượt tải xuống mỗi năm. Trong công việc này, chúng tôi cung cấp tổng quan về các khả năng và thực tiễn phát triển của SciPy 1. 0 và nêu bật một số phát triển kỹ thuật gần đây
SciPy là một thư viện gồm các quy trình số cho ngôn ngữ lập trình Python cung cấp các khối xây dựng cơ bản để mô hình hóa và giải quyết các vấn đề khoa học. SciPy bao gồm các thuật toán để tối ưu hóa, tích hợp, nội suy, bài toán giá trị riêng, phương trình đại số, phương trình vi phân và nhiều loại bài toán khác; . SciPy được xây dựng trên NumPy1,2, cung cấp cấu trúc dữ liệu mảng và các quy trình số nhanh có liên quan, và chính SciPy là nền tảng để xây dựng các thư viện khoa học cấp cao hơn, bao gồm scikit-learn3 và scikit-image4. Các nhà khoa học, kỹ sư và những người khác trên khắp thế giới dựa vào SciPy. Ví dụ: các tập lệnh đã xuất bản5,6 được sử dụng trong phân tích sóng hấp dẫn7,8 nhập một số gói con của SciPy và dự án chụp ảnh lỗ đen M87 trích dẫn SciPy9 Gần đây, SciPy đã phát hành phiên bản 1. 0, một cột mốc theo truyền thống báo hiệu API của thư viện [giao diện lập trình ứng dụng] đủ trưởng thành để được tin cậy trong các quy trình sản xuất. Tuy nhiên, quy ước đánh số phiên bản này phủ nhận lịch sử của một dự án đã trở thành tiêu chuẩn mà những người khác tuân theo và đã được áp dụng rộng rãi trong nghiên cứu và công nghiệp Sự xuất hiện của SciPy vào thời điểm này thật đáng ngạc nhiên và hơi bất thường. Khi bắt đầu hoạt động vào năm 2001, thư viện có rất ít kinh phí và chủ yếu được viết bởi các sinh viên đã tốt nghiệp—nhiều người trong số họ không được đào tạo về khoa học máy tính và thường không có sự hỗ trợ của các cố vấn. Thậm chí tưởng tượng rằng một nhóm nhỏ các lập trình viên sinh viên 'bất hảo' có thể nâng đỡ hệ sinh thái phần mềm nghiên cứu đã được thiết lập tốt—được hỗ trợ bởi hàng triệu đô la tài trợ và hàng trăm kỹ sư có trình độ cao10,11,12—là điều vô lý Tuy nhiên, các động lực triết học đằng sau một ngăn xếp công cụ hoàn toàn mở, kết hợp với một cộng đồng thân thiện, hào hứng với một trọng tâm duy nhất, đã được chứng minh là tốt lành trong thời gian dài. Chúng không chỉ dẫn đến thư viện được mô tả trong bài viết này mà còn dẫn đến toàn bộ hệ sinh thái các gói liên quan [https. //wiki. con trăn. org/moin/NumericAndScientific] và nhiều hoạt động xã hội xoay quanh họ [https. //wiki. con trăn. org/moin/PythonConferences]. Các gói trong hệ sinh thái SciPy chia sẻ các tiêu chuẩn cao về triển khai, tài liệu và thử nghiệm, và một nền văn hóa háo hức học hỏi và áp dụng các phương pháp thực hành tốt hơn—cả về quản lý cộng đồng và phát triển phần mềm Ở đây chúng tôi ghi lại lịch sử có chọn lọc của một số cột mốc và sự kiện quan trọng trong quá trình phát triển của SciPy. Bất chấp những gì chúng tôi nhấn mạnh ở đây, điều quan trọng là phải hiểu rằng một dự án như SciPy chỉ có thể thực hiện được nhờ có sự đóng góp của rất nhiều người đóng góp—quá nhiều người để đề cập riêng lẻ, nhưng mỗi người đóng góp một phần quan trọng cho câu đố Python là ngôn ngữ lập trình máy tính đa năng, cấp cao, được thông dịch, được thiết kế bởi Guido van Rossum vào cuối những năm 1980, với hệ thống kiểu động và nhấn mạnh vào khả năng đọc và tạo mẫu nhanh13 [https. //github. com/trăn/cpython]. Là một ngôn ngữ lập trình có mục đích chung, nó không có hỗ trợ đặc biệt cho các cấu trúc dữ liệu hoặc thuật toán khoa học, không giống như nhiều nền tảng tính toán đã được thiết lập khác vào thời điểm đó. Tuy nhiên, các nhà khoa học đã sớm phát hiện ra những ưu điểm của ngôn ngữ này, chẳng hạn như khả năng bao bọc các thư viện C và Fortran, sau đó điều khiển các thư viện đó một cách tương tác. Do đó, các nhà khoa học có thể có quyền truy cập vào nhiều thư viện tính toán hiện có mà không cần quan tâm đến các khái niệm lập trình cấp thấp như quản lý bộ nhớ Năm 1995, Jim Hugunin, một sinh viên tốt nghiệp tại Học viện Công nghệ Massachusetts, đã viết thông điệp đầu tiên trong danh sách gửi thư mới của Python Matrix Special Interest Group [Matrix-SIG]14 “Dường như có một lượng lớn sự quan tâm trong cộng đồng Python liên quan đến việc bổ sung các phép toán số vào Python. Mong muốn của riêng tôi là có sẵn một thư viện hàm dựa trên ma trận càng lớn càng tốt [đại số tuyến tính, hàm riêng, xử lý tín hiệu, thống kê, v.v. ]. Để đảm bảo rằng tất cả các thư viện này tương tác với nhau, cần có sự thống nhất về một đối tượng ma trận cơ bản có thể được sử dụng để biểu diễn các mảng số. ” Trong vài tháng tới, các cuộc trò chuyện trong danh sách gửi thư đó bởi Jim Fulton, Jim Hugunin, Paul Dubois, Konrad Hinsen và Guido van Rossum đã dẫn đến việc tạo ra một gói có tên Numeric với một đối tượng mảng hỗ trợ nhiều . Jim Hugunin giải thích tiện ích của Python để tính toán số15 “Tôi đã sử dụng gần như tất cả các ngôn ngữ số có sẵn lúc này hay lúc khác trong 8 năm qua. Một điều tôi nhận thấy là theo thời gian, các nhà thiết kế của những ngôn ngữ này đang dần bổ sung thêm nhiều tính năng mà người ta mong đợi tìm thấy trong một ngôn ngữ lập trình có mục đích chung. ” Đây vẫn là một tính năng phân biệt của Python đối với khoa học và là một trong những lý do tại sao nó lại thành công như vậy trong lĩnh vực khoa học dữ liệu. thay vì thêm các tính năng chung vào ngôn ngữ được thiết kế cho tính toán số và khoa học, ở đây các tính năng khoa học được thêm vào ngôn ngữ có mục đích chung. Điều này mở rộng phạm vi của các vấn đề có thể được giải quyết dễ dàng, mở rộng các nguồn dữ liệu có thể truy cập dễ dàng và tăng quy mô của cộng đồng phát triển mã cho nền tảng Đến cuối những năm 1990, các cuộc thảo luận xuất hiện trên Matrix-SIG thể hiện mong muốn có một môi trường phân tích dữ liệu khoa học hoàn chỉnh16. Travis Oliphant, một nghiên cứu sinh tiến sĩ tại Mayo Clinic, đã phát hành một số gói17,18 được xây dựng dựa trên gói mảng Numeric và cung cấp các thuật toán để xử lý tín hiệu, các hàm đặc biệt, ma trận thưa thớt, cầu phương, tối ưu hóa, biến đổi Fourier nhanh, v.v. Một trong những gói này, Multipack [http. // pylab. nguồn. mạng/nhiều gói. html], là một tập hợp các mô-đun mở rộng bao bọc các thư viện Fortran và C để giải các phương trình phi tuyến tính và các bài toán bình phương nhỏ nhất, tích hợp các phương trình vi phân và khớp splines. Robert Kern, khi đó là sinh viên đại học [và hiện là nhà phát triển cốt lõi của SciPy], đã cung cấp hướng dẫn biên dịch trong Windows. Cũng trong khoảng thời gian đó, Pearu Peterson, một nghiên cứu sinh tiến sĩ từ Estonia, đã phát hành F2PY19, một công cụ dòng lệnh để liên kết mã Python và Fortran, đồng thời viết các mô-đun cho đại số tuyến tính và phép nội suy. Eric Jones, khi còn là sinh viên tốt nghiệp tại Đại học Duke, đã viết các gói để hỗ trợ luận án của mình, bao gồm một công cụ lập lịch trình công việc song song và trình tối ưu hóa di truyền. Gary Strangman, một nghiên cứu sinh sau tiến sĩ tại Trường Y Harvard, đã xuất bản một số thói quen thống kê mô tả và suy luận20 Với một môi trường lập trình phong phú và một đối tượng mảng số đã sẵn sàng, thời điểm đã chín muồi để phát triển một ngăn xếp phần mềm khoa học đầy đủ. Năm 2001, Eric Jones và Travis Vaught thành lập Enthought Scientific Computing Solutions [nay là Enthought, Inc. ] ở Austin, Texas, Mỹ. Để đơn giản hóa ngăn xếp công cụ, họ đã tạo dự án SciPy, xoay quanh thư viện SciPy, dự án này sẽ gộp tất cả các gói nêu trên. Dự án mới nhanh chóng đạt được động lực, với một trang web và kho lưu trữ mã21 xuất hiện vào tháng 2 và một danh sách gửi thư được công bố22 vào tháng 6 năm 2001. Đến tháng 8 năm 2001, một bản phát hành đầu tiên đã được công bố23, một đoạn trích được trình bày trong Hộp 1. Vào tháng 9, tài liệu đầu tiên được xuất bản24. Hội thảo SciPy đầu tiên25 được tổ chức vào tháng 9 năm 2002 tại Caltech—một sự kiện duy nhất kéo dài hai ngày với 50 người tham gia, nhiều người trong số họ là nhà phát triển của SciPy và các thư viện xung quanh Tại thời điểm này, Python khoa học bắt đầu thu hút sự chú ý nghiêm túc hơn; . Ví dụ, Paul Dubois tại Phòng thí nghiệm Quốc gia Lawrence Livermore [LLNL] đã đảm nhận việc bảo trì Numeric và tài trợ cho việc viết hướng dẫn sử dụng26 của nó, và Viện Khoa học Kính viễn vọng Không gian [STScI], cơ quan phụ trách các hoạt động khoa học của Kính viễn vọng Không gian Hubble, đã quyết định . Khi STScI tiếp tục sử dụng Python cho một phần ngày càng lớn của quy trình phân tích dữ liệu của Kính viễn vọng Không gian Hubble, họ đã gặp sự cố với bộ chứa mảng số Python. Numeric, gói mảng ban đầu, phù hợp với các mảng nhỏ, nhưng không phù hợp với các hình ảnh lớn được xử lý bởi STScI. Với sự ủng hộ của người bảo trì Numeric, quyết định đã được đưa ra để viết NumArray28, một thư viện có thể xử lý dữ liệu ở quy mô lớn hơn. Thật không may, NumArray tỏ ra không hiệu quả đối với các mảng nhỏ, mang đến cho cộng đồng một lựa chọn khá đáng tiếc. Năm 2005, Travis Oliphant đã kết hợp những yếu tố tốt nhất của Numeric và NumArray, nhờ đó giải quyết được vấn đề nan giải. NumPy 1. 0 được phát hành29 vào tháng 10 năm 2006, mở đường cho cộng đồng Python khoa học thống nhất trưởng thành Vào giữa đến cuối những năm 2000, SciPy bắt đầu trưởng thành sau một giai đoạn dài tăng trưởng và áp dụng đáng kể. Phạm vi của thư viện SciPy bị thu hẹp, trong khi bề rộng của hệ sinh thái phát triển thông qua một loại gói phụ trợ mới. các scikit [https. //www. scipy. org/scikits. html], một thư viện bổ sung được phát triển bên ngoài SciPy, cho phép khám phá nhanh hơn các ý tưởng thử nghiệm trong khi vẫn duy trì phương pháp phát triển và phong cách quen thuộc. In SciPy itself, tooling, development, documentation and release processes became more professional. The library was expanded carefully, with the patience affordable in open-source projects and via best practices, which are increasingly common in the scientific Python ecosystem and industry30 Các phiên bản đầu tiên của SciPy có tài liệu tối thiểu, nhưng điều này bắt đầu thay đổi với bản phát hành năm 2006 của Hướng dẫn về NumPy1. Vào năm 2007, Sphinx31 đã có thể tự động kết xuất các tài liệu siêu văn bản và PDF từ văn bản thuần túy [các chuỗi tài liệu] xen kẽ với mã Python và vào năm 2008, pydocweb 32 đã được kích hoạt . Dự án Tài liệu SciPy33,34 đã sử dụng các công cụ này để hoàn thành tài liệu về chức năng hướng tới người dùng của SciPy. cung cấp áo phông cho những người đóng góp từ khắp nơi trên thế giới để đổi lấy văn bản chất lượng cao, nó đã thu thập sự đóng góp từ hơn 75 người để tạo ra một cuốn sách hướng dẫn dài 884 trang35. Kể từ đó, SciPy vẫn cam kết duy trì tài liệu chất lượng cao như một phần của chu trình phát triển thông thường. In the early SciPy workshops, recurrent topics reflected the state of development, with emphasis being placed on the underlying array package, plotting, parallel processing, acceleration/wrapping and user interfaces. Đến năm 2004, các bài thuyết trình về ứng dụng của SciPy cho các vấn đề khoa học bắt đầu xuất hiện. The event also started to draw in more keynote speakers from outside the community, such as Guido van Rossum [creator of Python, 2006], Ivan Krstić [One Laptop per Child, 2007], Alex Martelli [Google, 2008] and Peter Norvig [Google Research, 2009]. Hội thảo không chính thức đã phát triển từ một nhóm nhỏ các nhà phát triển cốt lõi thành một hội nghị quốc tế với hàng trăm người tham dự, tăng kinh phí, một kỷ yếu được xuất bản và học bổng cho sinh viên tham dự. Đến năm 2010, hội nghị SciPy của Hoa Kỳ đã có nhiều tuyến đường và các hội nghị vệ tinh đã được tổ chức bởi các tình nguyện viên ở những nơi khác, chẳng hạn như EuroSciPy [từ năm 2008] và SciPy Ấn Độ [từ năm 2009]. Special sessions and minisymposia dedicated to scientific Python began appearing at many other events. For example, a three-part minisymposium organized for International Conferences on Computational Science and Engineering [CSE] 2009 was featured in SIAM News36 Năm 2007, Python đã có một sự hiện diện mạnh mẽ trong khoa học và kỹ thuật đến mức các biên tập viên của IEEE Computing in Science and Engineering đã mời một số đặc biệt về Python trong khoa học37, do Paul Dubois biên tập. Tuy nhiên, Python vẫn đủ thích hợp để người đọc bình thường sẽ cần thêm thông tin để quyết định xem nó có hữu ích trong công việc của họ hay không. The follow-up March/April 2011 Python for Scientists and Engineers special issue38 focused more on the core parts of the scientific Python ecosystem39 including NumPy2, Cython40 and Mayavi41. Python trở nên phổ biến đến mức các tạp chí bắt đầu xuất bản các số báo đặc biệt dành riêng cho từng miền. Ví dụ: vào năm 2015, Frontiers in Neuroinformatics đã xuất bản một tuyển tập gồm 25 bài báo—bao gồm các chủ đề bao gồm mô hình hóa và mô phỏng, thu thập dữ liệu, điện sinh lý, trực quan hóa cũng như tạo và trình bày kích thích—được gọi là Python trong Khoa học thần kinh42 Tính đến tháng 2 năm 2019, thư viện SciPy bao gồm gần 600.000 dòng mã nguồn mở được tổ chức thành 16 gói con được tóm tắt trong Hộp 2. Nhóm phát triển và cộng đồng hiện tương tác và hoạt động chủ yếu trên GitHub, một nền tảng quản lý tác vụ và kiểm soát phiên bản trực tuyến. Over 110,000 GitHub repositories and 6,500 packages depend on SciPy43. Some of the major feature highlights from the three years preceding SciPy 1. 0 are discussed in the “Key technical improvements” section below, and milestones in its history are highlighted in Fig. 1 Quả sung. 1. Major milestones from SciPy’s initial release in 2001 to the release of SciPy 1. 0 in 2017Chính
Tiểu sử
khoa học viễn tưởng bắt đầu
SciPy đáo hạn
SciPy today
Note that SciKits and GitHub have been introduced in the Background section; more information about Cython and SciPy subpackages [for example, scipy. sparse ] is available in the ‘Architecture and implementation choices’ section, BLAS/LAPACK support is detailed in the ‘Key technical improvements’ section, and continuous integration is discussed in the ‘Test and benchmark suite’ section.
Hình ảnh kích thước đầy đủ
Hộp 1 Đoạn trích từ SciPy 0. 1 thông báo phát hành [đã sửa lỗi chính tả], đăng ngày 20 tháng 8 năm 2001 trên danh sách gửi thư Python-list
SciPy là một gói mã nguồn mở dựa trên các điểm mạnh của Python và Numeric, cung cấp nhiều chức năng khoa học và số nhanh chóng. Bộ mô-đun hiện tại của SciPy bao gồm những thứ sau
Các chức năng đặc biệt [Bessel, Hankel, Airy và các chức năng khác]
Xử lý tín hiệu/hình ảnh
Khả năng vẽ đồ thị 2D
Hội nhập
bộ giải ODE
Tối ưu hóa [đơn giản, BFGS, Newton-CG và những người khác]
giải thuật di truyền
Trình biên dịch biểu thức số sang C++
Công cụ lập trình song song
Splines và phép nội suy
Các mặt hàng khác
Hộp 2 Tổ chức trọn gói
Thư viện SciPy được tổ chức dưới dạng một tập hợp các gói con. 16 gói con bao gồm các khối xây dựng toán học [ví dụ: đại số tuyến tính, biến đổi Fourier, hàm đặc biệt], cấu trúc dữ liệu [ví dụ: ma trận thưa thớt, cây k-D], thuật toán [ví dụ: tối ưu hóa và tích hợp số, phân cụm, nội suy, thuật toán đồ thị
Ở đây chúng tôi tóm tắt phạm vi và khả năng của từng gói con. Thông tin bổ sung có sẵn trong hướng dẫn SciPy [https. // tài liệu. scipy. org/doc/scipy/reference/tutorial/] và tham chiếu API [https. // tài liệu. scipy. org/doc/scipy/tham chiếu/chỉ mục. html#api-tham chiếu]
cụm
Gói con cụm chứa cụm. vq , cung cấp thuật toán lượng tử hóa véc-tơ và k-mean, và cụm . cấu trúc phân cấp , cung cấp các chức năng cho phân cụm theo thứ bậc và tổng hợp.
hằng số
Các hằng số vật lý và toán học, bao gồm các giá trị CODATA khuyến nghị của các hằng số vật lý cơ bản119
fftpack
Công thức biến đổi Fourier nhanh. Ngoài bản thân FFT, gói con bao gồm các hàm cho các phép biến đổi sin và cos rời rạc và cho các toán tử giả vi phân
tích hợp
Gói con tích phân cung cấp các công cụ để tính toán bằng số các tích phân xác định đơn và bội và giải phương trình vi phân thông thường, bao gồm cả giá trị ban đầu .
nội suy
Gói con nội suy chứa các hàm và lớp spline, các lớp nội suy một chiều và nhiều chiều [đơn biến và đa biến], Lagrange và Taylor .
io
Tập hợp các hàm và lớp để đọc và viết Matlab [https. //www. toán học. com/products/matlab. html], các tệp dữ liệu IDL, Matrix Market120, Fortran, NetCDF121, Harwell-Boeing122, WAV và ARFF
linalg
Các hàm đại số tuyến tính, bao gồm các hàm cơ bản của ma trận, chẳng hạn như số vết, định thức, chỉ tiêu và số điều kiện;
hình ảnh
Gói con này chứa các chức năng khác nhau để xử lý hình ảnh đa chiều, bao gồm tích chập và các bộ lọc tuyến tính và phi tuyến [bộ lọc Gaussian, bộ lọc trung vị, bộ lọc Sobel và các bộ lọc khác];
linh tinh
Một tập hợp các chức năng không phù hợp với các gói con khác. Mặc dù gói phụ này vẫn tồn tại trong SciPy 1. 0, một nỗ lực đang được tiến hành để loại bỏ hoặc di chuyển nội dung của gói con này và xóa nó
lẻ
Hồi quy khoảng cách trực giao, bao gồm trình bao bọc Python cho thư viện Fortran ODRPACK54
tối ưu hóa
Gói con này bao gồm các bộ giải lập trình tuyến tính điểm trong và đơn giản, triển khai nhiều thuật toán tối thiểu hóa phi tuyến, một quy trình khớp đường cong bình phương nhỏ nhất và một bộ sưu tập các bộ giải phi tuyến chung để tìm nghiệm
dấu hiệu
The signal tập trung vào xử lý tín hiệu và lý thuyết hệ thống tuyến tính cơ bản. Chức năng bao gồm tích chập và tương quan, splines, lọc và thiết kế bộ lọc, hệ thống tuyến tính thời gian liên tục và rời rạc, tạo dạng sóng, chức năng cửa sổ, tính toán wavelet, tìm đỉnh và phân tích quang phổ.
thưa thớt
Gói con này bao gồm việc triển khai một số biểu diễn của ma trận thưa thớt. scipy. thưa thớt. linalg cung cấp một tập hợp các thủ tục đại số tuyến tính hoạt động với ma trận thưa thớt, bao gồm bộ giải phương trình tuyến tính, phân tách giá trị riêng, phân tách giá trị đơn lẻ và phân tích thừa số LU. scipy. thưa thớt. csgraph cung cấp một tập hợp các thuật toán đồ thị mà đồ thị được biểu diễn bằng ma trận thưa thớt. Các thuật toán bao gồm các thành phần được kết nối, đường đi ngắn nhất, cây bao trùm tối thiểu và hơn thế nữa.
không gian
Gói con này cung cấp cấu trúc dữ liệu không gian và thuật toán, bao gồm cây k-d, phép đo tam giác Delaunay, bao lồi và sơ đồ Voronoi. scipy. không gian. distance cung cấp một tập hợp lớn các hàm khoảng cách, cùng với các hàm tính toán khoảng cách giữa tất cả các cặp vectơ trong một tập hợp điểm đã cho hoặc giữa tất cả các cặp từ hai tập hợp điểm.
đặc biệt
số liệu thống kê
Gói con số liệu thống kê cung cấp một bộ sưu tập lớn các phân phối xác suất liên tục và rời rạc, mỗi phân phối có các phương pháp tính toán PDF hoặc PMF, CDF, khoảnh khắc .
Lựa chọn kiến trúc và triển khai
Phạm vi dự án
SciPy cung cấp các thuật toán cơ bản cho điện toán khoa học. Phạm vi rộng của nó được rút ra từ hướng dẫn về hệ thống phân loại phần mềm toán học [GAMS] có sẵn44. Trong các lĩnh vực di chuyển tương đối chậm, chẳng hạn như đại số tuyến tính, SciPy nhằm mục đích cung cấp phạm vi bảo hiểm đầy đủ. Trong các lĩnh vực khác, nó nhằm mục đích cung cấp các khối xây dựng cơ bản đồng thời tương tác tốt với các gói khác chuyên biệt trong lĩnh vực đó. Ví dụ: SciPy cung cấp những gì người ta mong đợi tìm thấy trong sách giáo khoa thống kê [phân phối xác suất, kiểm tra giả thuyết, thống kê tần suất, hàm tương quan, v.v.], trong khi Statsmodels45 cung cấp các phương pháp suy luận và ước tính thống kê nâng cao hơn, scikit-learn3 bao gồm học máy và . //mc-stan. org] bao gồm thống kê Bayes và mô hình xác suất. scikit-image4 cung cấp khả năng xử lý hình ảnh ngoài ndimage của SciPy, SymPy48 cung cấp giao diện Python để tính toán tượng trưng và sparse. csgraph và spatial cung cấp các công cụ cơ bản để làm việc với biểu đồ và mạng so với các thư viện chuyên biệt như NetworkX49.
Chúng tôi sử dụng các tiêu chí sau để xác định xem có nên đưa chức năng mới vào SciPy hay không
Thuật toán có liên quan đến nhiều lĩnh vực khoa học
Thuật toán rất quan trọng. Ví dụ, nó đủ kinh điển để được đưa vào sách giáo khoa hoặc nó dựa trên một bài báo được bình duyệt có số lượng trích dẫn đáng kể
Về hệ thống phần mềm và kiến trúc, phạm vi của SciPy phù hợp với NumPy. các thuật toán cho tính toán trong bộ nhớ trên các máy đơn lẻ, với sự hỗ trợ cho nhiều loại dữ liệu và kiến trúc quy trình. Điện toán phân tán và hỗ trợ cho các đơn vị xử lý đồ họa [GPU] rõ ràng nằm ngoài phạm vi tại 1. 0, nhưng điều này đã được sửa đổi trong lộ trình của chúng tôi [xem Thảo luận]
lựa chọn ngôn ngữ
Theo phân tích sử dụng thư viện nhà ngôn ngữ học [https. //github. com/github/linguist], SciPy có khoảng 50% Python, 25% Fortran, 20% C, 3% Cython và 2% C++, với một chút TeX, Matlab, shell script và Make. Việc phân phối các ngôn ngữ lập trình phụ trong SciPy là sự thỏa hiệp giữa một ngôn ngữ mạnh mẽ, nâng cao hiệu suất, tương tác tốt với Python [nghĩa là Cython] và việc sử dụng các ngôn ngữ [và thư viện của chúng] đã được chứng minh là đáng tin cậy và hoạt động hiệu quả trong nhiều thập kỷ.
Fortran, bất chấp tuổi đời của nó, vẫn là một ngôn ngữ lập trình khoa học hiệu năng cao được sử dụng liên tục trong thời hiện đại50. Vì vậy, chúng tôi gói các thư viện Fortran đã được thử nghiệm thực tế xuất sắc sau đây để mang lại sự thuận tiện cho Python đồng thời hưởng lợi từ hiệu suất của chúng. QUADPACK51 và ODEPACK52 để tích hợp số và giải các bài toán giá trị ban đầu; . 59] để tính các hàm Bessel;
Nằm trong ba ngôn ngữ hàng đầu trong SciPy là C, ngôn ngữ này cũng đã được thiết lập rất tốt trong vài thập kỷ61 của máy tính khoa học. Các thư viện C mà chúng tôi đưa vào SciPy bao gồm trlib62 để tối ưu hóa, SuperLU63,64 để giải các hệ tuyến tính thưa thớt, Qhull65 cho hình học tính toán và Cephes [http. //www. netlib. org/cephes/] cho các chức năng đặc biệt
Cython đã được mô tả là một ngôn ngữ creole kết hợp các phần tốt nhất của Python và các mô hình C/C++ cấp thấp hơn40. Chúng tôi thường sử dụng Cython như một chất kết dính giữa các thư viện máy tính khoa học cấp thấp, được thiết lập tốt được viết bằng C/C++ và giao diện Python do SciPy cung cấp. Chúng tôi cũng sử dụng Cython để kích hoạt các cải tiến hiệu suất trong mã Python, đặc biệt đối với các trường hợp vòng lặp bên trong được sử dụng nhiều được hưởng lợi từ mã được biên dịch với kiểu gõ tĩnh
Để triển khai chức năng mới, Python vẫn là ngôn ngữ được lựa chọn. Nếu hiệu suất của Python là một vấn đề, thì chúng tôi ưu tiên sử dụng Cython, sau đó là C, C++ hoặc Fortran [theo thứ tự đó]. Động lực chính cho điều này là khả năng bảo trì. Cython có mức độ trừu tượng cao nhất và hầu hết các nhà phát triển Python sẽ hiểu nó. C cũng được biết đến rộng rãi và dễ quản lý hơn đối với nhóm phát triển cốt lõi hiện tại so với C ++ và đặc biệt là Fortran
Vị trí mà SciPy nắm giữ gần nền tảng của hệ sinh thái Python khoa học đến mức việc áp dụng các ngôn ngữ mới hoặc các phụ thuộc chính nói chung là khó xảy ra; . GPU acceleration, new transpiling libraries and the latest JIT compilation approaches [for example, Numba66] are very powerful but have traditionally fallen outside the remit of the main SciPy library. That said, we have recently increased our efforts to support compatibility with some of these options, and our full test suite passed with the PyPy JIT compiler67 at the 1. 0 điểm phát hành
Sự phát triển của API và ABI
API cho SciPy bao gồm khoảng 1.500 hàm và lớp. Chính sách của chúng tôi về việc phát triển API theo thời gian là chức năng mới có thể được thêm vào, trong khi việc xóa hoặc thay đổi chức năng hiện có chỉ có thể được thực hiện nếu lợi ích vượt quá chi phí [thường là đáng kể] cho người dùng và chỉ sau khi đưa ra cảnh báo rõ ràng về việc ngừng sử dụng cho những người dùng đó đối với tại . Nói chung, chúng tôi khuyến khích các thay đổi giúp cải thiện tính rõ ràng trong API của thư viện nhưng đặc biệt không khuyến khích việc phá vỡ khả năng tương thích ngược, do vị trí của chúng tôi gần cơ sở của ngăn xếp máy tính Python khoa học
Ngoài API Python, SciPy còn có giao diện C và Cython. Do đó, chúng ta cũng phải xem xét giao diện nhị phân ứng dụng [ABI]. This ABI has been stable for a long time, and we aim to evolve it only in a backward-compatible way
Cải tiến kỹ thuật chính
Ở đây chúng tôi mô tả những cải tiến kỹ thuật quan trọng được thực hiện trong ba năm qua
Cấu trúc dữ liệu
ma trận thưa thớt
scipy. thưa thớt cung cấp bảy cấu trúc dữ liệu ma trận thưa thớt, còn được gọi là định dạng thưa thớt. Những cái quan trọng nhất là định dạng nén hàng và cột [CSR và CSC, tương ứng]. Chúng cung cấp khả năng lập chỉ mục trục chính nhanh và phép nhân vectơ ma trận nhanh, đồng thời được sử dụng nhiều trong SciPy và các gói phụ thuộc
Trong ba năm qua, các phần bên trong xử lý ma trận thưa thớt của chúng tôi đã được viết lại và hiệu suất đã được cải thiện. Lặp lại và cắt các ma trận CSC và CSR hiện nhanh hơn tới 35% và tốc độ chuyển đổi định dạng tọa độ [COO]/đường chéo [DIA] sang CSR/CSC đã tăng lên. SuperLU63 was updated to version 5. 2. 1, tăng cường triển khai cấp thấp được tận dụng bởi một tập hợp con các dịch vụ thưa thớt của chúng tôi.
Từ quan điểm tính năng mới, scipy. thưa thớt ma trận và toán tử tuyến tính hiện hỗ trợ toán tử nhân ma trận Python [ @ ]. Chúng tôi đã thêm scipy. thưa thớt. norm and scipy. thưa thớt. random for computing sparse matrix norms and drawing random variates from arbitrary distributions, respectively. Also, we made a concerted effort to bring the scipy. sparse API into line with the equivalent NumPy API where possible.
cKDTree
scipy . không gian. Mô-đun ckdtree , triển khai cấu trúc dữ liệu phân vùng không gian tổ chức các điểm trong không gian k chiều, được viết lại bằng C++ với các lớp mẫu. Hỗ trợ đã được thêm vào cho các điều kiện biên định kỳ, thường được sử dụng trong mô phỏng các quá trình vật lý.
Vào năm 2013, độ phức tạp về thời gian của tìm kiếm k-láng giềng gần nhất từ cKDTree. query was approximately loglinear68, consistent with its formal description69. Since then, we enhanced cKDTree. truy vấn bằng cách triển khai lại nó trong C++, loại bỏ rò rỉ bộ nhớ và cho phép giải phóng khóa trình thông dịch toàn cục [GIL] để có thể sử dụng nhiều luồng70. Điều này nói chung đã cải thiện hiệu suất đối với bất kỳ vấn đề cụ thể nào trong khi vẫn duy trì độ phức tạp tiệm cận.
Vào năm 2015, SciPy đã thêm quy trình sparse_ distance_matrix để tạo ma trận khoảng cách thưa gần đúng giữa KDTreeKDTreeKDTree objects by ignoring all distances that exceed a user-provided value. This routine is not limited to the conventional L2 [Euclidean] norm but supports any Minkowski p-norm between 1 and infinity. By default, the returned data structure is a dictionary of keys [DOK]-based sparse matrix, which is very efficient for matrix construction. This hashing approach to sparse matrix assembly can be seven times faster than constructing with CSR format71, and the C++ level sparse matrix construction releases the Python GIL for increased performance. Once the matrix is constructed, distance value retrieval has an amortized constant time complexity72, and the DOK structure can be efficiently converted to a CSR, CSC or COO matrix to allow for speedy arithmetic operations.
In 2015, the cKDTree dual tree counting algorithm73 was enhanced to support weights74, which are essential in many scientific applications, for example, computing correlation functions of galaxies75.
Các liên kết hợp nhất với mã được biên dịch
Mức độ thấpCó thể gọi
Kể từ SciPy phiên bản 0. 19, người dùng có thể bọc các chức năng cấp thấp trong một scipy. Đối tượng LowLevelCallable giúp giảm chi phí gọi các hàm C đã biên dịch, chẳng hạn như các hàm được tạo bằng Numba hoặc Cython, trực tiếp từ Python. Các hàm cấp thấp được hỗ trợ bao gồm các đối tượng PyCapsule , con trỏ hàm ctypes và < . Hơn nữa, có thể tự động tạo chức năng gọi lại cấp thấp từ mô-đun Cython bằng cách sử dụng cffi function pointers. Furthermore, it is possible to generate a low-level callback function automatically from a Cython module using scipy. Mức độ thấpCó thể gọi. from_cython .
Liên kết Cython dành cho BLAS, LAPACK và đặc biệt
SciPy đã cung cấp các chức năng đặc biệt và tận dụng các chương trình con đại số tuyến tính cơ bản [BLAS] và gói đại số tuyến tính [LAPACK]76 trong nhiều năm. SciPy hiện bao gồm thêm các trình bao bọc Cython40 cho nhiều quy trình BLAS và LAPACK [được thêm vào năm 2015] và các chức năng đặc biệt được cung cấp trong scipy. special subpackage [added in 2016], which are available in scipy. linalg. cython_blas , scipy. linalg. cython_lapack and scipy. đặc biệt. cython_special , tương ứng. Khi viết các thuật toán trong Cython, thông thường sẽ hiệu quả hơn nếu gọi trực tiếp vào các gói SciPy của thư viện thay vì gọi gián tiếp, sử dụng API Python của SciPy. Các giao diện cấp thấp này cho Cython cũng có thể được sử dụng bên ngoài cơ sở mã SciPy để có quyền truy cập vào các chức năng trong các thư viện được bao bọc trong khi tránh được các lệnh gọi hàm Python. Điều này có thể mang lại hiệu suất tăng một hoặc hai bậc độ lớn cho nhiều trường hợp sử dụng.
Các nhà phát triển cũng có thể sử dụng các giao diện Cython cấp thấp mà không cần liên kết với các thư viện được bao bọc77. Điều này cho phép các tiện ích mở rộng khác tránh được sự phức tạp khi tìm và sử dụng đúng thư viện. Avoiding this complexity is especially important when wrapping libraries written in Fortran. Các trình bao bọc cấp thấp này không chỉ có thể được sử dụng mà không cần trình biên dịch Fortran, chúng còn có thể được sử dụng mà không cần phải xử lý tất cả các ABI trình biên dịch Fortran khác nhau và các sơ đồ xáo trộn tên
Most of these low-level Cython wrappers are generated automatically to help with both correctness and ease of maintenance. The wrappers for BLAS and LAPACK are primarily generated using type information that is parsed from the BLAS and LAPACK source files using F2PY19, though a small number of routines use hand-written type signatures instead. The input and output types of each routine are saved in a data file that is read at build time and used to generate the corresponding Cython wrapper files. Các hàm bao trong scipy. special. cython_special are also generated from a data file containing type information for the wrapped routines.
Vì SciPy có thể được xây dựng với LAPACK 3. 4. 0 trở lên, trình bao bọc Cython chỉ được cung cấp cho các quy trình duy trì giao diện nhất quán trên tất cả các phiên bản LAPACK được hỗ trợ. Giao diện BLAS tiêu chuẩn được cung cấp bởi các thư viện BLAS hiện có khác nhau hiện không thay đổi, do đó, những thay đổi thường không cần thiết trong các trình bao bọc do SciPy cung cấp. Các thay đổi đối với trình bao bọc Cython cho các chức năng trong scipy. đặc biệt theo dõi các thay đổi tương ứng đối với giao diện của gói con đó.
Numerical optimization
scipy . optimize subpackage provides functions for the numerical solution of several classes of root finding and optimization problems. Here we highlight recent additions through SciPy 1. 0.
tối ưu hóa tuyến tính
A new interior-point optimizer for continuous linear programming problems, linprog with method = ’interior-point’ , was released with SciPy 1. 0. Triển khai thuật toán cốt lõi của bộ giải thương mại MOSEK78, nó giải quyết tất cả hơn 90 bài toán điểm chuẩn NETLIB LP79 đã được thử nghiệm. Không giống như một số phương pháp điểm bên trong, công thức tự đối ngẫu đồng nhất này cung cấp các chứng chỉ về tính khả thi hoặc không bị chặn khi thích hợp.
Một thủ tục giải quyết trước80 giải các bài toán tầm thường và mặt khác thực hiện đơn giản hóa vấn đề, chẳng hạn như thắt chặt giới hạn và loại bỏ các biến cố định, và một trong số các thủ tục để loại bỏ các ràng buộc đẳng thức dư thừa được chọn tự động để giảm khả năng gặp khó khăn về số do các ma trận đơn lẻ gây ra. Mặc dù triển khai bộ giải chính là Python thuần túy, hỗ trợ ma trận thưa thớt từ đầu đến cuối và sử dụng nhiều bộ giải hệ thống tuyến tính đã biên dịch của SciPy—thường cho cùng một hệ thống có nhiều vế phải do phương pháp dự đoán-chỉnh sửa—cung cấp đủ tốc độ cho các bài toán
Nonlinear optimization. local minimization
Chức năng tối thiểu hóa cung cấp một giao diện thống nhất để tìm cực tiểu cục bộ của các bài toán tối ưu hóa phi tuyến tính. Bốn phương pháp mới để tối ưu hóa không giới hạn đã được thêm vào thu nhỏ trong các phiên bản gần đây của SciPy. dogleg , trust-ncg , trust-exact and 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, 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 [≥1,000 variables]. In contrast, trust-ncg and 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. Chúng tôi so sánh chi tiết các đặc điểm của tất cả các phương pháp giảm thiểu trong Bảng 1, bảng này minh họa mức độ hoàn thiện mà SciPy hướng tới khi đề cập đến một phương pháp hoặc chủ đề số.
Bảng 1 Các phương pháp tối ưu hóa từ giảm thiểu
Bảng kích thước đầy đủ
tối ưu hóa phi tuyến tính. giảm thiểu toàn cầu
Vì giảm thiểu có thể trả về bất kỳ mức tối thiểu cục bộ nào nên một số vấn đề yêu cầu sử dụng quy trình tối ưu hóa toàn cục. scipy mới. tối ưu hóa. differential_evolution function81,82 is a stochastic global optimizer that works by evolving a population of candidate solutions. Trong mỗi lần lặp lại, các ứng cử viên dùng thử được tạo ra bởi sự kết hợp của các ứng cử viên từ quần thể hiện có. Nếu các ứng cử viên thử nghiệm đại diện cho một sự cải tiến, thì dân số được cập nhật. 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.
Statistical distributions
scipy . stats gói con chứa hơn 100 phân phối xác suất. 96 continuous and 13 discrete univariate distributions, and 10 multivariate distributions. Việc triển khai dựa trên một khung nhất quán cung cấp các phương pháp lấy mẫu các biến ngẫu nhiên, để đánh giá hàm phân phối tích lũy [CDF] và hàm mật độ xác suất [PDF] cũng như để điều chỉnh các tham số cho mọi phân phối. Nói chung, các phương pháp dựa trên các triển khai cụ thể cho từng phân phối, chẳng hạn như biểu thức dạng đóng của CDF hoặc thuật toán lấy mẫu, nếu có. Otherwise, default methods are used based on generic code, for example, numerical integration of the PDF to obtain the CDF. Key recent distributions added to scipy. thống kê bao gồm phân phối dựa trên biểu đồ trong scipy. stats. rv_histogram and the multinomial distribution in scipy. stats. multinomial [used, for example, in natural language processing83].
nội suy đa thức
Trong lịch sử, SciPy chủ yếu dựa vào thư viện FITPACK Fortran đáng kính của P. Dierckx53,84 cho phép nội suy đơn biến và xấp xỉ dữ liệu, nhưng thiết kế nguyên khối ban đầu và API để tương tác giữa SciPy và FITPACK đã hạn chế đối với cả người dùng và nhà phát triển
Implementing a new, modular design of polynomial interpolators was spread over several releases. Mục tiêu của nỗ lực này là có một tập hợp các đối tượng cơ bản biểu diễn các đa thức từng phần, để thực hiện một tập hợp các thuật toán để xây dựng các bộ nội suy khác nhau và cung cấp cho người dùng các khối xây dựng để xây dựng các bộ nội suy bổ sung
At the lowest level of the new design are classes that represent univariate piecewise polynomials. PPoly [SciPy 0. 13]85, BPoly [SciPy 0. 13] and BSpline [SciPy 0. 19]86, which allow efficient vectorized evaluations, differentiation, integration and root-finding. PPoly represents piecewise polynomials in the power basis in terms of breakpoints and coefficients at each interval. BPoly is similar and represents piecewise polynomials in the Bernstein basis [which is suitable, for example, for constructing Bézier curves]. BSpline represents spline curves, that is, linear combinations of B-spline basis elements87.
Trong lớp tiếp theo, các lớp đa thức này được sử dụng để xây dựng một số cách nội suy dữ liệu phổ biến. CubicSpline [SciPy 0. 18]88 constructs a twice differentiable piecewise cubic function, Akima1DInterpolator and PCHIPInterpolator implement two classic prescriptions for constructing a C1 continuous monotone shape-preserving interpolator89,90.
Test and benchmark suite
bộ thử nghiệm
Phát triển dựa trên thử nghiệm đã được mô tả như một cách để quản lý nỗi sợ hãi và sự không chắc chắn khi thực hiện thay đổi mã91. Đối với mỗi thành phần của SciPy, chúng tôi viết nhiều bài kiểm tra thực thi nhỏ để xác minh hành vi dự định của nó. Bộ sưu tập những thứ này, được gọi là 'bộ thử nghiệm', làm tăng độ tin cậy về tính đúng đắn và chính xác của thư viện, đồng thời cho phép chúng tôi thực hiện các sửa đổi mã được biết là không làm thay đổi hành vi mong muốn. Theo thông lệ tích hợp liên tục92, tất cả các đóng góp được đề xuất cho SciPy tạm thời được tích hợp với nhánh chính của thư viện trước khi bộ kiểm tra được chạy và tất cả các kiểm tra phải được thông qua trước khi đóng góp được hợp nhất vĩnh viễn. Liên tục theo dõi số lượng dòng mã trong SciPy được bao phủ bởi các bài kiểm tra đơn vị là một cách chúng tôi duy trì sự chắc chắn rằng các thay đổi và tính năng mới được triển khai chính xác
Bộ thử nghiệm SciPy được điều phối bởi một ma trận tích hợp liên tục bao gồm các nền tảng POSIX và Windows [32/64-bit] do Travis CI và AppVeyor quản lý, tương ứng. Các thử nghiệm của chúng tôi bao gồm Python phiên bản 2. 7, 3. 4, 3. 5, 3. 6 và bao gồm linting mã với pyflakes và pycodestyle . Có hơn 13.000 bài kiểm tra đơn vị trong bộ bài kiểm tra, được viết để sử dụng với pytest [https. // tài liệu. người khó tính. org/vi/mới nhất]. Trong bộ lễ phục. 2, chúng tôi hiển thị dữ liệu phạm vi thử nghiệm lịch sử được tạo bằng cách sử dụng phương pháp dựa trên Docker [https. //github. com/tylerjereddy/scipy-cov-track]. Ngoại trừ việc loại bỏ ∼ 61.000 dòng mã đã biên dịch cho SciPy v0. Kể từ ngày 14 tháng 10, khối lượng của cả mã được biên dịch [C, C++ và Fortran] và mã Python đã tăng lên giữa các lần phát hành, cũng như số lượng dòng được bao phủ bởi các bài kiểm tra đơn vị. Kiểm tra phạm vi bảo hiểm tại SciPy 1. 0 là 87% đối với mã Python theo pytest-cov [https. //pypi. org/dự án/pytest-cov/]. Mức độ phù hợp của mã được biên dịch [C, C++ và Fortran] chỉ là 45% theo gcov [https. // gcc. gnu. org/onlinedocs/gcc/Gcov. html], nhưng cơ sở mã được biên dịch mạnh mẽ hơn nhiều so với con số này gợi ý vì con số này không chính xác khi bao gồm mã của nhà cung cấp có uy tín, thư viện ban đầu đã được kiểm tra kỹ lưỡng; . Tài liệu về mã được dịch vụ CircleCI tự động xây dựng và xuất bản để tạo điều kiện đánh giá các thay đổi/tính toàn vẹn của tài liệu.
Quả sung. 2
Khối lượng mã Python và được biên dịch trong SciPy theo thời gian
Hình ảnh kích thước đầy đủ
bộ điểm chuẩn
Ngoài việc đảm bảo vượt qua các bài kiểm tra đơn vị, điều quan trọng là phải xác nhận rằng hiệu suất của cơ sở mã SciPy được cải thiện theo thời gian. Kể từ tháng 2 năm 2015, hiệu suất của SciPy đã được theo dõi bằng Tốc độ bay [ asv https. //github. com/airspeed-velocity/asv]. chạy của SciPy. Tập lệnh py kết hợp thuận tiện các tính năng của asv sao cho có thể tạo kết quả điểm chuẩn theo thời gian bằng một lệnh console. Ví dụ, trong hình. 3, chúng tôi minh họa sự cải tiến của scipy. không gian. cKDTree. truy vấn trong khoảng 9 năm lịch sử dự án. Cây được sử dụng trong điểm chuẩn được tạo mà không áp dụng cấu trúc liên kết hình xuyến [ boxsize = Không ] và các thử nghiệm được thực hiện bởi Airspeed Velocity 0. 4 sử dụng Python 2. 7, NumPy 1. 8. 2 và Cython phiên bản 0. 27. 3, 0. 21. 1 và 0. 18 [để cải thiện khả năng tương thích ngược]. Những cải tiến đáng kể về hiệu suất đã được thực hiện khi cKDTree được Cython hóa hoàn toàn và một lần nữa khi nó được viết lại bằng C++.
Hình. 3. Kết quả của scipy. spatial. cKDTree. query benchmark from the introduction of cKDTree to the release of SciPy 1. 0.
Điểm chuẩn tạo cây k-d từ các điểm được phân phối đồng đều trong siêu khối đơn vị m chiều, sau đó tìm hàng xóm [Euclidean] gần nhất trong cây cho mỗi 1.000 điểm truy vấn. Each marker in the figure indicates the execution time of the benchmark for a commit in the master branch of SciPy
Hình ảnh kích thước đầy đủ
Tổ chức dự án và cộng đồng
Governance
SciPy đã thông qua một tài liệu quản trị chính thức [https. // tài liệu. scipy. org/doc/scipy/tham chiếu/dev/quản trị/quản trị. html] vào ngày 3 tháng 8 năm 2017. Một hội đồng chỉ đạo, hiện gồm 18 thành viên, giám sát sự phát triển hàng ngày của dự án bằng cách đóng góp mã và xem xét các đóng góp từ cộng đồng. Các thành viên hội đồng có quyền cam kết đối với kho lưu trữ dự án, nhưng họ phải hợp nhất các thay đổi chỉ khi không có sự phản đối thực sự nào của cộng đồng. Chủ tịch hội đồng chỉ đạo, Ralf Gommers, chịu trách nhiệm bắt đầu đánh giá kỹ thuật hai năm một lần về hướng dự án và tóm tắt mọi hoạt động của hội đồng tư nhân cho cộng đồng rộng lớn hơn. Nhà độc tài nhân từ suốt đời của dự án, Pauli Virtanen, có thẩm quyền vượt trội về mọi vấn đề, nhưng phải hành động một cách thiện chí và chỉ thực hiện thẩm quyền này khi hội đồng chỉ đạo không thể đạt được thỏa thuận
Quy tắc ứng xử chính thức của SciPy đã được phê duyệt vào ngày 24 tháng 10 năm 2017. Tóm lại, có năm hướng dẫn cụ thể. cởi mở với tất cả mọi người tham gia vào cộng đồng của chúng tôi; . Bộ quy tắc ứng xử chỉ rõ cách thức các hành vi vi phạm có thể được báo cáo cho ủy ban quy tắc ứng xử và phác thảo các quy trình phản hồi của ủy ban. Tuyên bố về sự đa dạng của chúng tôi “chào đón và khuyến khích mọi người tham gia. ”
Maintainers and contributors
Dự án SciPy có ~100 người đóng góp duy nhất cho mỗi chu kỳ phát hành 6 tháng. Bất kỳ ai quan tâm và có kỹ năng đều có thể trở thành cộng tác viên; . //scipy. github. io/devdocs/dev/contributor/contributor_toc. html] provides guidance on how to do that. Ngoài ra, dự án hiện có 15 nhân viên bảo trì tích cực [tình nguyện viên]. những người xem xét sự đóng góp của người khác và làm mọi thứ khác cần thiết để đảm bảo rằng phần mềm và dự án tiến lên phía trước. Những người bảo trì rất quan trọng đối với sức khỏe của dự án93; . Bất kỳ ai cũng có thể trở thành người bảo trì vì họ được chọn trên cơ sở luân phiên từ những người đóng góp có lịch sử đóng góp đáng kể với chất lượng cao
Kinh phí
Chi phí phát triển của SciPy được Open Hub ước tính vượt quá 10 triệu đô la [https. //www. openhub. net/p/scipy/estimated_cost]. Tuy nhiên, dự án phần lớn không được tài trợ, được phát triển chủ yếu bởi các sinh viên tốt nghiệp, giảng viên và các thành viên trong ngành trong thời gian rảnh rỗi của họ. Small amounts of funding have been applied with success. một số cuộc họp được tài trợ bởi các trường đại học và ngành công nghiệp, chương trình Summer of Code của Google hỗ trợ cơ sở hạ tầng và công việc thuật toán, và quỹ tài trợ giảng dạy đã được sử dụng sớm để phát triển tài liệu. However, funding from national agencies, foundations and industry has not been commensurate with the enormous stack of important software that relies on SciPy. Chi tiêu đa dạng hơn để hỗ trợ lập kế hoạch, phát triển, quản lý và cơ sở hạ tầng sẽ giúp SciPy duy trì nền tảng lành mạnh cho các nỗ lực khoa học và công nghiệp quốc tế
dự án hạ lưu
Hệ sinh thái Python khoa học bao gồm nhiều ví dụ về thư viện phần mềm dành riêng cho miền được xây dựng dựa trên các tính năng của SciPy và sau đó quay lại thư viện SciPy cơ sở để đề xuất và thậm chí triển khai các cải tiến. Ví dụ: có những người đóng góp chung cho các thư viện lõi SciPy và Astropy94 và những gì hoạt động tốt cho một trong các cơ sở mã, cơ sở hạ tầng hoặc cộng đồng thường được chuyển dưới dạng này sang dạng khác. Ở cấp độ cơ sở mã, chức năng binned_statistic là một trong những đóng góp liên dự án như vậy. ban đầu nó được phát triển trong gói liên kết với Astropy và sau đó được đặt trong SciPy. In this perspective, SciPy serves as a catalyst for cross-fertilization throughout the Python scientific computing community.
Thảo luận
SciPy có cộng đồng nhà phát triển mạnh mẽ và cơ sở người dùng khổng lồ. Số liệu lưu lượng truy cập GitHub báo cáo khoảng 20.000 khách truy cập duy nhất vào trang web nguồn trong khoảng thời gian từ ngày 14 tháng 5 năm 2018 đến ngày 27 tháng 5 năm 2018 [gần thời điểm viết bài], với 721 bản sao duy nhất ['bản sao'] của cơ sở mã trong khoảng thời gian đó. Cộng đồng nhà phát triển tại thời điểm đó bao gồm 610 người đóng góp mã nguồn duy nhất, với hơn 19.000 cam kết được chấp nhận vào cơ sở mã [dữ liệu trang GitHub]
Từ phía người dùng, đã có 13.096.468 lượt tải xuống SciPy từ Chỉ số đóng gói Python [PyPI]95 và 5.776.017 thông qua kênh mặc định của conda [//github.com/ContinuumIO/anaconda-package-data] package manager during the year 2017. These numbers establish a lower bound on the total number of downloads by users given that PyPI and conda chỉ là hai trong số một số phương pháp phổ biến để cài đặt SciPy. Trang web SciPy [http. //www. scipy. org/], which has been the default citation in the absence of a peer-reviewed paper, has been cited over 3,000 times [https. // học giả. Google. com/scholar?cites=2086009121748039507]. Một số cách sử dụng hoặc minh chứng nổi bật nhất về độ tin cậy của SciPy bao gồm sự hợp tác khoa học LIGO-Virgo dẫn đến việc quan sát sóng hấp dẫn96, thực tế là SciPy được vận chuyển trực tiếp cùng với macOS và trong bản phân phối của Intel dành cho Python97, và SciPy đó là . //github. blog/2019-01-24-the-state-of-the-octoverse-machine-learning/].
Tuy nhiên, SciPy liên tục cố gắng cải thiện. Lộ trình SciPy [https. // tài liệu. scipy. org/doc/scipy-1. 0. 0/tham khảo/lộ trình. html, https. //scipy. github. io/devdocs/lộ trình. html], được tóm tắt trong Bảng 2, là một tài liệu được cập nhật liên tục do cộng đồng duy trì, mô tả một số hướng chính để cải thiện dự án, cũng như các hạn chế và vấn đề cụ thể cần hỗ trợ trong tương lai. Ngoài các mục trong lộ trình, chúng tôi vẫn đang làm việc để tăng số lượng hướng dẫn sử dụng SciPy ngoài 15 phần hiện tại của chúng tôi. Ngoài ra, mã Cython cấp thấp trong thư viện của chúng tôi [tương tác với mã cấp C và hiển thị mã đó để sử dụng Python] có thể sử dụng một số biện pháp hiện đại hóa, bao gồm di chuyển sang các lần xem bộ nhớ đã nhập để xử lý các mảng NumPy
Bảng 2 Tóm tắt các hạng mục trong Lộ trình SciPy sau 1. 0 phát hành
Bảng kích thước đầy đủ
Một vấn đề mà nhiều dự án nguồn mở gặp phải là thu hút và giữ chân các nhà phát triển. Mặc dù việc một số cá nhân đóng góp cho một dự án trong một thời gian rồi tiếp tục là điều bình thường, nhưng quá nhiều doanh thu có thể dẫn đến việc mất bộ nhớ của tổ chức, dẫn đến lỗi trong quá khứ được lặp lại, API của mã mới trở nên không phù hợp với mã cũ. . Chúng tôi may mắn là dự án SciPy tiếp tục thu hút các nhà phát triển mới nhiệt tình và có năng lực trong khi vẫn duy trì sự tham gia của một người bảo vệ cũ nhỏ nhưng tận tâm. Có những người đóng góp đã có mặt trong những năm đầu của dự án vẫn đóng góp vào các cuộc thảo luận về báo cáo lỗi và đánh giá các đóng góp mã mới. Nhà độc tài nhân từ suốt đời của chúng tôi đã tham gia dự án hơn 10 năm và vẫn đang tích cực đóng góp mã, và người đứng đầu hội đồng chỉ đạo của chúng tôi, người cũng đóng vai trò là tổng giám đốc, sắp đến ngày kỷ niệm 11 năm của ông. Thêm nửa tá nhà phát triển tích cực đã đóng góp đều đặn trong năm năm trở lên. Sự kết hợp của một người bảo vệ cũ tận tụy và một loạt những người đóng góp mới đảm bảo rằng SciPy sẽ tiếp tục phát triển trong khi vẫn duy trì chất lượng cao
Một thách thức quan trọng cuối cùng cần giải quyết là khả năng cung cấp GPU và điện toán phân tán mà không làm gián đoạn cơ sở hạ tầng thuật toán/API thông thường và được sử dụng nhiều của chúng tôi. Mặc dù cách tiếp cận chính xác mà chúng tôi sẽ áp dụng trên toàn bộ thư viện để tận dụng các công nghệ mới nổi này vẫn chưa rõ ràng và không phải là ưu tiên tại 1. 0, chúng tôi hiện có triển khai cụ thể gói phụ cho phép sử dụng thử nghiệm nhiều chương trình phụ trợ, chẳng hạn như cấu trúc dữ liệu có thể điều khiển bằng GPU, trong scipy mới. fft . Điều này sẽ được mô tả chi tiết trong một báo cáo trong tương lai.
Tóm tắt báo cáo
Thông tin thêm về thiết kế nghiên cứu có sẵn trong Tóm tắt báo cáo nghiên cứu tự nhiên được liên kết với bài viết này
Dữ liệu thô cho Hình. 2 có sẵn tại https. //github. com/tylerjereddy/scipy-cov-track và dữ liệu thô cho Hình. 3 có sẵn tại https. //github. com/scipy/scipy-articles/tree/master/scipy-1. 0/supporting_info/asv_bench/cKDTree Tất cả mã nguồn thư viện SciPy đều có sẵn trong kho lưu trữ SciPy GitHub, https. //github. com/scipy/scipy Bản sửa lỗi cho bài báo này đã được xuất bản. https. // doi. tổ chức/10. 1038/s41592-020-0772-5Dữ liệu sẵn có
mã sẵn có
Thay đổi lịch sử
24 Tháng hai 2020
Oliphant, T. E. Hướng dẫn về NumPy lần đầu xuất bản [Trelgol Publishing USA, 2006] van derWalt, S. , Colbert, S. C. & Varoquaux, G. Mảng NumPy. một cấu trúc để tính toán số hiệu quả. máy tính. Khoa học. Anh. 13, 22–30 [2011] Google học giả Pedregosa, F. et al. Scikit-học. máy học trong Python. J. máy móc. Học. độ phân giải. 12, 2825–2830 [2011] Google học giả van derWalt, S. et al. hình ảnh scikit. xử lý ảnh trong Python. ngang hàng. 2, e453 [2014] PubMed PubMed Central Google Scholar Nitz, A. et al. gwastro/pycbc. PyCBC v1. 13. 2 phát hành, https. //doi. tổ chức/10. 5281/zenodo. 1596771 [27/11/2018] Vallisneri, M. , Kanner, J. , Williams, R. , Weinstein, A. & Stephens, B. Trung tâm Khoa học Mở LIGO. J. vật lý. tâm sự. người phục vụ. 610, 012021 [2015] Google học giả Abbott, B. P. et al. GW150914. Kết quả đầu tiên từ việc tìm kiếm sự hợp nhất của lỗ đen nhị phân với Advanced LIGO. vật lý. Tái bản. Đ. 93, 122003 [2016] PubMed PubMed Central Google Scholar Abbott, B. P. et al. GW170817. quan sát sóng hấp dẫn từ sao đôi neutron truyền cảm hứng. vật lý. Tái bản. thư. 119, 161101 [2017] CAS PubMed Google ScholarNgười giới thiệu
Hợp tác Kính viễn vọng Chân trời Sự kiện. et al. Kết quả kính viễn vọng chân trời sự kiện M87 đầu tiên. III. Data processing and calibration. Astrophys. J. Lett. 875, L3 [2019]
Google học giả
Blanton, K. At Mathworks, support + fun = success. CEO Jack Little believes in power of his workers–and their ideas. The Boston Globe, J5 [20 April 1997]
Howell, D. Jack Dangermond’s digital mapping lays it all out. Investor’s Business Daily [14 August 2009]
Cảng, O. Simple solutions. BusinessWeek, 24–24 [3 October 2005]
van Rossum, G. Python/C API Reference Manual, http. //citeseerx. ist. psu. edu/viewdoc/download?doi=10. 1. 1. 211. 6702&rep=rep1&type=pdf [2001]
Hugunin, J. The matrix object proposal [very long], https. //mail. python. org/pipermail/matrix-sig/1995-August/000002. html [18 August 1995]
Hugunin, J. Extending Python for numerical computation, http. //hugunin. net/papers/hugunin95numpy. html [1995]
Oliphant, T. E. Moving forward from the last decade of SciPy. Slide thuyết trình, https. //hội nghị. scipy. org/scipy2010/slides/travis_oliphant_keynote. pdf [1 July 2010]
Oliphant, T. E. Some Python modules. Lưu trữ web, https. //web. archive. org/web/19990125091242/http. //oliphant. netpedia. net. 80/ [25 January 1999]
Oliphant, T. E. Modules to enhance Numerical Python. Lưu trữ web, https. //web. archive. org/web/20001206213500/http. //oliphant. netpedia. net. 80/ [6 December 2000]
Peterson, P. F2PY. a tool for connecting Fortran and Python programs. Int. J. Comput. Sci. Eng. 4, 296–305 [2009]
Google học giả
Strangman, G. mô-đun Python. Web Archive, https. // trang web. archive. org/web/20001022231108/http. //www. nmr. mgh. harvard. edu/Neural_Systems_Group/gary/python. html [2000]
SciPy Developers. SciPy. org. Web Archive, https. //web. lưu trữ. org/web/20010309040805/http. //scipy. org. 80/ [2001]
Vaught, T. N. SciPy Developer mailing list now online, https. //mail. con trăn. org/pipermail/scipy-dev/2001-tháng 6/000000. Html [2001]
Jones, E. ANN. khoa học 0. 10–máy tính khoa học với Python, https. //thư. con trăn. org/pipermail/python-list/2001-tháng 8/106419. Html [2001]
Vaught, T. N. Tài liệu tham khảo và tài liệu Hướng dẫn hiện có sẵn để tải xuống dưới dạng tarball. Web Archivehttps. // trang web. archive. org/web/20021013204556/http. //www. scipy. org. 80/scipy/site_content/site_news/docs_released1 [2002]
Vaught, T. N. [ANN] SciPy ‘02 - Python for Scientific Computing Workshop, https. //mail. python. org/pipermail/numpy-discussion/2002-June/001511. Html [2002]
Ascher, D. , Dubois, P. F. , Hinsen, K. , Hugunin, J. & Oliphant, T. E. An open source project. Numerical Python, https. //doi. org/10. 5281/zenodo. 3599566 [2001]
Greenfield, P. How Python slithered Into astronomy. Presentation, https. //conference. scipy. org/scipy2011/slides/greenfield_keynote_astronomy. pdf [2011]
Greenfield, P. , Miller, J. T. , Hsu, J. T. & White, R. L. numarray. a new scientific array package for Python. PyCon DC [2003]
NumPy Developers. v1. 0, https. //github. com/numpy/numpy/releases/tag/v1. 0 [25 tháng 10 năm 2006]
Millman, K. J. & Pérez, F. Developing open-source scientific practice. in Implementing Reproducible Research [CRC Press] 149–183 [2014]
Brandl, G. & the Sphinx team. Sphinx - Python Documentation Generator, http. //www. sphinx-doc. org/en/master/ [2007]
Virtanen, P. et al. pydocweb. a tool for collaboratively documenting Python modules via the web. Web Archive, https. //code. google. com/archive/p/pydocweb/ [2008]
Harrington, J. The SciPy documentation project. In Proceedings of the 7th Python in Science Conference [eds G. Varoquaux, G. , Vaught, T. & Millman, K. J. ] 33–35 [2008]
van der Walt, S. The SciPy documentation project [technical overview]. In Proceedings of the 7th Python in Science Conference [eds G. Varoquaux, G. , Vaught, T. & Millman, K. J. ] 27–28 [2008]
Harrington, J. & Goldsmith, D. Progress report. NumPy and SciPy documentation in 2009. In Proceedings of the 8th Python in Science Conference [eds Varoquaux, G. , van der Walt, S. & Millman, K. J. ] 84–87 [2009]
Pérez, F. , Langtangen, H. P. & LeVeque, R. Python for scientific computing. In SIAM Conference on Computational Science and Engineering, 42 [5] [2009]
Dubois, P. F. Python. batteries included. Comput. Sci. Eng. 9, 7–9 [2007]
Google học giả
Millman, K. J. & Aivazis, M. Python for scientists and engineers. Comput. Khoa học. Eng. 13, 9–12 [2011]
Google học giả
Pérez, F. , Granger, B. E. & Hunter, J. D. Python. an ecosystem for scientific computing. máy tính. Sci. Anh. 13, 13–21 [2011]
Google học giả
Behnel, S. et al. Cython. the best of both worlds. Comput. Sci. Eng. 13, 31–39 [2011]
Google học giả
Ramachandran, P. & Varoquaux, G. Mayavi. 3D visualization of scientific data. Comput. Sci. Eng. 13, 40–51 [2011]
Google học giả
Muller, E. et al. Python in neuroscience. Front. Neuroinform. 9, 11 [2015]
PubMed PubMed Central Google Scholar
GitHub. Network dependents - scipy/scipy, https. //github. com/scipy/scipy/network/dependents [2019]
Boisvert, R. F. , Howe, S. E. & Kahaner, D. K. The guide to available mathematical software problem classification system. Commun. Stat. Simul. Comput 20, 811–842 [1991]
Google học giả
Seabold, S. & Perktold, J. Statsmodels. econometric and statistical modeling with Python. In Proceedings of the 9th Python in Science Conference 57–61 [2010]
Salvatier, J. , Wiecki, T. V. & Fonnesbeck, C. Probabilistic programming in Python using PyMC3. PeerJ Comput. Sci. 2, e55 [2016]
Google học giả
Foreman-Mackey, D. , Hogg, D. W. , Lang, D. & Goodman, J. emcee. the MCMC hammer. Publ. Astron. Soc. Pac. 125, 306–312 [2013]
Google học giả
Meurer, A. et al. SymPy. symbolic computing in Python. PeerJ Comput. Sci. 3, e103 [2017]
Google học giả
Hagberg, A. A. , Schult, D. A. & Swart, P. J. Exploring network structure, dynamics, and function using NetworkX. In Proceedings of the 7th Python in Science Conference. [eds G. Varoquaux, G. , Vaught, T. & Millman, K. J. ] 11–15 [2008]
Koelbel, C. H. & Zosel, M. E. The High Performance FORTRAN Handbook [MIT Press, 1993]
Piessens, R. , de Doncker-Kapenga, E. , Uberhuber, C. W. & Kahaner, D. K. QUADPACK. A Subroutine Package for Automatic Integration [Springer, 1983]
Hindmarsh, A. C. ODEPACK, a systematized collection of ODE solvers. Scientific Computing 55–64 [1983]
Dierckx, P. Curve and Surface Fitting with Splines [Oxford Univ. Press, 1993]
Boggs, P. T. , Byrd, R. H. , Rogers, J. E. & Schnabel, R. B. User’s Reference Guide for ODRPACK Version 2. 01. Software for Weight Orthogonal Distance Regression [U. S. Bộ Thương mại, Viện Tiêu chuẩn và Công nghệ Quốc gia, 1992]
Moré. Jorge J. , Garbow, B. S. & Hillstrom, K. E. User guide for MINPACK-1. Report ANL-80–74 [Argonne National Laboratory, 1980]
Swarztrauber, P. N. Vector hóa các FFT. In Parallel Computations [ed. Rodrigue, G. ] 51–83 [Academic, 1982]
Swarztrauber, P. N. FFT algorithms for vector computers. Parallel Comput. 1, 45–63 [1984]
Google học giả
Lehoucq, R. B. , Sorensen, D. C. & Yang, C. ARPACK users’ guide. solution of large scale eigenvalue problems with implicitly restarted Arnoldi methods. [Rice University, 1997]
Amos, D. E. Algorithm 644. A portable package for Bessel functions of a complex argument and nonnegative order. ACM Trans. Math. Softw. 12, 265–273 [1986]
Google học giả
Brown, B. , Lovato, J. & Russell, K. CDFLIB, https. //people. sc. fsu. edu/~jburkardt/f_src/cdflib/cdflib. html [accessed 6 July 2018]
Kernighan, B. W. & Ritchie, D. M. Ngôn ngữ lập trình C tái bản lần 2 [Tham khảo kỹ thuật chuyên nghiệp Prentice Hall, 1988]
Lenders, F. , Kirches, C. & Potschka, A. trlib. a vector-free implementation of the GLTR method for iterative solution of the trust region problem. Optim. Methods Softw. 33, 420–449 [2018]
Google học giả
Li, X. S. et al. SuperLU Users’ Guide. Report LBNL-44289 [Lawrence Berkeley National Laboratory, 1999]
Li, X. S. An overview of SuperLU. algorithms, implementation, and user interface. ACM Trans. Math. Softw. 31, 302–325 [2005]
Google học giả
Barber, C. B. , Dobkin, D. P. & Huhdanpaa, H. The Quickhull algorithm for convex hulls. ACM Trans. Math. Softw. 22, 469–483 [1996]
Google học giả
Lam, S. K. , Pitrou, A. & Seibert, S. Numba. A LLVM-based Python JIT compiler. In Proceedings of the Second Workshop on the LLVM Compiler Infrastructure in HPC 7. 1–7. 6 [ACM, 2015]
Bolz, C. F. , Cuni, A. , Fijalkowski, M. & Rigo, A. Tracing the meta-level. PyPy’s tracing JIT compiler. In Proceedings of the 4th Workshop on the Implementation, Compilation, Optimization of Object-Oriented Languages and Programming Systems 18–25 [ACM, 2009]
VanderPlas, J. Benchmarking nearest neighbor searches in Python, https. //jakevdp. github. io/blog/2013/04/29/benchmarking-nearest-neighbor-searches-in-python/ [19 April 2013]
Maneewongvatana, S. & Mount, D. M. Analysis of approximate nearest neighbor searching with clustered point sets. Preprint at https. //arxiv. org/pdf/cs/9901013. pdf [1999]
Molden, S. ENH. Cải tiến về không gian. cKDTree, https. //github. com/scipy/scipy/pull/4374/ [7 January 2015]
Aspnas, M. , Signell, A. & Westerholm, J. Efficient assembly of sparse matrices using hashing. In Applied Parallel Computing. State of the Art in Scientific Computing [eds Kagstrom, B. et al. ] 900–907 [Springer, 2007]
Cormen, T. h. , Stein, C. , Rivest, R. L. & Leiserson, C. E. Introduction to Algorithms 2nd edn [McGraw-Hill Higher Education, 2001]
Moore A. W. et al. Fast algorithms and efficient statistics. N-point correlation functions. In Mining the Sky. ESO Astrophysics Symposia [European Southern Observatory] [eds Banday, A. J. , Zaroubi, S. & Bartelmann, M. ] 71–82 [Springer, 2001]
Feng, Y. ENH. Faster count_neighour in cKDTree / + weighted input data https. //github. com/scipy/scipy/pull/5647 [2015]
Martin, A. M. , Giovanelli, R. , Haynes, M. P. & Guzzo, L. The clustering characteristics of HI-selected galaxies from the 40% ALFALFA survey. Astrophys. J. 750, 38 [2012]
Google học giả
Anderson, E. et al. LAPACK Users’ Guide 3rd edn [Society for Industrial and Applied Mathematics, 1999]
Henriksen, I. Circumventing the linker. using SciPy’s BLAS and LAPACK within Cython. Trong Kỷ yếu của Hội nghị Khoa học Python lần thứ 14 [SciPy 2015] [eds Huff, K. & Bergstra, J. ] 49–52 [2015]
Andersen, E. D. & Andersen, K. D. [2000] The Mosek interior point optimizer for linear programming. an implementation of the homogeneous algorithm. In High Performance Optimization 197–232 [Springer, 2000]
The NETLIB LP test problem set, http. //www. numerical. rl. ac. uk/cute/netlib. html [2019]
Andersen, E. D. & Andersen, K. D. Presolving in linear programming. Math. Program. 71, 221–245 [1995]
Google học giả
Wormington, M. , Panaccione, C. , Matney Kevin, M. & Bowen, D. K. Characterization of structures from X-ray scattering data using genetic algorithms. Philos. Trans. R. Soc. Lond. A 357, 2827–2848 [1999]
CAS Google Scholar
Storn, R. & Price, K. Differential evolution — a simple and efficient heuristic for global optimization over continuous spaces. J. Glob. tối ưu. 11, 341–359 [1997]
Google học giả
Griffiths, T. L. & Steyvers, M. Finding scientific topics. Proc. Natl Acad. Sci. USA 101[Suppl. 1], 5228–5235 [2004]
CAS PubMed PubMed Central Google Scholar
Dierckx, P. Curve and Surface Fitting with Splines [Oxford Univ. Press, 1993]
Virtanen, P. ENH. interpolate. rewrite ppform evaluation in Cython, https. //github. com/scipy/scipy/pull/2885 [2013]
Burovski, E. thêm b-splines, https. //github. com/scipy/scipy/pull/3174 [27 December 2013]
de Boor, C. A Practical Guide to Splines [Springer, 1978]
Mayorov, N. ENH. Bộ nội suy CubicSpline, https. //github. com/scipy/scipy/pull/5653 [2 January 2016]
Fritsch, F. N. & Carlson, R. E. Monotone piecewise cubic interpolation. SIAM J. Numer. Anal. 17, 238–246 [1980]
Google học giả
Akima, H. A new method of interpolation and smooth curve fitting based on local procedures. J. Assoc. Comput. Mach. 17, 589–602 [1970]
Google học giả
Beck, K. Test-driven Development. By Example [Addison-Wesley, 2003]
Silver, A. Collaborative software development made easy. Nature 550, 143–144 [2017]
CAS PubMed Google Scholar
Eghbal, N. Roads and Bridges. The Unseen Labor Behind Our Digital Infrastructure [Ford Foundation, 2016]
The Astropy Collaboration. et al. Dự án thiên văn. building an open-science project and status of the v2. 0 core package. Astron. J. 156, 123 [2018]
Google học giả
Lev, O. , Dufresne, J. , Kasim, R. , Skinn, B. & Wilk, J. pypinfo. view PyPI download statistics with ease, https. //github. com/ofek/pypinfo [2018]
Abbott, B. P. et al. Observation of gravitational waves from a binary black hole merger. Phys. Rev. Lett. 116, 061102 [2016]
CAS PubMed Google Scholar
David Liu. The Intel distribution for Python, https. //software. intel. com/en-us/articles/intel-optimized-packages-for-the-intel-distribution-for-python [25 August 2017, updated 30 October 2017, accessed 25 July 2018]
Nelder, J. A. & Mead, R. A simplex method for function minimization. Comput. J. 7, 308–313 [1965]
Google học giả
Wright, M. H. Direct search methods. once scorned, now respectable. Pitman Research Notes in Mathematics Series 191–208 [1996]
Powell, M. J. D. An efficient method for finding the minimum of a function of several variables without calculating derivatives. Comput. J. 7, 155–162 [1964]
Google học giả
Powell, M. J. D. A direct search optimization method that models the objective and constraint functions by linear interpolation. In Advances in Optimization and Numerical Analysis [eds Gomez, S. & Hennart, J. P. ] 51–67 [Springer, 1994]
Powell, M. J. D. Direct search algorithms for optimization calculations. Acta Numerica 7, 287–336 [1998]
Google học giả
Powell, M. J. Đ. A view of algorithms for optimization without derivatives. Math. Today Bull. Inst. Math. Appl. 43, 170–174 [2007]
Google học giả
Polak, E. & Ribiere, G. Note sur la convergence de methodes de directions conjuguees. Rev. française d’informatique et. de. Rech. op. érationnelle 3, 35–43 [1969]
Google học giả
Nocedal, J. & Wright, S. Numerical Optimization 2nd edn [Springer Science & Business Media, 2006]
Byrd, R. H. , Lu, P. , Nocedal, J. & Zhu, C. A limited memory algorithm for bound constrained optimization. SIAM J. Sci. Comput. 16, 1190–1208 [1995]
Google học giả
Zhu, C. , Byrd, R. H. , Lu, P. & Nocedal, J. Algorithm 778. L-BFGS-B. Fortran subroutines for large-scale bound-constrained optimization. ACM Trans. Math. Softw. 23, 550–560 [1997]
Google học giả
Schittkowski, K. On the convergence of a sequential quadratic programming method with an augmented Lagrangian line search function. Mathematische Operationsforschung und Statistik. Ser. Optim. 14, 197–216 [1983]
Google học giả
Schittkowski, K. The nonlinear programming method of Wilson, Han, and Powell with an augmented Lagrangian type line search function. Part 2. an efficient implementation with linear least squares subproblems. Numer. Math. 38, 115–127 [1982]
Google học giả
Schittkowski, K. The nonlinear programming method of Wilson, Han, and Powell with an augmented Lagrangian type line search function. Part 1. convergence analysis. Số. Math. 38, 83–114 [1982]
Google học giả
Kraft, D. A software package for sequential quadratic programming. Report DFVLR-FR 88–28 [Deutsche Forschungs- und Versuchsanstalt für Luft- und Raumfahrt, 1988]
Nash, S. G. Newton-type minimization via the Lanczos method. SIAM J. Numer. Anal. 21, 770–788 [1984]
Google học giả
Powell, M. J. D. A new algorithm for unconstrained optimization. Nonlinear Programming 31–65 [1970]
Steihaug, T. The conjugate gradient method and trust regions in large scale optimization. SIAM J. Numer. Anal. 20, 626–637 [1983]
Google học giả
Conn, A. R. , Gould, N. I. M. & Toint, P. L. Trust Region Methods [SIAM, 2000]
Moré, J. J. & Sorensen, D. C. Computing a trust region step. SIAM J. Sci. Statist. Comput. 4, 553–572 [1983]
Google học giả
Gould, N. I. M. , Lucidi, S. , Roma, M. & Toint, P. L. Solving the trust-region subproblem using the Lanczos method. SIAM J. Optim. 9, 504–525 [1999]
Google học giả
Abbasi, H. Sparse. a more modern sparse array library. In Proceedings of the 17th Python in Science Conference [eds Akici, F. et al. ] 27–30 [2018]
Mohr, P. J. , Newell, D. B. & Taylor, B. N. CODATA recommended values of the fundamental physical constants. 2014. J. Phys. Chem. Ref. Data 45, 043102 [2016]
Google học giả
Boisvert, R. F. , Pozo, R. , Remington, K. , Barrett, R. F. & Dongarra, J. J. Matrix Market. một tài nguyên web cho các bộ sưu tập ma trận thử nghiệm. In Quality of Numerical Software 125–137 [Springer, 1997]
Rew, R. & Davis, G. NetCDF. một giao diện để truy cập dữ liệu khoa học. IEEE Comput. Graph. Appl. 10, 76–82 [1990]
Google học giả
Duff, I. S. , Grimes, R. G. & Lewis, J. G. Users’ guide for the Harwell-Boeing sparse matrix collection [release I], http. //citeseerx. ist. psu. edu/viewdoc/summary?doi=10. 1. 1. 41. 8922 [1992]
Download references
Acknowledgements
We thank everyone who has contributed to SciPy 1. 0, from those who have posted one comment about an issue through those who have made several small patches and beyond
Author information
Author notes
A list of members and affiliations appears at the end of the paper
Authors and Affiliations
University of Jyväskylä, Jyväskylä, Finland
Pauli Virtanen
Quansight LLC, Austin, TX, USA
Ralf Gommers, Travis E. Oliphant & Anthony Scopatz
Ultrasound Imaging, Mayo Clinic, Rochester, MN, USA
Travis E. Oliphant
Electrical Engineering, Brigham Young University, Provo, UT, USA
Travis E. Oliphant
Enthought, Inc. , Austin, TX, USA
Travis E. Oliphant, Eric Jones & Robert Kern
Anaconda Inc. , Austin, TX, USA
Travis E. Oliphant & Ian Henriksen
BioResource and Agricultural Engineering Department, California Polytechnic State University, San Luis Obispo, CA, USA
Matt Haberland
Department of Mathematics, University of California Los Angeles, Los Angeles, CA, USA
Matt Haberland
Los Alamos National Laboratory, Los Alamos, NM, USA
Tyler Reddy & C. Nathan Woods
Independent researcher, Tokyo, Japan
David Cournapeau
National Research University Higher School of Economics, Moscow, Russia
Evgeni Burovski
Independent researcher, Saue, Estonia
Pearu Peterson
Department of Mechanics and Applied Mathematics, Institute of Cybernetics at Tallinn Technical University, Tallinn, Estonia
Pearu Peterson
Berkeley Institute for Data Science, University of California Berkeley, Berkeley, CA, USA
Warren Weckesser, Stéfan J. van der Walt & K. Jarrod Millman
Independent researcher, New York, NY, USA
Jonathan Bright, Alex Rothberg, Johannes L. Schönberger, Stefan Peterson & Tim Leslie
School of Psychology, University of Birmingham, Edgbaston, Birmingham, UK
Matthew Brett
Independent researcher, San Francisco, CA, USA
Joshua Wilson & G. Young
Division of Biostatistics, University of California Berkeley, Berkeley, CA, USA
K. Jarrod Millman
WayRay LLC, Skolkovo Innovation Center, Moscow, Russia
Nikolay Mayorov
Australian Nuclear Science and Technology Organisation, Lucas Heights, NSW, Australia
Andrew R. J. Nelson
Institute for Learning and Brain Sciences, University of Washington, Seattle, WA, USA
Eric Larson
College of Information and Computing Sciences, University of Massachusetts Amherst, Amherst, MA, USA
C J Carey
Independent researcher, Amsterdam, the Netherlands
İlhan Polat
Berkeley Center for Cosmological Physics, University of California Berkeley, Berkeley, CA, USA
Yu Feng
Bruker Biospin Corp. , Billerica, MA, USA
Eric W. Moore
University of Washington, Seattle, WA, USA
Jake VanderPlas
Independent researcher, Toulouse, France
Denis Laxalde
Independent researcher, Montreal, Quebec, Canada
Josef Perktold
New Technologies Research Centre, University of West Bohemia, Plzeň, Czech Republic
Robert Cimrman
Department of Mathematics, Brigham Young University, Provo, UT, USA
Ian Henriksen
Oden Institute for Computational Engineering and Sciences, The University of Texas at Austin, Austin, TX, USA
Ian Henriksen
Independent researcher, Belmont, Massachusetts, USA
E. Một. Quintero
Space Dynamics Laboratory, North Logan, UT, USA
Charles R. Harris
Independent researcher, Logan, Utah, USA
Charles R. Harris
Anton Pannekoek Institute, Amsterdam, The Netherlands
Anne M. Archibald
Chương trình sau đại học về Kỹ thuật điện, Đại học Liên bang de Minas Gerais, Belo Horizonte, Brazil
Antônio H. Ribeiro
Google LLC, Montreal, Quebec, Canada
Fabian Pedregosa
Google LLC, Cambridge, MA, USA
Paul van Mulbregt
International Centre for Theoretical Sciences, Tata Institute of Fundamental Research, Bengaluru, India
Aditya Vijaykumar
Department of Physics, Birla Institute of Technology and Science, Pilani, India
Aditya Vijaykumar
Independent researcher, Milan, Italy
Alessandro Pietro Bardelli
Institute of Environmental Physics, University of Bremen, Bremen, Germany
Andreas Hilboll
Department of Computer Science, University of Illinois at Urbana-Champaign, Urbana, IL, USA
Andreas Kloeckner
Laboratoire Photonique, Numérique et Nanosciences UMR 5298, Université de Bordeaux, Institut d’Optique Graduate School, CNRS, Talence, France
Antony Lee
The University of Washington eScience Institute, The University of Washington, Seattle, WA, USA
Ariel Rokem
Federal Reserve Board of Governors, Washington, DC, USA
Chad Fulton
Datadog Inc. , New York, NY, USA
Charles Masson
HQ, Orexplore, Stockholm, Sweden
Christian Häggström
Statistics Department, University of California - Davis, Davis, CA, USA
Clark Fitzgerald
Emory University, Atlanta, GA, USA
David A. Nicholson
Applied BioMath, Concord, MA, USA
David R. Hagen
Khoa Khoa học Máy tính, Đại học Oxford, Oxford, Vương quốc Anh
Dmitrii V. Pasechnik
Phòng thí nghiệm Tin học Thần kinh, Quỹ Bruno Kessler, Trento, Ý
Emanuele Olivetti
Independent researcher, Chicago, IL, USA
Eric Martin
Department of Engineering, University of Cambridge, Cambridge, UK
Eric Wieser
Aix Marseille Univ, CNRS, Centrale Marseille, LMA, Marseille, France
Fabrice Silva
Interdisciplinary Center for Scientific Computing [IWR], Heidelberg University, Heidelberg, Germany
Felix Lenders
Nghiên cứu Doanh nghiệp ABB, ABB AG, Ladenburg, Đức
Felix Lenders
Institut für Mathematische Optimierung, Technische Universität Carolo-Wilhelmina zu Braunschweig, Braunschweig, Germany
Felix Lenders
Nhà nghiên cứu độc lập, Cologne, Đức
Florian Wilhelm
Lawrence Berkeley National Laboratory, Berkeley, CA, USA
Gavin A. Price
Institut für Physik, Universität Augsburg, Augsburg, Germany
Gert-Ludwig Ingold
Applied Research Laboratories, The University of Texas at Austin, Austin, TX, USA
Gregory E. Allen
Department of Radiology, School of Medicine, University of Cincinnati, Cincinnati, OH, USA
Gregory R. Lee
Department of Radiology, Cincinnati Children’s Hospital Medical Center, Cincinnati, OH, USA
Gregory R. Lee
Ascent Robotics Inc. , Tokyo, Japan
Hervé Audren
ENSTA Bretagne, Brest, France
Irvin Probst
Faculty of Physics, Ludwig-Maximilians-Universität, München, Germany
Jörg P. Dietrich
Excellence Cluster Universe, München, Đức
Jörg P. Dietrich
Independent researcher, Malden, Massachusetts, USA
Jacob Silterra
Khoa học dữ liệu, Chan Zuckerberg Biohub, San Francisco, CA, Hoa Kỳ
James T Webber
Faculty of Mechanical Engineering, University of Ljubljana, Ljubljana, Slovenia
Janko Slavič
Sydney Informatics Hub, The University of Sydney, Camperdown, NSW, Australia
Joel Nothman
Instituto de Astrofísica, Pontificia Universidad Católica de Chile, Santiago, Chile
Johannes Buchner
Max Planck Institute for Extraterrestrial Physics, Garching, Germany
Johannes Buchner
University of Stuttgart, Machine Learning and Robotics Lab, Stuttgart, Germany
Johannes Kulick
Department of Electrical Engineering, Universidade Federal de Campina Grande, Campina Grande, Brazil
José Vinícius de Miranda Cardoso
Department of Computer Science, Kiel University, Kiel, Germany
Joscha Reimer
Planetary Sciences Group and Florida Space Institute and Department of Physics, University of Central Florida, Orlando, FL, USA
Joseph Harrington
Independent researcher, Madrid, Spain
Juan Luis Cano Rodríguez
Monash Micro Imaging, Monash University, Clayton, VIC, Australia
Juan Nunez-Iglesias
Khoa Sinh học Phân tử, Tế bào và Phát triển, Đại học Colorado, Boulder, Boulder, CO, Hoa Kỳ
Justin Kuczynski
Department of Physics and Astronomy, Johns Hopkins University, Baltimore, MD, USA
Kevin Tritz
Independent researcher, Munich, Germany
Martin Thoma
Trung tâm nguồn bức xạ tiên tiến, Đại học Chicago, Chicago, IL, Hoa Kỳ
Matthew Newville
University of Tübingen, Tübingen, Germany
Matthias Kümmerer
Nhà nghiên cứu độc lập, Rugby, Vương quốc Anh
Maximilian Bolingbroke
Two Sigma Investments, New York, NY, USA
Michael Tartre
Khoa Cơ khí, Đại học Kỹ thuật Munich, Garching, CHLB Đức
Mikhail Pak
Independent researcher, Berkeley, CA, USA
Nathaniel J. Smith
Nhà nghiên cứu độc lập, London, Vương quốc Anh
Nikolai Nowaczyk
Independent researcher, Berlin, Germany
Nikolai Shebanov
Intel Corp. , Austin, TX, Hoa Kỳ
Oleksandr Pavlyk
Nhà nghiên cứu độc lập, Horten, Na Uy
mỗi A. Brodtkorb
Nhà nghiên cứu độc lập, Thành phố Daly, CA, Hoa Kỳ
Perry Lee
D. e. Nghiên cứu Shaw, New York, NY, Hoa Kỳ
Robert T. McGibbon
Phòng Sinh học Hệ thống Tính toán, Khoa Khoa học Vi sinh và Hệ sinh thái, Đại học Vienna, Vienna, Áo
La Mã Feldbauer
Nhà nghiên cứu độc lập, Melbourne, Australia
Sam Lewis
School of Physics and Astronomy, University of Manchester, Manchester, UK
Sam Tygier
Electrical and Computer Engineering, University of Wisconsin–Madison, Madison, WI, USA
Scott Sievert
Dipartimento di Informatica, Università degli Studi di Milano, Milan, Italy
Sebastiano Vigna
Inter-University Centre for Astronomy and Astrophysics, Ganeshkhind, Pune, India
Surhud More
Kavli Institute for the Physics and Mathematics of the Universe, Kashiwa-shi, Japan
Surhud More
Waymo LLC, Mountain View, CA, USA
Tadeusz Pudlik
Faculty of Engineering, Niigata University, Nishi-ku, Niigata, Japan
Takuya Oshima
Virginia Polytechnic Institute and State University, Blacksburg, VA, USA
Thomas J. Pingel
Aperio Software, Headingley Enterprise and Arts Centre, Leeds, UK
Thomas P. Robitaille
Independent researcher, Duisburg, Germany
Thomas Spura
Broad Institute, Cambridge, MA, USA
Thouis R. Jones
Independent researcher, Gainesville, FL, USA
Tim Cera
Department of Psychology, Humboldt University of Berlin, Berlin, Germany
Tiziano Zito
Epiq Solutions, Schaumburg, IL, USA
Tom Krauss
Max Planck Institute for Software Systems, Kaiserslautern, Germany
Utkarsh Upadhyay
Department of Psychology and Brain Sciences, Dartmouth College, Hanover, NH, USA
Yaroslav O. Halchenko
Jacobs School of Engineering, University of California San Diego, La Jolla, CA, USA
Yoshiki Vázquez-Baeza
Authors
- Pauli Virtanen
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- Ralf Gommers
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- Travis E. Oliphant
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- Matt Haberland
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- Tyler Reddy
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- David Cournapeau
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- Evgeni Burovski
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- Pearu Peterson
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- Warren Weckesser
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- Jonathan Bright
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- Stéfan J. van der Walt
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- Matthew Brett
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- Joshua Wilson
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- K. Jarrod Millman
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- Nikolay Mayorov
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- Andrew R. J. Nelson
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- Eric Jones
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- Robert Kern
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- Eric Larson
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- C J Carey
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- İlhan Polat
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- Yu Feng
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- Eric W. Moore
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- Jake VanderPlas
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- Denis Laxalde
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- Josef Perktold
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- Robert Cimrman
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- Ian Henriksen
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- E. Một. Quintero
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- Charles R. Harris
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- Anne M. Archibald
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- Antônio H. Ribeiro
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- Fabian Pedregosa
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
- Paul van Mulbregt
Xem các ấn phẩm của tác giả
You can also search for this author in PubMed Google Scholar
Consortia
SciPy 1. 0 Contributors
- Aditya Vijaykumar
- , Alessandro Pietro Bardelli
- , Alex Rothberg
- , Andreas Hilboll
- , Andreas Kloeckner
- , Anthony Scopatz
- , Antony Lee
- , Ariel Rokem
- , C. Nathan Woods
- , Chad Fulton
- , Charles Masson
- , Christian Häggström
- , Clark Fitzgerald
- , David A. Nicholson
- , David R. Hagen
- , Dmitrii V. Pasechnik
- , Emanuele Olivetti
- , Eric Martin
- , Eric Wieser
- , Fabrice Silva
- , Felix Lenders
- , Florian Wilhelm
- , G. Young
- , Gavin A. Price
- , Gert-Ludwig Ingold
- , Gregory E. Allen
- , Gregory R. Lee
- , Hervé Audren
- , Irvin Probst
- , Jörg P. Dietrich
- , Jacob Silterra
- , James T Webber
- , Janko Slavič
- , Joel Nothman
- , Johannes Buchner
- , Johannes Kulick
- , Johannes L. Schönberger
- , José Vinícius de Miranda Cardoso
- , Joscha Reimer
- , Joseph Harrington
- , Juan Luis Cano Rodríguez
- , Juan Nunez-Iglesias
- , Justin Kuczynski
- , Kevin Tritz
- , Martin Thoma
- , Matthew Newville
- , Matthias Kümmerer
- , Maximilian Bolingbroke
- , Michael Tartre
- , Mikhail Pak
- , Nathaniel J. Smith
- , Nikolai Nowaczyk
- , Nikolay Shebanov
- , Oleksandr Pavlyk
- , Per A. Brodtkorb
- , Perry Lee
- , Robert T. McGibbon
- , Roman Feldbauer
- , Sam Lewis
- , Sam Tygier
- , Scott Sievert
- , Sebastiano Vigna
- , Stefan Peterson
- , Surhud More
- , Tadeusz Pudlik
- , Takuya Oshima
- , Thomas J. Pingel
- , Thomas P. Robitaille
- , Thomas Spura
- , Thouis R. Jones
- , Tim Cera
- , Tim Leslie
- , Tiziano Zito
- , Tom Krauss
- , Utkarsh Upadhyay
- , Yaroslav O. Halchenko
- & Yoshiki Vázquez-Baeza
Contributions
P. V. and R. G. led the development of SciPy for over 10 years. T. E. O. , E. J. and P. P. created SciPy. T. R. and M. H. composed the manuscript with input from others. Các tác giả có tên khác là nhà phát triển cốt lõi của SciPy. Tất cả các tác giả đã đóng góp mã, tài liệu và/hoặc kiến thức chuyên môn quan trọng cho dự án SciPy. Tất cả các tác giả đã xem xét bản thảo
tác giả tương ứng
Thư từ cho Ralf Gommers, Matt Haberland hoặc Tyler Reddy
tuyên bố đạo đức
Lợi ích cạnh tranh
Các tuyên bố sau đây chỉ ra các liên kết trong ngành của các tác giả trong danh sách tác giả chính, nhưng không phải cho các tác giả trong SciPy 1. 0 nhóm cộng tác viên ngoài đó. Những liên kết này có thể đã thay đổi. r. G. đã làm việc cho Quansight LLC. t. E. O. , E. J. và R. K. đã làm việc cho En Thought, Inc. T. E. O. và tôi. H. Đã làm việc tại Anaconda Inc. N. M. đã làm việc cho WayRay LLC. e. W. M. đã làm việc cho Bruker Biospin Corp. F. P. và P. v. M. đã được tuyển dụng bởi Google LLC
Thông tin thêm
Thông tin đánh giá ngang hàng Rita Strack là biên tập viên chính của bài viết này và quản lý quy trình biên tập và đánh giá ngang hàng với sự cộng tác của các thành viên còn lại trong nhóm biên tập
Ghi chú của nhà xuất bản Springer Nature vẫn giữ thái độ trung lập đối với các khiếu nại về quyền tài phán trong các bản đồ đã xuất bản và các tổ chức liên kết
Thông tin bổ sung
Tóm tắt báo cáo
Quyền và quyền
Truy cập Mở Bài viết này được cấp phép theo Creative Commons Attribution 4. 0 Giấy phép Quốc tế, cho phép sử dụng, chia sẻ, điều chỉnh, phân phối và sao chép ở bất kỳ phương tiện hoặc định dạng nào, miễn là bạn cung cấp tín dụng phù hợp cho [các] tác giả gốc và nguồn, cung cấp liên kết đến giấy phép Creative Commons và cho biết . Hình ảnh hoặc tài liệu của bên thứ ba khác trong bài viết này được bao gồm trong giấy phép Creative Commons của bài viết, trừ khi có quy định khác trong hạn mức tín dụng đối với tài liệu. If material is not included in the article’s Creative Commons license and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder. Để xem bản sao của giấy phép này, hãy truy cập http. //Commons sáng tạo. org/giấy phép/bởi/4. 0/
In lại và Quyền
Về bài viết này
Trích dẫn bài viết này
Virtanen, P. , Gommers, R. , Oliphant, T. E. et al. khoa học viễn tưởng 1. 0. các thuật toán cơ bản cho tính toán khoa học trong Python. Nat Method 17, 261–272 [2020]. https. //doi. tổ chức/10. 1038/s41592-019-0686-2