# How to perform CCI simulation by `cellCellSimulate` function

Koki Tsuyuzaki1, Manabu Ishii1 and Itoshi Nikaido1*

1Laboratory for Bioinformatics Research, RIKEN Center for Biosystems Dynamics Reseach

*k.t.the-answer@hotmail.co.jp

#### 6 July 2020

#### Package

scTensor 1.4.3

# Contents

# 1 Introduction

Here, we explain the way to generate CCI simulation data. scTensor has a function `cellCellSimulate` to generate the simulation data.

The simplest way to generate such data is `cellCellSimulate` with default parameters.

    suppressPackageStartupMessages(library("scTensor"))
    sim <- cellCellSimulate()

    ## Getting the values of params...

    ## Setting random seed...

    ## Generating simulation data...

    ## Done!

This function internally generate the parameter sets by `newCCSParams`, and the values of the parameter can be changed, and specified as the input of `cellCellSimulate` by users as follows.

    # Default parameters
    params <- newCCSParams()
    str(params)

    ## Formal class 'CCSParams' [package "scTensor"] with 5 slots
    ##   ..@ nGene  : num 1000
    ##   ..@ nCell  : num [1:3] 50 50 50
    ##   ..@ cciInfo:List of 4
    ##   .. ..$ nPair: num 500
    ##   .. ..$ CCI1 :List of 4
    ##   .. .. ..$ LPattern: num [1:3] 1 0 0
    ##   .. .. ..$ RPattern: num [1:3] 0 1 0
    ##   .. .. ..$ nGene   : num 50
    ##   .. .. ..$ fc      : chr "E10"
    ##   .. ..$ CCI2 :List of 4
    ##   .. .. ..$ LPattern: num [1:3] 0 1 0
    ##   .. .. ..$ RPattern: num [1:3] 0 0 1
    ##   .. .. ..$ nGene   : num 50
    ##   .. .. ..$ fc      : chr "E10"
    ##   .. ..$ CCI3 :List of 4
    ##   .. .. ..$ LPattern: num [1:3] 0 0 1
    ##   .. .. ..$ RPattern: num [1:3] 1 0 0
    ##   .. .. ..$ nGene   : num 50
    ##   .. .. ..$ fc      : chr "E10"
    ##   ..@ lambda : num 1
    ##   ..@ seed   : num 1234

    # Setting different parameters
    # No. of genes : 1000
    setParam(params, "nGene") <- 1000
    # 3 cell types, 20 cells in each cell type
    setParam(params, "nCell") <- c(20, 20, 20)
    # Setting for Ligand-Receptor pair list
    setParam(params, "cciInfo") <- list(
        nPair=500, # Total number of L-R pairs
        # 1st CCI
        CCI1=list(
            LPattern=c(1,0,0), # Only 1st cell type has this pattern
            RPattern=c(0,1,0), # Only 2nd cell type has this pattern
            nGene=50, # 50 pairs are generated as CCI1
            fc="E10"), # Degree of differential expression (Fold Change)
        # 2nd CCI
        CCI2=list(
            LPattern=c(0,1,0),
            RPattern=c(0,0,1),
            nGene=30,
            fc="E100")
        )
    # Degree of Dropout
    setParam(params, "lambda") <- 10
    # Random number seed
    setParam(params, "seed") <- 123

    # Simulation data
    sim <- cellCellSimulate(params)

    ## Getting the values of params...

    ## Setting random seed...

    ## Generating simulation data...

    ## Done!

The output object sim has some attributes as follows.

Firstly, sim$input contains a synthetic gene expression matrix. The size can be changed by nGene and nCell parameters described above.

    dim(sim$input)

    ## [1] 1000   60

    sim$input[1:2,1:3]

    ##       Cell1 Cell2 Cell3
    ## Gene1  9105     2     0
    ## Gene2     4    37   850

Next, sim$LR contains a ligand-receptor (L-R) pair list. The size can be changed by nPair parameter of cciInfo, and the differentially expressed (DE) L-R pairs are saved in the upper side of this matrix. Here, two DE L-R patterns are specified as cciInfo, and each number of pairs is 50 and 30, respectively.

    dim(sim$LR)

    ## [1] 500   2

    sim$LR[1:10,]

    ##    GENEID_L GENEID_R
    ## 1     Gene1   Gene81
    ## 2     Gene2   Gene82
    ## 3     Gene3   Gene83
    ## 4     Gene4   Gene84
    ## 5     Gene5   Gene85
    ## 6     Gene6   Gene86
    ## 7     Gene7   Gene87
    ## 8     Gene8   Gene88
    ## 9     Gene9   Gene89
    ## 10   Gene10   Gene90

    sim$LR[46:55,]

    ##    GENEID_L GENEID_R
    ## 46   Gene46  Gene126
    ## 47   Gene47  Gene127
    ## 48   Gene48  Gene128
    ## 49   Gene49  Gene129
    ## 50   Gene50  Gene130
    ## 51   Gene51  Gene131
    ## 52   Gene52  Gene132
    ## 53   Gene53  Gene133
    ## 54   Gene54  Gene134
    ## 55   Gene55  Gene135

    sim$LR[491:500,]

    ##     GENEID_L GENEID_R
    ## 491  Gene571  Gene991
    ## 492  Gene572  Gene992
    ## 493  Gene573  Gene993
    ## 494  Gene574  Gene994
    ## 495  Gene575  Gene995
    ## 496  Gene576  Gene996
    ## 497  Gene577  Gene997
    ## 498  Gene578  Gene998
    ## 499  Gene579  Gene999
    ## 500  Gene580 Gene1000

Finally, sim$celltypes contains a cell type vector. Since nCell is specified as “c(20, 20, 20)” described above, three cell types are generated.

    length(sim$celltypes)

    ## [1] 60

    head(sim$celltypes)

    ## Celltype1 Celltype1 Celltype1 Celltype1 Celltype1 Celltype1
    ##   "Cell1"   "Cell2"   "Cell3"   "Cell4"   "Cell5"   "Cell6"

    table(names(sim$celltypes))

    ##
    ## Celltype1 Celltype2 Celltype3
    ##        20        20        20

# Session information

    ## R version 4.0.0 (2020-04-24)
    ## Platform: x86_64-w64-mingw32/x64 (64-bit)
    ## Running under: Windows Server 2012 R2 x64 (build 9600)
    ##
    ## Matrix products: default
    ##
    ## locale:
    ## [1] LC_COLLATE=C
    ## [2] LC_CTYPE=English_United States.1252
    ## [3] LC_MONETARY=English_United States.1252
    ## [4] LC_NUMERIC=C
    ## [5] LC_TIME=English_United States.1252
    ##
    ## attached base packages:
    ## [1] parallel  stats4    stats     graphics  grDevices utils     datasets
    ## [8] methods   base
    ##
    ## other attached packages:
    ##  [1] AnnotationHub_2.20.0
    ##  [2] BiocFileCache_1.12.0
    ##  [3] dbplyr_1.4.4
    ##  [4] Homo.sapiens_1.3.1
    ##  [5] TxDb.Hsapiens.UCSC.hg19.knownGene_3.2.2
    ##  [6] org.Hs.eg.db_3.11.4
    ##  [7] GO.db_3.11.4
    ##  [8] OrganismDbi_1.30.0
    ##  [9] GenomicFeatures_1.40.0
    ## [10] AnnotationDbi_1.50.1
    ## [11] MeSH.Mmu.eg.db_1.13.0
    ## [12] LRBase.Mmu.eg.db_1.2.0
    ## [13] MeSH.Hsa.eg.db_1.13.0
    ## [14] MeSHDbi_1.24.0
    ## [15] SingleCellExperiment_1.10.1
    ## [16] SummarizedExperiment_1.18.1
    ## [17] DelayedArray_0.14.0
    ## [18] matrixStats_0.56.0
    ## [19] Biobase_2.48.0
    ## [20] GenomicRanges_1.40.0
    ## [21] GenomeInfoDb_1.24.2
    ## [22] IRanges_2.22.2
    ## [23] S4Vectors_0.26.1
    ## [24] BiocGenerics_0.34.0
    ## [25] scTensor_1.4.3
    ## [26] RSQLite_2.2.0
    ## [27] LRBase.Hsa.eg.db_1.2.0
    ## [28] LRBaseDbi_1.6.0
    ## [29] BiocStyle_2.16.0
    ##
    ## loaded via a namespace (and not attached):
    ##   [1] rsvd_1.0.3                    Hmisc_4.4-0
    ##   [3] ica_1.0-2                     Rsamtools_2.4.0
    ##   [5] foreach_1.5.0                 lmtest_0.9-37
    ##   [7] crayon_1.3.4                  MASS_7.3-51.6
    ##   [9] nlme_3.1-148                  backports_1.1.8
    ##  [11] GOSemSim_2.14.0               rlang_0.4.6
    ##  [13] XVector_0.28.0                ROCR_1.0-11
    ##  [15] irlba_2.3.3                   nnTensor_1.0.5
    ##  [17] GOstats_2.54.0                BiocParallel_1.22.0
    ##  [19] tagcloud_0.6                  bit64_0.9-7
    ##  [21] glue_1.4.1                    sctransform_0.2.1
    ##  [23] dotCall64_1.0-0               DOSE_3.14.0
    ##  [25] tidyselect_1.1.0              fitdistrplus_1.1-1
    ##  [27] XML_3.99-0.3                  tidyr_1.1.0
    ##  [29] zoo_1.8-8                     GenomicAlignments_1.24.0
    ##  [31] xtable_1.8-4                  magrittr_1.5
    ##  [33] evaluate_0.14                 ggplot2_3.3.2
    ##  [35] zlibbioc_1.34.0               rstudioapi_0.11
    ##  [37] rpart_4.1-15                  fastmatch_1.1-0
    ##  [39] ensembldb_2.12.1              maps_3.3.0
    ##  [41] fields_10.3                   shiny_1.5.0
    ##  [43] xfun_0.15                     askpass_1.1
    ##  [45] cluster_2.1.0                 caTools_1.18.0
    ##  [47] tidygraph_1.2.0               TSP_1.1-10
    ##  [49] tibble_3.0.1                  interactiveDisplayBase_1.26.3
    ##  [51] ggrepel_0.8.2                 biovizBase_1.36.0
    ##  [53] ape_5.4                       listenv_0.8.0
    ##  [55] dendextend_1.13.4             Biostrings_2.56.0
    ##  [57] png_0.1-7                     future_1.17.0
    ##  [59] bitops_1.0-6                  ggforce_0.3.2
    ##  [61] RBGL_1.64.0                   plyr_1.8.6
    ##  [63] GSEABase_1.50.1               AnnotationFilter_1.12.0
    ##  [65] pillar_1.4.4                  gplots_3.0.4
    ##  [67] graphite_1.34.0               europepmc_0.4
    ##  [69] vctrs_0.3.1                   ellipsis_0.3.1
    ##  [71] generics_0.0.2                plot3D_1.3
    ##  [73] urltools_1.7.3                MeSH.Aca.eg.db_1.13.0
    ##  [75] outliers_0.14                 tools_4.0.0
    ##  [77] foreign_0.8-80                entropy_1.2.1
    ##  [79] munsell_0.5.0                 tweenr_1.0.1
    ##  [81] fgsea_1.14.0                  fastmap_1.0.1
    ##  [83] compiler_4.0.0                abind_1.4-5
    ##  [85] httpuv_1.5.4                  rtracklayer_1.48.0
    ##  [87] Gviz_1.32.0                   plotly_4.9.2.1
    ##  [89] GenomeInfoDbData_1.2.3        gridExtra_2.3
    ##  [91] lattice_0.20-41               visNetwork_2.0.9
    ##  [93] AnnotationForge_1.30.1        later_1.1.0.1
    ##  [95] dplyr_1.0.0                   jsonlite_1.7.0
    ##  [97] concaveman_1.1.0              scales_1.1.1
    ##  [99] graph_1.66.0                  pbapply_1.4-2
    ## [101] genefilter_1.70.0             lazyeval_0.2.2
    ## [103] promises_1.1.1                MeSH.db_1.13.0
    ## [105] latticeExtra_0.6-29           reticulate_1.16
    ## [107] checkmate_2.0.0               rmarkdown_2.3
    ## [109] cowplot_1.0.0                 schex_1.2.0
    ## [111] MeSH.Syn.eg.db_1.13.0         webshot_0.5.2
    ## [113] Rtsne_0.15                    dichromat_2.0-0
    ## [115] BSgenome_1.56.0               uwot_0.1.8
    ## [117] igraph_1.2.5                  gclus_1.3.2
    ## [119] survival_3.2-3                yaml_2.2.1
    ## [121] plotrix_3.7-8                 htmltools_0.5.0
    ## [123] memoise_1.1.0                 VariantAnnotation_1.34.0
    ## [125] rTensor_1.4.1                 Seurat_3.1.5
    ## [127] seriation_1.2-8               graphlayouts_0.7.0
    ## [129] viridisLite_0.3.0             digest_0.6.25
    ## [131] assertthat_0.2.1              ReactomePA_1.32.0
    ## [133] mime_0.9                      rappdirs_0.3.1
    ## [135] registry_0.5-1                spam_2.5-1
    ## [137] future.apply_1.6.0            misc3d_0.8-4
    ## [139] data.table_1.12.8             blob_1.2.1
    ## [141] cummeRbund_2.30.0             splines_4.0.0
    ## [143] Formula_1.2-3                 ProtGenerics_1.20.0
    ## [145] RCurl_1.98-1.2                hms_0.5.3
    ## [147] colorspace_1.4-1              base64enc_0.1-3
    ## [149] BiocManager_1.30.10           nnet_7.3-14
    ## [151] Rcpp_1.0.4.6                  bookdown_0.20
    ## [153] RANN_2.6.1                    MeSH.PCR.db_1.13.0
    ## [155] enrichplot_1.8.1              R6_2.4.1
    ## [157] grid_4.0.0                    ggridges_0.5.2
    ## [159] lifecycle_0.2.0               acepack_1.4.1
    ## [161] curl_4.3                      MeSH.Bsu.168.eg.db_1.13.0
    ## [163] gdata_2.18.0                  leiden_0.3.3
    ## [165] MeSH.AOR.db_1.13.0            meshr_1.24.1
    ## [167] DO.db_2.9                     Matrix_1.2-18
    ## [169] qvalue_2.20.0                 RcppAnnoy_0.0.16
    ## [171] RColorBrewer_1.1-2            iterators_1.0.12
    ## [173] stringr_1.4.0                 htmlwidgets_1.5.1
    ## [175] polyclip_1.10-0               triebeard_0.3.0
    ## [177] biomaRt_2.44.1                purrr_0.3.4
    ## [179] gridGraphics_0.5-0            reactome.db_1.70.0
    ## [181] globals_0.12.5                openssl_1.4.2
    ## [183] htmlTable_2.0.1               patchwork_1.0.1
    ## [185] codetools_0.2-16              gtools_3.8.2
    ## [187] prettyunits_1.1.1             gtable_0.3.0
    ## [189] tsne_0.1-3                    DBI_1.1.0
    ## [191] highr_0.8                     httr_1.4.1
    ## [193] KernSmooth_2.23-17            stringi_1.4.6
    ## [195] progress_1.2.2                reshape2_1.4.4
    ## [197] farver_2.0.3                  heatmaply_1.1.0
    ## [199] annotate_1.66.0               viridis_0.5.1
    ## [201] hexbin_1.28.1                 fdrtool_1.2.15
    ## [203] Rgraphviz_2.32.0              magick_2.4.0
    ## [205] xml2_1.3.2                    rvcheck_0.1.8
    ## [207] ggplotify_0.0.5               Category_2.54.0
    ## [209] BiocVersion_3.11.1            bit_1.1-15.2
    ## [211] scatterpie_0.1.4              jpeg_0.1-8.1
    ## [213] ggraph_2.0.3                  pkgconfig_2.0.3
    ## [215] knitr_1.29