From 6c973adbedaf85e40cd439c5d8765f73b3874d17 Mon Sep 17 00:00:00 2001 From: Daniel Gatti Date: Wed, 16 Oct 2024 03:16:20 -0400 Subject: [PATCH] Added test code to check dir --- _episodes/04-Quality-Control.md | 31 +++++++++++++++++++++--- _episodes/05-Common-Analyses.md | 4 +-- _episodes/06-Biology-Driven-Analyses.md | 22 ++++++++--------- _episodes_rmd/04-Quality-Control.Rmd | 4 +++ fig/rmd-04-doublet_plot-1.png | Bin 13953 -> 14228 bytes 5 files changed, 44 insertions(+), 17 deletions(-) diff --git a/_episodes/04-Quality-Control.md b/_episodes/04-Quality-Control.md index c01185b..b4c1584 100644 --- a/_episodes/04-Quality-Control.md +++ b/_episodes/04-Quality-Control.md @@ -31,6 +31,29 @@ data_dir <- '../data' {: .language-r} +~~~ +dir(data_dir) +~~~ +{: .language-r} + + + +~~~ + [1] "lesson03.Rdata" + [2] "lesson03_challenge.Rdata" + [3] "lesson04.rds" + [4] "lesson05.Rdata" + [5] "lesson05.rds" + [6] "mouseStSt_exvivo" + [7] "mouseStSt_exvivo.zip" + [8] "mouseStSt_invivo" + [9] "mouseStSt_invivo.zip" +[10] "regev_lab_cell_cycle_genes_mm.fixed.txt" +[11] "regev_lab_cell_cycle_genes_mm.fixed.txt_README" +~~~ +{: .output} + + Single Cell Flowchart @@ -85,8 +108,8 @@ doublet_preds <- colData(sce) ~~~ used (Mb) gc trigger (Mb) max used (Mb) -Ncells 8111351 433.2 14166592 756.6 11252362 601.0 -Vcells 181808817 1387.1 436713378 3331.9 436709905 3331.9 +Ncells 8111953 433.3 14168290 756.7 11252398 601.0 +Vcells 181810210 1387.2 436715070 3331.9 436711315 3331.9 ~~~ {: .output} @@ -341,8 +364,8 @@ gc() ~~~ used (Mb) gc trigger (Mb) max used (Mb) -Ncells 8269310 441.7 14166592 756.6 12309993 657.5 -Vcells 182529992 1392.6 596761613 4553.0 629553055 4803.2 +Ncells 8269380 441.7 14168290 756.7 12310063 657.5 +Vcells 182530194 1392.6 596761865 4553.0 629553222 4803.2 ~~~ {: .output} diff --git a/_episodes/05-Common-Analyses.md b/_episodes/05-Common-Analyses.md index 0a57ae2..54227fe 100644 --- a/_episodes/05-Common-Analyses.md +++ b/_episodes/05-Common-Analyses.md @@ -270,7 +270,7 @@ Formal class 'Seurat' [package "SeuratObject"] with 13 slots ..@ commands :List of 2 .. ..$ NormalizeData.RNA :Formal class 'SeuratCommand' [package "SeuratObject"] with 5 slots .. .. .. ..@ name : chr "NormalizeData.RNA" - .. .. .. ..@ time.stamp : POSIXct[1:1], format: "2024-10-16 01:45:53" + .. .. .. ..@ time.stamp : POSIXct[1:1], format: "2024-10-16 02:16:45" .. .. .. ..@ assay.used : chr "RNA" .. .. .. ..@ call.string: chr "NormalizeData(., normalization.method = \"LogNormalize\")" .. .. .. ..@ params :List of 5 @@ -281,7 +281,7 @@ Formal class 'Seurat' [package "SeuratObject"] with 13 slots .. .. .. .. ..$ verbose : logi TRUE .. ..$ FindVariableFeatures.RNA:Formal class 'SeuratCommand' [package "SeuratObject"] with 5 slots .. .. .. ..@ name : chr "FindVariableFeatures.RNA" - .. .. .. ..@ time.stamp : POSIXct[1:1], format: "2024-10-16 01:46:01" + .. .. .. ..@ time.stamp : POSIXct[1:1], format: "2024-10-16 02:16:53" .. .. .. ..@ assay.used : chr "RNA" .. .. .. ..@ call.string: chr "FindVariableFeatures(., nfeatures = 2000)" .. .. .. ..@ params :List of 12 diff --git a/_episodes/06-Biology-Driven-Analyses.md b/_episodes/06-Biology-Driven-Analyses.md index 48944bf..cac93ff 100644 --- a/_episodes/06-Biology-Driven-Analyses.md +++ b/_episodes/06-Biology-Driven-Analyses.md @@ -306,28 +306,28 @@ Computing SNN ~~~ -01:55:19 UMAP embedding parameters a = 0.9922 b = 1.112 +02:26:05 UMAP embedding parameters a = 0.9922 b = 1.112 ~~~ {: .output} ~~~ -01:55:19 Read 44253 rows and found 24 numeric columns +02:26:05 Read 44253 rows and found 24 numeric columns ~~~ {: .output} ~~~ -01:55:19 Using Annoy for neighbor search, n_neighbors = 30 +02:26:05 Using Annoy for neighbor search, n_neighbors = 30 ~~~ {: .output} ~~~ -01:55:19 Building Annoy index with metric = cosine, n_trees = 50 +02:26:05 Building Annoy index with metric = cosine, n_trees = 50 ~~~ {: .output} @@ -349,13 +349,13 @@ Computing SNN ~~~ **************************************************| -01:55:23 Writing NN index file to temp file C:\Users\c-dgatti\AppData\Local\Temp\RtmpWWaahB\file3260428514ec -01:55:23 Searching Annoy index using 1 thread, search_k = 3000 -01:55:33 Annoy recall = 100% -01:55:34 Commencing smooth kNN distance calibration using 1 thread with target n_neighbors = 30 -01:55:37 Initializing from normalized Laplacian + noise (using RSpectra) -01:55:47 Commencing optimization for 200 epochs, with 1888044 positive edges -01:56:25 Optimization finished +02:26:09 Writing NN index file to temp file C:\Users\c-dgatti\AppData\Local\Temp\Rtmpua4Qd7\file2e34780d10a1 +02:26:09 Searching Annoy index using 1 thread, search_k = 3000 +02:26:20 Annoy recall = 100% +02:26:21 Commencing smooth kNN distance calibration using 1 thread with target n_neighbors = 30 +02:26:24 Initializing from normalized Laplacian + noise (using RSpectra) +02:26:34 Commencing optimization for 200 epochs, with 1888044 positive edges +02:27:12 Optimization finished ~~~ {: .output} diff --git a/_episodes_rmd/04-Quality-Control.Rmd b/_episodes_rmd/04-Quality-Control.Rmd index a72998d..66fd846 100644 --- a/_episodes_rmd/04-Quality-Control.Rmd +++ b/_episodes_rmd/04-Quality-Control.Rmd @@ -29,6 +29,10 @@ suppressPackageStartupMessages(library(Seurat)) data_dir <- '../data' ``` +```{r test_chunk} +dir(data_dir) +``` + ```{r load_data,include=FALSE} # Only needed to build lessons. diff --git a/fig/rmd-04-doublet_plot-1.png b/fig/rmd-04-doublet_plot-1.png index 3da68d7f34a9afef884459015cee75d944bf329b..3b699afac2c57546515c86dc3689b59cc6904c4a 100644 GIT binary patch literal 14228 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 literal 13953 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 C_qh51