From 42e537461a59b0f83f717ed03b1324e99806dc10 Mon Sep 17 00:00:00 2001 From: dputhier Date: Fri, 22 Dec 2023 13:49:42 +0100 Subject: [PATCH 1/7] Improving README --- README.Rmd | 3 +++ README.md | 5 +++-- inst/sticker/scigenex_logo.png | Bin 0 -> 67006 bytes 3 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 inst/sticker/scigenex_logo.png diff --git a/README.Rmd b/README.Rmd index 3091068..e959865 100644 --- a/README.Rmd +++ b/README.Rmd @@ -11,6 +11,9 @@ html_preview: false library("badger") ``` + + + ```{r, echo = FALSE, results='asis'} cat( badge_lifecycle(stage = "stable", color="green"), diff --git a/README.md b/README.md index 55c32bb..1bc99f7 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ - + + + [![](https://img.shields.io/badge/lifecycle-stable-green.svg)](https://lifecycle.r-lib.org/articles/stages.html#stable) [![Project Status: Active - The project has reached a stable, usable @@ -7,7 +9,6 @@ developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.re [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://cran.r-project.org/web/licenses/MIT) [![](https://img.shields.io/github/last-commit/dputhier/scigenex.svg)](https://github.com/dputhier/scigenex/commits/main) -[![Codecov test coverage](https://codecov.io/gh/dputhier/scigenex/branch/main/graph/badge.svg)](https://app.codecov.io/gh/dputhier/scigenex?branch=main) # SciGeneX repository diff --git a/inst/sticker/scigenex_logo.png b/inst/sticker/scigenex_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..19ef5936f61e3d2156f31d6530a99f0397c36ad2 GIT binary patch literal 67006 zcmeFYWmFtp)Fs@wyEX2C;2zuw65QPh1b26L3GNyocyM9 zT1_{Ls;;{C*xvh`icpl7L_s7#1c5*((o*8eAP^)h@X~|_euMDam}r1ESmQ5};=nub z^C;Hl2fQKJOKCZQKunbHF9`P^LarbX8Aw`OMAbd(WX;VTd%r>G;+(Ipqx>FHR8=X4 zZxC!f6kFd&1I_z0~IwsH*_0Ie?Ob>`Zky&$jdJ(g`D?(&=!LZYlxU9YWEV8 zcP1Qi99!X`$2O(Eu##AL0h)=zI^g}l2dx5GG(4lXEQt-2$7QT5v)mIbhhq`5TqZiWtZ1H zeLJ99uPtg-*cZLR`L_?pxv9iQArHavzT)rS74GyF$=*yQfVNp7=+5&A?3eck?_on} zbRXtv^A?`m#~%|)6xM&)imo=lrx1jDb8F>fnA!h_(c{b4&OeLQa_|^&z!BS;w=T!X z-)EeWcAC-rTZH05f-2|zH!|wn7aHIAQAMRD-*=K|d$Xdd-k8h$DfIN3v!7R zC+6x|gn7c@_Pz&Qv^Dnq%cAR?cP&`%h~SD5kw!q_Yr*bm?5+l#llOkskNgrArlL~S z@0-s3>wbCuC%M+EfPXGjd@!_`zlWpXi3Vy|^%eSRwQcD39TI|1|2^{2xJT5!HyIl( zdC~p*ZA9z%?HDwCTaW%{oFxG2Ca0_NwO}JMqn<+H#Z|ryooct_%h*_kAyJm-zy@EO z$A9iHnTm39MM9E+Kg0p{7PHTCRO1a^*AsV>QhXpOF~(k(53`uvsX!k>6i#PLyA@#_ z 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 literal 0 HcmV?d00001 From d8a847f231d2cb6300f0366a493029f23ea952b9 Mon Sep 17 00:00:00 2001 From: dputhier Date: Fri, 22 Dec 2023 13:53:09 +0100 Subject: [PATCH 2/7] Changed sticker link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1bc99f7..9cdc5c4 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ - + [![](https://img.shields.io/badge/lifecycle-stable-green.svg)](https://lifecycle.r-lib.org/articles/stages.html#stable) [![Project Status: Active - The project has reached a stable, usable From 16211f407b39111c144ffd4cbdc7913073c0c70e Mon Sep 17 00:00:00 2001 From: dputhier Date: Fri, 22 Dec 2023 13:54:03 +0100 Subject: [PATCH 3/7] Changed sticker size --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9cdc5c4..ec828a2 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ - + [![](https://img.shields.io/badge/lifecycle-stable-green.svg)](https://lifecycle.r-lib.org/articles/stages.html#stable) [![Project Status: Active - The project has reached a stable, usable From cf7761af75ba780c1e0f26f89b4802ecedb79213 Mon Sep 17 00:00:00 2001 From: dputhier Date: Fri, 22 Dec 2023 14:39:39 +0100 Subject: [PATCH 4/7] Changed codecov.yml --- codecov.yml | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/codecov.yml b/codecov.yml index 04c5585..d68cda4 100644 --- a/codecov.yml +++ b/codecov.yml @@ -1,14 +1,11 @@ comment: false -coverage: - status: - project: - default: - target: auto - threshold: 1% - informational: true - patch: - default: - target: auto - threshold: 1% - informational: true +language: R + +sudo: false + +cache: packages + +after_success: + +- Rscript -e 'covr::codecov()' From 2b57419a133d5e7feb7cabc736cc83b9f83f0c5f Mon Sep 17 00:00:00 2001 From: dputhier Date: Fri, 22 Dec 2023 14:39:55 +0100 Subject: [PATCH 5/7] Fix a test --- tests/testthat/test.gene_clustering.R | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/tests/testthat/test.gene_clustering.R b/tests/testthat/test.gene_clustering.R index 6a2ed77..71a200f 100644 --- a/tests/testthat/test.gene_clustering.R +++ b/tests/testthat/test.gene_clustering.R @@ -9,8 +9,7 @@ pbmc3k_medium_clust <- select_genes(data = pbmc3k_medium, test_that("Checking output slots generated by gene_clustering() using keep_nn as FALSE", { # Create output directory tmp_dir <- tempdir() - dir.create() - dir.create("tmp_dir") + dir.create(tmp_dir) ## A rather stringent version res_no_keep_nn <- gene_clustering(object = pbmc3k_medium_clust, @@ -18,7 +17,7 @@ test_that("Checking output slots generated by gene_clustering() using keep_nn as keep_nn = FALSE, s = 5, threads = 6, - output_path = "tmp_dir") + output_path = tmp_dir) # ======================================================= # Test name of temporary files @@ -189,7 +188,7 @@ test_that("Checking output slots generated by gene_clustering() using keep_nn as "inflation" )) - expect_equal(res_no_keep_nn@parameters$output_path, "tmp_dir") + expect_equal(res_no_keep_nn@parameters$output_path, tmp_dir) expect_true(is.character(res_no_keep_nn@parameters$output_path)) expect_equal(length(res_no_keep_nn@parameters$output_path), 1) @@ -246,7 +245,7 @@ test_that("Checking output slots generated by gene_clustering() using keep_nn as expect_true(is.numeric(res_no_keep_nn@gene_clusters_metadata$cluster_id)) # Remove temporary files - unlink("tmp_dir", recursive = TRUE) + unlink(tmp_dir, recursive = TRUE) }) From 1ac075920f15dabd237286bb44539eff8bf6ca50 Mon Sep 17 00:00:00 2001 From: dputhier Date: Fri, 22 Dec 2023 15:55:53 +0100 Subject: [PATCH 6/7] Fixe an issue with temp dir --- R/gene_clustering.R | 41 ++++++++++++++++++++------- man/construct_new_graph.Rd | 2 +- man/gene_clustering.Rd | 2 +- man/keep_dbf_graph.Rd | 2 +- tests/testthat/test.dist2border.R | 3 ++ tests/testthat/test.gene_clustering.R | 2 +- 6 files changed, 37 insertions(+), 15 deletions(-) diff --git a/R/gene_clustering.R b/R/gene_clustering.R index c6a76c4..aab252a 100644 --- a/R/gene_clustering.R +++ b/R/gene_clustering.R @@ -64,10 +64,20 @@ gene_clustering <- function(object = NULL, inflation = 2, method=c("closest_neighborhood", "reciprocal_neighborhood"), threads = 1, - output_path = tempdir(), + output_path = NULL, name = NULL, keep_nn = FALSE) { + if(is.null(output_path)){ + output_path <- tempdir() + dir.create(output_path, recursive = TRUE, showWarnings = FALSE) + }else{ + if (!dir.exists(output_path)) { + dir.create(output_path, recursive = TRUE, showWarnings = FALSE) + } + } + + method <- match.arg(method) @@ -179,19 +189,24 @@ gene_clustering <- function(object = NULL, #' @export construct_new_graph construct_new_graph <- function(object = NULL, k = 5, - output_path = tempdir(), + output_path = NULL, name = NULL) { + + if(is.null(output_path)){ + output_path <- tempdir() + dir.create(output_path, recursive = TRUE, showWarnings = FALSE) + } + ## Check format object arg check_format_cluster_set(object) - ## Generate output path # Get working directory if output_path is "." if (output_path == ".") { output_path <- getwd() } - # Check if output directory exists. If not stop the command. - if (!file.exists(output_path)) { - stop("Output directory provided does not exist.") + + if (!dir.exists(output_path)) { + dir.create(output_path, recursive = TRUE, showWarnings = FALSE) } # Create a random string if name is not provided @@ -376,17 +391,21 @@ construct_new_graph <- function(object = NULL, #' @keywords internal #' @export keep_dbf_graph keep_dbf_graph <- function(object = NULL, - output_path = tempdir(), + output_path = NULL, name = NULL) { - ## Generate output path + if(is.null(output_path)){ + output_path <- tempdir() + dir.create(output_path, recursive = TRUE, showWarnings = FALSE) + } + # Get working directory if output_path is "." if (output_path == ".") { output_path <- getwd() } - # Check if output directory exists. If not stop the command. - if (!file.exists(output_path)) { - stop("Output directory provided does not exist.") + + if (!dir.exists(output_path)) { + dir.create(output_path, recursive = TRUE, showWarnings = FALSE) } # Create a random string if name is not provided diff --git a/man/construct_new_graph.Rd b/man/construct_new_graph.Rd index 7dc0986..22d84d9 100644 --- a/man/construct_new_graph.Rd +++ b/man/construct_new_graph.Rd @@ -4,7 +4,7 @@ \alias{construct_new_graph} \title{Construct a new graph for a ClusterSet object} \usage{ -construct_new_graph(object = NULL, k = 5, output_path = tempdir(), name = NULL) +construct_new_graph(object = NULL, k = 5, output_path = NULL, name = NULL) } \arguments{ \item{object}{A ClusterSet object.} diff --git a/man/gene_clustering.Rd b/man/gene_clustering.Rd index 795474d..49dda09 100644 --- a/man/gene_clustering.Rd +++ b/man/gene_clustering.Rd @@ -10,7 +10,7 @@ gene_clustering( inflation = 2, method = c("closest_neighborhood", "reciprocal_neighborhood"), threads = 1, - output_path = tempdir(), + output_path = NULL, name = NULL, keep_nn = FALSE ) diff --git a/man/keep_dbf_graph.Rd b/man/keep_dbf_graph.Rd index 9713fb1..0dc0934 100644 --- a/man/keep_dbf_graph.Rd +++ b/man/keep_dbf_graph.Rd @@ -4,7 +4,7 @@ \alias{keep_dbf_graph} \title{Construct a graph based on selected genes in a ClusterSet object and their neighbors} \usage{ -keep_dbf_graph(object = NULL, output_path = tempdir(), name = NULL) +keep_dbf_graph(object = NULL, output_path = NULL, name = NULL) } \arguments{ \item{object}{A ClusterSet object.} diff --git a/tests/testthat/test.dist2border.R b/tests/testthat/test.dist2border.R index 3989c25..fc93b26 100644 --- a/tests/testthat/test.dist2border.R +++ b/tests/testthat/test.dist2border.R @@ -1,6 +1,9 @@ library(Seurat) library(ggplot2) +# Set verbosity to 0 +set_verbosity(0) + load_example_dataset("7870305/files/lymph_node_tiny_2") identity <- Idents(lymph_node_tiny_2) classes <- ifelse(Idents(lymph_node_tiny_2) == 7, 1, 0) diff --git a/tests/testthat/test.gene_clustering.R b/tests/testthat/test.gene_clustering.R index 71a200f..b225bac 100644 --- a/tests/testthat/test.gene_clustering.R +++ b/tests/testthat/test.gene_clustering.R @@ -9,7 +9,7 @@ pbmc3k_medium_clust <- select_genes(data = pbmc3k_medium, test_that("Checking output slots generated by gene_clustering() using keep_nn as FALSE", { # Create output directory tmp_dir <- tempdir() - dir.create(tmp_dir) + dir.create(tmp_dir, recursive = TRUE, showWarnings = FALSE) ## A rather stringent version res_no_keep_nn <- gene_clustering(object = pbmc3k_medium_clust, From f3e40d7dd0392bd49262bffc7314d76523286018 Mon Sep 17 00:00:00 2001 From: dputhier Date: Fri, 22 Dec 2023 16:27:22 +0100 Subject: [PATCH 7/7] Updated html doc to . --- DESCRIPTION | 2 +- Makefile | 4 +- README.md | 14 +-- changelog.md | 4 + docs/404.html | 2 +- docs/articles/index.html | 2 +- docs/articles/usage.html | 6 +- docs/authors.html | 6 +- docs/changelog.html | 5 +- docs/index.html | 93 +++++++++---------- docs/news/index.html | 2 +- docs/pkgdown.yml | 2 +- docs/reference/ClusterSet-class.html | 6 +- docs/reference/check_format_cluster_set.html | 2 +- .../clust_names-ClusterSet-method.html | 2 +- docs/reference/clust_names.html | 2 +- .../clust_size-ClusterSet-method.html | 2 +- docs/reference/clust_size.html | 2 +- docs/reference/cluster_set_from_matrix.html | 2 +- docs/reference/cluster_set_from_seurat.html | 2 +- docs/reference/cluster_set_report.html | 8 +- .../cluster_set_to_xls-ClusterSet-method.html | 2 +- docs/reference/cluster_set_to_xls.html | 2 +- .../cluster_stats-ClusterSet-method.html | 2 +- docs/reference/cluster_stats.html | 2 +- .../col_names-ClusterSet-method.html | 2 +- docs/reference/col_names.html | 2 +- docs/reference/colors_for_gradient.html | 2 +- docs/reference/compare_genesets.html | 2 +- docs/reference/complex9.html | 2 +- docs/reference/complex9Noisy.html | 2 +- docs/reference/construct_new_graph.html | 6 +- docs/reference/create_3_rnd_clust.html | 2 +- docs/reference/create_4_rnd_clust.html | 2 +- docs/reference/create_rand_str.html | 2 +- docs/reference/dim-ClusterSet-method.html | 2 +- docs/reference/discrete_palette.html | 2 +- docs/reference/display_hull.html | 2 +- .../enrich_go-ClusterSet-method.html | 2 +- docs/reference/enrich_go.html | 2 +- docs/reference/filter_by_dot_prod.html | 2 +- docs/reference/filter_cluster_sd.html | 2 +- docs/reference/filter_cluster_size.html | 2 +- .../reference/filter_nb_supporting_cells.html | 2 +- .../gene_cluster-ClusterSet-method.html | 2 +- docs/reference/gene_cluster.html | 2 +- docs/reference/gene_clustering.html | 8 +- .../getFlippedTissueCoordinates.html | 2 +- docs/reference/get_data_for_scigenex.html | 2 +- docs/reference/get_genes.html | 2 +- docs/reference/get_verbosity.html | 2 +- ...in-grapes-character-ClusterSet-method.html | 2 +- .../grep_clust-ClusterSet-method.html | 2 +- docs/reference/grep_clust.html | 2 +- docs/reference/index.html | 2 +- docs/reference/install_mcl.html | 2 +- docs/reference/keep_dbf_graph.html | 8 +- docs/reference/load_example_dataset.html | 2 +- docs/reference/lymph_node_selected_spot.html | 2 +- .../reference/lymph_node_selected_spot_2.html | 2 +- docs/reference/mcl_system_cmd.html | 2 +- ...dule_quality_scores-ClusterSet-method.html | 2 +- docs/reference/module_quality_scores.html | 2 +- docs/reference/nclust-ClusterSet-method.html | 2 +- docs/reference/nclust.html | 2 +- docs/reference/ncol.ClusterSet.html | 2 +- docs/reference/nrow.ClusterSet.html | 2 +- ...t_clust_enrichments-ClusterSet-method.html | 2 +- docs/reference/plot_clust_enrichments.html | 2 +- docs/reference/plot_cluster_stats.html | 2 +- docs/reference/plot_cmp_genesets.html | 2 +- docs/reference/plot_dist.html | 2 +- .../plot_ggheatmap-ClusterSet-method.html | 2 +- docs/reference/plot_ggheatmap.html | 2 +- docs/reference/plot_heatmap.html | 2 +- ...markers_to_clusters-ClusterSet-method.html | 2 +- docs/reference/plot_markers_to_clusters.html | 2 +- docs/reference/plot_profiles.html | 2 +- docs/reference/plot_spatial.html | 2 +- docs/reference/plot_spatial_panel.html | 2 +- docs/reference/plot_stratum.html | 2 +- docs/reference/print_msg.html | 2 +- docs/reference/print_stat.html | 2 +- .../rename_clust-ClusterSet-method.html | 2 +- docs/reference/rename_clust.html | 2 +- .../reorder_clust-ClusterSet-method.html | 2 +- docs/reference/reorder_clust.html | 2 +- .../reorder_genes-ClusterSet-method.html | 2 +- docs/reference/reorder_genes.html | 2 +- .../row_names-ClusterSet-method.html | 2 +- docs/reference/row_names.html | 2 +- docs/reference/select_genes.html | 2 +- docs/reference/set_verbosity.html | 2 +- docs/reference/show-ClusterSet-method.html | 2 +- docs/reference/show_methods.html | 2 +- docs/reference/stratify_seurat.html | 2 +- .../sub-ClusterSet-ANY-ANY-ANY-method.html | 2 +- .../top_by_go-ClusterSet-method.html | 2 +- docs/reference/top_by_go.html | 2 +- .../top_genes-ClusterSet-method.html | 2 +- docs/reference/top_genes.html | 2 +- .../viz_enrich-ClusterSet-method.html | 2 +- docs/reference/viz_enrich.html | 2 +- .../which_clust-ClusterSet-method.html | 2 +- docs/reference/which_clust.html | 2 +- 105 files changed, 178 insertions(+), 176 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index ae0a1ed..bbed0aa 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: scigenex Type: Package Title: The scigenex package (Single-Cell Informative GENe Explorer) -Version: 1.4.7 +Version: 1.4.8 Date: 2020-07-22 Author: J. Bavais, Sebastien Nin, Lionel Spinelli and Denis Puthier Maintainer: J. Bavais diff --git a/Makefile b/Makefile index f651d84..2ad46a2 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ MAKEFILE=Makefile -VERSION=1.4.7 +VERSION=1.4.8 .PHONY: help @@ -11,7 +11,7 @@ VERSION=1.4.7 help: @echo "" @echo "- Available targets:" - @echo "- Info: make check VERSION=1.4.2 " + @echo "- Info: make check VERSION=1.4.8 " @perl -ne 'if( /^(\w+):/){print "\t",$$1,"\n"}' $(MAKEFILE) @echo "" @echo "" diff --git a/README.md b/README.md index ec828a2..da3a411 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ - + + + ## ✔ Setting active project to '/Users/puthier/Documents/git/project_dev/scigenex' [![](https://img.shields.io/badge/lifecycle-stable-green.svg)](https://lifecycle.r-lib.org/articles/stages.html#stable) [![Project Status: Active - The project has reached a stable, usable @@ -12,7 +14,7 @@ MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://cran.r-project. # SciGeneX repository -## :arrow_double_down: Installation +## :arrow\_double\_down: Installation ### System requirements @@ -49,7 +51,7 @@ You may skip this step as the latest versions of SciGeneX will call `scigenex::install_mcl()`to install MCL in `~/.scigenex` directory if this program is not found in the PATH. -#### Installation of MCL using install_mcl() +#### Installation of MCL using install\_mcl() The `install_mcl()` has been developed to ease MCL installation. This function should be call automatically from within R when calling the @@ -81,15 +83,15 @@ should be available in your PATH from within R. ## Example The scigenex library contains several datasets including the -pbmc3k_medium which is a subset from pbmc3k 10X dataset. +pbmc3k\_medium which is a subset from pbmc3k 10X dataset. library(Seurat) library(scigenex) set_verbosity(1) - + # Load a dataset load_example_dataset("7871581/files/pbmc3k_medium") - + # Select informative genes res <- select_genes(pbmc3k_medium, distance = "pearson", diff --git a/changelog.md b/changelog.md index 46ff9df..a5c1762 100644 --- a/changelog.md +++ b/changelog.md @@ -1,6 +1,10 @@ # Changelog +## v1.4.8 + +* Fix an issue with temp dir. + ## v1.4.7 * Change k_g argument to 's' in `gene_clustering()` function for clarity purpose. diff --git a/docs/404.html b/docs/404.html index 02dce74..842e6c5 100644 --- a/docs/404.html +++ b/docs/404.html @@ -32,7 +32,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/articles/index.html b/docs/articles/index.html index 3022ac7..90529f4 100644 --- a/docs/articles/index.html +++ b/docs/articles/index.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/articles/usage.html b/docs/articles/usage.html index 707ae8b..cbee8c8 100644 --- a/docs/articles/usage.html +++ b/docs/articles/usage.html @@ -33,7 +33,7 @@ scigenex - 1.4.7 + 1.4.8 @@ -193,7 +193,7 @@

Extracting gene modules using Sc ## * seed = 123 ## * keep_nn = FALSE ## * k_mcl_graph = 5 -## * output_path = /var/folders/zy/wl3dj2_n76zfc8sdvny1q06c0000gn/T//Rtmp6UgYV7 +## * output_path = /var/folders/zy/wl3dj2_n76zfc8sdvny1q06c0000gn/T//RtmpDSTiJs ## * name = s8gZ5uYQ33 ## * inflation = 2

There are various methods associated with the ClusterSet objects.

@@ -567,7 +567,7 @@

Session info## ## other attached packages: ## [1] tidyr_1.3.0 dplyr_1.1.3 -## [3] scigenex_1.4.7 stxKidney.SeuratData_0.1.0 +## [3] scigenex_1.4.8 stxKidney.SeuratData_0.1.0 ## [5] stxBrain.SeuratData_0.1.1 pbmc3k.SeuratData_3.1.4 ## [7] SeuratData_0.2.2 SeuratObject_4.1.3 ## [9] Seurat_4.3.0 patchwork_1.1.2 diff --git a/docs/authors.html b/docs/authors.html index 86ae2b0..2a3d53b 100644 --- a/docs/authors.html +++ b/docs/authors.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 @@ -66,13 +66,13 @@

Citation

Bavais J, Nin S, Spinelli L, Puthier D (2023). scigenex: The scigenex package (Single-Cell Informative GENe Explorer). -R package version 1.4.7, https://github.com/dputhier/scigenex. +R package version 1.4.8, https://github.com/dputhier/scigenex.

@Manual{,
   title = {scigenex: The scigenex package (Single-Cell Informative GENe Explorer)},
   author = {J. Bavais and Sebastien Nin and Lionel Spinelli and Denis Puthier},
   year = {2023},
-  note = {R package version 1.4.7},
+  note = {R package version 1.4.8},
   url = {https://github.com/dputhier/scigenex},
 }
diff --git a/docs/changelog.html b/docs/changelog.html index 04156b5..bda981e 100644 --- a/docs/changelog.html +++ b/docs/changelog.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 @@ -51,6 +51,9 @@

Changelog

+

v1.4.8

+
  • Fix an issue with temp dir.
+

v1.4.7

  • Change k_g argument to ‘s’ in gene_clustering() function for clarity purpose.

  • Added dependency to DT library (required by cluster_set_report()).

  • diff --git a/docs/index.html b/docs/index.html index c60450b..ea6b81e 100644 --- a/docs/index.html +++ b/docs/index.html @@ -33,7 +33,7 @@ scigenex - 1.4.7 + 1.4.8
@@ -69,13 +69,14 @@
- +

+
## ✔ Setting active project to '/Users/puthier/Documents/git/project_dev/scigenex'
+

Project Status: Active - The project has reached a stable, usable state and is being actively developed. License: MIT

-

- Installation +

:arrow_double_down: Installation

System requirements @@ -89,16 +90,16 @@

Step 1 - Installation of SciGeneXFrom R

The scigenex library is currently not available in CRAN or Bioc. To install from github, use:

-
devtools::install_github("dputhier/scigenex")
-library(scigenex)
+
devtools::install_github("dputhier/scigenex")
+library(scigenex)

From the terminal

Download the tar.gz from github or clone the main branch. Uncompress and run the following command from within the uncompressed scigenex folder:

-
R CMD INSTALL .
+
R CMD INSTALL .

Then load the library from within R.

-
library(scigenex)
+
library(scigenex)
@@ -114,22 +115,22 @@

Installation of MCL using install

Installation of MCL from source

One also can install MCL from source using the following code.

-
# Download the latest version of mcl 
-wget http://micans.org/mcl/src/mcl-latest.tar.gz
-# Uncompress and install mcl
-tar xvfz mcl-latest.tar.gz
-cd mcl-xx-xxx
-./configure
-make
-sudo make install
-# You should get mcl in your path
-mcl -h
+
# Download the latest version of mcl 
+wget http://micans.org/mcl/src/mcl-latest.tar.gz
+# Uncompress and install mcl
+tar xvfz mcl-latest.tar.gz
+cd mcl-xx-xxx
+./configure
+make
+sudo make install
+# You should get mcl in your path
+mcl -h

Installation of MCL from sources

Finally you may install MCL using conda. Importantly, the mcl command should be available in your PATH from within R.

-
conda install -c bioconda mcl
+
conda install -c bioconda mcl
@@ -137,28 +138,28 @@

Installation of MCL from sourcesExample

The scigenex library contains several datasets including the pbmc3k_medium which is a subset from pbmc3k 10X dataset.

-
library(Seurat)
-library(scigenex)
-set_verbosity(1)
-
-# Load a dataset
-load_example_dataset("7871581/files/pbmc3k_medium")
-
-# Select informative genes
-res <- select_genes(pbmc3k_medium,
-                     distance = "pearson",
-                     row_sum=5)
-                     
-# Cluster informative features
- 
-## Construct and partition the graph
-res <- gene_clustering(res, 
-                       inflation = 1.5, 
-                       threads = 4)
-                        
-# Display the heatmap of gene clusters
-res <- top_genes(res)
-plot_heatmap(res, cell_clusters = Seurat::Idents(pbmc3k_medium))
+
library(Seurat)
+library(scigenex)
+set_verbosity(1)
+
+# Load a dataset
+load_example_dataset("7871581/files/pbmc3k_medium")
+
+# Select informative genes
+res <- select_genes(pbmc3k_medium,
+                     distance = "pearson",
+                     row_sum=5)
+                     
+# Cluster informative features
+ 
+## Construct and partition the graph
+res <- gene_clustering(res, 
+                       inflation = 1.5, 
+                       threads = 4)
+                        
+# Display the heatmap of gene clusters
+res <- top_genes(res)
+plot_heatmap(res, cell_clusters = Seurat::Idents(pbmc3k_medium))

@@ -201,15 +202,7 @@

Developers

-
-

Dev status

-
    -
  • -
  • Project Status: Active - The project has reached a stable, usable state and is being actively developed.
  • -
  • License: MIT
  • -
  • -
-
+
diff --git a/docs/news/index.html b/docs/news/index.html index af7728e..cf07fa8 100644 --- a/docs/news/index.html +++ b/docs/news/index.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/pkgdown.yml b/docs/pkgdown.yml index 082de60..f0501ea 100644 --- a/docs/pkgdown.yml +++ b/docs/pkgdown.yml @@ -3,7 +3,7 @@ pkgdown: 2.0.7 pkgdown_sha: ~ articles: usage: usage.html -last_built: 2023-12-22T10:16Z +last_built: 2023-12-22T15:00Z urls: reference: https://scigenex.r-lib.org/reference article: https://scigenex.r-lib.org/articles diff --git a/docs/reference/ClusterSet-class.html b/docs/reference/ClusterSet-class.html index 15e9e22..03308fd 100644 --- a/docs/reference/ClusterSet-class.html +++ b/docs/reference/ClusterSet-class.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 @@ -123,7 +123,7 @@

Examples

#> |-- INFO : Computing distances to KNN. #> |-- INFO : Creating the input file for MCL algorithm. #> |-- INFO : Writing the input file. -#> |-- INFO : The input file saved in '/var/folders/zy/wl3dj2_n76zfc8sdvny1q06c0000gn/T/Rtmpd2nXJP/4qPd5kES06.input_mcl.txt'. +#> |-- INFO : The input file saved in '/var/folders/zy/wl3dj2_n76zfc8sdvny1q06c0000gn/T/RtmpBuBaBi/4qPd5kES06.input_mcl.txt'. #> |-- INFO : Adding results to a ClusterSet object. is(res) #> [1] "ClusterSet" @@ -213,7 +213,7 @@

Examples

#> * seed = 123 #> * keep_nn = FALSE #> * k_mcl_graph = 5 -#> * output_path = /var/folders/zy/wl3dj2_n76zfc8sdvny1q06c0000gn/T//Rtmpd2nXJP +#> * output_path = /var/folders/zy/wl3dj2_n76zfc8sdvny1q06c0000gn/T//RtmpBuBaBi #> * name = 4qPd5kES06 #> * inflation = 1.6 show_methods(res) diff --git a/docs/reference/check_format_cluster_set.html b/docs/reference/check_format_cluster_set.html index 5cf7308..7a2593c 100644 --- a/docs/reference/check_format_cluster_set.html +++ b/docs/reference/check_format_cluster_set.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/clust_names-ClusterSet-method.html b/docs/reference/clust_names-ClusterSet-method.html index a397655..3e5fb27 100644 --- a/docs/reference/clust_names-ClusterSet-method.html +++ b/docs/reference/clust_names-ClusterSet-method.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/clust_names.html b/docs/reference/clust_names.html index 4d5ce31..fcd8b76 100644 --- a/docs/reference/clust_names.html +++ b/docs/reference/clust_names.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/clust_size-ClusterSet-method.html b/docs/reference/clust_size-ClusterSet-method.html index e050fe5..b06cd2d 100644 --- a/docs/reference/clust_size-ClusterSet-method.html +++ b/docs/reference/clust_size-ClusterSet-method.html @@ -19,7 +19,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/clust_size.html b/docs/reference/clust_size.html index cf4bcbd..fd2d01a 100644 --- a/docs/reference/clust_size.html +++ b/docs/reference/clust_size.html @@ -19,7 +19,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/cluster_set_from_matrix.html b/docs/reference/cluster_set_from_matrix.html index 52d7584..4a20f10 100644 --- a/docs/reference/cluster_set_from_matrix.html +++ b/docs/reference/cluster_set_from_matrix.html @@ -18,7 +18,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/cluster_set_from_seurat.html b/docs/reference/cluster_set_from_seurat.html index 06f2349..e2de18e 100644 --- a/docs/reference/cluster_set_from_seurat.html +++ b/docs/reference/cluster_set_from_seurat.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/cluster_set_report.html b/docs/reference/cluster_set_report.html index 73c8723..77a4b51 100644 --- a/docs/reference/cluster_set_report.html +++ b/docs/reference/cluster_set_report.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 @@ -151,10 +151,10 @@

Examples

#> |-- DEBUG : Report ID is : e5cde0b97ddfd882ccff69e313ef025a #> |-- INFO : Preparing report. #> |-- INFO : Dumping dataset -#> |-- INFO : Writing report into /var/folders/zy/wl3dj2_n76zfc8sdvny1q06c0000gn/T//Rtmpd2nXJP/scigenex_reportdeb41de8da24.Rmd -#> |-- INFO : Rmd file written at : /var/folders/zy/wl3dj2_n76zfc8sdvny1q06c0000gn/T//Rtmpd2nXJP/scigenex_reportdeb41de8da24.Rmd +#> |-- INFO : Writing report into /var/folders/zy/wl3dj2_n76zfc8sdvny1q06c0000gn/T//RtmpBuBaBi/scigenex_report11b2d263f255f.Rmd +#> |-- INFO : Rmd file written at : /var/folders/zy/wl3dj2_n76zfc8sdvny1q06c0000gn/T//RtmpBuBaBi/scigenex_report11b2d263f255f.Rmd #> |-- INFO : Rendering report. -#> |-- INFO : Creating report at : /var/folders/zy/wl3dj2_n76zfc8sdvny1q06c0000gn/T//Rtmpd2nXJP/scigenex_reportdeb41de8da24.html +#> |-- INFO : Creating report at : /var/folders/zy/wl3dj2_n76zfc8sdvny1q06c0000gn/T//RtmpBuBaBi/scigenex_report11b2d263f255f.html diff --git a/docs/reference/cluster_set_to_xls-ClusterSet-method.html b/docs/reference/cluster_set_to_xls-ClusterSet-method.html index 088b87c..3f8cd5d 100644 --- a/docs/reference/cluster_set_to_xls-ClusterSet-method.html +++ b/docs/reference/cluster_set_to_xls-ClusterSet-method.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/cluster_set_to_xls.html b/docs/reference/cluster_set_to_xls.html index 436a664..92d750a 100644 --- a/docs/reference/cluster_set_to_xls.html +++ b/docs/reference/cluster_set_to_xls.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/cluster_stats-ClusterSet-method.html b/docs/reference/cluster_stats-ClusterSet-method.html index bef1fad..9500987 100644 --- a/docs/reference/cluster_stats-ClusterSet-method.html +++ b/docs/reference/cluster_stats-ClusterSet-method.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/cluster_stats.html b/docs/reference/cluster_stats.html index 88406ee..326c9fb 100644 --- a/docs/reference/cluster_stats.html +++ b/docs/reference/cluster_stats.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/col_names-ClusterSet-method.html b/docs/reference/col_names-ClusterSet-method.html index 67750b6..d64be97 100644 --- a/docs/reference/col_names-ClusterSet-method.html +++ b/docs/reference/col_names-ClusterSet-method.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/col_names.html b/docs/reference/col_names.html index 06eab1d..c59d73f 100644 --- a/docs/reference/col_names.html +++ b/docs/reference/col_names.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/colors_for_gradient.html b/docs/reference/colors_for_gradient.html index f6013ef..c5e8642 100644 --- a/docs/reference/colors_for_gradient.html +++ b/docs/reference/colors_for_gradient.html @@ -18,7 +18,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/compare_genesets.html b/docs/reference/compare_genesets.html index e4c544f..ebe1215 100644 --- a/docs/reference/compare_genesets.html +++ b/docs/reference/compare_genesets.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/complex9.html b/docs/reference/complex9.html index e29962c..7e1c5e5 100644 --- a/docs/reference/complex9.html +++ b/docs/reference/complex9.html @@ -22,7 +22,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/complex9Noisy.html b/docs/reference/complex9Noisy.html index 578b52a..f61ce1d 100644 --- a/docs/reference/complex9Noisy.html +++ b/docs/reference/complex9Noisy.html @@ -26,7 +26,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/construct_new_graph.html b/docs/reference/construct_new_graph.html index e149701..82e3496 100644 --- a/docs/reference/construct_new_graph.html +++ b/docs/reference/construct_new_graph.html @@ -18,7 +18,7 @@ scigenex - 1.4.7 + 1.4.8 @@ -58,7 +58,7 @@

Construct a new graph for a ClusterSet object

-
construct_new_graph(object = NULL, k = 5, output_path = tempdir(), name = NULL)
+
construct_new_graph(object = NULL, k = 5, output_path = NULL, name = NULL)
@@ -115,7 +115,7 @@

Examples

#> |-- INFO : Computing distances to KNN. #> |-- INFO : Creating the input file for MCL algorithm. #> |-- INFO : Writing the input file. -#> |-- INFO : The input file saved in '/var/folders/zy/wl3dj2_n76zfc8sdvny1q06c0000gn/T/Rtmpd2nXJP/06oFCM0di0.input_mcl.txt'. +#> |-- INFO : The input file saved in '/var/folders/zy/wl3dj2_n76zfc8sdvny1q06c0000gn/T/RtmpBuBaBi/06oFCM0di0.input_mcl.txt'.
diff --git a/docs/reference/create_3_rnd_clust.html b/docs/reference/create_3_rnd_clust.html index 5ea6e2e..38ddc3a 100644 --- a/docs/reference/create_3_rnd_clust.html +++ b/docs/reference/create_3_rnd_clust.html @@ -18,7 +18,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/create_4_rnd_clust.html b/docs/reference/create_4_rnd_clust.html index 7cb428c..e761361 100644 --- a/docs/reference/create_4_rnd_clust.html +++ b/docs/reference/create_4_rnd_clust.html @@ -18,7 +18,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/create_rand_str.html b/docs/reference/create_rand_str.html index a3c8ec6..1665475 100644 --- a/docs/reference/create_rand_str.html +++ b/docs/reference/create_rand_str.html @@ -18,7 +18,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/dim-ClusterSet-method.html b/docs/reference/dim-ClusterSet-method.html index 4b83c08..2763e6e 100644 --- a/docs/reference/dim-ClusterSet-method.html +++ b/docs/reference/dim-ClusterSet-method.html @@ -19,7 +19,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/discrete_palette.html b/docs/reference/discrete_palette.html index 5d06aaa..78a74f7 100644 --- a/docs/reference/discrete_palette.html +++ b/docs/reference/discrete_palette.html @@ -18,7 +18,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/display_hull.html b/docs/reference/display_hull.html index 230aa77..e003b1a 100644 --- a/docs/reference/display_hull.html +++ b/docs/reference/display_hull.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/enrich_go-ClusterSet-method.html b/docs/reference/enrich_go-ClusterSet-method.html index b13c8bf..c1239d4 100644 --- a/docs/reference/enrich_go-ClusterSet-method.html +++ b/docs/reference/enrich_go-ClusterSet-method.html @@ -18,7 +18,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/enrich_go.html b/docs/reference/enrich_go.html index 1f441c1..52736d0 100644 --- a/docs/reference/enrich_go.html +++ b/docs/reference/enrich_go.html @@ -18,7 +18,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/filter_by_dot_prod.html b/docs/reference/filter_by_dot_prod.html index b5a70a0..72c6a28 100644 --- a/docs/reference/filter_by_dot_prod.html +++ b/docs/reference/filter_by_dot_prod.html @@ -27,7 +27,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/filter_cluster_sd.html b/docs/reference/filter_cluster_sd.html index ba078ce..b2946ad 100644 --- a/docs/reference/filter_cluster_sd.html +++ b/docs/reference/filter_cluster_sd.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/filter_cluster_size.html b/docs/reference/filter_cluster_size.html index 666e8ce..83e4915 100644 --- a/docs/reference/filter_cluster_size.html +++ b/docs/reference/filter_cluster_size.html @@ -18,7 +18,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/filter_nb_supporting_cells.html b/docs/reference/filter_nb_supporting_cells.html index a8a127d..5502e41 100644 --- a/docs/reference/filter_nb_supporting_cells.html +++ b/docs/reference/filter_nb_supporting_cells.html @@ -18,7 +18,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/gene_cluster-ClusterSet-method.html b/docs/reference/gene_cluster-ClusterSet-method.html index 401a0a4..b9d7110 100644 --- a/docs/reference/gene_cluster-ClusterSet-method.html +++ b/docs/reference/gene_cluster-ClusterSet-method.html @@ -20,7 +20,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/gene_cluster.html b/docs/reference/gene_cluster.html index e1f6d09..c02c3d6 100644 --- a/docs/reference/gene_cluster.html +++ b/docs/reference/gene_cluster.html @@ -20,7 +20,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/gene_clustering.html b/docs/reference/gene_clustering.html index 3fd6c14..4fa4bf1 100644 --- a/docs/reference/gene_clustering.html +++ b/docs/reference/gene_clustering.html @@ -19,7 +19,7 @@ scigenex - 1.4.7 + 1.4.8 @@ -66,7 +66,7 @@

Gene clustering using the Markov Cluster Algorithm (MCL) method.

inflation = 2, method = c("closest_neighborhood", "reciprocal_neighborhood"), threads = 1, - output_path = tempdir(), + output_path = NULL, name = NULL, keep_nn = FALSE ) @@ -153,7 +153,7 @@

Examples

#> |-- INFO : Computing distances to KNN. #> |-- INFO : Creating the input file for MCL algorithm. #> |-- INFO : Writing the input file. -#> |-- INFO : The input file saved in '/var/folders/zy/wl3dj2_n76zfc8sdvny1q06c0000gn/T/Rtmpd2nXJP/R14z6ff8TV.input_mcl.txt'. +#> |-- INFO : The input file saved in '/var/folders/zy/wl3dj2_n76zfc8sdvny1q06c0000gn/T/RtmpBuBaBi/R14z6ff8TV.input_mcl.txt'. #> |-- INFO : Adding results to a ClusterSet object. # Display the heatmap of gene clusters @@ -185,7 +185,7 @@

Examples

method="reciprocal_neighborhood") #> |-- INFO : Creating the input file for MCL algorithm. #> |-- INFO : Writing the input file. -#> |-- INFO : The input file saved in '/var/folders/zy/wl3dj2_n76zfc8sdvny1q06c0000gn/T/Rtmpd2nXJP/65vDYGyn24.input_mcl.txt'. +#> |-- INFO : The input file saved in '/var/folders/zy/wl3dj2_n76zfc8sdvny1q06c0000gn/T/RtmpBuBaBi/65vDYGyn24.input_mcl.txt'. #> |-- INFO : Adding results to a ClusterSet object. # Display the heatmap of gene clusters diff --git a/docs/reference/getFlippedTissueCoordinates.html b/docs/reference/getFlippedTissueCoordinates.html index 69b8461..672cac0 100644 --- a/docs/reference/getFlippedTissueCoordinates.html +++ b/docs/reference/getFlippedTissueCoordinates.html @@ -23,7 +23,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/get_data_for_scigenex.html b/docs/reference/get_data_for_scigenex.html index f7dd044..01730ac 100644 --- a/docs/reference/get_data_for_scigenex.html +++ b/docs/reference/get_data_for_scigenex.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/get_genes.html b/docs/reference/get_genes.html index 1cd5a13..0f2e95c 100644 --- a/docs/reference/get_genes.html +++ b/docs/reference/get_genes.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/get_verbosity.html b/docs/reference/get_verbosity.html index a47b26c..cbee8f1 100644 --- a/docs/reference/get_verbosity.html +++ b/docs/reference/get_verbosity.html @@ -19,7 +19,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/grapes-in-grapes-character-ClusterSet-method.html b/docs/reference/grapes-in-grapes-character-ClusterSet-method.html index 9ca2eb2..e88e05a 100644 --- a/docs/reference/grapes-in-grapes-character-ClusterSet-method.html +++ b/docs/reference/grapes-in-grapes-character-ClusterSet-method.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/grep_clust-ClusterSet-method.html b/docs/reference/grep_clust-ClusterSet-method.html index a8a7af9..1480892 100644 --- a/docs/reference/grep_clust-ClusterSet-method.html +++ b/docs/reference/grep_clust-ClusterSet-method.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/grep_clust.html b/docs/reference/grep_clust.html index a0a0b84..7e51886 100644 --- a/docs/reference/grep_clust.html +++ b/docs/reference/grep_clust.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/index.html b/docs/reference/index.html index fd26db8..dc4cee3 100644 --- a/docs/reference/index.html +++ b/docs/reference/index.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/install_mcl.html b/docs/reference/install_mcl.html index 3150d29..f49f79f 100644 --- a/docs/reference/install_mcl.html +++ b/docs/reference/install_mcl.html @@ -19,7 +19,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/keep_dbf_graph.html b/docs/reference/keep_dbf_graph.html index bbb9cdb..67fe070 100644 --- a/docs/reference/keep_dbf_graph.html +++ b/docs/reference/keep_dbf_graph.html @@ -18,7 +18,7 @@ scigenex - 1.4.7 + 1.4.8 @@ -58,7 +58,7 @@

Construct a graph based on selected genes in a ClusterSet object and their n
-
keep_dbf_graph(object = NULL, output_path = tempdir(), name = NULL)
+
keep_dbf_graph(object = NULL, output_path = NULL, name = NULL)
@@ -108,7 +108,7 @@

Examples

keep_dbf_graph(object = res) #> |-- INFO : Creating the input file for MCL algorithm. #> |-- INFO : Writing the input file. -#> |-- INFO : The input file saved in '/var/folders/zy/wl3dj2_n76zfc8sdvny1q06c0000gn/T/Rtmpd2nXJP/06oFCM0di0.input_mcl.txt'. +#> |-- INFO : The input file saved in '/var/folders/zy/wl3dj2_n76zfc8sdvny1q06c0000gn/T/RtmpBuBaBi/06oFCM0di0.input_mcl.txt'. #> An object of class ClusterSet #> Name: 06oFCM0di0 #> Memory used: 1743336 @@ -132,7 +132,7 @@

Examples

#> * no_dknn_filter = FALSE #> * seed = 123 #> * keep_nn = TRUE -#> * output_path = /var/folders/zy/wl3dj2_n76zfc8sdvny1q06c0000gn/T//Rtmpd2nXJP +#> * output_path = /var/folders/zy/wl3dj2_n76zfc8sdvny1q06c0000gn/T//RtmpBuBaBi #> * name = 06oFCM0di0
diff --git a/docs/reference/load_example_dataset.html b/docs/reference/load_example_dataset.html index 1fed1cb..9b42ab6 100644 --- a/docs/reference/load_example_dataset.html +++ b/docs/reference/load_example_dataset.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/lymph_node_selected_spot.html b/docs/reference/lymph_node_selected_spot.html index 6ff383e..a03b745 100644 --- a/docs/reference/lymph_node_selected_spot.html +++ b/docs/reference/lymph_node_selected_spot.html @@ -22,7 +22,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/lymph_node_selected_spot_2.html b/docs/reference/lymph_node_selected_spot_2.html index e737c8a..b338fd7 100644 --- a/docs/reference/lymph_node_selected_spot_2.html +++ b/docs/reference/lymph_node_selected_spot_2.html @@ -22,7 +22,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/mcl_system_cmd.html b/docs/reference/mcl_system_cmd.html index d262cab..6cea6fe 100644 --- a/docs/reference/mcl_system_cmd.html +++ b/docs/reference/mcl_system_cmd.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/module_quality_scores-ClusterSet-method.html b/docs/reference/module_quality_scores-ClusterSet-method.html index f586a6b..ed81eb7 100644 --- a/docs/reference/module_quality_scores-ClusterSet-method.html +++ b/docs/reference/module_quality_scores-ClusterSet-method.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/module_quality_scores.html b/docs/reference/module_quality_scores.html index 6cd262c..9fff9ff 100644 --- a/docs/reference/module_quality_scores.html +++ b/docs/reference/module_quality_scores.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/nclust-ClusterSet-method.html b/docs/reference/nclust-ClusterSet-method.html index e257463..1864be0 100644 --- a/docs/reference/nclust-ClusterSet-method.html +++ b/docs/reference/nclust-ClusterSet-method.html @@ -19,7 +19,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/nclust.html b/docs/reference/nclust.html index 18f8430..22b2057 100644 --- a/docs/reference/nclust.html +++ b/docs/reference/nclust.html @@ -19,7 +19,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/ncol.ClusterSet.html b/docs/reference/ncol.ClusterSet.html index 40f253c..5e62b08 100644 --- a/docs/reference/ncol.ClusterSet.html +++ b/docs/reference/ncol.ClusterSet.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/nrow.ClusterSet.html b/docs/reference/nrow.ClusterSet.html index c5e3636..9b85fc6 100644 --- a/docs/reference/nrow.ClusterSet.html +++ b/docs/reference/nrow.ClusterSet.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/plot_clust_enrichments-ClusterSet-method.html b/docs/reference/plot_clust_enrichments-ClusterSet-method.html index 0fe1194..dad33dc 100644 --- a/docs/reference/plot_clust_enrichments-ClusterSet-method.html +++ b/docs/reference/plot_clust_enrichments-ClusterSet-method.html @@ -18,7 +18,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/plot_clust_enrichments.html b/docs/reference/plot_clust_enrichments.html index a184fc1..6823947 100644 --- a/docs/reference/plot_clust_enrichments.html +++ b/docs/reference/plot_clust_enrichments.html @@ -18,7 +18,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/plot_cluster_stats.html b/docs/reference/plot_cluster_stats.html index 0a1ea90..4e3fed8 100644 --- a/docs/reference/plot_cluster_stats.html +++ b/docs/reference/plot_cluster_stats.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/plot_cmp_genesets.html b/docs/reference/plot_cmp_genesets.html index 6ba2dc6..f9121ea 100644 --- a/docs/reference/plot_cmp_genesets.html +++ b/docs/reference/plot_cmp_genesets.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/plot_dist.html b/docs/reference/plot_dist.html index 56f6d63..4426007 100644 --- a/docs/reference/plot_dist.html +++ b/docs/reference/plot_dist.html @@ -18,7 +18,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/plot_ggheatmap-ClusterSet-method.html b/docs/reference/plot_ggheatmap-ClusterSet-method.html index a64c7ba..77daa4d 100644 --- a/docs/reference/plot_ggheatmap-ClusterSet-method.html +++ b/docs/reference/plot_ggheatmap-ClusterSet-method.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/plot_ggheatmap.html b/docs/reference/plot_ggheatmap.html index 09b4b9b..9676c3c 100644 --- a/docs/reference/plot_ggheatmap.html +++ b/docs/reference/plot_ggheatmap.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/plot_heatmap.html b/docs/reference/plot_heatmap.html index 2f73b60..61b045f 100644 --- a/docs/reference/plot_heatmap.html +++ b/docs/reference/plot_heatmap.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/plot_markers_to_clusters-ClusterSet-method.html b/docs/reference/plot_markers_to_clusters-ClusterSet-method.html index 79e7821..ce2d7a8 100644 --- a/docs/reference/plot_markers_to_clusters-ClusterSet-method.html +++ b/docs/reference/plot_markers_to_clusters-ClusterSet-method.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/plot_markers_to_clusters.html b/docs/reference/plot_markers_to_clusters.html index c49d030..d1d3658 100644 --- a/docs/reference/plot_markers_to_clusters.html +++ b/docs/reference/plot_markers_to_clusters.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/plot_profiles.html b/docs/reference/plot_profiles.html index 467434e..0a51475 100644 --- a/docs/reference/plot_profiles.html +++ b/docs/reference/plot_profiles.html @@ -18,7 +18,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/plot_spatial.html b/docs/reference/plot_spatial.html index 708deaa..e5a6da0 100644 --- a/docs/reference/plot_spatial.html +++ b/docs/reference/plot_spatial.html @@ -21,7 +21,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/plot_spatial_panel.html b/docs/reference/plot_spatial_panel.html index 396df41..db07c89 100644 --- a/docs/reference/plot_spatial_panel.html +++ b/docs/reference/plot_spatial_panel.html @@ -19,7 +19,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/plot_stratum.html b/docs/reference/plot_stratum.html index 781f2f9..fec2f95 100644 --- a/docs/reference/plot_stratum.html +++ b/docs/reference/plot_stratum.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/print_msg.html b/docs/reference/print_msg.html index af9ddc5..6d040d4 100644 --- a/docs/reference/print_msg.html +++ b/docs/reference/print_msg.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/print_stat.html b/docs/reference/print_stat.html index fa3c30e..757e0a5 100644 --- a/docs/reference/print_stat.html +++ b/docs/reference/print_stat.html @@ -18,7 +18,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/rename_clust-ClusterSet-method.html b/docs/reference/rename_clust-ClusterSet-method.html index 870b665..106e9e7 100644 --- a/docs/reference/rename_clust-ClusterSet-method.html +++ b/docs/reference/rename_clust-ClusterSet-method.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/rename_clust.html b/docs/reference/rename_clust.html index 92e1f0f..4388b8b 100644 --- a/docs/reference/rename_clust.html +++ b/docs/reference/rename_clust.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/reorder_clust-ClusterSet-method.html b/docs/reference/reorder_clust-ClusterSet-method.html index 97d2321..3d71f87 100644 --- a/docs/reference/reorder_clust-ClusterSet-method.html +++ b/docs/reference/reorder_clust-ClusterSet-method.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/reorder_clust.html b/docs/reference/reorder_clust.html index 1a1376d..038422f 100644 --- a/docs/reference/reorder_clust.html +++ b/docs/reference/reorder_clust.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/reorder_genes-ClusterSet-method.html b/docs/reference/reorder_genes-ClusterSet-method.html index cf5641d..385bb00 100644 --- a/docs/reference/reorder_genes-ClusterSet-method.html +++ b/docs/reference/reorder_genes-ClusterSet-method.html @@ -18,7 +18,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/reorder_genes.html b/docs/reference/reorder_genes.html index 164875b..8a7c7bd 100644 --- a/docs/reference/reorder_genes.html +++ b/docs/reference/reorder_genes.html @@ -18,7 +18,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/row_names-ClusterSet-method.html b/docs/reference/row_names-ClusterSet-method.html index 6968562..1a8b364 100644 --- a/docs/reference/row_names-ClusterSet-method.html +++ b/docs/reference/row_names-ClusterSet-method.html @@ -19,7 +19,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/row_names.html b/docs/reference/row_names.html index f066672..ccdf5c1 100644 --- a/docs/reference/row_names.html +++ b/docs/reference/row_names.html @@ -19,7 +19,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/select_genes.html b/docs/reference/select_genes.html index f363a70..9a257bc 100644 --- a/docs/reference/select_genes.html +++ b/docs/reference/select_genes.html @@ -20,7 +20,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/set_verbosity.html b/docs/reference/set_verbosity.html index 75a7d3c..e52c354 100644 --- a/docs/reference/set_verbosity.html +++ b/docs/reference/set_verbosity.html @@ -21,7 +21,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/show-ClusterSet-method.html b/docs/reference/show-ClusterSet-method.html index 39ea164..7016337 100644 --- a/docs/reference/show-ClusterSet-method.html +++ b/docs/reference/show-ClusterSet-method.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/show_methods.html b/docs/reference/show_methods.html index 7dd4403..7b858ee 100644 --- a/docs/reference/show_methods.html +++ b/docs/reference/show_methods.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/stratify_seurat.html b/docs/reference/stratify_seurat.html index 0287c95..8f86847 100644 --- a/docs/reference/stratify_seurat.html +++ b/docs/reference/stratify_seurat.html @@ -20,7 +20,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/sub-ClusterSet-ANY-ANY-ANY-method.html b/docs/reference/sub-ClusterSet-ANY-ANY-ANY-method.html index b18ae3c..fc2ba52 100644 --- a/docs/reference/sub-ClusterSet-ANY-ANY-ANY-method.html +++ b/docs/reference/sub-ClusterSet-ANY-ANY-ANY-method.html @@ -20,7 +20,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/top_by_go-ClusterSet-method.html b/docs/reference/top_by_go-ClusterSet-method.html index 8f84ac9..2899418 100644 --- a/docs/reference/top_by_go-ClusterSet-method.html +++ b/docs/reference/top_by_go-ClusterSet-method.html @@ -19,7 +19,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/top_by_go.html b/docs/reference/top_by_go.html index 46e318c..22e468b 100644 --- a/docs/reference/top_by_go.html +++ b/docs/reference/top_by_go.html @@ -19,7 +19,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/top_genes-ClusterSet-method.html b/docs/reference/top_genes-ClusterSet-method.html index a97157e..86bd597 100644 --- a/docs/reference/top_genes-ClusterSet-method.html +++ b/docs/reference/top_genes-ClusterSet-method.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/top_genes.html b/docs/reference/top_genes.html index e15a2db..f415c1d 100644 --- a/docs/reference/top_genes.html +++ b/docs/reference/top_genes.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/viz_enrich-ClusterSet-method.html b/docs/reference/viz_enrich-ClusterSet-method.html index 1938fd7..6e30618 100644 --- a/docs/reference/viz_enrich-ClusterSet-method.html +++ b/docs/reference/viz_enrich-ClusterSet-method.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/viz_enrich.html b/docs/reference/viz_enrich.html index cb939f6..c174c1f 100644 --- a/docs/reference/viz_enrich.html +++ b/docs/reference/viz_enrich.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/which_clust-ClusterSet-method.html b/docs/reference/which_clust-ClusterSet-method.html index f122e80..40fa7f9 100644 --- a/docs/reference/which_clust-ClusterSet-method.html +++ b/docs/reference/which_clust-ClusterSet-method.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8 diff --git a/docs/reference/which_clust.html b/docs/reference/which_clust.html index 1b5a68b..94f4117 100644 --- a/docs/reference/which_clust.html +++ b/docs/reference/which_clust.html @@ -17,7 +17,7 @@ scigenex - 1.4.7 + 1.4.8