Skip to content

Commit

Permalink
Updated schedule
Browse files Browse the repository at this point in the history
  • Loading branch information
royfrancis committed Jan 17, 2024
1 parent 7373b4b commit 632015f
Show file tree
Hide file tree
Showing 6 changed files with 172 additions and 129 deletions.
178 changes: 105 additions & 73 deletions docs/home_schedule.html

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ <h2 class="anchored" data-anchor-id="single-cell-rna-seq-analysis">Single Cell R
</ul>
</div>
<div class="small">
<p>Updated: 16-01-2024 at 23:30:26.</p>
<p>Updated: 17-01-2024 at 19:57:32.</p>
</div>
</section>
</div>
Expand Down
4 changes: 2 additions & 2 deletions docs/search.json
Original file line number Diff line number Diff line change
Expand Up @@ -1397,7 +1397,7 @@
"href": "index.html#single-cell-rna-seq-analysis",
"title": "",
"section": "Single Cell RNA-seq Analysis",
"text": "Single Cell RNA-seq Analysis\n\n\nOverview of scRNAseq technologies\nQC, normalization and transformation\nDimensionality reduction and clustering\nDifferential gene expression\nCelltype prediction\nTrajectory analysis\nSeurat, Bioconductor and Scanpy toolkits\n\n\n\nUpdated: 16-01-2024 at 23:30:26."
"text": "Single Cell RNA-seq Analysis\n\n\nOverview of scRNAseq technologies\nQC, normalization and transformation\nDimensionality reduction and clustering\nDifferential gene expression\nCelltype prediction\nTrajectory analysis\nSeurat, Bioconductor and Scanpy toolkits\n\n\n\nUpdated: 17-01-2024 at 19:57:32."
},
{
"objectID": "home_contents.html",
Expand Down Expand Up @@ -1481,7 +1481,7 @@
"href": "home_schedule.html",
"title": "Schedule",
"section": "",
"text": "Note\n\n\n\nSchedule is preliminary and may be subject to change.\n\n\n\n\n\n\n\n\nTime\nTopic\nTeacher\n\n\n\n\n30-Jan-2024TueUppsala\n\n\n09:00 - 09:30\nWelcome and general introduction \nÅsa Björklund\n\n\n09:30 - 10:30\nLecture: scRNAseq methods and ESCG platform \nHenrik Gezelius\n\n\n10:30 - 11:00\nBreak\n\n\n\n11:00 - 12:00\nLecture: Quality control \nÅsa Björklund\n\n\n11:45 - 13:00\nLunch\n\n\n\n13:00 - 13:30\nIntro to Exercises \nÅsa Björklund\n\n\n13:30 - 15:00\nLab: Quality control \nÅsa Björklund\n\n\n15:00 - 15:30\nBreak\n\n\n\n15:30 - 16:30\nLecture: Data normalization \nÅsa Björklund\n\n\n16:30 - 17:00\nWrap Up\n\n\n\n31-Jan-2024WedUppsala\n\n\n09:00 - 10:00\nLecture: Dimensionality reduction \nPaulo Czarnewski\n\n\n10:00 - 10:30\nBreak\n\n\n\n10:30 - 12:00\nLab: Dimensionality reduction \nPaulo Czarnewski\n\n\n11:45 - 13:00\nLunch\n\n\n\n13:00 - 14:00\nLecture: Batch correction + Integration \nPaulo Czarnewski\n\n\n14:00 - 15:00\nLab: Data integration \n\n\n\n15:00 - 15:30\nBreak\n\n\n\n15:30 - 16:30\nLecture: Clustering \nÅsa Björklund\n\n\n16:30 - 18:00\nWrap Up\n\n\n\n18:00 - 21:00\nCourse Dinner\n\n\n\n01-Feb-2024ThuUppsala\n\n\n09:00 - 10:00\nLab: Clustering \n\n\n\n10:00 - 10:30\nBreak\n\n\n\n10:30 - 12:00\nLecture: Single Cell Epigenetics \nJakub Westholm\n\n\n12:00 - 13:00\nLunch\n\n\n\n13:00 - 14:00\nLecture: Differential Gene Expression \nVincent van Hoef\n\n\n14:00 - 14:30\nLecture: Gene set analysis \nPaulo Czarnewski\n\n\n14:30 - 15:00\nBreak\n\n\n\n15:00 - 16:30\nLab: Differential expression \n\n\n\n16:30 - 17:00\nWrap Up\n\n\n\n02-Feb-2024FriUppsala\n\n\n09:00 - 10:00\nLecture: Celltype prediction \nAhmed Mahfouz\n\n\n10:00 - 10:30\nBreak\n\n\n\n10:30 - 12:00\nLab: Celltype prediction \n\n\n\n12:00 - 13:00\nLunch\n\n\n\n13:00 - 14:00\nLecture: Spatial transcriptomics \nAlma Andersson\n\n\n14:00 - 15:00\nLab: Spatial transcriptomics\n\n\n\n15:00 - 15:30\nBreak\n\n\n\n16:30 - 17:00\nWrap Up\n\n\n\n03-Feb-2024SatUppsala\n\n\n09:00 - 10:00\nLecture: Trajectory inference \nPaulo Czarnewski\n\n\n10:00 - 10:30\nBreak\n\n\n\n10:30 - 11:30\nLab: Trajectory inference \n\n\n\n11:30 - 12:00\nSummary of exercises\n\n\n\n12:00 - 13:00\nLunch\n\n\n\n13:00 - 13:30\nWrap Up \n\n\n\n\n\n\n\n\n Date Venue Slides Lab Video"
"text": "Note\n\n\n\nSchedule is preliminary and may be subject to change.\n\n\n\n\n\n\n\n\nTime\nTopic\nTeacher\nAssistant\n\n\n\n\n12-Feb-2024MonUppsala\n\n\n09:00 - 09:30\nWelcome and General introduction \nÅsa Björklund\nRFRoy Francis\n\n\n09:30 - 10:30\nLecture: scRNAseq methods and ESCG platform \nHenrik Gezelius\n\n\n\n10:30 - 11:00\nBreak\n\n\n\n\n11:00 - 12:00\nLecture: Quality control \nÅsa Björklund\n\n\n\n11:45 - 13:00\nLunch\n\n\n\n\n13:00 - 13:30\nIntro to Exercises \nÅsa Björklund\nRFRoy Francis,YLYuan Li\n\n\n13:30 - 15:00\nLab: Quality control \nÅsa Björklund\nRFRoy Francis,YLYuan Li\n\n\n15:00 - 15:30\nBreak\n\n\n\n\n15:30 - 16:30\nLecture: Data normalization \nÅsa Björklund\n\n\n\n16:30 - 17:00\nWrap Up\nÅsa Björklund\n\n\n\n13-Feb-2024TueUppsala\n\n\n09:00 - 10:00\nLecture: Dimensionality reduction \nNikolay Oskolkov\n\n\n\n10:00 - 10:30\nBreak\n\n\n\n\n10:30 - 12:00\nLab: Dimensionality reduction \nNikolay Oskolkov\nABÅsa Björklund,RFRoy Francis,YLYuan Li\n\n\n11:45 - 13:00\nLunch\n\n\n\n\n13:00 - 14:00\nLecture: Batch correction + Integration \nNikolay Oskolkov\n\n\n\n14:00 - 15:00\nLab: Data integration \nNikolay Oskolkov\nABÅsa Björklund,RFRoy Francis,YLYuan Li\n\n\n15:00 - 15:30\nBreak\n\n\n\n\n15:30 - 16:30\nLecture: Clustering \nÅsa Björklund\n\n\n\n16:30 - 17:00\nWrap Up\nÅsa Björklund\n\n\n\n18:00 - 21:00\nCourse Dinner\n\n\n\n\n14-Feb-2024WedUppsala\n\n\n09:00 - 10:00\nLab: Clustering \nÅsa Björklund\nRFRoy Francis,YLYuan Li\n\n\n10:00 - 10:30\nBreak\n\n\n\n\n10:30 - 12:00\nLecture: Single Cell Epigenetics \nJakub Westholm\n\n\n\n12:00 - 13:00\nLunch\n\n\n\n\n13:00 - 14:00\nLecture: Differential Gene Expression \nRoy Francis\n\n\n\n14:00 - 14:30\nLecture: Gene set analysis \nRoy Francis\n\n\n\n14:30 - 15:00\nBreak\n\n\n\n\n15:00 - 16:30\nLab: Differential expression \nRoy Francis\nABÅsa Björklund,YLYuan Li\n\n\n16:30 - 17:00\nWrap Up\nÅsa Björklund\n\n\n\n15-Feb-2024ThuUppsala\n\n\n09:00 - 10:00\nLecture: Celltype prediction \nUnassigned\n\n\n\n10:00 - 10:30\nBreak\n\n\n\n\n10:30 - 12:00\nLab: Celltype prediction \nUnassigned\nABÅsa Björklund,RFRoy Francis,YLYuan Li\n\n\n12:00 - 13:00\nLunch\n\n\n\n\n13:00 - 14:00\nLecture: Trajectory inference \nUnassigned\n\n\n\n14:00 - 15:00\nLab: Trajectory inference \nUnassigned\nABÅsa Björklund,RFRoy Francis,YLYuan Li\n\n\n15:00 - 15:30\nBreak\n\n\n\n\n16:30 - 17:00\nWrap Up\nÅsa Björklund\n\n\n\n16-Feb-2024FriUppsala\n\n\n09:00 - 09:30\nIntro to BYOD\nÅsa Björklund\nRFRoy Francis\n\n\n09:30 - 12:00\nBYOD\nÅsa Björklund\nRFRoy Francis,YLYuan Li\n\n\n12:00 - 13:00\nLunch\n\n\n\n\n13:00 - 14:00\nWrap Up \nÅsa Björklund\n\n\n\n\n\n\n\n\n Date Venue Slides Lab Form Video"
},
{
"objectID": "home_syllabus.html",
Expand Down
4 changes: 2 additions & 2 deletions docs/sitemap.xml
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@
</url>
<url>
<loc>https://nbisweden.github.io/workshop-scrnaseq/index.html</loc>
<lastmod>2024-01-16T23:30:26.722Z</lastmod>
<lastmod>2024-01-17T19:57:32.395Z</lastmod>
</url>
<url>
<loc>https://nbisweden.github.io/workshop-scrnaseq/home_contents.html</loc>
Expand All @@ -114,7 +114,7 @@
</url>
<url>
<loc>https://nbisweden.github.io/workshop-scrnaseq/home_schedule.html</loc>
<lastmod>2024-01-16T23:30:54.369Z</lastmod>
<lastmod>2024-01-17T19:55:28.743Z</lastmod>
</url>
<url>
<loc>https://nbisweden.github.io/workshop-scrnaseq/home_syllabus.html</loc>
Expand Down
113 changes: 62 additions & 51 deletions home_schedule.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -28,19 +28,25 @@ asst <- yaml::read_yaml("_quarto.yml")$assistant
#' @description
#' @param a vector of assistants
#' @param ids named vector of assistant ids
fix_assis <- function(a,asst){
asst <- lapply(strsplit(asst,":"),trimws)
ids <- sapply(asst,"[[",1)
names(ids) <- sapply(asst,"[[",2)
fix_assis <- function(a, asst) {
asst <- lapply(strsplit(asst, ":"), trimws)
ids <- sapply(asst, "[[", 1)
names(ids) <- sapply(asst, "[[", 2)
for(i in seq_along(a)){
if(!is.na(a[i])){
x <- sapply(unlist(strsplit(a[i],",")),trimws)
y <- sapply(x,function(x) if(x %in% ids){names(ids)[match(x,ids)]}else{x})
a[i] <- paste(mapply(function(abbr,name) paste0('<span class="hover-text">',abbr,'<span class="tooltip-text top">',name,'</span></span>'),abbr=x,name=y),collapse="<span>,</span>")
}
}
return(a)
for (i in seq_along(a)) {
if (!is.na(a[i])) {
x <- sapply(unlist(strsplit(a[i], ",")), trimws)
y <- sapply(x, function(x) {
if (x %in% ids) {
names(ids)[match(x, ids)]
} else {
x
}
})
a[i] <- paste(mapply(function(abbr, name) paste0('<span class="hover-text">', abbr, '<span class="tooltip-text top">', name, "</span></span>"), abbr = x, name = y), collapse = "<span>,</span>")
}
}
return(a)
}
```

Expand All @@ -49,48 +55,50 @@ return(a)
#| eval: true
s <- readxl::read_xlsx("schedule.xlsx") %>%
# remove rows that are all NA
filter(if_any(everything(), ~ !is.na(.))) %>%
# missing values in date and room are filled
tidyr::fill(date,room,link_room,.direction="down") %>%
# convert date characters to date objects
dplyr::mutate(date=format(as_datetime(date,format="%d/%m/%Y"),"%d-%b-%Y")) %>%
dplyr::mutate(day=format(as_datetime(date,format="%d-%b-%Y"),"%a")) %>%
dplyr::group_by(date) %>%
dplyr::mutate(start_time=format(start_time,"%H:%M"),
end_time=format(end_time,"%H:%M")) %>%
as.data.frame() %>%
dplyr::mutate(room=ifelse(is.na(link_room),room,paste0("<a href='",link_room,"'>",room,"</a>"))) %>%
# create day label (with date, day, room)
dplyr::mutate(date=paste0("<p style='font-size:110%;padding-top:10px;padding-bottom:5px;margin-top:10px;'><span style='font-weight:bold;'><span class='marker'>{{< fa calendar >}}</span>",date,"</span>", "<span style='color:white;border-radius:4px;padding-right:4px;padding-left:4px;background:",color_primary,";margin-left:9px;margin-right:7px;'>",day,"</span>", "<span class='marker'>{{< fa map-marker-alt >}}</span>",room,"</p>")) %>%
# style topic
dplyr::mutate(topic=ifelse(tolower(topic)=="break" | tolower(topic)=="lunch",paste0("<span class='topic'>",topic,"</span>"),topic)) %>%
dplyr::mutate(topic=ifelse(tolower(topic)=="course dinner",paste0("<span class='topic-dinner'>",topic,"</span>"),topic)) %>%
dplyr::mutate(topic=ifelse(!startsWith(topic,"<span"),paste0("<span style='margin-right:5px;'>",topic,"</span>"),topic)) %>%
# add links to topic
dplyr::mutate(topic=ifelse(is.na(link_slide),topic,paste0("<span>",topic,"<a href='",link_slide,"'>{{< fa file-powerpoint >}}</a></span>&#160"))) %>%
dplyr::mutate(topic=ifelse(is.na(link_lab),topic,paste0("<span>",topic,"<a href='",link_lab,"'>{{< fa file-lines >}}</a></span>&#160"))) %>%
dplyr::mutate(topic=ifelse(is.na(link_youtube),topic,paste0("<span>",topic,"<a href='",link_youtube,"'>{{< fa brands youtube >}}</a></span>"))) %>%
dplyr::mutate(topic=ifelse(is.na(link_form),topic,paste0("<span>",topic,"<a href='",link_form,"'>{{< fa clipboard-list >}}</a></span>"))) %>%
dplyr::mutate(time=paste0(start_time," - ",end_time)) %>%
dplyr::mutate(teacher=ifelse(is.na(teacher),"",teacher)) %>%
dplyr::mutate(assistant=ifelse(is.na(assistant),"",assistant)) %>%
dplyr::select(date,room,time,topic,teacher,assistant)
# remove rows that are all NA
filter(if_any(everything(), ~ !is.na(.))) %>%
# missing values in date and room are filled
tidyr::fill(date, room, link_room, .direction = "down") %>%
# convert date characters to date objects
dplyr::mutate(date = format(as_datetime(date, format = "%d/%m/%Y"), "%d-%b-%Y")) %>%
dplyr::mutate(day = format(as_datetime(date, format = "%d-%b-%Y"), "%a")) %>%
dplyr::group_by(date) %>%
dplyr::mutate(
start_time = format(start_time, "%H:%M"),
end_time = format(end_time, "%H:%M")
) %>%
as.data.frame() %>%
dplyr::mutate(room = ifelse(is.na(link_room), room, paste0("<a href='", link_room, "'>", room, "</a>"))) %>%
# create day label (with date, day, room)
dplyr::mutate(date = paste0("<p style='font-size:110%;padding-top:10px;padding-bottom:5px;margin-top:10px;'><span style='font-weight:bold;'><span class='marker'>{{< fa calendar >}}</span>", date, "</span>", "<span style='color:white;border-radius:4px;padding-right:4px;padding-left:4px;background:", color_primary, ";margin-left:9px;margin-right:7px;'>", day, "</span>", "<span class='marker'>{{< fa map-marker-alt >}}</span>", room, "</p>")) %>%
# style topic
dplyr::mutate(topic = ifelse(tolower(topic) == "break" | tolower(topic) == "lunch", paste0("<span class='topic'>", topic, "</span>"), topic)) %>%
dplyr::mutate(topic = ifelse(tolower(topic) == "course dinner", paste0("<span class='topic-dinner'>", topic, "</span>"), topic)) %>%
dplyr::mutate(topic = ifelse(!startsWith(topic, "<span"), paste0("<span style='margin-right:5px;'>", topic, "</span>"), topic)) %>%
# add links to topic
dplyr::mutate(topic = ifelse(is.na(link_slide), topic, paste0("<span>", topic, "<a href='", link_slide, "'>{{< fa file-powerpoint >}}</a></span>&#160"))) %>%
dplyr::mutate(topic = ifelse(is.na(link_lab), topic, paste0("<span>", topic, "<a href='", link_lab, "'>{{< fa file-lines >}}</a></span>&#160"))) %>%
dplyr::mutate(topic = ifelse(is.na(link_youtube), topic, paste0("<span>", topic, "<a href='", link_youtube, "'>{{< fa brands youtube >}}</a></span>"))) %>%
dplyr::mutate(topic = ifelse(is.na(link_form), topic, paste0("<span>", topic, "<a href='", link_form, "'>{{< fa square-poll-vertical >}}</a></span>"))) %>%
dplyr::mutate(time = paste0(start_time, " - ", end_time)) %>%
dplyr::mutate(teacher = ifelse(is.na(teacher), "", teacher)) %>%
dplyr::mutate(assistant = ifelse(is.na(assistant), "", assistant)) %>%
dplyr::select(date, room, time, topic, teacher, assistant)
if(all(is.na(s$assistant)) | all(s$assistant=="")) {
s$assistant <- NULL
cnames <- c("Time","Topic","Teacher")
}else{
s$assistant <- fix_assis(s$assistant,asst)
cnames <- c("Time","Topic","Teacher","Assistant")
if (all(is.na(s$assistant)) | all(s$assistant == "")) {
s$assistant <- NULL
cnames <- c("Time", "Topic", "Teacher")
} else {
s$assistant <- fix_assis(s$assistant, asst)
cnames <- c("Time", "Topic", "Teacher", "Assistant")
}
```

```{r}
#| echo: false
#| results: asis
if(!is.null(schedule_message) & nchar(schedule_message)!=0){
cat(paste0('::: {.callout-note}\n',schedule_message,'\n:::'))
if (!is.null(schedule_message) & nchar(schedule_message) != 0) {
cat(paste0("::: {.callout-note}\n", schedule_message, "\n:::"))
}
```

Expand All @@ -105,10 +113,10 @@ r <- rle(s$date)
row.names(s) <- NULL
s %>%
dplyr::select(-date,-room) %>%
setNames(cnames) %>%
addHtmlTableStyle(align = "clcl") %>%
htmlTable(rnames=FALSE,rgroup=r$values,n.rgroup=r$lengths)
dplyr::select(-date, -room) %>%
setNames(cnames) %>%
addHtmlTableStyle(align = "clll", align.header = "clll") %>%
htmlTable(rnames = FALSE, rgroup = r$values, n.rgroup = r$lengths)
```

<!-- marker legend -->
Expand All @@ -127,6 +135,9 @@ s %>%
{{< fa file-lines >}} Lab
</span>
<span style="margin-left:6px; margin-right:6px;">
{{< fa square-poll-vertical >}} Form
</span>
<span style="margin-left:6px; margin-right:6px;">
{{< fa brands youtube >}} Video
</span>
</span>
Expand Down
Binary file modified schedule.xlsx
Binary file not shown.

0 comments on commit 632015f

Please sign in to comment.