Domain Researchers Software Engineers JUPYTER-IDE [ALSO] HAS: a short primer and example of literate programming for research contexts a self-paced tutorial on the Git extension and version control a curated list of extensions with tutorials giving users access to featurs like language server processing REPO BACKGROUND Research software engineers exist on a continuum of different backgrounds and skill sets, often using different tools and approaches for programming. Preferred development platforms each have their own advantages which cater to various users, but when programmers collaborate closely it can be beneficial to use a shared platform to encourage the shared use of shared practices. JupyterLab, an extensible platform, is capable of supporting a wide variety of development approaches and practices. We propose JupyterLab as an ideal platform for collaboration among programmers that prefer platforms ranging from Jupyter Notebooks to more traditional IDEs. We introduce JupyterIDE, a set of tutorials to assist interdisciplinary teams in converging on a set of shared best practices centered around JupyterLab. Domain Researchers Software Engineers Branches Tags New Branch Filter Changes History Summary (required) Commit import cv2 import PIL import numpy as np wellspelt_var = cv2.imread(“path/to/file.jpg”) wellspelt_array = np.array(misspelt_var) Code Python 3 (ipykernel) Severity SOLUTION JupyterIDE provides short modules explaining core software development practices, like Git version control, implemented in JupyterLab. For individuals who want more features in JupyterLab, there are independent modules explaining other features available through curated extensions for JupyterLab. Lastly, there is a short primer on the intersection of iterative and literate programming approaches that is designed with research contexts in mind. may benefit from a solid understanding of basic version control can benefit from a shared coding paradigm for research software may want a development tool with more features Now we will import a test image from our data folder. In this case, we will use an image which is not too far from our other manuscripts. The page will not have any significant blemishes, just to see if we can get a standard preprocessing method going. We will also convert it to a numpy array to test some specific methods. With this image, we will try a couple different ‘kernel’ sizes for the different convolutions we will be using for any number of different tasks like edge extraction, binarization, and so on. We will also test a number of different boundary conditions to see if we end up served better with one of them or another. First, we will use the cv2 library for edge extraction. You can see below some of the different methods already built into the library for this sort of purpose. ACKNOWLEDGMENTS This work was supported by the Better Scientific Software Fellowship Program, funded Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the DOE or NSF. by the Exascale Computing Project (17-SC-20-SC), a collaborative effort of the U.S. Department of Energy (DOE) Office of Science and the National Nuclear Security Administration; and by the National Science Foundation (NSF) under Grant No. 2154495. JupyterIDE JupyterIDE Promoting JupyterLab features and Promoting JupyterLab features and extensions that facilitate collaboration extensions that facilitate collaboration among researchers and RSEs among researchers and RSEs dcostel5@asu.edu nbrewer6@asu.edu nshah50@asu.edu David Costello Nicole Brewer Namita Shah POTENTIAL NEEDS: File Edit View Run Kernel Settings Tabs Current Repository jupyterlab-ide Current Branch main main thresholding preProcessingInterface test.ipynb sensitiveData Changed Staged Untracked (0) (1) (1) Description test.ipynb Diagnostics Panel Message Code Source Cell Line Ch pyflakes mypy pyflakes PIL importe