Aaron Meurer, Athan Reines, R. Gommers, Yao-Lung Fang, John Kirkham, Matthew Barber, Stephan Hoyer, Andreas Müller, Sheng Zha, Saul Shanabrook, S. Gacha, Mario Lezcano-Casado, Thomas Fan, Tyler Reddy, Alexandre Passos, Hyukjin Kwon, T. Oliphant, Consortium Standards
{"title":"Python Array API Standard: Toward Array Interoperability in the Scientific Python Ecosystem","authors":"Aaron Meurer, Athan Reines, R. Gommers, Yao-Lung Fang, John Kirkham, Matthew Barber, Stephan Hoyer, Andreas Müller, Sheng Zha, Saul Shanabrook, S. Gacha, Mario Lezcano-Casado, Thomas Fan, Tyler Reddy, Alexandre Passos, Hyukjin Kwon, T. Oliphant, Consortium Standards","doi":"10.25080/gerudo-f2bc6f59-001","DOIUrl":"https://doi.org/10.25080/gerudo-f2bc6f59-001","url":null,"abstract":"—The Python array API standard specifies standardized application programming interfaces (APIs) and behaviors for array and tensor objects and operations as commonly found in libraries such as NumPy [1], CuPy [2], PyTorch [3], JAX [4], TensorFlow [5], Dask [6], and MXNet [7]. The establishment and subsequent adoption of the standard aims to reduce ecosystem fragmentation and facilitate array library interoperability in user code and among array-consuming libraries, such as scikit-learn [8] and SciPy [9]. A key benefit of array interoperability for downstream consumers of the standard is device agnosticism, whereby previously CPU-bound implementations can more readily leverage hardware acceleration via graphics processing units (GPUs), tensor processing units (TPUs), and other accelerator devices. In this paper, we first introduce the Consortium for Python Data API Standards and define the scope of the array API standard. We then discuss the current status of standardization and associated tooling (including a test suite and compatibility layer). We conclude by outlining plans for future work.","PeriodicalId":364654,"journal":{"name":"Proceedings of the Python in Science Conference","volume":"32 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130150929","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Gregory Lee, Gigon Bae, B. Zaitlen, John Kirkham, Rahul Choudhury
{"title":"cuCIM - A GPU image I/O and processing library","authors":"Gregory Lee, Gigon Bae, B. Zaitlen, John Kirkham, Rahul Choudhury","doi":"10.25080/majora-1b6fd038-022","DOIUrl":"https://doi.org/10.25080/majora-1b6fd038-022","url":null,"abstract":"","PeriodicalId":364654,"journal":{"name":"Proceedings of the Python in Science Conference","volume":"34 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127629035","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"A Pythonic Equivalent Circuit Model for Battery Research","authors":"G. Wiggins, S. Allu, Hsin Wang","doi":"10.25080/MAJORA-7DDC1DD1-015","DOIUrl":"https://doi.org/10.25080/MAJORA-7DDC1DD1-015","url":null,"abstract":"","PeriodicalId":364654,"journal":{"name":"Proceedings of the Python in Science Conference","volume":"181 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124536120","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Class-based ODE solvers and event detection in SciPy","authors":"David R. Hagen, N. Mayorov","doi":"10.25080/majora-7ddc1dd1-01b","DOIUrl":"https://doi.org/10.25080/majora-7ddc1dd1-01b","url":null,"abstract":"","PeriodicalId":364654,"journal":{"name":"Proceedings of the Python in Science Conference","volume":"53 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131214773","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"SciPy: not just a conference!","authors":"Matt Haberland","doi":"10.25080/majora-7ddc1dd1-022","DOIUrl":"https://doi.org/10.25080/majora-7ddc1dd1-022","url":null,"abstract":"","PeriodicalId":364654,"journal":{"name":"Proceedings of the Python in Science Conference","volume":"202 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121857502","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"PyMeasRF: Automating RF Device Measurements Using Python","authors":"Jackson D. Anderson, D. Weinstein","doi":"10.25080/MAJORA-7DDC1DD1-014","DOIUrl":"https://doi.org/10.25080/MAJORA-7DDC1DD1-014","url":null,"abstract":"","PeriodicalId":364654,"journal":{"name":"Proceedings of the Python in Science Conference","volume":"63 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127595580","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"SciPy 2021: An Accurate Implementation of the Studentized Range Distribution for Python","authors":"Samuel Wallan, Dominic Chmiel, Matt Haberland","doi":"10.25080/majora-1b6fd038-01e","DOIUrl":"https://doi.org/10.25080/majora-1b6fd038-01e","url":null,"abstract":"","PeriodicalId":364654,"journal":{"name":"Proceedings of the Python in Science Conference","volume":"47 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116562808","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Biomolecular Crystallographic Computing with Jupyter","authors":"B. Mooers","doi":"10.25080/gerudo-f2bc6f59-004","DOIUrl":"https://doi.org/10.25080/gerudo-f2bc6f59-004","url":null,"abstract":"—The ease of use of Jupyter notebooks has helped biologists enter scientific computing, especially in protein crystallography, where a collaborative community develops extensive libraries, user-friendly GUIs, and Python APIs. The APIs allow users to use the libraries in Jupyter. To further advance this use of Jupyter, we developed a collection of code fragments that use the vast Computational Crystallography Toolbox ( cctbx ) library for novel analyses. We made versions of this library for use in JupyterLab and Colab. We also made versions of the snippet library for the text editors VS Code, Vim, and Emacs that support editing live code cells in Jupyter notebooks via the GhostText web browser extension. Readers of this paper may be inspired to adapt this latter capability to their domains of science.","PeriodicalId":364654,"journal":{"name":"Proceedings of the Python in Science Conference","volume":"24 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123533035","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"SciPy: SciPy 2021 Tools Track","authors":"Pamphile T. Roy","doi":"10.25080/majora-1b6fd038-029","DOIUrl":"https://doi.org/10.25080/majora-1b6fd038-029","url":null,"abstract":"","PeriodicalId":364654,"journal":{"name":"Proceedings of the Python in Science Conference","volume":"6 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121084753","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Using Numba for GPU acceleration of Neutron Beamline Digital Twins","authors":"Cole Kendrick, Jiao Y. Y. Lin, G. Granroth","doi":"10.25080/gerudo-f2bc6f59-006","DOIUrl":"https://doi.org/10.25080/gerudo-f2bc6f59-006","url":null,"abstract":"—Digital twins of neutron instruments using Monte Carlo ray tracing have proven to be useful in neutron data analysis and verifying instrument and sample designs. However, these simulations can become quite complex and computationally demanding with tens of billions of neutrons. In this paper, we present a GPU accelerated version of MCViNE using Python and Numba to balance user extensibility with performance. Numba is an open-source just-in-time (JIT) compiler for Python using LLVM to generate efficient machine code for CPUs and GPUs with NVIDIA CUDA. The JIT nature of Numba allowed complex instrument kernels to be generated easily. Initial simulations have shown a speedup between 200-1000x over the original CPU implementation. The performance gain with Numba enables more sophisticated data analysis and impacts neutron scattering science and instrument design.","PeriodicalId":364654,"journal":{"name":"Proceedings of the Python in Science Conference","volume":"8 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126401354","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}