diff --git a/.github/workflows/run_cell-type-nonETP-ALL-03.yml b/.github/workflows/run_cell-type-nonETP-ALL-03.yml index 7880d3596..6315533c5 100644 --- a/.github/workflows/run_cell-type-nonETP-ALL-03.yml +++ b/.github/workflows/run_cell-type-nonETP-ALL-03.yml @@ -59,7 +59,8 @@ jobs: libfontconfig1-dev \ libharfbuzz-dev \ libfribidi-dev \ - libtiff5-dev + libtiff5-dev \ + jags - name: Set up renv uses: r-lib/actions/setup-renv@v2 @@ -87,7 +88,19 @@ jobs: run: | cd ${MODULE_PATH} # run module script(s) here + printf "\n\nRunning 00-01_processing_rds.R\n" Rscript scripts/00-01_processing_rds.R + printf "\n\nRunning 02-03_annotation.R\n" Rscript scripts/02-03_annotation.R + printf "\n\nRunning 04_multipanel_plot.R\n" Rscript scripts/04_multipanel_plot.R + printf "\n\nRunning 05_cluster_evaluation.R\n" Rscript scripts/05_cluster_evaluation.R + printf "\n\nRunning 06_sctype_exploration.R\n" + Rscript scripts/06_sctype_exploration.R + printf "\n\nRunning 07_run_copykat.R\n" + Rscript scripts/07_run_copykat.R + printf "\n\nRunning markerGenes_submission.R\n" + Rscript scripts/markerGenes_submission.R + printf "\n\nRunning writeout_submission.R\n" + Rscript scripts/writeout_submission.R diff --git a/analyses/cell-type-nonETP-ALL-03/Dockerfile b/analyses/cell-type-nonETP-ALL-03/Dockerfile index dffa86a9b..ce6ff54bb 100644 --- a/analyses/cell-type-nonETP-ALL-03/Dockerfile +++ b/analyses/cell-type-nonETP-ALL-03/Dockerfile @@ -52,6 +52,9 @@ RUN conda-lock install -n ${ENV_NAME} conda-lock.yml \ # Copy the renv.lock file from the host environment to the image COPY renv.lock renv.lock +# Temporarily install Rhtslib separately +RUN Rscript -e 'BiocManager::install("Rhtslib")' + # restore from renv.lock file and clean up to reduce image size RUN Rscript -e 'renv::restore()' \ && rm -rf ~/.cache/R/renv \ diff --git a/analyses/cell-type-nonETP-ALL-03/README.md b/analyses/cell-type-nonETP-ALL-03/README.md index cc6045588..e3502fec3 100644 --- a/analyses/cell-type-nonETP-ALL-03/README.md +++ b/analyses/cell-type-nonETP-ALL-03/README.md @@ -8,9 +8,11 @@ We first aim to annotate the cell types in non-ETP T-ALL, and use the annotated - We use the cell type marker (`Azimuth_BM_level1.csv`) from [Azimuth Human Bone Marrow reference](https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow). In total, there are 14 cell types: B, CD4T, CD8T, Other T, DC, Monocytes, Macrophages, NK, Early Erythrocytes, Late Erythrocytes, Plasma, Platelet, Stromal, and Hematopoietic Stem and Progenitor Cells (HSPC). Based on the exploratory analysis, we believe that most of the cells in these samples do not express adequate markers to be distinguished at finer cell type level (eg. naive vs memory, CD14 vs CD16 etc.), and majority of the cells should belong to T-cells. In addition, we include the marker genes for blast cell [[Bhasin et al. (2023)](https://www.nature.com/articles/s41598-023-39152-z)] as well as erythroid precursor and cancer cell in immune system [[ScType](https://sctype.app/database.php) database]. + \*\*`Azimuth_BM_level1.csv` is converted to `submission_markerGenes.tsv`, in the final submission format. + - Since ScType annotates cell types at cluster level using marker genes provided by user or from the built-in database, we employ [self-assembling manifold](https://github.com/atarashansky/self-assembling-manifold/tree/master) (SAM) algorithm, a soft feature selection strategy for better separation of homogeneous cell types. -- After cell type annotation, we provide B cells as the normal cells in the sample, if there is any, to [CopyKat](https://github.com/navinlabcode/copykat), for identification of tumor cells. +- After cell type annotation, we fine-tune the annotated B cells by applying 99 percentile cutoff of non-B ScType score on the "B cell clusters". We then use the new B cells (i.e those cells which passed the cutoff) as the normal cells in running [CopyKat](https://github.com/navinlabcode/copykat), for the identification of tumor cells. We could not detect strong B cell signal in `SCPCL000082`. Here are the steps in the module: @@ -18,6 +20,10 @@ Here are the steps in the module: 2. Annotating cell type using ScType and identifying tumor cells using CopyKat (`scripts/02-03_annotation.R`) +3. Fine-tuning the B cells (`scripts/06_sctype_exploration.R`) + +4. Re-running CopyKat (`scripts/07_run_copykat.R`) + ## Usage Before running Rscripts in R or Rstudio, we first need to prepare the input files as shown in the next section, and run the following codes in the terminal for installing required libraries: @@ -44,21 +50,15 @@ The `scripts/00-01_processing_rds.R` requires the processed SingleCellExperiment As for the annotation, `scripts/02-03_annotation.R` requires cell type marker gene file, `Azimuth_BM_level1.csv`, as an input for ScType. This excel file contains a list of positive marker genes in Ensembl ID under `ensembl_id_positive_marker` for each cell type; *TMEM56* and *CD235a* are not detected in our dataset, thus they are being removed as part of the markers for Late Eryth and Pre Eryth respectively. As of now, there is no negative marker genes provided under `ensembl_id_negative_marker`. -## Output files - -Running `scripts/00-01_processing_rds.R` will generate two types of output: - -- `rds` objects in `scratch/` - -- umap plots showing leiden clustering in `plots/` +## Important output files -Running `scripts/02-03_annotation.R` will generate several outputs: +- `rds` objects in `results/rds` -- updated `rds` objects in `scratch/` +- ScType results of top 10 possible cell types in a cluster (`results/_sctype_top10_celltypes_perCluster.txt`) and ScType score (`results/_sctype_scores.txt`) -- umap plots showing cell type and CopyKat prediction (if there is any) and dotplots showing the features added with `AddModuleScore()` in `plots/` +- location of fine-tuned B cells in umap (`plots/sctype_exploration/_newBcells.png`) and the cell type assignment with added fine-tuned B cells (`results/_newB-normal-annotation.txt`) -- ScType results of top 10 possible cell types in a cluster (`_sctype_top10_celltypes_perCluster.txt`) and metadata file tabulating leiden cluster, cell type, low confidence cell type, and CopyKat prediction for each cell (`_metadata.txt`) in `results/` +- final submission table (`results/submission_table/_metadata.tsv`) and the umap plots showing cell_type_assignment from ScType and tumor_cell_classification from CopyKat using fine-tuned B cells (`results/submission_table/multipanels_.png`) ## Software requirements diff --git a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000076_blastModuleScore.png b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000076_blastModuleScore.png index c17dd4f95..16ef89395 100644 Binary files a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000076_blastModuleScore.png and b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000076_blastModuleScore.png differ diff --git a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000076_celltypeVScopykat.png b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000076_celltypeVScopykat.png index c6a20075a..41ead1823 100644 Binary files a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000076_celltypeVScopykat.png and b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000076_celltypeVScopykat.png differ diff --git a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000077_blastModuleScore.png b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000077_blastModuleScore.png new file mode 100644 index 000000000..07fc4f059 Binary files /dev/null and b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000077_blastModuleScore.png differ diff --git a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000077_celltypeVScopykat.png b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000077_celltypeVScopykat.png new file mode 100644 index 000000000..71ae1572c Binary files /dev/null and b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000077_celltypeVScopykat.png differ diff --git a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000078_blastModuleScore.png b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000078_blastModuleScore.png index 4f7e0581c..110407d11 100644 Binary files a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000078_blastModuleScore.png and b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000078_blastModuleScore.png differ diff --git a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000078_celltypeVScopykat.png b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000078_celltypeVScopykat.png index 2a4ace4e0..51383301c 100644 Binary files a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000078_celltypeVScopykat.png and b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000078_celltypeVScopykat.png differ diff --git a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000079_blastModuleScore.png b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000079_blastModuleScore.png index c3c82e1bb..8a82ce323 100644 Binary files a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000079_blastModuleScore.png and b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000079_blastModuleScore.png differ diff --git a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000079_celltypeVScopykat.png b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000079_celltypeVScopykat.png index c4e8beb0d..bd3cbf8e9 100644 Binary files a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000079_celltypeVScopykat.png and b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000079_celltypeVScopykat.png differ diff --git a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000080_blastModuleScore.png b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000080_blastModuleScore.png index f68b799eb..475425f9f 100644 Binary files a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000080_blastModuleScore.png and b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000080_blastModuleScore.png differ diff --git a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000080_celltypeVScopykat.png b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000080_celltypeVScopykat.png index bc87e54db..95ef7fc15 100644 Binary files a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000080_celltypeVScopykat.png and b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000080_celltypeVScopykat.png differ diff --git a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000081_blastModuleScore.png b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000081_blastModuleScore.png index eae6b7b59..fb3fe71d2 100644 Binary files a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000081_blastModuleScore.png and b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000081_blastModuleScore.png differ diff --git a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000081_celltypeVScopykat.png b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000081_celltypeVScopykat.png index 3b6385348..36fd636cc 100644 Binary files a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000081_celltypeVScopykat.png and b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000081_celltypeVScopykat.png differ diff --git a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000703_blastModuleScore.png b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000703_blastModuleScore.png index 8312e8808..520187dd8 100644 Binary files a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000703_blastModuleScore.png and b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000703_blastModuleScore.png differ diff --git a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000703_celltypeVScopykat.png b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000703_celltypeVScopykat.png index d49cf1548..10f793e62 100644 Binary files a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000703_celltypeVScopykat.png and b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000703_celltypeVScopykat.png differ diff --git a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000704_blastModuleScore.png b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000704_blastModuleScore.png new file mode 100644 index 000000000..445105bc2 Binary files /dev/null and b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000704_blastModuleScore.png differ diff --git a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000704_celltypeVScopykat.png b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000704_celltypeVScopykat.png new file mode 100644 index 000000000..a241fbb38 Binary files /dev/null and b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000704_celltypeVScopykat.png differ diff --git a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000706_blastModuleScore.png b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000706_blastModuleScore.png index a52926f25..35abc03b0 100644 Binary files a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000706_blastModuleScore.png and b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000706_blastModuleScore.png differ diff --git a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000706_celltypeVScopykat.png b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000706_celltypeVScopykat.png index c154287ad..b8a68af2d 100644 Binary files a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000706_celltypeVScopykat.png and b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000706_celltypeVScopykat.png differ diff --git a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000710_blastModuleScore.png b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000710_blastModuleScore.png new file mode 100644 index 000000000..f53c7f504 Binary files /dev/null and b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000710_blastModuleScore.png differ diff --git a/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000710_celltypeVScopykat.png b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000710_celltypeVScopykat.png new file mode 100644 index 000000000..255b2536e Binary files /dev/null and b/analyses/cell-type-nonETP-ALL-03/plots/copykat_exploration/SCPCL000710_celltypeVScopykat.png differ diff --git a/analyses/cell-type-nonETP-ALL-03/plots/SCPCL000077-SCPCL000703_splitPlot.png b/analyses/cell-type-nonETP-ALL-03/plots/merging/SCPCL000077-SCPCL000703_splitPlot.png similarity index 100% rename from analyses/cell-type-nonETP-ALL-03/plots/SCPCL000077-SCPCL000703_splitPlot.png rename to analyses/cell-type-nonETP-ALL-03/plots/merging/SCPCL000077-SCPCL000703_splitPlot.png diff --git a/analyses/cell-type-nonETP-ALL-03/plots/SCPCL000082-SCPCL000703_splitPlot.png b/analyses/cell-type-nonETP-ALL-03/plots/merging/SCPCL000082-SCPCL000703_splitPlot.png similarity index 100% rename from analyses/cell-type-nonETP-ALL-03/plots/SCPCL000082-SCPCL000703_splitPlot.png rename to analyses/cell-type-nonETP-ALL-03/plots/merging/SCPCL000082-SCPCL000703_splitPlot.png diff --git a/analyses/cell-type-nonETP-ALL-03/plots/SCPCL000704-SCPCL000703_splitPlot.png b/analyses/cell-type-nonETP-ALL-03/plots/merging/SCPCL000704-SCPCL000703_splitPlot.png similarity index 100% rename from analyses/cell-type-nonETP-ALL-03/plots/SCPCL000704-SCPCL000703_splitPlot.png rename to analyses/cell-type-nonETP-ALL-03/plots/merging/SCPCL000704-SCPCL000703_splitPlot.png diff --git a/analyses/cell-type-nonETP-ALL-03/plots/SCPCL000706-SCPCL000703_splitPlot.png b/analyses/cell-type-nonETP-ALL-03/plots/merging/SCPCL000706-SCPCL000703_splitPlot.png similarity index 100% rename from analyses/cell-type-nonETP-ALL-03/plots/SCPCL000706-SCPCL000703_splitPlot.png rename to analyses/cell-type-nonETP-ALL-03/plots/merging/SCPCL000706-SCPCL000703_splitPlot.png diff --git a/analyses/cell-type-nonETP-ALL-03/plots/SCPCL000710-SCPCL000703_splitPlot.png b/analyses/cell-type-nonETP-ALL-03/plots/merging/SCPCL000710-SCPCL000703_splitPlot.png similarity index 100% rename from analyses/cell-type-nonETP-ALL-03/plots/SCPCL000710-SCPCL000703_splitPlot.png rename to analyses/cell-type-nonETP-ALL-03/plots/merging/SCPCL000710-SCPCL000703_splitPlot.png diff --git a/analyses/cell-type-nonETP-ALL-03/plots/multipanels_SCPCL000077-SCPCL000703.png b/analyses/cell-type-nonETP-ALL-03/plots/merging/multipanels_SCPCL000077-SCPCL000703.png similarity index 100% rename from analyses/cell-type-nonETP-ALL-03/plots/multipanels_SCPCL000077-SCPCL000703.png rename to analyses/cell-type-nonETP-ALL-03/plots/merging/multipanels_SCPCL000077-SCPCL000703.png diff --git a/analyses/cell-type-nonETP-ALL-03/plots/multipanels_SCPCL000082-SCPCL000703.png b/analyses/cell-type-nonETP-ALL-03/plots/merging/multipanels_SCPCL000082-SCPCL000703.png similarity index 100% rename from analyses/cell-type-nonETP-ALL-03/plots/multipanels_SCPCL000082-SCPCL000703.png rename to analyses/cell-type-nonETP-ALL-03/plots/merging/multipanels_SCPCL000082-SCPCL000703.png diff --git a/analyses/cell-type-nonETP-ALL-03/plots/multipanels_SCPCL000704-SCPCL000703.png b/analyses/cell-type-nonETP-ALL-03/plots/merging/multipanels_SCPCL000704-SCPCL000703.png similarity index 100% rename from analyses/cell-type-nonETP-ALL-03/plots/multipanels_SCPCL000704-SCPCL000703.png rename to analyses/cell-type-nonETP-ALL-03/plots/merging/multipanels_SCPCL000704-SCPCL000703.png diff --git a/analyses/cell-type-nonETP-ALL-03/plots/multipanels_SCPCL000706-SCPCL000703.png b/analyses/cell-type-nonETP-ALL-03/plots/merging/multipanels_SCPCL000706-SCPCL000703.png similarity index 100% rename from analyses/cell-type-nonETP-ALL-03/plots/multipanels_SCPCL000706-SCPCL000703.png rename to analyses/cell-type-nonETP-ALL-03/plots/merging/multipanels_SCPCL000706-SCPCL000703.png diff --git a/analyses/cell-type-nonETP-ALL-03/plots/multipanels_SCPCL000710-SCPCL000703.png b/analyses/cell-type-nonETP-ALL-03/plots/merging/multipanels_SCPCL000710-SCPCL000703.png similarity index 100% rename from analyses/cell-type-nonETP-ALL-03/plots/multipanels_SCPCL000710-SCPCL000703.png rename to analyses/cell-type-nonETP-ALL-03/plots/merging/multipanels_SCPCL000710-SCPCL000703.png diff --git a/analyses/cell-type-nonETP-ALL-03/renv.lock b/analyses/cell-type-nonETP-ALL-03/renv.lock index 708c6c33b..84ed5a126 100644 --- a/analyses/cell-type-nonETP-ALL-03/renv.lock +++ b/analyses/cell-type-nonETP-ALL-03/renv.lock @@ -66,6 +66,20 @@ ], "Hash": "ef32d07aafdd12f24c5827374ae3590d" }, + "BiocIO": { + "Package": "BiocIO", + "Version": "1.14.0", + "Source": "Bioconductor", + "Repository": "Bioconductor 3.19", + "Requirements": [ + "BiocGenerics", + "R", + "S4Vectors", + "methods", + "tools" + ], + "Hash": "f97a7ef01d364cf20d1946d43a3d526f" + }, "BiocManager": { "Package": "BiocManager", "Version": "1.30.25", @@ -121,6 +135,26 @@ ], "Hash": "b892e27fc9659a4c8f8787d34c37b8b2" }, + "Biostrings": { + "Package": "Biostrings", + "Version": "2.72.1", + "Source": "Bioconductor", + "Repository": "Bioconductor 3.19", + "Requirements": [ + "BiocGenerics", + "GenomeInfoDb", + "IRanges", + "R", + "S4Vectors", + "XVector", + "crayon", + "grDevices", + "methods", + "stats", + "utils" + ], + "Hash": "886ff0ed958d6f839ed2e0d01f6853b3" + }, "DelayedArray": { "Package": "DelayedArray", "Version": "0.30.1", @@ -143,13 +177,13 @@ }, "FNN": { "Package": "FNN", - "Version": "1.1.4", + "Version": "1.1.4.1", "Source": "Repository", - "Repository": "CRAN", + "Repository": "RSPM", "Requirements": [ "R" ], - "Hash": "eaabdc7938aa3632a28273f53a0d226d" + "Hash": "c7b4a49c7f435d0a67bb1e127e953d75" }, "GenomeInfoDb": { "Package": "GenomeInfoDb", @@ -179,9 +213,31 @@ ], "Hash": "c3c792a7b7f2677be56e8632c5b7543d" }, + "GenomicAlignments": { + "Package": "GenomicAlignments", + "Version": "1.40.0", + "Source": "Bioconductor", + "Repository": "Bioconductor 3.19", + "Requirements": [ + "BiocGenerics", + "BiocParallel", + "Biostrings", + "GenomeInfoDb", + "GenomicRanges", + "IRanges", + "R", + "Rsamtools", + "S4Vectors", + "SummarizedExperiment", + "methods", + "stats", + "utils" + ], + "Hash": "e539709764587c581b31e446dc84d7b8" + }, "GenomicRanges": { "Package": "GenomicRanges", - "Version": "1.56.1", + "Version": "1.56.2", "Source": "Bioconductor", "Repository": "Bioconductor 3.19", "Requirements": [ @@ -196,7 +252,7 @@ "stats4", "utils" ], - "Hash": "a3c822ef3c124828e25e7a9611beeb50" + "Hash": "fecd026026c4d45e3b57eee97bbbba92" }, "HGNChelper": { "Package": "HGNChelper", @@ -211,6 +267,13 @@ ], "Hash": "ed5a67b4c7ae01edd46809f1387adbee" }, + "HiddenMarkov": { + "Package": "HiddenMarkov", + "Version": "1.8-13", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "26d4e106f5429773167ccf8f55581cdd" + }, "IRanges": { "Package": "IRanges", "Version": "2.38.1", @@ -341,6 +404,18 @@ ], "Hash": "45f0398006e83a5b10b72a90663d8d8c" }, + "RCurl": { + "Package": "RCurl", + "Version": "1.98-1.16", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "bitops", + "methods" + ], + "Hash": "ddbdf53d15b47be4407ede6914f56fbb" + }, "ROCR": { "Package": "ROCR", "Version": "1.0-11", @@ -475,6 +550,41 @@ "Repository": "CRAN", "Hash": "c966ea2957ff75e77afa5c908dfc89e1" }, + "Rhtslib": { + "Package": "Rhtslib", + "Version": "3.0.0", + "Source": "Bioconductor", + "Repository": "Bioconductor 3.19", + "Requirements": [ + "tools", + "zlibbioc" + ], + "Hash": "5d6514cd44a0106581e3310f3972a82e" + }, + "Rsamtools": { + "Package": "Rsamtools", + "Version": "2.20.0", + "Source": "Bioconductor", + "Repository": "Bioconductor 3.19", + "Requirements": [ + "BiocGenerics", + "BiocParallel", + "Biostrings", + "GenomeInfoDb", + "GenomicRanges", + "IRanges", + "R", + "Rhtslib", + "S4Vectors", + "XVector", + "bitops", + "methods", + "stats", + "utils", + "zlibbioc" + ], + "Hash": "9762f24dcbdbd1626173c516bb64792c" + }, "Rtsne": { "Package": "Rtsne", "Version": "0.17", @@ -689,6 +799,18 @@ ], "Hash": "2f6c8cc972ed6aee07c96e3dff729d15" }, + "TH.data": { + "Package": "TH.data", + "Version": "1.1-2", + "Source": "Repository", + "Repository": "RSPM", + "Requirements": [ + "MASS", + "R", + "survival" + ], + "Hash": "5b250ad4c5863ee4a68e280fcb0a3600" + }, "UCSC.utils": { "Package": "UCSC.utils", "Version": "1.0.0", @@ -703,6 +825,18 @@ ], "Hash": "83d45b690bffd09d1980c224ef329f5b" }, + "XML": { + "Package": "XML", + "Version": "3.99-0.17", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods", + "utils" + ], + "Hash": "bc2a8a1139d8d4bd9c46086708945124" + }, "XVector": { "Package": "XVector", "Version": "0.44.0", @@ -732,15 +866,47 @@ ], "Hash": "2288423bb0f20a457800d7fc47f6aa54" }, + "ape": { + "Package": "ape", + "Version": "5.8", + "Source": "Repository", + "Repository": "RSPM", + "Requirements": [ + "R", + "Rcpp", + "digest", + "graphics", + "lattice", + "methods", + "nlme", + "parallel", + "stats", + "utils" + ], + "Hash": "16b5ff4dff0ead9ea955f62f794b1535" + }, + "argparse": { + "Package": "argparse", + "Version": "2.2.3", + "Source": "Repository", + "Repository": "RSPM", + "Requirements": [ + "R", + "R6", + "findpython", + "jsonlite" + ], + "Hash": "e575af52e22a8e91174473809cfe107d" + }, "askpass": { "Package": "askpass", - "Version": "1.2.0", + "Version": "1.2.1", "Source": "Repository", - "Repository": "CRAN", + "Repository": "RSPM", "Requirements": [ "sys" ], - "Hash": "cad6cf7f1d5f6e906700b9d3e718c796" + "Hash": "c39f4155b3ceb1a9a2799d700fbd4b6a" }, "base64enc": { "Package": "base64enc", @@ -752,12 +918,36 @@ ], "Hash": "543776ae6848fde2f48ff3816d0628bc" }, + "bit": { + "Package": "bit", + "Version": "4.5.0", + "Source": "Repository", + "Repository": "RSPM", + "Requirements": [ + "R" + ], + "Hash": "5dc7b2677d65d0e874fc4aaf0e879987" + }, + "bit64": { + "Package": "bit64", + "Version": "4.5.2", + "Source": "Repository", + "Repository": "RSPM", + "Requirements": [ + "R", + "bit", + "methods", + "stats", + "utils" + ], + "Hash": "e84984bf5f12a18628d9a02322128dfd" + }, "bitops": { "Package": "bitops", - "Version": "1.0-8", + "Version": "1.0-9", "Source": "Repository", - "Repository": "CRAN", - "Hash": "da69e6b6f8feebec0827205aad3fdbd8" + "Repository": "RSPM", + "Hash": "d972ef991d58c19e6efa71b21f5e144b" }, "bluster": { "Package": "bluster", @@ -833,6 +1023,16 @@ ], "Hash": "b21916dd77a27642b447374a5d30ecf3" }, + "clipr": { + "Package": "clipr", + "Version": "0.8.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "utils" + ], + "Hash": "3f038e5ac7f41d4ac41ce658c85e3042" + }, "cluster": { "Package": "cluster", "Version": "2.1.6", @@ -868,6 +1068,27 @@ ], "Hash": "61e097f35917d342622f21cdc79c256e" }, + "coin": { + "Package": "coin", + "Version": "1.4-3", + "Source": "Repository", + "Repository": "RSPM", + "Requirements": [ + "R", + "libcoin", + "matrixStats", + "methods", + "modeltools", + "multcomp", + "mvtnorm", + "parallel", + "stats", + "stats4", + "survival", + "utils" + ], + "Hash": "4084b5070a40ad99dad581ed3b67bd55" + }, "colorspace": { "Package": "colorspace", "Version": "2.1-1", @@ -884,10 +1105,10 @@ }, "commonmark": { "Package": "commonmark", - "Version": "1.9.1", + "Version": "1.9.2", "Source": "Repository", - "Repository": "CRAN", - "Hash": "5d8225445acb167abf7797de48b2ee3c" + "Repository": "RSPM", + "Hash": "14eb0596f987c71535d07c3aff814742" }, "copykat": { "Package": "copykat", @@ -897,7 +1118,6 @@ "RemoteHost": "api.github.com", "RemoteRepo": "copykat", "RemoteUsername": "navinlabcode", - "RemoteRef": "HEAD", "RemoteSha": "d7d6569ae9e30bf774908301af312f626de4cbd5", "Requirements": [ "MCMCpack", @@ -966,24 +1186,24 @@ }, "curl": { "Package": "curl", - "Version": "5.2.2", + "Version": "5.2.3", "Source": "Repository", - "Repository": "CRAN", + "Repository": "RSPM", "Requirements": [ "R" ], - "Hash": "8f27335f2bcff4d6035edcc82d7d46de" + "Hash": "d91263322a58af798f6cf3b13fd56dde" }, "data.table": { "Package": "data.table", - "Version": "1.16.0", + "Version": "1.16.2", "Source": "Repository", - "Repository": "CRAN", + "Repository": "RSPM", "Requirements": [ "R", "methods" ], - "Hash": "fb24e05d4a91d8b1c7ff8e284bde834a" + "Hash": "2e00b378fc3be69c865120d9f313039a" }, "deldir": { "Package": "deldir", @@ -997,6 +1217,22 @@ ], "Hash": "24754fce82729ff85317dd195b6646a8" }, + "dendextend": { + "Package": "dendextend", + "Version": "1.18.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "datasets", + "ggplot2", + "magrittr", + "stats", + "utils", + "viridis" + ], + "Hash": "735689b7975ad5a4d72b571857d60a33" + }, "digest": { "Package": "digest", "Version": "0.6.37", @@ -1010,7 +1246,7 @@ }, "dlm": { "Package": "dlm", - "Version": "1.1-6", + "Version": "1.1-6.1", "Source": "Repository", "Repository": "RSPM", "Requirements": [ @@ -1020,17 +1256,31 @@ "stats", "utils" ], - "Hash": "e0dff489d999029c03330f063668e590" + "Hash": "9f673cbcf481e0f89883217d2a82ff7c" + }, + "doParallel": { + "Package": "doParallel", + "Version": "1.0.17", + "Source": "Repository", + "Repository": "RSPM", + "Requirements": [ + "R", + "foreach", + "iterators", + "parallel", + "utils" + ], + "Hash": "451e5edf411987991ab6a5410c45011f" }, "dotCall64": { "Package": "dotCall64", - "Version": "1.1-1", + "Version": "1.2", "Source": "Repository", - "Repository": "CRAN", + "Repository": "RSPM", "Requirements": [ "R" ], - "Hash": "80f374ef8500fcdc5d84a0345b837227" + "Hash": "7339da8bc231184ec506d7d144776b2a" }, "dplyr": { "Package": "dplyr", @@ -1068,15 +1318,32 @@ ], "Hash": "6d7b942d8f615705f89a7883998fc839" }, + "edgeR": { + "Package": "edgeR", + "Version": "4.2.2", + "Source": "Bioconductor", + "Repository": "Bioconductor 3.19", + "Requirements": [ + "R", + "Rcpp", + "graphics", + "limma", + "locfit", + "methods", + "stats", + "utils" + ], + "Hash": "4c31c0395110252e4ec7cf4ee9cbebb6" + }, "evaluate": { "Package": "evaluate", - "Version": "1.0.0", + "Version": "1.0.1", "Source": "Repository", - "Repository": "CRAN", + "Repository": "RSPM", "Requirements": [ "R" ], - "Hash": "6b567375113ceb7d9f800de4dd42218e" + "Hash": "3fd29944b231036ad67c3edb32e02201" }, "fansi": { "Package": "fansi", @@ -1110,6 +1377,16 @@ ], "Hash": "dc256683a45e31f9dc553440b909f198" }, + "fastcluster": { + "Package": "fastcluster", + "Version": "1.2.6", + "Source": "Repository", + "Repository": "RSPM", + "Requirements": [ + "R" + ], + "Hash": "2ed9ecb93023f39a449726ed4d43dff8" + }, "fastmap": { "Package": "fastmap", "Version": "1.2.0", @@ -1117,6 +1394,13 @@ "Repository": "CRAN", "Hash": "aa5e1cd11c2d15497494c5292d7ffcc8" }, + "findpython": { + "Package": "findpython", + "Version": "1.0.8", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "8f9aa3ce842296afaad4083b839481a1" + }, "fitdistrplus": { "Package": "fitdistrplus", "Version": "1.2-1", @@ -1161,6 +1445,19 @@ ], "Hash": "1a0a9a3d5083d0d573c4214576f1e690" }, + "foreach": { + "Package": "foreach", + "Version": "1.5.2", + "Source": "Repository", + "Repository": "RSPM", + "Requirements": [ + "R", + "codetools", + "iterators", + "utils" + ], + "Hash": "618609b42c9406731ead03adf5379850" + }, "formatR": { "Package": "formatR", "Version": "1.14", @@ -1260,6 +1557,16 @@ ], "Hash": "b052bd270aeddeca332c20feecfb039d" }, + "getopt": { + "Package": "getopt", + "Version": "1.20.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "stats" + ], + "Hash": "ed33b16c6d24f7ced1d68877ac2509ee" + }, "ggplot2": { "Package": "ggplot2", "Version": "3.5.1", @@ -1341,14 +1648,14 @@ }, "glue": { "Package": "glue", - "Version": "1.7.0", + "Version": "1.8.0", "Source": "Repository", - "Repository": "CRAN", + "Repository": "RSPM", "Requirements": [ "R", "methods" ], - "Hash": "e0b3a53876554bd45879e596cdb10a52" + "Hash": "5899f1eaa825580172bb56c08266f37c" }, "goftest": { "Package": "goftest", @@ -1363,9 +1670,9 @@ }, "gplots": { "Package": "gplots", - "Version": "3.1.3.1", + "Version": "3.2.0", "Source": "Repository", - "Repository": "CRAN", + "Repository": "RSPM", "Requirements": [ "KernSmooth", "R", @@ -1374,7 +1681,7 @@ "methods", "stats" ], - "Hash": "f72b5d1ed587f8905e38ee7295e88d80" + "Hash": "d24febf39c58dcb5a6cc6a12bd66d40a" }, "gridExtra": { "Package": "gridExtra", @@ -1459,6 +1766,20 @@ ], "Hash": "d65ba49117ca223614f71b60d85b8ab7" }, + "hms": { + "Package": "hms", + "Version": "1.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "lifecycle", + "methods", + "pkgconfig", + "rlang", + "vctrs" + ], + "Hash": "b59377caa7ed00fa41808342002138f9" + }, "htmltools": { "Package": "htmltools", "Version": "0.5.8.1", @@ -1529,9 +1850,9 @@ }, "igraph": { "Package": "igraph", - "Version": "2.0.3", + "Version": "2.1.1", "Source": "Repository", - "Repository": "CRAN", + "Repository": "RSPM", "Requirements": [ "Matrix", "R", @@ -1548,7 +1869,54 @@ "utils", "vctrs" ], - "Hash": "c3b7d801d722e26e4cd888e042bf9af5" + "Hash": "c03878b48737a0e2da3b772d7b2e22da" + }, + "infercnv": { + "Package": "infercnv", + "Version": "1.20.0", + "Source": "Bioconductor", + "Repository": "Bioconductor 3.19", + "Requirements": [ + "BiocGenerics", + "HiddenMarkov", + "Matrix", + "R", + "RANN", + "RColorBrewer", + "Seurat", + "SingleCellExperiment", + "SummarizedExperiment", + "ape", + "argparse", + "caTools", + "coda", + "coin", + "digest", + "doParallel", + "dplyr", + "edgeR", + "fastcluster", + "fitdistrplus", + "foreach", + "futile.logger", + "future", + "ggplot2", + "gplots", + "grDevices", + "graphics", + "gridExtra", + "igraph", + "methods", + "parallel", + "parallelDist", + "phyclust", + "reshape2", + "rjags", + "stats", + "tidyr", + "utils" + ], + "Hash": "eaf21e1aab39c0b466304b316cc8d031" }, "irlba": { "Package": "irlba", @@ -1574,6 +1942,17 @@ ], "Hash": "0080607b4a1a7b28979aecef976d8bc2" }, + "iterators": { + "Package": "iterators", + "Version": "1.0.14", + "Source": "Repository", + "Repository": "RSPM", + "Requirements": [ + "R", + "utils" + ], + "Hash": "8954069286b4b2b0d023d1b288dce978" + }, "jquerylib": { "Package": "jquerylib", "Version": "0.1.4", @@ -1586,13 +1965,13 @@ }, "jsonlite": { "Package": "jsonlite", - "Version": "1.8.8", + "Version": "1.8.9", "Source": "Repository", - "Repository": "CRAN", + "Repository": "RSPM", "Requirements": [ "methods" ], - "Hash": "e1b9c55281c5adc4dd113652d9e26768" + "Hash": "4e993b65c2c3ffbffce7bb3e2c6f832b" }, "kernlab": { "Package": "kernlab", @@ -1695,6 +2074,18 @@ ], "Hash": "b21c4ae2bb7935504c42bcdf749c04e6" }, + "libcoin": { + "Package": "libcoin", + "Version": "1.0-10", + "Source": "Repository", + "Repository": "RSPM", + "Requirements": [ + "R", + "mvtnorm", + "stats" + ], + "Hash": "3f3775a14588ff5d013e5eab4453bf28" + }, "lifecycle": { "Package": "lifecycle", "Version": "1.0.4", @@ -1708,6 +2099,22 @@ ], "Hash": "b8552d117e1b808b09a832f589b79035" }, + "limma": { + "Package": "limma", + "Version": "3.60.6", + "Source": "Bioconductor", + "Repository": "Bioconductor 3.19", + "Requirements": [ + "R", + "grDevices", + "graphics", + "methods", + "statmod", + "stats", + "utils" + ], + "Hash": "0eccf07d5db97b84a912922e1d29e130" + }, "linprog": { "Package": "linprog", "Version": "0.9-4", @@ -1742,6 +2149,17 @@ ], "Hash": "c6fafa6cccb1e1dfe7f7d122efd6e6a7" }, + "locfit": { + "Package": "locfit", + "Version": "1.5-9.10", + "Source": "Repository", + "Repository": "RSPM", + "Requirements": [ + "R", + "lattice" + ], + "Hash": "7d8e0ac914051ca0254332387d9b5816" + }, "lpSolve": { "Package": "lpSolve", "Version": "5.6.21", @@ -1858,6 +2276,34 @@ ], "Hash": "2b9414057d7f3725130e2f743ea05a2f" }, + "modeltools": { + "Package": "modeltools", + "Version": "0.2-23", + "Source": "Repository", + "Repository": "RSPM", + "Requirements": [ + "methods", + "stats", + "stats4" + ], + "Hash": "f5a957c02222589bdf625a67be68b2a9" + }, + "multcomp": { + "Package": "multcomp", + "Version": "1.4-26", + "Source": "Repository", + "Repository": "RSPM", + "Requirements": [ + "TH.data", + "codetools", + "graphics", + "mvtnorm", + "sandwich", + "stats", + "survival" + ], + "Hash": "ec6f951a557132215fab91912acdd9ef" + }, "munsell": { "Package": "munsell", "Version": "0.5.1", @@ -1869,6 +2315,17 @@ ], "Hash": "4fd8900853b746af55b81fda99da7695" }, + "mvtnorm": { + "Package": "mvtnorm", + "Version": "1.3-1", + "Source": "Repository", + "Repository": "RSPM", + "Requirements": [ + "R", + "stats" + ], + "Hash": "77c61d51ce0f36e3c1a76e6b295aab31" + }, "nlme": { "Package": "nlme", "Version": "3.1-164", @@ -1885,13 +2342,25 @@ }, "openssl": { "Package": "openssl", - "Version": "2.2.1", + "Version": "2.2.2", "Source": "Repository", - "Repository": "CRAN", + "Repository": "RSPM", "Requirements": [ "askpass" ], - "Hash": "c62edf62de70cadf40553e10c739049d" + "Hash": "d413e0fef796c9401a4419485f709ca1" + }, + "optparse": { + "Package": "optparse", + "Version": "1.7.5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "getopt", + "methods" + ], + "Hash": "ce5f8381cd2c38d1fc14c83d8b21efd0" }, "parallelDist": { "Package": "parallelDist", @@ -1959,6 +2428,17 @@ ], "Hash": "51e3a7a4af0b863e5d380575cbd33cda" }, + "phyclust": { + "Package": "phyclust", + "Version": "0.1-34", + "Source": "Repository", + "Repository": "RSPM", + "Requirements": [ + "R", + "ape" + ], + "Hash": "18a29354ea762dd01042d8697b7089d4" + }, "pillar": { "Package": "pillar", "Version": "1.9.0", @@ -2049,6 +2529,30 @@ ], "Hash": "5879bf5aae702ffef0a315c44328f984" }, + "prettyunits": { + "Package": "prettyunits", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "6b01fc98b1e86c4f705ce9dcfd2f57c7" + }, + "progress": { + "Package": "progress", + "Version": "1.2.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "crayon", + "hms", + "prettyunits" + ], + "Hash": "f4625e061cb2865f111b47ff163a5ca6" + }, "progressr": { "Package": "progressr", "Version": "0.14.0", @@ -2144,15 +2648,38 @@ ], "Hash": "5e3c5dc0b071b21fa128676560dbe94d" }, + "readr": { + "Package": "readr", + "Version": "2.1.5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "cli", + "clipr", + "cpp11", + "crayon", + "hms", + "lifecycle", + "methods", + "rlang", + "tibble", + "tzdb", + "utils", + "vroom" + ], + "Hash": "9de96463d2117f6ac49980577939dfb3" + }, "renv": { "Package": "renv", - "Version": "1.0.7", + "Version": "1.0.11", "Source": "Repository", "Repository": "RSPM", "Requirements": [ "utils" ], - "Hash": "397b7b2a265bc5a7a06852524dabae20" + "Hash": "47623f66b4e80b3b0587bc5d7b309888" }, "reshape2": { "Package": "reshape2", @@ -2167,6 +2694,22 @@ ], "Hash": "bb5996d0bd962d214a11140d77589917" }, + "restfulr": { + "Package": "restfulr", + "Version": "0.0.15", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "RCurl", + "S4Vectors", + "XML", + "methods", + "rjson", + "yaml" + ], + "Hash": "44651c1e68eda9d462610aca9f15a815" + }, "reticulate": { "Package": "reticulate", "Version": "1.39.0", @@ -2212,6 +2755,27 @@ ], "Hash": "99e15369f8fb17dc188377234de13fc6" }, + "rjags": { + "Package": "rjags", + "Version": "4-16", + "Source": "Repository", + "Repository": "RSPM", + "Requirements": [ + "R", + "coda" + ], + "Hash": "a36ff5b8df160527e29037be8e1cdf7d" + }, + "rjson": { + "Package": "rjson", + "Version": "0.2.23", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "7a04e9eff95857dbf557b4e5f0b3d1a8" + }, "rlang": { "Package": "rlang", "Version": "1.1.4", @@ -2256,6 +2820,46 @@ ], "Hash": "4c8415e0ec1e29f3f4f6fc108bef0144" }, + "rtracklayer": { + "Package": "rtracklayer", + "Version": "1.64.0", + "Source": "Bioconductor", + "Repository": "Bioconductor 3.19", + "Requirements": [ + "BiocGenerics", + "BiocIO", + "Biostrings", + "GenomeInfoDb", + "GenomicAlignments", + "GenomicRanges", + "IRanges", + "R", + "Rsamtools", + "S4Vectors", + "XML", + "XVector", + "curl", + "httr", + "methods", + "restfulr", + "tools", + "zlibbioc" + ], + "Hash": "3d6f004fce582bd7d68e2e18d44abbc1" + }, + "sandwich": { + "Package": "sandwich", + "Version": "3.1-1", + "Source": "Repository", + "Repository": "RSPM", + "Requirements": [ + "R", + "stats", + "utils", + "zoo" + ], + "Hash": "072bb2d27425f2a58fe71fe1080676ce" + }, "sass": { "Package": "sass", "Version": "0.4.9", @@ -2312,7 +2916,6 @@ "RemoteHost": "api.github.com", "RemoteRepo": "schard", "RemoteUsername": "cellgeni", - "RemoteRef": "HEAD", "RemoteSha": "ac382a6bdfc0fff164064f8dd0f0c3e29d0a15fc", "Requirements": [ "Matrix", @@ -2440,9 +3043,9 @@ }, "spam": { "Package": "spam", - "Version": "2.10-0", + "Version": "2.11-0", "Source": "Repository", - "Repository": "CRAN", + "Repository": "RSPM", "Requirements": [ "R", "Rcpp", @@ -2450,7 +3053,7 @@ "grid", "methods" ], - "Hash": "ffe1f9e95a4375530747b268f82b5086" + "Hash": "6581c0a0bb8594b85c8de869644174ac" }, "spatstat.data": { "Package": "spatstat.data", @@ -2582,6 +3185,18 @@ ], "Hash": "69b26ceb9f7976f347049b4d470c2d65" }, + "statmod": { + "Package": "statmod", + "Version": "1.5.0", + "Source": "Repository", + "Repository": "RSPM", + "Requirements": [ + "R", + "graphics", + "stats" + ], + "Hash": "26e158d12052c279bdd4ba858b80fb1f" + }, "stringi": { "Package": "stringi", "Version": "1.8.4", @@ -2630,10 +3245,10 @@ }, "sys": { "Package": "sys", - "Version": "3.4.2", + "Version": "3.4.3", "Source": "Repository", - "Repository": "CRAN", - "Hash": "3a1be13d68d47a8cd0bfd74739ca1555" + "Repository": "RSPM", + "Hash": "de342ebfebdbf40477d0758d05426646" }, "tensor": { "Package": "tensor", @@ -2710,6 +3325,17 @@ ], "Hash": "9db859e8aabbb474293dde3097839420" }, + "tzdb": { + "Package": "tzdb", + "Version": "0.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cpp11" + ], + "Hash": "f561504ec2897f4d46f0c7657e488ae1" + }, "utf8": { "Package": "utf8", "Version": "1.2.4", @@ -2752,6 +3378,19 @@ ], "Hash": "c03fa420630029418f7e6da3667aac4a" }, + "viridis": { + "Package": "viridis", + "Version": "0.6.5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "ggplot2", + "gridExtra", + "viridisLite" + ], + "Hash": "acd96d9fa70adeea4a5a1150609b9745" + }, "viridisLite": { "Package": "viridisLite", "Version": "0.4.2", @@ -2762,6 +3401,32 @@ ], "Hash": "c826c7c4241b6fc89ff55aaea3fa7491" }, + "vroom": { + "Package": "vroom", + "Version": "1.6.5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "bit64", + "cli", + "cpp11", + "crayon", + "glue", + "hms", + "lifecycle", + "methods", + "progress", + "rlang", + "stats", + "tibble", + "tidyselect", + "tzdb", + "vctrs", + "withr" + ], + "Hash": "390f9315bc0025be03012054103d227c" + }, "withr": { "Package": "withr", "Version": "3.0.1", @@ -2776,16 +3441,16 @@ }, "xfun": { "Package": "xfun", - "Version": "0.47", + "Version": "0.48", "Source": "Repository", - "Repository": "CRAN", + "Repository": "RSPM", "Requirements": [ "R", "grDevices", "stats", "tools" ], - "Hash": "36ab21660e2d095fef0d83f689e0477c" + "Hash": "89e455b87c84e227eb7f60a1b4e5fe1f" }, "xtable": { "Package": "xtable", diff --git a/analyses/cell-type-nonETP-ALL-03/renv/activate.R b/analyses/cell-type-nonETP-ALL-03/renv/activate.R index d13f9932a..0eb51088a 100644 --- a/analyses/cell-type-nonETP-ALL-03/renv/activate.R +++ b/analyses/cell-type-nonETP-ALL-03/renv/activate.R @@ -2,7 +2,7 @@ local({ # the requested version of renv - version <- "1.0.7" + version <- "1.0.11" attr(version, "sha") <- NULL # the project directory @@ -98,6 +98,66 @@ local({ unloadNamespace("renv") # load bootstrap tools + ansify <- function(text) { + if (renv_ansify_enabled()) + renv_ansify_enhanced(text) + else + renv_ansify_default(text) + } + + renv_ansify_enabled <- function() { + + override <- Sys.getenv("RENV_ANSIFY_ENABLED", unset = NA) + if (!is.na(override)) + return(as.logical(override)) + + pane <- Sys.getenv("RSTUDIO_CHILD_PROCESS_PANE", unset = NA) + if (identical(pane, "build")) + return(FALSE) + + testthat <- Sys.getenv("TESTTHAT", unset = "false") + if (tolower(testthat) %in% "true") + return(FALSE) + + iderun <- Sys.getenv("R_CLI_HAS_HYPERLINK_IDE_RUN", unset = "false") + if (tolower(iderun) %in% "false") + return(FALSE) + + TRUE + + } + + renv_ansify_default <- function(text) { + text + } + + renv_ansify_enhanced <- function(text) { + + # R help links + pattern <- "`\\?(renv::(?:[^`])+)`" + replacement <- "`\033]8;;ide:help:\\1\a?\\1\033]8;;\a`" + text <- gsub(pattern, replacement, text, perl = TRUE) + + # runnable code + pattern <- "`(renv::(?:[^`])+)`" + replacement <- "`\033]8;;ide:run:\\1\a\\1\033]8;;\a`" + text <- gsub(pattern, replacement, text, perl = TRUE) + + # return ansified text + text + + } + + renv_ansify_init <- function() { + + envir <- renv_envir_self() + if (renv_ansify_enabled()) + assign("ansify", renv_ansify_enhanced, envir = envir) + else + assign("ansify", renv_ansify_default, envir = envir) + + } + `%||%` <- function(x, y) { if (is.null(x)) y else x } @@ -142,7 +202,10 @@ local({ # compute common indent indent <- regexpr("[^[:space:]]", lines) common <- min(setdiff(indent, -1L)) - leave - paste(substring(lines, common), collapse = "\n") + text <- paste(substring(lines, common), collapse = "\n") + + # substitute in ANSI links for executable renv code + ansify(text) } @@ -305,8 +368,11 @@ local({ quiet = TRUE ) - if ("headers" %in% names(formals(utils::download.file))) - args$headers <- renv_bootstrap_download_custom_headers(url) + if ("headers" %in% names(formals(utils::download.file))) { + headers <- renv_bootstrap_download_custom_headers(url) + if (length(headers) && is.character(headers)) + args$headers <- headers + } do.call(utils::download.file, args) @@ -385,10 +451,21 @@ local({ for (type in types) { for (repos in renv_bootstrap_repos()) { + # build arguments for utils::available.packages() call + args <- list(type = type, repos = repos) + + # add custom headers if available -- note that + # utils::available.packages() will pass this to download.file() + if ("headers" %in% names(formals(utils::download.file))) { + headers <- renv_bootstrap_download_custom_headers(repos) + if (length(headers) && is.character(headers)) + args$headers <- headers + } + # retrieve package database db <- tryCatch( as.data.frame( - utils::available.packages(type = type, repos = repos), + do.call(utils::available.packages, args), stringsAsFactors = FALSE ), error = identity @@ -470,6 +547,14 @@ local({ } + renv_bootstrap_github_token <- function() { + for (envvar in c("GITHUB_TOKEN", "GITHUB_PAT", "GH_TOKEN")) { + envval <- Sys.getenv(envvar, unset = NA) + if (!is.na(envval)) + return(envval) + } + } + renv_bootstrap_download_github <- function(version) { enabled <- Sys.getenv("RENV_BOOTSTRAP_FROM_GITHUB", unset = "TRUE") @@ -477,16 +562,16 @@ local({ return(FALSE) # prepare download options - pat <- Sys.getenv("GITHUB_PAT") - if (nzchar(Sys.which("curl")) && nzchar(pat)) { + token <- renv_bootstrap_github_token() + if (nzchar(Sys.which("curl")) && nzchar(token)) { fmt <- "--location --fail --header \"Authorization: token %s\"" - extra <- sprintf(fmt, pat) + extra <- sprintf(fmt, token) saved <- options("download.file.method", "download.file.extra") options(download.file.method = "curl", download.file.extra = extra) on.exit(do.call(base::options, saved), add = TRUE) - } else if (nzchar(Sys.which("wget")) && nzchar(pat)) { + } else if (nzchar(Sys.which("wget")) && nzchar(token)) { fmt <- "--header=\"Authorization: token %s\"" - extra <- sprintf(fmt, pat) + extra <- sprintf(fmt, token) saved <- options("download.file.method", "download.file.extra") options(download.file.method = "wget", download.file.extra = extra) on.exit(do.call(base::options, saved), add = TRUE) diff --git a/analyses/cell-type-nonETP-ALL-03/results/README.md b/analyses/cell-type-nonETP-ALL-03/results/README.md index 11080bc8d..0c0fc2baa 100644 --- a/analyses/cell-type-nonETP-ALL-03/results/README.md +++ b/analyses/cell-type-nonETP-ALL-03/results/README.md @@ -12,8 +12,12 @@ These are the generated outputs for each sample in the S3 bucket: - `rds` objects: `s3://researcher-650251722463-us-east-2/cell-type-nonETP-ALL-03/results/rds` - metadata and ScType results: `s3://researcher-650251722463-us-east-2/cell-type-nonETP-ALL-03/results/` - CopyKat results: `s3://researcher-650251722463-us-east-2/cell-type-nonETP-ALL-03/results/copykat_output` +- InferCNV results: `s3://researcher-650251722463-us-east-2/cell-type-nonETP-ALL-03/results/infercnv_output` - evaluating cluster separation, stability, and purity: `s3://researcher-650251722463-us-east-2/cell-type-nonETP-ALL-03/results/evalClus` - umap and dot plots: `s3://researcher-650251722463-us-east-2/cell-type-nonETP-ALL-03/plots` - violin and stacked bar plots for exploring the results of CopyKat prediction: `s3://researcher-650251722463-us-east-2/cell-type-nonETP-ALL-03/plots/copykat_exploration` +- ridge plots showing the ScType score for each cell type in annotated B cells from ScType, SingleR, and CellAssign, as well as the scatter plots showing the relationship between B cell ScType score and cluster purity of these cells: `s3://researcher-650251722463-us-east-2/cell-type-nonETP-ALL-03/plots/sctype_exploration` +- ridge plots showing the ScType score for each cell type in fine-tuned B cells and feature plots showing the distribution of B cell ScType score: `s3://researcher-650251722463-us-east-2/cell-type-nonETP-ALL-03/plots/sctype_exploration` +- final submission `tsv` files and `png` for cell type and/or tumor cell classification: `s3://researcher-650251722463-us-east-2/cell-type-nonETP-ALL-03/results/submission_table` \*\*All the plots are also found in the repository plots/. diff --git a/analyses/cell-type-nonETP-ALL-03/scripts/exploratory-analyses/sctype_exploration.R b/analyses/cell-type-nonETP-ALL-03/scripts/06_sctype_exploration.R similarity index 100% rename from analyses/cell-type-nonETP-ALL-03/scripts/exploratory-analyses/sctype_exploration.R rename to analyses/cell-type-nonETP-ALL-03/scripts/06_sctype_exploration.R diff --git a/analyses/cell-type-nonETP-ALL-03/scripts/07_run_copykat.R b/analyses/cell-type-nonETP-ALL-03/scripts/07_run_copykat.R new file mode 100644 index 000000000..8a691df9b --- /dev/null +++ b/analyses/cell-type-nonETP-ALL-03/scripts/07_run_copykat.R @@ -0,0 +1,35 @@ +#!/usr/bin/env Rscript + +library(Seurat) +library(copykat) + +run_copykat <- function(ind.lib){ + seu <- readRDS(file.path(out_loc,"results/rds",paste0(ind.lib,".rds"))) + annot.file <- file.path(out_loc,"results",paste0(ind.lib,"_newB-normal-annotation.txt")) + if (file.exists(annot.file)){ #the sample has new B cells annotated + annot.df <- read.table(annot.file, header=F, row.names=1, sep="\t", stringsAsFactors=FALSE, + colClasses = c('character', 'character')) + norm.cells <- rownames(annot.df)[which(annot.df$V2=="new B")] + n_cores <- parallel::detectCores() - 1 + copykat.test <- copykat(rawmat=seu@assays[["RNA"]]@counts, id.type="Ensemble", + ngene.chr=5, win.size=25, KS.cut=0.1, sam.name=ind.lib, + distance="euclidean", norm.cell.names=norm.cells, + output.seg="FALSE", plot.genes="TRUE", genome="hg20",n.cores=n_cores) + idx <- match(colnames(seu), copykat.test$prediction$cell.names) + seu$newB.copykat.pred <- copykat.test$prediction$copykat.pred[idx] + saveRDS(seu, file = file.path(out_loc,"results/rds",paste0(ind.lib,".rds"))) + } +} + +project_root <- rprojroot::find_root(rprojroot::is_git_root) +projectID <- "SCPCP000003" +out_loc <- file.path(project_root, "analyses/cell-type-nonETP-ALL-03") +data_loc <- file.path(project_root, "data/current",projectID) +setwd(file.path(out_loc,"results/copykat_output")) + +metadata <- read.table(file.path(data_loc,"single_cell_metadata.tsv"), sep = "\t", header = T) +metadata <- metadata[which(metadata$scpca_project_id == projectID & + metadata$diagnosis == "Non-early T-cell precursor T-cell acute lymphoblastic leukemia"), ] +libraryID <- metadata$scpca_library_id + +purrr::walk(libraryID, run_copykat) diff --git a/analyses/cell-type-nonETP-ALL-03/scripts/exploratory-analyses/00-make-gene-order-file.R b/analyses/cell-type-nonETP-ALL-03/scripts/exploratory-analyses/00-make-gene-order-file.R new file mode 100644 index 000000000..1c04ff91e --- /dev/null +++ b/analyses/cell-type-nonETP-ALL-03/scripts/exploratory-analyses/00-make-gene-order-file.R @@ -0,0 +1,58 @@ +#!/usr/bin/env Rscript + +project_root <- rprojroot::find_root(rprojroot::is_git_root) + +library(optparse) + +option_list <- list( + make_option( + opt_str = c("--gtf_file"), + type = "character", + default = "s3://scpca-references/homo_sapiens/ensembl-104/annotation/Homo_sapiens.GRCh38.104.gtf.gz", + help = "URI to gtf file to create gene order file." + ), + make_option( + opt_str = c("--local_ref_dir"), + type = "character", + default = file.path(project_root, "references", "infercnv_refs"), + help = "Directory to use for saving GTF file and gene order file." + ), + make_option( + opt_str = c("--scratch_dir"), + type = "character", + default = file.path(project_root, "scratch"), + help = "Path to store copied GTF file" + ) +) + +# Parse options +opt <- parse_args(OptionParser(option_list = option_list)) + +# create ref directory if doesn't already exist +fs::dir_create(opt$local_ref_dir) + +# sync gtf file to local directory +gtf_filename <- basename(opt$gtf_file) + +local_gtf_file <- file.path(opt$scratch_dir, gtf_filename) +if (!file.exists(local_gtf_file)) { + sync_call <- glue::glue("aws s3 cp {opt$gtf_file} {local_gtf_file} --no-sign-request") + system(sync_call) +} + +# define gene order file name using gtf file +gtf_basename <- stringr::str_remove(gtf_filename, ".gtf.gz") +gene_order_filename <- glue::glue("{gtf_basename}.gene_order.txt") +gene_order_file <- file.path(opt$local_ref_dir, gene_order_filename) + +# read in gtf file +gtf <- rtracklayer::import(local_gtf_file, feature.type = "gene") + +# format gene order file +gtf_df <- gtf |> + as.data.frame() |> + dplyr::select(gene_id, seqnames, start, end) |> + dplyr::mutate(seqnames = glue::glue("chr{seqnames}")) + +# export gene order file +readr::write_tsv(gtf_df, gene_order_file, col_names = FALSE) diff --git a/analyses/cell-type-nonETP-ALL-03/scripts/exploratory-analyses/copykat_exploration.R b/analyses/cell-type-nonETP-ALL-03/scripts/exploratory-analyses/copykat_exploration.R index 89ef14248..92e4ccdac 100644 --- a/analyses/cell-type-nonETP-ALL-03/scripts/exploratory-analyses/copykat_exploration.R +++ b/analyses/cell-type-nonETP-ALL-03/scripts/exploratory-analyses/copykat_exploration.R @@ -8,31 +8,31 @@ library(dplyr) copykatInterpret <- function(annot.obj, library.id, ct.colors){ tryCatch({ - exprs <- data.frame(FetchData(annot.obj, vars = c("sctype_classification","copykat.pred","lowConfidence_annot"))) + exprs <- data.frame(FetchData(annot.obj, vars = c("sctype_classification","newB.copykat.pred","lowConfidence_annot"))) df <- exprs %>% - group_by(copykat.pred, sctype_classification) %>% + group_by(newB.copykat.pred, sctype_classification) %>% count(name = "Frequency") total_df <- df %>% - group_by(copykat.pred) %>% + group_by(newB.copykat.pred) %>% summarise(Total = sum(Frequency)) p1 <- ggplot() + - geom_bar(data = df, aes(x = copykat.pred, y = Frequency, fill = sctype_classification), width = 0.5, stat = "identity", position = "fill") + - geom_text(data = total_df, aes(y = 100, x = copykat.pred, label = Total), size = 4, position = position_fill(vjust = 1.02)) + + geom_bar(data = df, aes(x = newB.copykat.pred, y = Frequency, fill = sctype_classification), width = 0.5, stat = "identity", position = "fill") + + geom_text(data = total_df, aes(y = 100, x = newB.copykat.pred, label = Total), size = 4, position = position_fill(vjust = 1.02)) + scale_fill_manual(values = ct_color) df <- exprs %>% - dplyr::group_by(copykat.pred, lowConfidence_annot) %>% + dplyr::group_by(newB.copykat.pred, lowConfidence_annot) %>% dplyr::count(name = "Frequency") p2 <- ggplot() + - geom_bar(data = df, aes(x = copykat.pred, y = Frequency, fill = lowConfidence_annot), width = 0.5, stat = "identity", position = "fill") + - geom_text(data = total_df, aes(y = 100, x = copykat.pred, label = Total), size = 4, position = position_fill(vjust = 1.02)) + + geom_bar(data = df, aes(x = newB.copykat.pred, y = Frequency, fill = lowConfidence_annot), width = 0.5, stat = "identity", position = "fill") + + geom_text(data = total_df, aes(y = 100, x = newB.copykat.pred, label = Total), size = 4, position = position_fill(vjust = 1.02)) + scale_fill_manual(values = ct_color) cowplot::plot_grid(plotlist = list(p1,p2), nrow = 1) + cowplot::draw_figure_label(library.id, position = "top", size = 14, fontface = "bold") ggsave(file.path(out_loc,"plots/copykat_exploration",paste0(library.id,"_celltypeVScopykat.png")), width = 10, height = 5, bg = "white", dpi = 150) ### plotting blast module scores - Idents(annot.obj) <- factor(annot.obj$copykat.pred, levels = c("aneuploid","diploid","not.defined")) + Idents(annot.obj) <- factor(annot.obj$newB.copykat.pred, levels = c("aneuploid","diploid","not.defined")) VlnPlot(annot.obj, features = "Blast_Features1") + ggtitle(paste0(library.id,": Blast module score")) + NoLegend() ggsave(file.path(out_loc,"plots/copykat_exploration",paste0(library.id,"_blastModuleScore.png")), width = 6, height = 6, bg = "white", dpi = 150) }, error=function(e){}) diff --git a/analyses/cell-type-nonETP-ALL-03/scripts/exploratory-analyses/run_infercnv.R b/analyses/cell-type-nonETP-ALL-03/scripts/exploratory-analyses/run_infercnv.R new file mode 100644 index 000000000..68ab32063 --- /dev/null +++ b/analyses/cell-type-nonETP-ALL-03/scripts/exploratory-analyses/run_infercnv.R @@ -0,0 +1,52 @@ +#!/usr/bin/env Rscript + +#sudo apt-get install r-cran-rjags +#This script runs inferCNV using the new B cells, and trying to identify "non-malignant" group based on the infercnv.png + +library(Seurat) + +run_inferCNV <- function(ind.lib){ + dir.create(file.path(scratch_dir, ind.lib), showWarnings = FALSE) + seu <- readRDS(file.path(out_loc,"results/rds",paste0(ind.lib,".rds"))) + annot.file <- file.path(out_loc,"results",paste0(ind.lib,"_newB-normal-annotation.txt")) + infercnv_obj <- infercnv::CreateInfercnvObject(raw_counts_matrix=seu@assays[["RNA"]]@counts, + annotations_file=annot.file, + delim="\t", + gene_order_file=geneFile, + ref_group_names="new B") + options(scipen = 100) + infercnv_obj <- infercnv::run(infercnv_obj, + cutoff = 0.1, # use 1 for smart-seq, 0.1 for 10x-genomics + out_dir = file.path(scratch_dir,ind.lib), # save all intermediate files to scratch dir + denoise = T, HMM = T, analysis_mode = "samples", + save_rds = F, # don't save the intermediate rds files + num_threads = parallel::detectCores() - 1) + + # create table with barcodes and CNVs for each chromosome + infercnv::add_to_seurat( + seurat_obj = NULL, + infercnv_output_path = file.path(scratch_dir, ind.lib)) + + ### adding clusterID from the cutting of hierarchical clustering to seu object + final_cnv_obj <- readRDS(file.path(out_loc, "results/infercnv_output", paste0(ind.lib,"_run.final.infercnv_obj"))) + hres <- final_cnv_obj@tumor_subclusters$hc$all_observations + obs.clusID <- cutree(hres,4) #4 clusters for SCPCL000703 + hres <- dendextend::color_branches(hres, k= 4) + plot(hres) + seu$infercnv.pred <- obs.clusID[match(names(obs.clusID), colnames(seu))] +} + +project_root <- rprojroot::find_root(rprojroot::is_git_root) +projectID <- "SCPCP000003" +out_loc <- file.path(project_root, "analyses/cell-type-nonETP-ALL-03") +data_loc <- file.path(project_root, "data/current",projectID) +scratch_dir <- file.path(out_loc,"scratch") + +metadata <- read.table(file.path(data_loc,"single_cell_metadata.tsv"), sep = "\t", header = T) +metadata <- metadata[which(metadata$scpca_project_id == projectID & + metadata$diagnosis == "Non-early T-cell precursor T-cell acute lymphoblastic leukemia"), ] +libraryID <- metadata$scpca_library_id + +geneFile <- file.path(project_root, "references/infercnv_refs/Homo_sapiens.GRCh38.104.gene_order.txt") + +purrr::walk(libraryID, run_inferCNV) diff --git a/analyses/cell-type-nonETP-ALL-03/scripts/markerGenes_submission.R b/analyses/cell-type-nonETP-ALL-03/scripts/markerGenes_submission.R new file mode 100644 index 000000000..ceb4283b0 --- /dev/null +++ b/analyses/cell-type-nonETP-ALL-03/scripts/markerGenes_submission.R @@ -0,0 +1,31 @@ +#!/usr/bin/env Rscript + +#This script converts the "Azimuth_BM_level1.csv" into the submissio format for marker genes + +project_root <- rprojroot::find_root(rprojroot::is_git_root) +projectID <- "SCPCP000003" +out_loc <- file.path(project_root, "analyses/cell-type-nonETP-ALL-03") + +all_sources <- c("https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow", + "doi:10.1038/s41598-023-39152-z","https://sctype.app/database.php") +gene.df <- read.table(file.path(out_loc,"Azimuth_BM_level1.csv"), sep = ",", header = T) + +df1 <- c() +for (i in 1:nrow(gene.df)){ + tmp.gene <- strsplit(gene.df$ensembl_id_positive_marker[i],",")[[1]] + if (gene.df$cellName[i] == "Blast"){ + source <- all_sources[2] + }else if (gene.df$cellName[i] %in% c("Pre Eryth","Cancer")){ + source <- all_sources[3] + }else{source <- all_sources[1]} + + df1 <- rbind(df1,data.frame(ensembl_gene_id=tmp.gene, + cell_type=rep(gene.df$cellName[i],length(tmp.gene)), + source=rep(source,length(tmp.gene)))) +} + +df2 <- by(df1, df1$ensembl_gene_id, \(x) list2DF(lapply(x, \(.) toString(unique(.))))) |> + do.call(what=rbind) + +write.table(df2, file = file.path(out_loc,"submission_markerGenes.tsv"), sep = "\t", + row.names = F, quote = F) diff --git a/analyses/cell-type-nonETP-ALL-03/scripts/writeout_submission.R b/analyses/cell-type-nonETP-ALL-03/scripts/writeout_submission.R new file mode 100644 index 000000000..dfb4a0173 --- /dev/null +++ b/analyses/cell-type-nonETP-ALL-03/scripts/writeout_submission.R @@ -0,0 +1,59 @@ +#!/usr/bin/env Rscript + +library(Seurat) +library(ggplot2) + +writeout <- function(ind.lib, sample.ID, ct.colors, n.row = 1){ + seu <- readRDS(file.path(out_loc,"results/rds",paste0(ind.lib,".rds"))) + voi <- c('tumor_cell_classification','cell_type_assignment') + tumor_classification <- c('tumor','normal','unknown') + names(tumor_classification) <- c('aneuploid','diploid','not.defined') + seu$cell_type_assignment <- seu$sctype_classification + tryCatch({ + seu$tumor_cell_classification <- as.vector(tumor_classification[match(seu$newB.copykat.pred,names(tumor_classification))]) + }, error=function(e){}) + tryCatch({ + voi_df <- data.frame(FetchData(seu, vars = voi)) |> tibble::rownames_to_column(var = "cell_barcode") + }, error=function(e){}) + final.df <- data.frame(scpca_sample_id=rep(sample.ID, nrow(voi_df)), voi_df, + CL_ontology_id=gene.df$ontologyID[match(voi_df$cell_type_assignment,gene.df$cellName)]) + write.table(final.df, sep = "\t", quote = F, row.names = F, + file = file.path(out_loc,"results/submission_table",paste0(ind.lib,"_metadata.tsv"))) + + ## plotting the variables + plot.list <- list() + for (plot.type in voi){ + if (plot.type == "cell_type_assignment"){ + clrs <- ct.colors + } else{ + clrs <- NULL + } + tryCatch({ + plot.list[[plot.type]] <- DimPlot(seu, reduction = "Xumap_", group.by = plot.type, + label = T, cols = clrs, repel = T) + }, error=function(e){}) + } + cowplot::plot_grid(plotlist = plot.list, nrow = n.row) + patchwork::plot_annotation(title = ind.lib) & + theme(plot.title = element_text(hjust = 0.5, size = 18, face="bold")) + ggsave(file.path(out_loc,"results/submission_table",paste0("multipanels_",ind.lib,".png")), width = 12, height = 5, bg = "white", dpi = 150) +} + +project_root <- rprojroot::find_root(rprojroot::is_git_root) +projectID <- "SCPCP000003" +out_loc <- file.path(project_root, "analyses/cell-type-nonETP-ALL-03") +data_loc <- file.path(project_root, "data/current",projectID) +dir.create(file.path(out_loc, "results/submission_table"), showWarnings = FALSE) + +gene.df <- read.table(file.path(out_loc, "Azimuth_BM_level1.csv"), sep = ",", header = T) +ct_color <- c("darkorchid","skyblue2","dodgerblue2","gold","beige","sienna1","green4","navy", + "chocolate4","red","darkred","#6A3D9A","maroon","yellow4","grey35","black","lightpink","grey80") +names(ct_color) <- c("B","CD4 T","CD8 T","DC","HSPC","Mono","NK","Other T","Macrophage", + "Early Eryth","Late Eryth","Plasma","Platelet","Stromal","Blast","Cancer","Pre Eryth","Unknown") + +metadata <- read.table(file.path(data_loc,"single_cell_metadata.tsv"), sep = "\t", header = T) +metadata <- metadata[which(metadata$scpca_project_id == projectID & + metadata$diagnosis == "Non-early T-cell precursor T-cell acute lymphoblastic leukemia"), ] +libraryID <- metadata$scpca_library_id +sampleID <- metadata$scpca_sample_id + +purrr::walk2(libraryID, sampleID, ~ writeout(ind.lib = .x, sample.ID = .y, ct.colors = ct_color)) diff --git a/analyses/cell-type-nonETP-ALL-03/submission_markerGenes.tsv b/analyses/cell-type-nonETP-ALL-03/submission_markerGenes.tsv new file mode 100644 index 000000000..bf66d938e --- /dev/null +++ b/analyses/cell-type-nonETP-ALL-03/submission_markerGenes.tsv @@ -0,0 +1,152 @@ +ensembl_gene_id cell_type source +ENSG00000002586 Blast doi:10.1038/s41598-023-39152-z +ENSG00000005961 Early Eryth https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000007062 Cancer https://sctype.app/database.php +ENSG00000011465 Stromal https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000012124 B https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000014914 Mono https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000026508 Cancer https://sctype.app/database.php +ENSG00000041982 Stromal https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000047457 Stromal https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000048462 Plasma https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000069667 Other T https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000070031 DC https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000072274 Pre Eryth https://sctype.app/database.php +ENSG00000073754 Macrophage https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000075340 Late Eryth https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000075618 Early Eryth https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000081059 CD4 T https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000081237 Pre Eryth https://sctype.app/database.php +ENSG00000086205 Cancer https://sctype.app/database.php +ENSG00000088726 Platelet https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000091513 Stromal https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000100385 NK https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000100450 CD8 T https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000101200 HSPC https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000102145 Early Eryth https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000104660 CD4 T https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000104894 B https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000104974 Mono https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000105251 DC https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000105369 B https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000105610 Early Eryth https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000106327 Early Eryth https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000107742 Other T https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000110195 Pre Eryth https://sctype.app/database.php +ENSG00000110203 Mono https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000111057 Cancer https://sctype.app/database.php +ENSG00000111796 Other T https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000112077 HSPC, Late Eryth https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000112175 Stromal https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000112212 Late Eryth https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000113088 Other T https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000113140 Platelet https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000115232 Pre Eryth https://sctype.app/database.php +ENSG00000115461 Stromal https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000115607 NK https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000115718 DC https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000115884 Plasma https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000116191 B https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000117281 NK https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000117632 Blast doi:10.1038/s41598-023-39152-z +ENSG00000119865 Early Eryth https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000119888 HSPC, Late Eryth, Cancer https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow, https://sctype.app/database.php +ENSG00000121769 Macrophage https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000123416 Blast doi:10.1038/s41598-023-39152-z +ENSG00000124491 Platelet https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000124766 Blast doi:10.1038/s41598-023-39152-z +ENSG00000125810 Mono https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000130203 Macrophage https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000130208 Early Eryth https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000131016 HSPC https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000132514 DC https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000132704 B https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000133742 Pre Eryth https://sctype.app/database.php +ENSG00000133789 B https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000134545 NK https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000135218 Pre Eryth https://sctype.app/database.php +ENSG00000135525 Early Eryth https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000138639 B https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000138795 CD4 T https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000139193 CD4 T https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000139329 Stromal https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000141736 Cancer https://sctype.app/database.php +ENSG00000143184 NK https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000143297 Plasma https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000144290 Other T https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000145220 Other T https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000147571 Stromal https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000150045 NK https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000150681 Platelet https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000150687 NK https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000152518 Other T https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000152583 Stromal https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000153064 B https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000153071 Platelet https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000153563 CD8 T https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000155367 DC https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000156738 B https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000156966 NK https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000158825 Mono https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000159189 Macrophage https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000160307 CD8 T https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000160654 CD4 T, CD8 T https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000162444 Mono https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000163534 B https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000163554 HSPC, Late Eryth https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000163687 DC https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000163736 Platelet https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000163737 Platelet https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000164692 Stromal https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000166211 Macrophage https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000166523 Mono https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000167286 CD4 T, CD8 T, Blast https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow, doi:10.1038/s41598-023-39152-z +ENSG00000167476 Plasma https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000168685 CD4 T, Other T https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000168913 DC https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000169432 DC https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000169704 Platelet https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000170180 Pre Eryth https://sctype.app/database.php +ENSG00000170323 Macrophage https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000170891 HSPC, Early Eryth https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000171051 Mono https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000172005 CD4 T https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000172116 CD8 T https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000172247 HSPC https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000172995 HSPC https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000173369 Macrophage https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000173372 Macrophage https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000173762 Blast doi:10.1038/s41598-023-39152-z +ENSG00000175792 Pre Eryth https://sctype.app/database.php +ENSG00000176783 Platelet https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000177606 Blast doi:10.1038/s41598-023-39152-z +ENSG00000178573 Other T https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000179348 Early Eryth https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000184613 CD8 T https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000186074 Mono https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000186710 HSPC https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000187699 Platelet https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000188672 HSPC, Late Eryth https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000189430 NK https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000196188 Late Eryth https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000197353 Mono https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000198178 DC https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000198574 NK https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000198851 CD4 T, CD8 T https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000204010 Late Eryth https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000211640 Plasma https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000211673 Plasma https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000211685 Plasma https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000213934 Late Eryth https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000215788 Other T https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000222037 Plasma https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000223609 Pre Eryth https://sctype.app/database.php +ENSG00000227191 CD8 T https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000227507 CD4 T https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000239961 DC https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000240505 Plasma https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000243466 Plasma https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000244734 Pre Eryth https://sctype.app/database.php +ENSG00000250722 Macrophage https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000271503 CD8 T https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow +ENSG00000275385 Macrophage https://azimuth.hubmapconsortium.org/references/#Human%20-%20Bone%20Marrow