mirror of
https://github.com/gladstone-institutes/Bioinformatics-Workshops.git
synced 2025-11-30 09:45:43 -08:00
update to quarto
This commit is contained in:
parent
45cb69a732
commit
275b121c78
165 changed files with 13677 additions and 4580 deletions
|
|
@ -1 +0,0 @@
|
|||
source("renv/activate.R")
|
||||
|
|
@ -1,33 +1,29 @@
|
|||
---
|
||||
title: "Working on Wynton"
|
||||
subtitle: "Part 1"
|
||||
author: "Natalie Elphick"
|
||||
date: "March 24th, 2025"
|
||||
knit: (function(input, ...) {
|
||||
rmarkdown::render(
|
||||
input,
|
||||
output_dir = "../docs"
|
||||
)
|
||||
})
|
||||
output:
|
||||
revealjs::revealjs_presentation:
|
||||
theme: simple
|
||||
author: "Natalie Gill"
|
||||
institute: "Gladstone Bioinformatics Core"
|
||||
date: "October 2, 2025"
|
||||
date-format: MMMM DD, YYYY
|
||||
format:
|
||||
revealjs:
|
||||
theme: wynton-theme.scss
|
||||
highlight: default
|
||||
css: style.css
|
||||
template-partials:
|
||||
- title-slide.html
|
||||
---
|
||||
|
||||
```{r, setup, include=FALSE}
|
||||
knitr::opts_chunk$set(comment = "")
|
||||
```
|
||||
|
||||
##
|
||||
##
|
||||
|
||||
<center>*Press the ? key for tips on navigating these slides*</center>
|
||||
|
||||
## Introductions
|
||||
Instructor:
|
||||
|
||||
**Natalie Elphick**
|
||||
|
||||
**Natalie Gill**
|
||||
*Bioinformatician II*
|
||||
|
||||
|
||||
|
|
@ -46,16 +42,16 @@ Instructor:
|
|||
|
||||
# What is Wynton HPC?
|
||||
|
||||
## High-performance Computing Cluster {.smaller-picture}
|
||||
## High-performance Computing Cluster
|
||||
|
||||
- A collection of specialized computers (nodes) connected together on a fast local network
|
||||
|
||||

|
||||
{fig-alt="HPC Diagram showing nodes connected together" .nostretch fig-align="center" width=55%}
|
||||
|
||||
|
||||
## HPC File System {.smaller-picture}
|
||||
## HPC File System
|
||||
|
||||

|
||||
{fig-alt="HPC File System diagram showing relationship between nodes and storage" .nostretch fig-align="center" width=60%}
|
||||
|
||||
|
||||
|
||||
|
|
@ -94,8 +90,8 @@ log1, log2 and plog1 (for PHI users)
|
|||
|
||||
```{r, engine='bash', eval=TRUE, results='markup',comment=NA, highlight=TRUE, echo=FALSE}
|
||||
echo "{local}$ ssh alice@log1.wynton.ucsf.edu
|
||||
alice@log1.wynton.ucsf.edu's password:
|
||||
[alice@log1 ~]$"
|
||||
alice@log1.wynton.ucsf.edu's password:
|
||||
[alice@log1 ~]$"
|
||||
```
|
||||
|
||||
- There will not be any visual feedback when typing your password
|
||||
|
|
@ -109,7 +105,7 @@ alice@log1.wynton.ucsf.edu's password:
|
|||
- Cannot SSH in to directly, only from a login node
|
||||
|
||||
```{r, engine='bash', eval=TRUE, results='markup',comment=NA, highlight=TRUE, echo=FALSE}
|
||||
echo "ssh dev1"
|
||||
echo "ssh dev1"
|
||||
```
|
||||
|
||||
<u>Names</u>:
|
||||
|
|
@ -126,7 +122,7 @@ dev[1-3], gpudev1, pdev1 (PHI) and pgpudev1 (PHI)
|
|||
<u>Example</u>:
|
||||
|
||||
```{r, engine='bash', eval=TRUE, results='markup',comment=NA, highlight=TRUE, echo=FALSE}
|
||||
echo "{local}$ scp local_file.tsv alice@dt1.wynton.ucsf.edu:~/"
|
||||
echo "{local}$ scp local_file.tsv alice@dt1.wynton.ucsf.edu:~/"
|
||||
```
|
||||
|
||||
<u>Names</u>:
|
||||
|
|
@ -140,7 +136,7 @@ dt1 and dt2
|
|||
- Used to run non-interactive compute job scripts
|
||||
- The software to run the job script is provided using a container
|
||||
|
||||

|
||||
{fig-alt="Compute Jobs workflow diagram" .nostretch fig-align="center" width=65%}
|
||||
|
||||
# Storage
|
||||
|
||||
|
|
@ -188,10 +184,10 @@ echo 'beegfs-ctl --getquota --storagepoolid=12 --gid "$(id --group)"'
|
|||
## Storage Advice {.small-bullets}
|
||||
|
||||
- Always back up anything you store under **/wynton**
|
||||
- If you have access to it keep all of your data on **/gladstone**
|
||||
- If you have access to it keep all of your data on **/gladstone**
|
||||
- A large number of jobs reading and writing to these directories may be slower since it is NFS mounted not BeeGFS
|
||||
- Use the scratch directories to store temporary files
|
||||
- e.g. A large amount of .fastq that you do not need after the alignment step
|
||||
- e.g. A large amount of .fastq that you do not need after the alignment step
|
||||
|
||||
# Data Transfer
|
||||
|
||||
|
|
@ -223,7 +219,6 @@ echo "{local}$ scp alice@dt1.wynton.ucsf.edu:/path/to/local_file.tsv /destinatio
|
|||
|
||||
|
||||
|
||||
|
||||
## GUI SFTP Clients {.small-bullets}
|
||||
|
||||
- These let you transfer files to and from Wynton using a GUI
|
||||
|
|
@ -232,9 +227,9 @@ echo "{local}$ scp alice@dt1.wynton.ucsf.edu:/path/to/local_file.tsv /destinatio
|
|||
- Navigate to Preferences -\> Transfers -\> General
|
||||
- change the Transfer Files setting "Use browser connection" instead of "Open Multiple connections"
|
||||
- [FileZilla](https://filezilla-project.org/)
|
||||
- In the General tab, select ‘SFTP’ as the Protocol instead of ‘FTP’
|
||||
- For Logon Type, select ‘Interactive’ instead of ‘Ask for Password’
|
||||
- Under the Transfer Settings tab, you might need to click the ‘Limit number of simultaneous connections’ and make sure the ‘Maximum number of connections’ is set to 1
|
||||
- In the General tab, select 'SFTP' as the Protocol instead of 'FTP'
|
||||
- For Logon Type, select 'Interactive' instead of 'Ask for Password'
|
||||
- Under the Transfer Settings tab, you might need to click the 'Limit number of simultaneous connections' and make sure the 'Maximum number of connections' is set to 1
|
||||
|
||||
## Globus
|
||||
|
||||
|
|
@ -341,18 +336,18 @@ echo '[alice@dev1 ~]$ nextflow -v'
|
|||
|
||||
# Containers
|
||||
|
||||
## Motivation {.small-bullets .small-picture}
|
||||
## Motivation {.small-bullets}
|
||||
|
||||
- Compute heavy jobs (high RAM, multiple cores) should be run on compute nodes
|
||||
- Containers allow us to make additional software available to the compute nodes
|
||||
- Also allows the use of software that might be hard to install on Rocky 8 Linux
|
||||
- Improves reproducibility
|
||||
|
||||

|
||||
{fig-alt="Compute Jobs workflow diagram" .nostretch fig-align="center" width=60%}
|
||||
|
||||
## Definitions {.small-bullets}
|
||||
|
||||
- **Containers**: An isolated environment for running software that avoids conflicts with the host system. Containers are stored, shared and executed as **image files** with a .sif extension.
|
||||
- **Containers**: An isolated environment for running software that avoids conflicts with the host system. Containers are stored, shared and executed as **image files** with a .sif extension.
|
||||
- **Images:** are built from definition files (or Dockerfiles) which are a set of instruction you specify for your environment.
|
||||
|
||||
## Apptainer {.small-bullets}
|
||||
|
|
@ -390,8 +385,8 @@ echo '[alice@dev1 ~]$ apptainer exec hello-world_1.0.sif hi'
|
|||
```{r, engine='bash', eval=TRUE, results='markup',comment=NA, highlight=TRUE, echo=FALSE}
|
||||
echo ' __ __ ____ _ __ __ __ __
|
||||
/ / / /__ / / /___ | | / /___ _____/ /___/ / / /
|
||||
/ /_/ / _ \/ / / __ \ | | /| / / __ \/ ___/ / __ / / /
|
||||
/ __ / __/ / / /_/ / | |/ |/ / /_/ / / / / /_/ / /_/
|
||||
/ /_/ / _ \/ / / __ \ | | /| / / __ \/ ___/ / __ / / /
|
||||
/ __ / __/ / / /_/ / | |/ |/ / /_/ / / / / /_/ / /_/
|
||||
/_/ /_/\___/_/_/\____/ |__/|__/\____/_/ /_/\__,_/ (_) '
|
||||
```
|
||||
|
||||
|
|
@ -421,22 +416,23 @@ echo '[alice@dev1 ~]$ apptainer exec hello-world_1.0.sif cat /Dockerfile'
|
|||
|
||||
## Thank You!
|
||||
|
||||
- Please take some time to fill out the workshop survey if you are not attending part 2:
|
||||
- Please take some time to fill out the workshop survey if you are not attending part 2:
|
||||
|
||||
<https://www.surveymonkey.com/r/bioinfo-training>
|
||||
<https://www.surveymonkey.com/r/bioinfo-training>
|
||||
|
||||
## Upcoming Data Science Training Program Workshops
|
||||
|
||||
[Single Cell RNA-Seq Analysis](https://gladstone.org/index.php/events/single-cell-rna-seq-analysis-5)
|
||||
March 27-March 28, 2025 9:00-12:00pm PDT
|
||||
|
||||
[Introduction to Linear Mixed Effects Models](https://gladstone.org/index.php/events/introduction-linear-mixed-effects-models-1)
|
||||
April 3-April 4, 2025 1:00-3:00pm PDT
|
||||
**Intermediate RNA-Seq Analysis Using R**
|
||||
October 6, 2025 1:00-4:00pm PDT
|
||||
|
||||
[Introduction to scATAC-seq Data Analysis](https://gladstone.org/index.php/events/introduction-scatac-seq-data-analysis-0)
|
||||
April 17-April 18, 2025 9:00am-12:00pm PDT
|
||||
**Introduction to Pathway Analysis**
|
||||
October 16, 2025 1:00-4:00pm PDT
|
||||
|
||||
[Introduction to Pathway Analysis](https://gladstone.org/index.php/events/introduction-pathway-analysis-3)
|
||||
April 22, 2025 1:00-4:00pm PDT
|
||||
|
||||
[Complete Schedule](https://gladstone.org/events?series=189)
|
||||
**Statistics of Enrichment Analysis Methods **
|
||||
October 20-October 21, 2025 1:00-3:00pm PDT
|
||||
|
||||
|
||||
**Single Cell RNA-Seq Analysis**
|
||||
October 27-October 28, 2025 9:00-4:00pm PDT
|
||||
|
|
@ -1,38 +1,35 @@
|
|||
---
|
||||
title: "Working on Wynton"
|
||||
subtitle: "Part 2"
|
||||
author: "Natalie Elphick"
|
||||
date: "March 25th, 2025"
|
||||
knit: (function(input, ...) {
|
||||
rmarkdown::render(
|
||||
input,
|
||||
output_dir = "../docs"
|
||||
)
|
||||
})
|
||||
output:
|
||||
revealjs::revealjs_presentation:
|
||||
theme: simple
|
||||
author: "Natalie Gill"
|
||||
institute: "Gladstone Bioinformatics Core"
|
||||
date: "October 3, 2025"
|
||||
date-format: MMMM DD, YYYY
|
||||
format:
|
||||
revealjs:
|
||||
theme: wynton-theme.scss
|
||||
highlight: default
|
||||
css: style.css
|
||||
template-partials:
|
||||
- title-slide.html
|
||||
---
|
||||
|
||||
```{r, setup, include=FALSE}
|
||||
knitr::opts_chunk$set(comment = "")
|
||||
```
|
||||
|
||||
##
|
||||
##
|
||||
|
||||
<center>*Press the ? key for tips on navigating these slides*</center>
|
||||
|
||||
## Introductions
|
||||
Instructor:
|
||||
|
||||
**Natalie Elphick**
|
||||
|
||||
**Natalie Gill**
|
||||
*Bioinformatician II*
|
||||
|
||||
|
||||
## Target Audience
|
||||
- Prior experience with UNIX command-line
|
||||
- Prior experience with UNIX command-line
|
||||
|
||||
|
||||
|
||||
|
|
@ -42,7 +39,7 @@ Instructor:
|
|||
2. Array Jobs
|
||||
3. GPU Jobs
|
||||
4. Running Pipelines
|
||||
5. Jupyter Notebooks
|
||||
5. Jupyter Notebooks
|
||||
6. RStudio Server
|
||||
7. Advanced Tips and Tricks
|
||||
8. How to get help
|
||||
|
|
@ -50,11 +47,10 @@ Instructor:
|
|||
|
||||
|
||||
|
||||
|
||||
# Compute Jobs
|
||||
|
||||
|
||||
## Submission Script - Basics {.small-bullets .code-alt}
|
||||
## Submission Script - Basics {.small-bullets}
|
||||
|
||||
- [Download](https://www.dropbox.com/scl/fi/fzp33y1ojslw005q8epuz/simple_submission_script.sh?rlkey=xmg3lqec962y3i57a1bkriosx&dl=1) this example job submission script
|
||||
- Read the full Wynton [job submission guide](https://wynton.ucsf.edu/hpc/scheduler/submit-jobs.html)
|
||||
|
|
@ -71,11 +67,11 @@ rm submission.sh
|
|||
## Submission Script - Apptainer
|
||||
|
||||
- Download the example job submission script that uses a container
|
||||
```{r,engine='bash', eval=FALSE, echo=TRUE}
|
||||
curl -s -L -o apptainer_submission_script.sh 'https://www.dropbox.com/scl/fi/zzl9fnfcoxu3pyrx5ffd1/apptainer_submission_script.sh?rlkey=w05e18ahw4hvbvaucac379za9&dl=1'
|
||||
```{r,engine='bash', eval=TRUE, echo=FALSE}
|
||||
echo "curl -s -L -o apptainer_submission_script.sh 'https://www.dropbox.com/scl/fi/zzl9fnfcoxu3pyrx5ffd1/apptainer_submission_script.sh?rlkey=w05e18ahw4hvbvaucac379za9&dl=1'"
|
||||
```
|
||||
|
||||
## Submission Script - Apptainer {.small-bullets .code-alt}
|
||||
## Submission Script - Apptainer {.small-bullets}
|
||||
|
||||
- Paths that the container needs read/write access to need to be mounted with APPTAINER_BINDPATH
|
||||
|
||||
|
|
@ -98,7 +94,7 @@ rm submission.sh
|
|||
- **mpi_onehost**: for single-host parallel jobs based on MPI parallelization
|
||||
- **mpi-8**: for multi-threaded multi-host jobs based on MPI parallelization
|
||||
|
||||
## Example Parallel Job {.small-bullets .code-alt}
|
||||
## Example Parallel Job {.small-bullets}
|
||||
|
||||
- The simplest parallel environment on Wynton is **smp**, a single node with *n* cores
|
||||
- [Download](https://www.dropbox.com/scl/fi/71xo0cioh266pj3uwcdps/smp_submission_script.sh?rlkey=kw7qaz8pip6jveqv317b5swqr&dl=1) this example smp job submission script
|
||||
|
|
@ -122,7 +118,7 @@ echo 'curl -L -o array_job_example.zip https://www.dropbox.com/scl/fo/j0muxevls2
|
|||
|
||||
## Array Jobs {.small-bullets}
|
||||
|
||||
- Unzip it
|
||||
- Unzip it
|
||||
```{r, engine='bash', eval=TRUE, results='markup',comment=NA, highlight=TRUE, echo=FALSE}
|
||||
echo 'unzip array_job_example.zip -d array_job_example'
|
||||
```
|
||||
|
|
@ -154,10 +150,10 @@ Your job 714888 ("job1.sh") has been submitted'
|
|||
|
||||
```{r, engine='bash', eval=TRUE, results='markup',comment=NA, highlight=TRUE, echo=FALSE}
|
||||
echo '[alice@dev1 ~]$ qstat
|
||||
job-ID prior name user state submit/start at queue slots ja-task-ID
|
||||
job-ID prior name user state submit/start at queue slots ja-task-ID
|
||||
-----------------------------------------------------------------------------------------------------------------
|
||||
714888 0.06532 job1 alice r 03/25/2024 19:54:18 member.q@msg-hmio1 1
|
||||
714889 0.06532 job2 alice r 03/25/2024 19:54:19 member.q@msg-hmio1 1
|
||||
714888 0.06532 job1 alice r 03/25/2024 19:54:18 member.q@msg-hmio1 1
|
||||
714889 0.06532 job2 alice r 03/25/2024 19:54:19 member.q@msg-hmio1 1
|
||||
'
|
||||
```
|
||||
|
||||
|
|
@ -189,7 +185,7 @@ Any submitted job to compute nodes can also be run on development nodes.
|
|||
- Scientific workflow system with a community maintained set of core bioinformatics [analysis pipelines](https://nf-co.re/)
|
||||
- The most commonly used one is the [RNA-seq pipeline](https://nf-co.re/rnaseq/3.14.0)
|
||||
|
||||

|
||||
{fig-alt="RNA-seq workflow diagram showing nf-core pipeline steps" .nostretch fig-align="center" width=70%}
|
||||
|
||||
|
||||
## Example - RNA-seq Pipeline {.small-bullets}
|
||||
|
|
@ -208,8 +204,7 @@ Any submitted job to compute nodes can also be run on development nodes.
|
|||
|
||||
|
||||
|
||||
|
||||
# Jupyter Notebooks
|
||||
# Jupyter Notebooks
|
||||
|
||||
## Installing Jupyter Notebooks
|
||||
- The preferred way to install and use [Jupyter notebooks](https://wynton.ucsf.edu/hpc/howto/jupyter.html) on Wynton is though pip, not conda
|
||||
|
|
@ -234,7 +229,7 @@ echo '[alice@dev1 ~]$ module load CBI port4me
|
|||
Note the port number returned by port4me, you will need this later.
|
||||
|
||||
|
||||
## Running Jupyter Notebooks - Step 2 {.code-small}
|
||||
## Running Jupyter Notebooks - Step 2
|
||||
- Launch Jupyter notebook using the port numer from step 1
|
||||
```{r, engine='bash', eval=TRUE, results='markup',comment=NA, highlight=TRUE, echo=FALSE}
|
||||
echo '[alice@dev1]$ jupyter notebook --no-browser --port 47467
|
||||
|
|
@ -287,7 +282,7 @@ The notebook should now be available at the URL from step 2
|
|||
- One to connect to it
|
||||
|
||||
|
||||
## RStudio Server - Step 1 {.code-small}
|
||||
## RStudio Server - Step 1
|
||||
|
||||
- Launch your own RStudio Server instance
|
||||
```{r, engine='bash', eval=TRUE, results='markup',comment=NA, highlight=TRUE, echo=FALSE}
|
||||
|
|
@ -379,7 +374,7 @@ For any bioinformatics specific questions feel free to reach out to the Gladston
|
|||
- Network latency becomes extremely important for all metadata requests
|
||||
- Certain input/output patterns can be problematic
|
||||
|
||||
## BeeGFS - I/O patterns
|
||||
## BeeGFS - I/O patterns
|
||||
|
||||
- Anything that requires lots of metadata operations can feel slow
|
||||
- e.g: lots of writes to the same directory and lots of file lookups and directory searches (**conda**)
|
||||
|
|
@ -393,7 +388,7 @@ For any bioinformatics specific questions feel free to reach out to the Gladston
|
|||
- Don't include anything in **/wynton** in your default LD_LIBRARY_PATH
|
||||
- If using conda, putting the conda application inside a Apptainer (formerly singularity) container will result in better performance
|
||||
|
||||
## Custom Containers
|
||||
# Custom Containers
|
||||
|
||||
## Motivation {.small-bullets .small-picture}
|
||||
|
||||
|
|
@ -402,7 +397,7 @@ For any bioinformatics specific questions feel free to reach out to the Gladston
|
|||
- Also allows the use of software that might be hard to install on Rocky 8 Linux
|
||||
- Improves reproducibility
|
||||
|
||||

|
||||
{fig-alt="Compute Jobs workflow diagram" .nostretch fig-align="center" width=60%}
|
||||
|
||||
|
||||
|
||||
|
|
@ -429,7 +424,7 @@ echo 'docker build .'
|
|||
|
||||
See the [Dockerfile documentation](https://docs.docker.com/reference/dockerfile/) for a full list of instructions
|
||||
|
||||
## Example Dockerfile {.code-alt}
|
||||
## Example Dockerfile
|
||||
|
||||
- Click [here](https://www.dropbox.com/scl/fi/mdbefp3h8ahdvxtgjypqo/Dockerfile?rlkey=7d4zd9ge1m3wwszlfy78712ky&dl=1) to download the example Dockerfile
|
||||
- Open in your preffered text editor
|
||||
|
|
@ -447,7 +442,7 @@ rm Dockerfile
|
|||
- It requires a lot of RAM
|
||||
- On macOS, make sure you have the Docker Desktop App running
|
||||
- We can provide an additional argument to the **build** command, -t, to set the name of the docker image
|
||||
- We can add version tags after the name using ":"
|
||||
- We can add version tags after the name using ":"
|
||||
```{r, engine='bash', eval=TRUE, results='markup',comment=NA, highlight=TRUE, echo=FALSE}
|
||||
echo "docker build -t docker_hub_user/seurat-harmony:1.0 ."
|
||||
```
|
||||
|
|
@ -483,25 +478,23 @@ echo "[alice@dev1 ~]$ apptainer pull docker://docker_hub_user/seurat-harmony:1.0
|
|||
## Thank You!
|
||||
|
||||
|
||||
- Please take some time to fill out the workshop survey:
|
||||
- Please take some time to fill out the workshop survey:
|
||||
|
||||
<https://www.surveymonkey.com/r/bioinfo-training>
|
||||
|
||||
## Upcoming Data Science Training Program Workshops
|
||||
|
||||
[Single Cell RNA-Seq Analysis](https://gladstone.org/index.php/events/single-cell-rna-seq-analysis-5)
|
||||
March 27-March 28, 2025 9:00-12:00pm PDT
|
||||
|
||||
[Introduction to Linear Mixed Effects Models](https://gladstone.org/index.php/events/introduction-linear-mixed-effects-models-1)
|
||||
April 3-April 4, 2025 1:00-3:00pm PDT
|
||||
**Intermediate RNA-Seq Analysis Using R**
|
||||
October 6, 2025 1:00-4:00pm PDT
|
||||
|
||||
[Introduction to scATAC-seq Data Analysis](https://gladstone.org/index.php/events/introduction-scatac-seq-data-analysis-0)
|
||||
April 17-April 18, 2025 9:00am-12:00pm PDT
|
||||
|
||||
[Introduction to Pathway Analysis](https://gladstone.org/index.php/events/introduction-pathway-analysis-3)
|
||||
April 22, 2025 1:00-4:00pm PDT
|
||||
|
||||
[Complete Schedule](https://gladstone.org/events?series=189)
|
||||
**Introduction to Pathway Analysis**
|
||||
October 16, 2025 1:00-4:00pm PDT
|
||||
|
||||
|
||||
**Statistics of Enrichment Analysis Methods **
|
||||
October 20-October 21, 2025 1:00-3:00pm PDT
|
||||
|
||||
|
||||
**Single Cell RNA-Seq Analysis**
|
||||
October 27-October 28, 2025 9:00-4:00pm PDT
|
||||
78
working-on-wynton-hpc/render_slides.sh
Normal file
78
working-on-wynton-hpc/render_slides.sh
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Wrapper script for rendering Quarto slides to match R Markdown output behavior
|
||||
# This script renders both Working on Wynton presentations to the ../docs directory
|
||||
|
||||
# Set script to exit on any error
|
||||
set -e
|
||||
|
||||
echo "🚀 Starting Quarto slide rendering..."
|
||||
|
||||
# Create docs directory if it doesn't exist
|
||||
DOCS_DIR="../docs/Working_on_Wynton"
|
||||
if [ ! -d "$DOCS_DIR" ]; then
|
||||
echo "📁 Creating output directory: $DOCS_DIR"
|
||||
mkdir -p "$DOCS_DIR"
|
||||
fi
|
||||
|
||||
# Copy image assets to docs directory
|
||||
echo "🖼️ Copying image assets to $DOCS_DIR..."
|
||||
|
||||
# Copy slide materials directory
|
||||
if [ -d "slide_materials" ]; then
|
||||
cp -r slide_materials "$DOCS_DIR/"
|
||||
echo "📁 Copied slide_materials to $DOCS_DIR"
|
||||
fi
|
||||
|
||||
# Copy logo image
|
||||
if [ -f "gladstone_logo_slide.png" ]; then
|
||||
cp gladstone_logo_slide.png "$DOCS_DIR/"
|
||||
echo "🖼️ Copied gladstone_logo_slide.png to $DOCS_DIR"
|
||||
fi
|
||||
|
||||
# Function to render a single slide presentation
|
||||
render_slide() {
|
||||
local slide_file="$1"
|
||||
local slide_name=$(basename "$slide_file" .qmd)
|
||||
|
||||
echo "🔧 Rendering $slide_file..."
|
||||
|
||||
# Render the Quarto presentation in current directory
|
||||
quarto render "$slide_file" --to revealjs
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✅ Successfully rendered: ${slide_name}.html"
|
||||
|
||||
# Move the HTML file to docs directory
|
||||
if [ -f "${slide_name}.html" ]; then
|
||||
mv "${slide_name}.html" "$DOCS_DIR/"
|
||||
echo "📁 Moved ${slide_name}.html to $DOCS_DIR"
|
||||
fi
|
||||
|
||||
# Sync the supporting files directory if it exists
|
||||
if [ -d "${slide_name}_files" ]; then
|
||||
rsync -av "${slide_name}_files/" "$DOCS_DIR/${slide_name}_files/"
|
||||
rm -rf "${slide_name}_files"
|
||||
echo "📁 Synced ${slide_name}_files to $DOCS_DIR"
|
||||
fi
|
||||
else
|
||||
echo "❌ Failed to render: $slide_file"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Render both presentations
|
||||
render_slide "Working_on_Wynton_Part_1.qmd"
|
||||
render_slide "Working_on_Wynton_Part_2.qmd"
|
||||
|
||||
|
||||
echo ""
|
||||
echo "🎉 All slides rendered successfully!"
|
||||
echo "📍 Output location: $DOCS_DIR"
|
||||
echo ""
|
||||
echo "📄 Generated files:"
|
||||
ls -la "$DOCS_DIR"/*.html 2>/dev/null || echo " No HTML files found"
|
||||
echo ""
|
||||
echo "🌐 To view the slides, open the HTML files in a web browser:"
|
||||
echo " - ${DOCS_DIR}/Working_on_Wynton_Part_1.html"
|
||||
echo " - ${DOCS_DIR}/Working_on_Wynton_Part_2.html"
|
||||
|
|
@ -1,361 +0,0 @@
|
|||
{
|
||||
"R": {
|
||||
"Version": "4.4.1",
|
||||
"Repositories": [
|
||||
{
|
||||
"Name": "CRAN",
|
||||
"URL": "https://packagemanager.posit.co/cran/latest"
|
||||
}
|
||||
]
|
||||
},
|
||||
"Packages": {
|
||||
"R6": {
|
||||
"Package": "R6",
|
||||
"Version": "2.5.1",
|
||||
"Source": "Repository",
|
||||
"Repository": "CRAN",
|
||||
"Requirements": [
|
||||
"R"
|
||||
],
|
||||
"Hash": "470851b6d5d0ac559e9d01bb352b4021"
|
||||
},
|
||||
"base64enc": {
|
||||
"Package": "base64enc",
|
||||
"Version": "0.1-3",
|
||||
"Source": "Repository",
|
||||
"Repository": "CRAN",
|
||||
"Requirements": [
|
||||
"R"
|
||||
],
|
||||
"Hash": "543776ae6848fde2f48ff3816d0628bc"
|
||||
},
|
||||
"bslib": {
|
||||
"Package": "bslib",
|
||||
"Version": "0.6.1",
|
||||
"Source": "Repository",
|
||||
"Repository": "RSPM",
|
||||
"Requirements": [
|
||||
"R",
|
||||
"base64enc",
|
||||
"cachem",
|
||||
"grDevices",
|
||||
"htmltools",
|
||||
"jquerylib",
|
||||
"jsonlite",
|
||||
"lifecycle",
|
||||
"memoise",
|
||||
"mime",
|
||||
"rlang",
|
||||
"sass"
|
||||
],
|
||||
"Hash": "c0d8599494bc7fb408cd206bbdd9cab0"
|
||||
},
|
||||
"cachem": {
|
||||
"Package": "cachem",
|
||||
"Version": "1.0.8",
|
||||
"Source": "Repository",
|
||||
"Repository": "CRAN",
|
||||
"Requirements": [
|
||||
"fastmap",
|
||||
"rlang"
|
||||
],
|
||||
"Hash": "c35768291560ce302c0a6589f92e837d"
|
||||
},
|
||||
"cli": {
|
||||
"Package": "cli",
|
||||
"Version": "3.6.2",
|
||||
"Source": "Repository",
|
||||
"Repository": "RSPM",
|
||||
"Requirements": [
|
||||
"R",
|
||||
"utils"
|
||||
],
|
||||
"Hash": "1216ac65ac55ec0058a6f75d7ca0fd52"
|
||||
},
|
||||
"digest": {
|
||||
"Package": "digest",
|
||||
"Version": "0.6.35",
|
||||
"Source": "Repository",
|
||||
"Repository": "CRAN",
|
||||
"Requirements": [
|
||||
"R",
|
||||
"utils"
|
||||
],
|
||||
"Hash": "698ece7ba5a4fa4559e3d537e7ec3d31"
|
||||
},
|
||||
"ellipsis": {
|
||||
"Package": "ellipsis",
|
||||
"Version": "0.3.2",
|
||||
"Source": "Repository",
|
||||
"Repository": "CRAN",
|
||||
"Requirements": [
|
||||
"R",
|
||||
"rlang"
|
||||
],
|
||||
"Hash": "bb0eec2fe32e88d9e2836c2f73ea2077"
|
||||
},
|
||||
"evaluate": {
|
||||
"Package": "evaluate",
|
||||
"Version": "0.23",
|
||||
"Source": "Repository",
|
||||
"Repository": "CRAN",
|
||||
"Requirements": [
|
||||
"R",
|
||||
"methods"
|
||||
],
|
||||
"Hash": "daf4a1246be12c1fa8c7705a0935c1a0"
|
||||
},
|
||||
"fastmap": {
|
||||
"Package": "fastmap",
|
||||
"Version": "1.1.1",
|
||||
"Source": "Repository",
|
||||
"Repository": "CRAN",
|
||||
"Hash": "f7736a18de97dea803bde0a2daaafb27"
|
||||
},
|
||||
"fontawesome": {
|
||||
"Package": "fontawesome",
|
||||
"Version": "0.5.2",
|
||||
"Source": "Repository",
|
||||
"Repository": "CRAN",
|
||||
"Requirements": [
|
||||
"R",
|
||||
"htmltools",
|
||||
"rlang"
|
||||
],
|
||||
"Hash": "c2efdd5f0bcd1ea861c2d4e2a883a67d"
|
||||
},
|
||||
"fs": {
|
||||
"Package": "fs",
|
||||
"Version": "1.6.3",
|
||||
"Source": "Repository",
|
||||
"Repository": "CRAN",
|
||||
"Requirements": [
|
||||
"R",
|
||||
"methods"
|
||||
],
|
||||
"Hash": "47b5f30c720c23999b913a1a635cf0bb"
|
||||
},
|
||||
"glue": {
|
||||
"Package": "glue",
|
||||
"Version": "1.7.0",
|
||||
"Source": "Repository",
|
||||
"Repository": "CRAN",
|
||||
"Requirements": [
|
||||
"R",
|
||||
"methods"
|
||||
],
|
||||
"Hash": "e0b3a53876554bd45879e596cdb10a52"
|
||||
},
|
||||
"highr": {
|
||||
"Package": "highr",
|
||||
"Version": "0.10",
|
||||
"Source": "Repository",
|
||||
"Repository": "CRAN",
|
||||
"Requirements": [
|
||||
"R",
|
||||
"xfun"
|
||||
],
|
||||
"Hash": "06230136b2d2b9ba5805e1963fa6e890"
|
||||
},
|
||||
"htmltools": {
|
||||
"Package": "htmltools",
|
||||
"Version": "0.5.7",
|
||||
"Source": "Repository",
|
||||
"Repository": "CRAN",
|
||||
"Requirements": [
|
||||
"R",
|
||||
"base64enc",
|
||||
"digest",
|
||||
"ellipsis",
|
||||
"fastmap",
|
||||
"grDevices",
|
||||
"rlang",
|
||||
"utils"
|
||||
],
|
||||
"Hash": "2d7b3857980e0e0d0a1fd6f11928ab0f"
|
||||
},
|
||||
"jquerylib": {
|
||||
"Package": "jquerylib",
|
||||
"Version": "0.1.4",
|
||||
"Source": "Repository",
|
||||
"Repository": "CRAN",
|
||||
"Requirements": [
|
||||
"htmltools"
|
||||
],
|
||||
"Hash": "5aab57a3bd297eee1c1d862735972182"
|
||||
},
|
||||
"jsonlite": {
|
||||
"Package": "jsonlite",
|
||||
"Version": "1.8.8",
|
||||
"Source": "Repository",
|
||||
"Repository": "RSPM",
|
||||
"Requirements": [
|
||||
"methods"
|
||||
],
|
||||
"Hash": "e1b9c55281c5adc4dd113652d9e26768"
|
||||
},
|
||||
"knitr": {
|
||||
"Package": "knitr",
|
||||
"Version": "1.45",
|
||||
"Source": "Repository",
|
||||
"Repository": "CRAN",
|
||||
"Requirements": [
|
||||
"R",
|
||||
"evaluate",
|
||||
"highr",
|
||||
"methods",
|
||||
"tools",
|
||||
"xfun",
|
||||
"yaml"
|
||||
],
|
||||
"Hash": "1ec462871063897135c1bcbe0fc8f07d"
|
||||
},
|
||||
"lifecycle": {
|
||||
"Package": "lifecycle",
|
||||
"Version": "1.0.4",
|
||||
"Source": "Repository",
|
||||
"Repository": "RSPM",
|
||||
"Requirements": [
|
||||
"R",
|
||||
"cli",
|
||||
"glue",
|
||||
"rlang"
|
||||
],
|
||||
"Hash": "b8552d117e1b808b09a832f589b79035"
|
||||
},
|
||||
"memoise": {
|
||||
"Package": "memoise",
|
||||
"Version": "2.0.1",
|
||||
"Source": "Repository",
|
||||
"Repository": "CRAN",
|
||||
"Requirements": [
|
||||
"cachem",
|
||||
"rlang"
|
||||
],
|
||||
"Hash": "e2817ccf4a065c5d9d7f2cfbe7c1d78c"
|
||||
},
|
||||
"mime": {
|
||||
"Package": "mime",
|
||||
"Version": "0.12",
|
||||
"Source": "Repository",
|
||||
"Repository": "CRAN",
|
||||
"Requirements": [
|
||||
"tools"
|
||||
],
|
||||
"Hash": "18e9c28c1d3ca1560ce30658b22ce104"
|
||||
},
|
||||
"rappdirs": {
|
||||
"Package": "rappdirs",
|
||||
"Version": "0.3.3",
|
||||
"Source": "Repository",
|
||||
"Repository": "CRAN",
|
||||
"Requirements": [
|
||||
"R"
|
||||
],
|
||||
"Hash": "5e3c5dc0b071b21fa128676560dbe94d"
|
||||
},
|
||||
"renv": {
|
||||
"Package": "renv",
|
||||
"Version": "1.0.5",
|
||||
"Source": "Repository",
|
||||
"Repository": "CRAN",
|
||||
"Requirements": [
|
||||
"utils"
|
||||
],
|
||||
"Hash": "32c3f93e8360f667ca5863272ec8ba6a"
|
||||
},
|
||||
"revealjs": {
|
||||
"Package": "revealjs",
|
||||
"Version": "0.9.1.9007",
|
||||
"Source": "GitHub",
|
||||
"RemoteType": "github",
|
||||
"RemoteHost": "api.github.com",
|
||||
"RemoteUsername": "rstudio",
|
||||
"RemoteRepo": "revealjs",
|
||||
"RemoteRef": "main",
|
||||
"RemoteSha": "37782091f88635b00341d708b6311465efe1a444",
|
||||
"Requirements": [
|
||||
"R",
|
||||
"rmarkdown"
|
||||
],
|
||||
"Hash": "8471ccabb784457b5b0c84db051bc83a"
|
||||
},
|
||||
"rlang": {
|
||||
"Package": "rlang",
|
||||
"Version": "1.1.3",
|
||||
"Source": "Repository",
|
||||
"Repository": "CRAN",
|
||||
"Requirements": [
|
||||
"R",
|
||||
"utils"
|
||||
],
|
||||
"Hash": "42548638fae05fd9a9b5f3f437fbbbe2"
|
||||
},
|
||||
"rmarkdown": {
|
||||
"Package": "rmarkdown",
|
||||
"Version": "2.26",
|
||||
"Source": "Repository",
|
||||
"Repository": "CRAN",
|
||||
"Requirements": [
|
||||
"R",
|
||||
"bslib",
|
||||
"evaluate",
|
||||
"fontawesome",
|
||||
"htmltools",
|
||||
"jquerylib",
|
||||
"jsonlite",
|
||||
"knitr",
|
||||
"methods",
|
||||
"tinytex",
|
||||
"tools",
|
||||
"utils",
|
||||
"xfun",
|
||||
"yaml"
|
||||
],
|
||||
"Hash": "9b148e7f95d33aac01f31282d49e4f44"
|
||||
},
|
||||
"sass": {
|
||||
"Package": "sass",
|
||||
"Version": "0.4.9",
|
||||
"Source": "Repository",
|
||||
"Repository": "CRAN",
|
||||
"Requirements": [
|
||||
"R6",
|
||||
"fs",
|
||||
"htmltools",
|
||||
"rappdirs",
|
||||
"rlang"
|
||||
],
|
||||
"Hash": "d53dbfddf695303ea4ad66f86e99b95d"
|
||||
},
|
||||
"tinytex": {
|
||||
"Package": "tinytex",
|
||||
"Version": "0.50",
|
||||
"Source": "Repository",
|
||||
"Repository": "CRAN",
|
||||
"Requirements": [
|
||||
"xfun"
|
||||
],
|
||||
"Hash": "be7a76845222ad20adb761f462eed3ea"
|
||||
},
|
||||
"xfun": {
|
||||
"Package": "xfun",
|
||||
"Version": "0.42",
|
||||
"Source": "Repository",
|
||||
"Repository": "CRAN",
|
||||
"Requirements": [
|
||||
"grDevices",
|
||||
"stats",
|
||||
"tools"
|
||||
],
|
||||
"Hash": "fd1349170df31f7a10bd98b0189e85af"
|
||||
},
|
||||
"yaml": {
|
||||
"Package": "yaml",
|
||||
"Version": "2.3.8",
|
||||
"Source": "Repository",
|
||||
"Repository": "RSPM",
|
||||
"Hash": "29240487a071f535f5e5d5a323b7afbd"
|
||||
}
|
||||
}
|
||||
}
|
||||
7
working-on-wynton-hpc/renv/.gitignore
vendored
7
working-on-wynton-hpc/renv/.gitignore
vendored
|
|
@ -1,7 +0,0 @@
|
|||
library/
|
||||
local/
|
||||
cellar/
|
||||
lock/
|
||||
python/
|
||||
sandbox/
|
||||
staging/
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,19 +0,0 @@
|
|||
{
|
||||
"bioconductor.version": null,
|
||||
"external.libraries": [],
|
||||
"ignored.packages": [],
|
||||
"package.dependency.fields": [
|
||||
"Imports",
|
||||
"Depends",
|
||||
"LinkingTo"
|
||||
],
|
||||
"ppm.enabled": null,
|
||||
"ppm.ignored.urls": [],
|
||||
"r.version": null,
|
||||
"snapshot.type": "implicit",
|
||||
"use.cache": true,
|
||||
"vcs.ignore.cellar": true,
|
||||
"vcs.ignore.library": true,
|
||||
"vcs.ignore.local": true,
|
||||
"vcs.manage.ignores": true
|
||||
}
|
||||
Binary file not shown.
BIN
working-on-wynton-hpc/slide_materials/gladstone_logo_slide.png
Normal file
BIN
working-on-wynton-hpc/slide_materials/gladstone_logo_slide.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2 MiB |
Binary file not shown.
|
Before Width: | Height: | Size: 429 KiB |
|
|
@ -1,184 +0,0 @@
|
|||
|
||||
/* Set font size and alignment for the message */
|
||||
.bottom-message {
|
||||
font-size: 0.8em !important;
|
||||
font-style: italic !important;
|
||||
text-align: center;
|
||||
position: relative;
|
||||
bottom: 0 !important;
|
||||
left: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.reveal code {
|
||||
background-color: #1e1e1eef; /* Dark background for code chunks */
|
||||
color: white; /* White text for code */
|
||||
font-size: 1.2em;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.code-small code {
|
||||
background-color: #1e1e1eef; /* Dark background for code chunks */
|
||||
color: white; /* White text for code */
|
||||
font-size: 1em;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.reveal code::selection {
|
||||
background-color: #d97306 !important; /* Dark orange background for selected text */
|
||||
}
|
||||
|
||||
|
||||
/* Specific styles for code output: background */
|
||||
.reveal code.output {
|
||||
background-color: black; /* Black background for code outputs */
|
||||
}
|
||||
|
||||
/* Custom class for code alt display */
|
||||
.code-alt code {
|
||||
background-color: #ffecd0ac; /* Dark background for code outputs */
|
||||
max-height: 400px !important;
|
||||
font-family: 'Menlo', sans-serif;
|
||||
font-size: 0.8em;
|
||||
color: rgb(76, 76, 76)
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Code output text color */
|
||||
.reveal pre code.output {
|
||||
color: white;
|
||||
}
|
||||
|
||||
|
||||
/* Left-align all code outputs */
|
||||
.reveal pre code {
|
||||
text-align: left !important;
|
||||
}
|
||||
|
||||
|
||||
/* Add horizontal scrolling to all code outputs */
|
||||
.reveal pre code.output {
|
||||
white-space: pre !important;
|
||||
overflow-x: auto !important;
|
||||
}
|
||||
/* Change the font family used for code blocks */
|
||||
pre, code, kbd, samp {
|
||||
font-family: "Courier New", Courier, monospace;
|
||||
}
|
||||
|
||||
|
||||
/* Add horizontal scrolling to all code chunks */
|
||||
.reveal pre code {
|
||||
white-space: pre !important;
|
||||
overflow-x: auto !important;
|
||||
}
|
||||
|
||||
/* Change the font family used for all text except code */
|
||||
.reveal p, .reveal li, .reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6 {
|
||||
font-family: "Helvetica", sans-serif;
|
||||
}
|
||||
|
||||
.reveal h3 {
|
||||
color: black;
|
||||
font-size: 0.7em;
|
||||
}
|
||||
/* Bold slide titles and change color */
|
||||
.reveal h2 {
|
||||
font-weight: bold !important;
|
||||
color: #9c0366;
|
||||
font-size: 1.3em;
|
||||
}
|
||||
/* Bold slide titles and change color */
|
||||
.reveal h1 {
|
||||
font-weight: bold !important;
|
||||
color: #9c0366;
|
||||
font-size: 2.0em;
|
||||
}
|
||||
|
||||
.reveal .slides>section:first-child h2 {
|
||||
color: black;
|
||||
font-weight: normal !important;
|
||||
}
|
||||
|
||||
.reveal .slides>section:first-child h1 {
|
||||
font-weight: bold !important;
|
||||
color: #9c0366;
|
||||
}
|
||||
|
||||
|
||||
.reveal p {
|
||||
text-align: left;
|
||||
margin-left: 20px !important;
|
||||
}
|
||||
.reveal ul {
|
||||
display: block;
|
||||
margin-left: 75px !important;
|
||||
margin-right: 50px !important;
|
||||
}
|
||||
|
||||
.reveal ul ul {
|
||||
font-size: 0.75em; /* Smaller font size */
|
||||
margin-bottom: 5px !important;
|
||||
}
|
||||
.reveal ol {
|
||||
display: block;
|
||||
margin-bottom: 20px;
|
||||
margin-left: 75px;
|
||||
margin-right: 50px
|
||||
}
|
||||
|
||||
|
||||
/* Decrease size of image, remove border, shadow and center align*/
|
||||
.reveal img {
|
||||
max-width: 70%;
|
||||
border: none !important;
|
||||
box-shadow: none !important;
|
||||
display: block !important;
|
||||
margin: 0 auto !important;
|
||||
}
|
||||
|
||||
small {
|
||||
font-size: 70%;
|
||||
}
|
||||
|
||||
/* Create a custom class for the small bullets, increase the spacing between list items */
|
||||
.small-bullets ul {
|
||||
font-size: 85%;
|
||||
}
|
||||
.small-list ol {
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
.reveal li {
|
||||
margin-bottom: 10px !important;
|
||||
}
|
||||
|
||||
|
||||
.less-small-bullets ul {
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
.big-picture img{
|
||||
max-width: 95%;
|
||||
|
||||
}
|
||||
|
||||
.small-picture img{
|
||||
max-width: 65%;
|
||||
|
||||
}
|
||||
.smaller-picture img{
|
||||
max-width: 60%;
|
||||
|
||||
}
|
||||
|
||||
/* Chage link color to sky blue */
|
||||
.reveal a {
|
||||
color: #0c74dc;
|
||||
}
|
||||
|
||||
/* Change link color to magenta on hover */
|
||||
.reveal a:hover {
|
||||
color: #9c0366 !important;
|
||||
}
|
||||
28
working-on-wynton-hpc/title-slide.html
Normal file
28
working-on-wynton-hpc/title-slide.html
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
<!-- Logo slide -->
|
||||
<section class="slide level2" data-background-image="slide_materials/gladstone_logo_slide.png" data-background-size="contain">
|
||||
</section>
|
||||
|
||||
<!-- Title slide -->
|
||||
<section class="quarto-title-block">
|
||||
<h1 class="title">$title$</h1>
|
||||
$if(subtitle)$
|
||||
<p class="subtitle">$subtitle$</p>
|
||||
$endif$
|
||||
$if(author)$
|
||||
<div class="quarto-title-authors">
|
||||
<div class="quarto-title-author">
|
||||
<div class="quarto-title-author-name">$author$</div>
|
||||
$if(institute)$
|
||||
<div class="quarto-title-affiliation">$institute$</div>
|
||||
$endif$
|
||||
</div>
|
||||
</div>
|
||||
$endif$
|
||||
$if(date)$
|
||||
<div class="quarto-title-meta">
|
||||
<div class="quarto-title-meta-contents">
|
||||
<p class="date">$date$</p>
|
||||
</div>
|
||||
</div>
|
||||
$endif$
|
||||
</section>
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
Version: 1.0
|
||||
ProjectId: 34071a3d-003e-4263-bd00-68a4cf53c544
|
||||
|
||||
RestoreWorkspace: Default
|
||||
SaveWorkspace: Default
|
||||
AlwaysSaveHistory: Default
|
||||
|
||||
EnableCodeIndexing: Yes
|
||||
UseSpacesForTab: Yes
|
||||
NumSpacesForTab: 2
|
||||
Encoding: UTF-8
|
||||
|
||||
RnwWeave: Sweave
|
||||
LaTeX: pdfLaTeX
|
||||
214
working-on-wynton-hpc/wynton-theme.scss
Normal file
214
working-on-wynton-hpc/wynton-theme.scss
Normal file
|
|
@ -0,0 +1,214 @@
|
|||
/**
|
||||
* Wynton HPC Training Theme for reveal.js presentations
|
||||
*
|
||||
* Adapted from the original style.css for the Working on Wynton training materials
|
||||
* Converted to SCSS format for better maintainability and theming capabilities
|
||||
*/
|
||||
|
||||
/*-- scss:defaults --*/
|
||||
|
||||
// Custom color palette
|
||||
$primary-color: #9c0366;
|
||||
$secondary-color: #BB3E03;
|
||||
$link-color: #0c74dc;
|
||||
$link-hover-color: #9c0366;
|
||||
$code-bg: #333333;
|
||||
$code-block-bg: #333333;
|
||||
$code-color: white;
|
||||
$code-block-font-size: 0.8em;
|
||||
|
||||
// Typography
|
||||
$font-family-sans-serif: "Helvetica", sans-serif !default;
|
||||
$font-family-monospace: "Menlo", sans-serif !default;
|
||||
|
||||
// Override Quarto reveal.js defaults
|
||||
$presentation-heading-font: $font-family-sans-serif !default;
|
||||
$presentation-heading-color: $primary-color !default;
|
||||
$presentation-heading-text-transform: none !default;
|
||||
$presentation-heading-text-shadow: none !default;
|
||||
$link-color-default: $link-color !default;
|
||||
$presentation-list-bullet-color: $secondary-color !default;
|
||||
|
||||
/*-- scss:rules --*/
|
||||
|
||||
// Define CSS custom properties for dynamic theming
|
||||
:root {
|
||||
--r-list-bullet-color: #{$presentation-list-bullet-color};
|
||||
}
|
||||
|
||||
// Font family overrides
|
||||
pre, code, kbd, samp {
|
||||
font-family: $font-family-monospace;
|
||||
}
|
||||
|
||||
.reveal {
|
||||
// Typography
|
||||
p, li, h1, h2, h3, h4, h5, h6 {
|
||||
font-family: $font-family-sans-serif;
|
||||
}
|
||||
|
||||
// Heading styles
|
||||
h1 {
|
||||
font-weight: bold !important;
|
||||
color: $primary-color;
|
||||
font-size: 2.0em;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-weight: bold !important;
|
||||
color: $primary-color;
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
h3 {
|
||||
color: black;
|
||||
font-size: 0.7em;
|
||||
}
|
||||
|
||||
// Special handling for first slide
|
||||
.slides > section:first-child {
|
||||
h1 {
|
||||
font-weight: bold !important;
|
||||
color: $primary-color;
|
||||
}
|
||||
|
||||
h2 {
|
||||
color: black;
|
||||
color: $primary-color;
|
||||
font-weight: normal !important;
|
||||
}
|
||||
}
|
||||
|
||||
// Custom colored list bullets
|
||||
ul,
|
||||
ol {
|
||||
li::marker {
|
||||
color: var(--r-list-bullet-color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Slide content styling - using .reveal .slide prefix for best practices
|
||||
.reveal .slide {
|
||||
// Ensure slide titles remain centered
|
||||
h1, h2 {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
// Paragraph styling for slide content only (not titles)
|
||||
p:not(.subtitle) {
|
||||
text-align: left;
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
// List styling for slide content only
|
||||
ul {
|
||||
display: block;
|
||||
margin-left: 75px;
|
||||
margin-right: 50px;
|
||||
|
||||
ul {
|
||||
font-size: 0.75em;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
ol {
|
||||
display: block;
|
||||
margin-bottom: 20px;
|
||||
margin-left: 75px;
|
||||
margin-right: 50px;
|
||||
}
|
||||
|
||||
li {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
// Custom colored list bullets for slide content
|
||||
ul,
|
||||
ol {
|
||||
li::marker {
|
||||
color: var(--r-list-bullet-color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Code styling - applies to all reveal content with higher specificity
|
||||
.reveal pre,
|
||||
.reveal code {
|
||||
background-color: $code-block-bg !important;
|
||||
color: white !important;
|
||||
font-family: $font-family-monospace !important;
|
||||
font-size: $code-block-font-size !important;
|
||||
line-height: 1.2 !important;
|
||||
}
|
||||
|
||||
.reveal pre code {
|
||||
background-color: transparent !important; // inherit from pre
|
||||
color: inherit !important; // inherit from pre
|
||||
text-align: left !important;
|
||||
white-space: pre !important;
|
||||
overflow-x: auto !important;
|
||||
}
|
||||
|
||||
|
||||
// Image and link styling - applies to all reveal content
|
||||
.reveal {
|
||||
img {
|
||||
max-width: 70%;
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
a {
|
||||
color: $link-color;
|
||||
|
||||
&:hover {
|
||||
color: $link-hover-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Custom utility classes
|
||||
.bottom-message {
|
||||
font-size: 0.8em !important;
|
||||
font-style: italic !important;
|
||||
text-align: center;
|
||||
position: relative;
|
||||
bottom: 0 !important;
|
||||
left: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
|
||||
// Size utility classes
|
||||
small {
|
||||
font-size: 70%;
|
||||
}
|
||||
|
||||
.small-bullets ul {
|
||||
font-size: 85%;
|
||||
}
|
||||
|
||||
.less-small-bullets ul {
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
.small-list ol {
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
// Image size classes
|
||||
.big-picture img {
|
||||
max-width: 95%;
|
||||
}
|
||||
|
||||
.small-picture img {
|
||||
max-width: 65%;
|
||||
}
|
||||
|
||||
.smaller-picture img {
|
||||
max-width: 60%;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue