Skip to content

Commit 3f2cd99

Browse files
committed
Added 10000 foot view post and updated student pages and posts
1 parent 7d74f45 commit 3f2cd99

File tree

10 files changed

+119
-16
lines changed

10 files changed

+119
-16
lines changed

assets/media/10000-foot-view.png

706 KB
Loading

config/_default/menus.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ main:
1212
weight: 20
1313
- name: Publications
1414
url: publication
15-
weight: 50
15+
weight: 30
1616
- name: Resources
1717
url: resources
1818
weight: 40

content/about/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ sections:
3535
title: Our Mission
3636
subtitle:
3737
text: |
38-
However, our knowledge base is intended for a **research-oriented audience**, including computational scientists, [research software engineers](https://us-rse.org/about/what-is-an-rse/) (RSEs), [academic data scientists](https://academicdatascience.org/community-projects/career-guidebook/), social sciences, digital humanities researchers, and students, and anyone else who use Jupyter Notebooks to conduct research. Our aim is to provide rich resources for researchers, students, and RCD professionals about **better practices** to improve the **accessibility**, **reuse**, and **reproducibility** of their scientific software, data, and computational workflows.
38+
However, our knowledge base is intended for a **research-oriented audience**, including computational scientists, [research software engineers](https://us-rse.org/about/what-is-an-rse/) (RSEs), [academic data scientists](https://academicdatascience.org/community-projects/career-guidebook/), social scientists, digital humanities researchers, and students, and anyone else who use Jupyter Notebooks to conduct research. Our aim is to provide rich resources for researchers, students, and RCD professionals about **better practices** to improve the **accessibility**, **reuse**, and **reproducibility** of their scientific software, data, and computational workflows.
3939

4040
design:
4141
columns: '1'

content/authors/david_costello/_index.md

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,12 @@ organizations:
2222
url: ''
2323

2424
# Short bio (displayed in user profile at end of posts)
25-
bio: My research interests include math.
25+
bio: David is a senior at Arizona State University and Barrett, the Honors College majoring in mathematics doing research in Greek manuscript transcription. He was an intern with Jupyter4Science project for the better part of 2023.
2626

2727
interests:
2828
- Math
29+
- Greek and Hebrew
30+
- Digital Humanities
2931

3032
education:
3133
courses:
@@ -62,16 +64,10 @@ user_groups:
6264
- Undergraduate Students
6365
---
6466

65-
### Hi, my name is David (Costello) 👋
66-
6767
I am a senior at ASU studying mathematics doing research in Greek manuscript transcription. The hope is to create a way of automatically transcribing handwritten Greek texts for analysis in the Digital Humanities.
6868

6969
I come from Grand Junction, CO, ⛰️🏜️ so I have a significant interest in pursuing research for agriculture, urban development, and water rights/use in the future as a way to give back to a community that has given me so much.
7070

71-
I started my college years pursuing a degree in biophysics, but I found the mathematics and the philosophy of science and logic more interesting.
72-
73-
Fun fact - My GitHub username (Dcosthephalump) comes from my oldest sibling and I have used it for over a decade now.
74-
7571
Outside of mathematics (in a loose order):
7672

7773
📝 I am applying for a PhD at ASU (looking at Computer Science, Applied Mathematics, Complex Adaptive Systems Science)

content/authors/namita_shah/_index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ organizations:
2222
url: ''
2323

2424
# Short bio (displayed in user profile at end of posts)
25-
bio: My research interests include Computer Science.
25+
bio: Namita is currently a junior pursuing Computer Science at Ira Fulton School of Engineering and Barrett, the Honors College, with minors in Data Science and Educational Studies. She is also an intern for the Jupyter4Science project.
2626

2727
interests:
2828
- Teaching

content/posts/20-12-02-ICML-best-paper/index.md renamed to content/posts/2023-12-02-ipywidgets-vs-dash/index.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
---
2-
title: IPyWidgets v Dash for GUI Image Processing
2+
title: ipywidgets vs. Dash for Image Processing Web Application
3+
slug: ipywidgets-vs-dash
34
date: 2023-12-02
45
image:
56
focal_point: 'top'
6-
authors: ["david_costello", "admin"]
7+
authors: ["david_costello"]
8+
tags: ["user-interface", "ipywidgets", "Dash", "image-processing", "web-application"]
79
---
810

911
### Introduction
@@ -15,7 +17,7 @@ There were a lot of reasons to use the [IPyWidgets](https://ipywidgets.readthedo
1517

1618
#### Model View Controller Digression
1719

18-
> One of the most common patterns for developing software applications with a graphical interface is the Model-View-Controller ( or MVC) pattern. Any application developed with this pattern in mind separates the application into three components with different purposes. The *model* handles data structures and data manipulations. The *view* is what the user sees and interacts with. The *controller* is the part of the application that allows the model and the view components to communicate with each other, sort of like a switchboard operator receiving a call and making sure the right recipient is connected to it. An example would be a video game where users, viewing a gameplay scenario, input commands to move a character and the model, ordered by the controller, updates the view after doing the necessary computation to change what the environment looks like during movement. If you want to learn more about this software pattern, you can start [here](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller).
20+
> One of the most common patterns for developing software applications with a graphical interface is the Model-View-Controller (or MVC) pattern. Any application developed with this pattern in mind separates the application into three components with different purposes. The *model* handles data structures and data manipulations. The *view* is what the user sees and interacts with. The *controller* is the part of the application that allows the model and the view components to communicate with each other, sort of like a switchboard operator receiving a call and making sure the right recipient is connected to it. An example would be a video game where users, viewing a gameplay scenario, input commands to move a character and the model, ordered by the controller, updates the view after doing the necessary computation to change what the environment looks like during movement. If you want to learn more about this software pattern, you can start [here](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller).
1921

2022
The centerpiece of my application is the interactive image processing. Python has several libraries which are good for non-interactive image processing such as [OpenCV](https://opencv.org/) and [PIL](https://pillow.readthedocs.io/en/stable/). Beyond the functionality in these libraries, I wanted users to be able to draw a line over text in a manuscript image and then associate the coordinates of that line with a manual transcription to create training data for Tesseract to use. <!---**[THIS IS WHERE AN IMAGE IS NEEDED]** --> Using the model-view-controller pattern, I wanted the lines drawn over the image, as a change in view, to be connected to the controller that could then cause a change in the model to store data. However, this was not possible with IPyWidgets. There is [a widget](https://ipywidgets.readthedocs.io/en/stable/examples/Widget%20List.html#image) in the IPyWidgets library that displays an image but does not allow users to draw on the image. There was an [interactive graph element](https://holoviews.org/reference/streams/bokeh/BoxEdit.html) compatible with IPyWidgets that could be hooked into the application controller that could theoretically use an image as a background element, but, due to an unfixed bug, I could not make the element work. After trying out multiple different libraries, I settled on [Dash](https://dash.plotly.com/) because it had a [robust web element](https://dash.plotly.com/annotations) capable of allowing users to annotate images and accessing that annotation with the application controller while the application was running. So I needed to learn the new library.
2123

content/posts/20-12-01-wowchemy-prize/index.md renamed to content/posts/2024-01-12-network-visualizations/index.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
---
22
title: Exploring Network Visualization in Jupyter Notebooks
3+
subtitle: A Comparison of ipycytoscape and ipysigma
4+
slug: network-visualizations
35
date: 2024-01-12
4-
authors: ["namita_shah", "admin"]
6+
authors: ["namita_shah"]
7+
tags: ["networks", "user-interface", "ipycytoscape", "ipysigma"]
58
---
69

7-
Exploring Network Visualization in Jupyter Notebooks: A Comparison of ipycytoscape and ipysigma
8-
910
## INTRODUCTION
1011

1112
In the realm of data science and network analysis, Jupyter Notebooks have become an increasingly popular platform for exploring and visualizing complex relationships. When dealing with large datasets, we'll compare two prominent network visualization libraries for Jupyter Notebooks—ipycytoscape and ipysigma—in the context of our use case.
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
---
2+
title: 10,000 Foot View of Jupyter4Science
3+
author: "admin"
4+
date: '2024-02-27'
5+
slug: 10000-foot-view
6+
categories: []
7+
tags: []
8+
subtitle: ''
9+
summary: 'In this post we give a 10,000 foot view of the kind of content you can expect to see on Jupyter4Science. Before getting into individual topics, we will review what Jupyter Notebooks are, how they are most commonly used in the context of research, and what value of Jupyter Notebooks in collaborative settings.'
10+
authors: []
11+
lastmod: '2024-02-27T23:02:44-07:00'
12+
featured: no
13+
image:
14+
caption: ''
15+
focal_point: ''
16+
preview_only: no
17+
projects: []
18+
---
19+
20+
The purpose of this post is to give you, the reader, a 10,000 foot view of the kind of content you can expect to see on the site. Before getting into individual topics, we will review what Jupyter Notebooks are, how they are most commonly used in the context of research, and what value the Jupyter notebook format brings to the table.
21+
22+
### Jupyter Notebook and the Jupyter Ecosystem
23+
Computational notebooks come in many varieties, but they all have one thing in common: much like traditional laboratory notebooks, computational notebooks contain code cells interspersed with text that can be used to explain and narrate their analysis. Jupyter Notebook is one such format of a computational notebook (files ending in the extension `.ipynb`), but the term also refers to the classic browser-based interface that is used to create such documents.
24+
25+
{{< figure src="1000-foot-view.png" >}}
26+
27+
Jupyter Notebook is just one of many projects, like JupyterLab and Jupyter Widgets, at the core of the broader open-source ecosystem, all of which are used in reseach.
28+
29+
### Jupyter Notebooks as Computational Workflows
30+
31+
In research settings, Jupyter Notebooks are often used to create and share procedural documents called **computational workflows**, which document data sources, steps in analysis, mathematical calculations, and findings. Jupyter Notebooks, which support code cells in many languages, markdown, and LaTeX, often comprise the entire workflow from data input to graphical result. However, notebooks can also represent a single step in a much larger research workflow which is coordinated on a supercomputer.
32+
33+
### The Value Proposition of Jupyter Notebooks a Tools Collaboration
34+
Jupyter can be ideal platform for development in collaborative settings where computational scientists, research software engineers, academic data scientists, and other research computing and data (RCD) professionals collaborate with researchers who often are expected to inherit and maintain the code in the long run.
35+
36+
## Topics you can expect to see on Jupyter4Science
37+
38+
The [Jupyter4Science]({{< ref "/" >}}) site is both a blog and set of curated resources about developing, reproducing, sharing, and publishing Jupyter Notebooks in a research setting. This site was a product of a [Better Scientific Software fellowship ](https://bssw.io/fellows/nicole-brewer), which aimed to improve accessibility of research data and software through a lesser-known known use of Jupyter Notebooks: scientific web applications. The content of the site has since expanded to include a broader array of resources, including blog posts, templates, example notebooks, tutorials, publications, podcast episodes, and more. Topics include...
39+
40+
- [Notebooks as Computational Workflows](#notebooks-as-computational-workflows)
41+
- [Development Environments for Jupyter Notebooks](#Development-Environments-for-Jupyter-Notebooks)
42+
- [Reproducible Environments](#Reproducible-Environments)
43+
- [Sharing Notebooks](#Sharing-Notebooks)
44+
- [Creating Publications with Quarto](#Creating-Publications-with-Quarto)
45+
- [Templates and Best Practices](#Templates-and-Best-Practices)
46+
- [Jupyter Notebooks as Peer-Reviewed Objects](#Jupyter-Notebooks-as-Peer-Reviewed-Objects)
47+
- [Building Data Dashboards and Web Applications with Jupyter Notebooks](#Building-Data-Dashboards-and-Web-Applications-with-Jupyter-Notebooks)
48+
49+
50+
### Development Environments for Jupyter Notebooks
51+
52+
There are many development environments one could choose to edit Jupyter Notebooks in. A plain text editor like "TextEdit" on Mac and "Notepad" on Windows is not one of them, because under the hood, Jupyter Notebook files actually contain a whole bunch of JSON. Though these files are technically human-readible, they are very difficult to look at.
53+
54+
<!--?picture-->
55+
56+
But no fear, there are many environment choices that are suitable for developing Jupyter Notebooks. Perhaps the most famous is the [classic Jupyter Notebook interface](https://jupyter-notebook.readthedocs.io/en/latest/), which allows the user to edit one file in each tab of their browser.
57+
58+
<!--picture-->
59+
60+
If you have a strong software engineering background, you may already have a preference for an Integrated Development Environment, or IDE. Popular IDE's like [VSCode](https://code.visualstudio.com/) and [PyCharm](https://www.jetbrains.com/pycharm/), which both have [decent features for developing](https://code.visualstudio.com/docs/datascience/jupyter-notebooks) notebooks. [ReviewNB](https://www.reviewnb.com/) has an excellent blog post about [choosing the right IDE](https://blog.reviewnb.com/choosing-the-right-ide/).
61+
62+
Finally, we want to talk about [JupyterLab](https://jupyterlab.readthedocs.io/en/latest/), which is is a more flexible interface for notebook development that allows users to click and drag more than one notebook or file side by side.
63+
64+
<!--picture-->
65+
66+
JupyterLab is sort of the best of both worlds when it comes to ease of entry and support for more advanced features. We believe that JupyterLab is a great choice for developers who are not already closely aquainted with a favorite IDE, but they are developing notebooks often enough to give the more advanced IDE-like features a try.
67+
68+
Our [JupyterIDE](https://github.com/Accessible-Data-and-Code/jupyterlab-ide) repository was designed with this person in mind. JupyterIDE contains a list of useful extensions that can be easily installed to improve the development experience. The repository contains tutorials for how to use some of these extensions that provides useful features, for example, code completion. These tutorial were made with beginners in mind, and require no prior knowledge of IDE-like features, which is why we think developing notebooks in JupyterLab is a great stepping stone for developers who want to try out these features without having to how to learn an entirely new development environment.
69+
70+
### Reproducible Environments
71+
72+
Once you have picked a development environment, you may wonder what the best practices are for using Jupyter Notebooks in science and research contexts. It is important that notebooks used for research are computationally reproducible, meaning that, given all the files in your repository, an independent researcher could run your notebook without modification. This means that person reproducing your workflow doesn't have to guess which libraries you used to run the notebook. Ideally, your repository should have an environment or requirements file that makes it easy for the next person to download all the libraries they need to run your notebook. There are several choices for managing environments, but we recommend using [conda](https://docs.conda.io/en/latest/) to manage your environment. Check out [this post by Anaconda](https://www.anaconda.com/blog/8-levels-of-reproducibility) discusses various levels of reproducibility than can be achieved using conda.
73+
74+
### Sharing Notebooks
75+
76+
If you are looking to quickly share your notebook over the web for free, the [Binder](https://mybinder.org/) project, may be the easiest way to do so. Binder just requires that you provide a link to a GitHub repository containing a notebook and an environment file and it takes care of the rest! Binder makes it easy to share your interactive workflows with colleages.
77+
78+
### Creating Publications with Quarto
79+
80+
[Quarto](https://quarto.org/) is an open-source publishing platform authors can use to [turn notebooks into static output formats](https://quarto.org/docs/tools/jupyter-lab.html) such as HTML web pages and PDFs. Users can chose to include code blocks or graphical outputs produced by the code cell (like a graph), or both!
81+
82+
<!--picture-->
83+
84+
### Templates and Best Practices
85+
86+
Best practices are implemented in the [Notebook template repository](https://github.com/USRSE/jupyter-notebook-templates), which was created by the [United States Research Software Engineering Association](https://us-rse.org/) (US-RSE) for their inaugural conference in 2023.
87+
88+
### Jupyter Notebooks as Peer-Reviewed Objects
89+
90+
Speaking of conferences, notebooks are becoming an important part of scientific workflows. The academic system currently places high emphasis on peer-reviewed publications, but what if there was a way to bring these two important parts of the scientific process closer together to reduce researcher workload and improve better practices? There are many nascent efforts taking place on this front. The US-RSE conference [accepted Notebooks for peer-review]() starting in 2023. [American Geophysical Union](https://www.agu.org/) (AGU), through the Alfred P. Sloan funded effort [Notebooks Now!](https://agu-submission.curve.space/) are also spearheading efforts to standardize notebooks as a primary scholarly output formally included in peer review. There are also [electronic journals](https://www.journalovi.org/submit.html#experimental) popping up that accept Juptyer-notebook based submissions. Consider sharing your work with a broader audience by submitting to these venues!
91+
92+
93+
### Building Data Dashboards and Web Applications with Jupyter Notebooks
94+
95+
Another great way to share your research code and data to a broader audience is by creating a web application. For researchers, such a software development may feel combersome, but Jupyter Notebooks provides tool for rapidly developing simple, but highly interactice user interfaces. [Jupyter Widgets](https://github.com/jupyter-widgets/ipywidgets) allow users to add click and drag components to change variable values and interact with the visualizations in their workflows.
96+
97+
<!-- gif-->
98+
99+
In combination with a tool called [Voilà](https://github.com/voila-dashboards/voila), which hides the code cells in the notebook leaving only the widgets visible, developers familiar with Jupyter Notebooks can easily turn an interactive research workflow into a standalone data dashboard or web application. See the tutorial,
100+
["How the Little Jupyter Notebook Became a Web App: Managing Increasing Complexity with nbdev"]({{< ref "/resources/scipy23" >}}).
101+
102+
### Conclusion
103+
104+
Jupyter4Science contains original content and curated resources about developing and sharing Jupyter Notebooks as they are used in the context of research. If you have resources to share or original content to propose, please visit [Contribute]({{< ref "/contribute" >}}) to learn more about how to get involved.

0 commit comments

Comments
 (0)