Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 2 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,12 @@ Click here to go to our [Course Website](https://umgcccfcsr.github.io/CytometryI

# Participating

The course will start the first week of February, with Week #1 resources being released on Sunday, February 1st at 2200 EST (Monday 0300 GMT+0). See below for additional details.

## Resources

The pre-course learning materials are now [available](https://umgcccfcsr.github.io/CytometryInR/course/00_GitHub/) , providing walkthroughs of how to set up your workstations with the required software, and exercises to help you become more familiar with the various teaching and coding resources we will be using throughout the course.

Narrated versions of the walk through materials will be available starting next week via [YouTube](https://www.youtube.com/@CytometryInR)
The course started up the first week of February. Course materials can be found [here](/course/00_GitHub/index.qmd) or via the Course tab in the navigation bar. The livestream recordings are available via [YouTube](https://www.youtube.com/@CytometryInR). See below for additional details.


## In-Person (Baltimore)

For those joining us in person, the class is being offered on Monday, Tuesday and Thursday from **4-5 pm EST** in Bressler Research Building Room 7-035. We invite you to make whichever session best fits your schedule. Monitors to plug your laptops in will be available on a first come, first served basis. These in-person sessions will not be recorded, but with the smaller class size you will have our undivided attention should you have any questions.
For those joining us in person, the class is being offered on Thursday from **4-5 pm EST** in Bressler Research Building Room 7-035. Monitors to plug your laptops in will be available on a first come, first served basis. These in-person sessions will not be recorded, but with the smaller class size you will have our undivided attention should you have any questions.

## Virtual (Worldwide)

Expand Down
10 changes: 5 additions & 5 deletions Schedule.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,8 @@ sidebar: false

Cytometry in R is a free virtual mini-course being organized by the [Flow Cytometry Shared Resource](https://www.medschool.umaryland.edu/cibr/core/umgccc_flow/) core at the University of Maryland's [Greenebaum Comprehensive Cancer Center](https://www.umms.org/umgccc). This course is a passion project arising from our desire to contribute back to the community. We are excited that you have chosen to take part and look forward to helping you get started on your own learning journey.

If you did not complete the original interest form, and would like to be added to our mailing list, please complete the form [here](https://docs.google.com/forms/d/e/1FAIpQLScPK4V_WNSgQvZNq7aIHpoiX8pi3kiuCfI0Tp7hQkVJS3HPtQ/viewform?usp=publish-editor)
Course materials can be found [here](/course/00_GitHub/index.qmd) or via the Course tab in the navigation bar. The livestream recordings are available via [YouTube](https://www.youtube.com/@CytometryInR)

The pre-course learning materials are now [available](/course/00_GitHub/index.qmd) via the Course tab. They consist of walkthroughs of how to set up your workstations with the required software, and exercises to help you become more familiar with the various teaching and coding resources we will be using throughout the course.

<br>

Expand Down Expand Up @@ -63,7 +62,7 @@ The pre-course learning materials are now [available](/course/00_GitHub/index.qm

![](images/histograms.png){width=75%}

[**Week 4: February 23, 2026**]{.underline} Within this session, we explore how the various [tidyverse](https://tidyverse.org/) packages can be utilized to reorganize rows and columns of data in ways that are useful for data analysis. We will primarily work with the MFI expression data we isolated from within the .fcs file in the previous session, identifying and isolating events that meet certain criterias. We introduce the concepts behind ["tidy"](https://vita.had.co.nz/papers/tidy-data.pdf) data and how it can improve our workflows.
[**Week 4: February 23, 2026**]{.underline} Within this [fourth session](/course/04_IntroToTidyverse/index.qmd), we explore how the various [tidyverse](https://tidyverse.org/) packages can be utilized to reorganize rows and columns of data in ways that are useful for data analysis. We will primarily work with the MFI expression data we isolated from within the .fcs file in the previous session, identifying and isolating events that meet certain criterias. We introduce the concepts behind ["tidy"](https://vita.had.co.nz/papers/tidy-data.pdf) data and how it can improve our workflows.

<br>
<br>
Expand All @@ -72,7 +71,7 @@ The pre-course learning materials are now [available](/course/00_GitHub/index.qm

![](images/GatingSets.png){width=75%}

[**Week 5: March 2, 2026**]{.underline} As part of this session, we learn about the two main flow cytometry infrastructure packages in R we will be working with during the course, [flowcore](https://www.bioconductor.org/packages/release/bioc/vignettes/flowCore/inst/doc/HowTo-flowCore.pdf) and [flowWorkspace](https://www.bioconductor.org/packages/release/bioc/vignettes/flowWorkspace/inst/doc/flowWorkspace-Introduction.html). Throughout the session, we will compare how they differ in naming, memory usage, and accessing .fcs file metadata. We additionally explore how to add keywords to their respective metadata for use in filtering specimens of interest from the larger set of .fcs files.
[**Week 5: March 2, 2026**]{.underline} As part of this [fifth session](/course/05_GatingSets/index.qmd), we learn about the two main flow cytometry infrastructure packages in R we will be working with during the course, [flowcore](https://www.bioconductor.org/packages/release/bioc/vignettes/flowCore/inst/doc/HowTo-flowCore.pdf) and [flowWorkspace](https://www.bioconductor.org/packages/release/bioc/vignettes/flowWorkspace/inst/doc/flowWorkspace-Introduction.html). Throughout the session, we will compare how they differ in naming, memory usage, and accessing .fcs file metadata. We additionally explore how to add keywords to their respective metadata for use in filtering specimens of interest from the larger set of .fcs files.

<br>
<br>
Expand Down Expand Up @@ -194,7 +193,8 @@ No class week of March 30, 2026. If you are attending the [ABRF conference](http

### Conference Break 2

No class week of June 8, 2026. If you are attending the [Cyto conference](https://www.cytoconference.org/?gad_source=1&gad_campaignid=20633392465&gbraid=0AAAAADoJzsvHaLZAq9tqn_aTAQGEzIk_V&gclid=CjwKCAiA-sXMBhAOEiwAGGw6LJFFV69xaAU3s7bElL86RdnRNFwAYqOQO78MrIYQuG1qvRU6HTN3ZRoCGmAQAvD_BwE), track me down at my talks and posters.
No class week of June 8, 2026. If you are attending the [Cyto conference](https://www.cytoconference.org/?gad_source=1&gad_campaignid=20633392465&gbraid=0AAAAADoJzsvHaLZAq9tqn_aTAQGEzIk_V&gclid=CjwKCAiA-sXMBhAOEiwAGGw6LJFFV69xaAU3s7bElL86RdnRNFwAYqOQO78MrIYQuG1qvRU6HTN3ZRoCGmAQAvD_BwE), track me down at my talks ([Open-Source automation](https://davidrach.github.io/abstracts.html#cyto-2026---flow-awarenesss) on June 7, 10:30-11:30AM at Grand Ballroom;
and [Semi-supervised pipeline](https://davidrach.github.io/abstracts.html#cyto-2026---alpha-beta) on June 9, 10:30-11:45AM atRoom 2DEF) or poster (grab some Cytometry in R course hex stickers!)

<br>
<br>
Expand Down
7 changes: 6 additions & 1 deletion _quarto.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ project:
- 01_*
- 02_*
- 03_*
- 04_*
- 05_*
website:
google-analytics: "G-LZ35J3XE4D"
announcement:
Expand Down Expand Up @@ -61,14 +63,17 @@ website:
- text: "00 - Floreada"
href: course/00_Floreada/index.qmd
- section: "Intro to R"
href: course/01_InstallingRPackages/index.qmd
contents:
- text: "01 - Installing R Packages"
href: course/01_InstallingRPackages/index.qmd
- text: "02 - File Paths"
href: course/02_FilePaths/index.qmd
- text: "03 - Inside a .FCS file"
href: course/03_InsideFCSFile/index.qmd
- text: "04 - Intro to Tidyverse"
href: course/04_IntroToTidyverse/index.qmd
- text: "05 - Gating Sets"
href: course/05_GatingSets/index.qmd
- section: "Cytometry Core"
href: Schedule.qmd
- section: "Beyond the Sandbox"
Expand Down
Binary file added course/00_BonusContent/images/CommitMessage.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion course/00_Homeworks/index.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,7 @@ Proceed to push the branch to GitHub.

---

# Re-sync if necessary
### Re-sync if necessary

If additional changes have occured to the parent CytometryInR repository, go ahead and update your branch. As long as your edits occurred within your folder inside homework folders, they should still be able to merge.

Expand Down
88 changes: 88 additions & 0 deletions course/04_IntroToTidyverse/BonusContent.qmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
---
title: "Bonus Content"
author: "David Rach"
date: 02-23-2026
format: html
toc: true
toc-depth: 5
---

![](/images/WebsiteBanner.png)

::: {style="text-align: right;"}
[![AGPL-3.0](https://img.shields.io/badge/license-AGPLv3-blue)](https://www.gnu.org/licenses/agpl-3.0.en.html) [![CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](http://creativecommons.org/licenses/by-sa/4.0/)
:::

```{r}
thefilepath <- file.path("data", "Dataset.csv")

thefilepath
```

```{r}
Data <- read.csv(file=thefilepath, check.names=FALSE)
colnames(Data)
```

## Pull

## Case-When

Case-when is an useful function, but may be a bit much to try to teach in the main segment. Basically, when the condition on the left side of the ~ is fulfilled, it will execute what is being specified on the right hand side.

In turn, we can combine these together by adding a ",". I tend to use this mutate str_detect case_when combination when encountering messy data out in the while where I need to selectively change particular cell values in a consistent reproducible manner

# Quasiquosure

```{r}
library(dplyr)
DateColumn <- select(Data, Date)
DateColumn
```


## Selecting Columns (Base R)

As we saw [last week](/course/03_InsideFCSFile/index.qmd), there are multiple ways to select values from particular columns in base R. If we had wanted to retrieve the "Date" column, why not first identify its index position, and use [,] to extract the underlying data?

```{r}
colnames(Data)
```

```{r}
colnames(Data)[4]
```

```{r}
DataColumn <- Data[,4] # Column specified after the ,
DataColumn
```

However, looking at the output, we see this looks like the values, not a column. Our suspicions are confirmed when running DataColumn

```{r}
str(DataColumn)
```

This is similarly the case when we use the $ accessor.

```{r}
DataColumn <- Data$Date
str(DataColumn)
```

```{r}
head(DataColumn, 3)
```

By contrast, when selecting two columns, the structure is maintained.

```{r}
TwoColumns <- Data[,4:5]
```

Why is the data.frame column structure lost in base R when isolating a single data.frame column? And who thought to make it that convoluted? If we were an R course in early 2010s, we might go into an explanation, but fortunately, we don't need to understand why, we have the `dplyr` R package to rescue us.

::: {style="text-align: right;"}
[![AGPL-3.0](https://www.gnu.org/graphics/agplv3-with-text-162x68.png)](https://www.gnu.org/licenses/agpl-3.0.en.html) [![CC BY-SA 4.0](https://licensebuttons.net/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/)
:::
Loading