[
  {
    "path": ".Rbuildignore",
    "content": "^renv$\n^renv\\.lock$\n^.*\\.Rproj$\n^\\.Rproj\\.user$\n^CONDUCT\\.md$\n.travis.yml\nNOTICE\n_pkgdown.yml\n^doc$\n^Meta$\nrenv*\n\n^_pkgdown\\.yml$\n^docs$\n^pkgdown$\n^\\.github$\n"
  },
  {
    "path": ".github/.gitignore",
    "content": "*.html\n"
  },
  {
    "path": ".github/workflows/BioC-check.yaml",
    "content": "# Workflow derived from https://github.com/r-lib/actions/tree/master/examples\n# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help\non:\n  push:\n    branches: [devel, master]\n  pull_request:\n    branches: [devel, master]\n\nname: BioC-check\n\njobs:\n  R-CMD-check:\n    runs-on: ${{ matrix.config.os }}\n\n    name: ${{ matrix.config.os }} (${{ matrix.config.r }})\n\n    strategy:\n      fail-fast: false\n      matrix:\n        config:\n          - {os: macOS-latest,   r: 'release'}\n\n    env:\n      GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}\n      R_KEEP_PKG_SOURCE: yes\n\n    steps:\n      - uses: actions/checkout@v2\n\n      - uses: r-lib/actions/setup-pandoc@v2\n\n      - uses: r-lib/actions/setup-r@v2\n        with:\n          r-version: ${{ matrix.config.r }}\n          http-user-agent: ${{ matrix.config.http-user-agent }}\n          use-public-rspm: true\n\n      - uses: r-lib/actions/setup-r-dependencies@v2\n        with:\n          extra-packages: |\n            any::rcmdcheck\n            url::https://cran.r-project.org/src/contrib/Archive/dbplyr/dbplyr_2.3.4.tar.gz\n\n      - name: Install XQuartz on macOS\n        if: runner.os == 'macOS'\n        run: brew install xquartz --cask\n\n      - name: Install fftw3 on macOS\n        if: runner.os == 'macOS'\n        run: brew install fftw\n          \n      - name: Run BiocCheck\n        run: |\n          BiocManager::install(\"BiocCheck\")\n          library(BiocCheck)\n          BiocCheck::BiocCheck(\".\",\n              `quit-with-status` = TRUE,\n              `no-check-R-ver` = TRUE,\n              `no-check-bioc-help` = TRUE\n          )\n        shell: Rscript {0}\n        \n"
  },
  {
    "path": ".github/workflows/check-standard.yaml",
    "content": "# Workflow derived from https://github.com/r-lib/actions/tree/master/examples\n# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help\non:\n  push:\n    branches: [devel, master]\n  pull_request:\n    branches: [devel, master]\n\nname: R-CMD-check\n\njobs:\n  R-CMD-check:\n    runs-on: ${{ matrix.config.os }}\n\n    name: ${{ matrix.config.os }} (${{ matrix.config.r }})\n\n    strategy:\n      fail-fast: false\n      matrix:\n        config:\n          - {os: macOS-latest,   r: 'release'}\n          - {os: windows-latest, r: 'release'}\n          - {os: ubuntu-latest,   r: 'release'}\n\n    env:\n      GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}\n      R_KEEP_PKG_SOURCE: yes\n\n    steps:\n      - uses: actions/checkout@v2 \n\n      - uses: r-lib/actions/setup-pandoc@v2\n\n      - uses: r-lib/actions/setup-r@v2\n        with:\n          r-version: ${{ matrix.config.r }}\n          http-user-agent: ${{ matrix.config.http-user-agent }}\n          use-public-rspm: false\n\n      - name: Install XQuartz on macOS\n        if: runner.os == 'macOS'\n        run: brew install xquartz --cask\n\n      - name: Install fftw3 on macOS\n        if: runner.os == 'macOS'\n        run: brew install fftw\n\n      - uses: r-lib/actions/setup-r-dependencies@v2\n        with:\n          extra-packages: |\n            any::rcmdcheck\n            any::tinytex\n            url::https://cran.r-project.org/src/contrib/Archive/dbplyr/dbplyr_2.3.4.tar.gz\n\n      - uses: r-lib/actions/setup-tinytex@v2\n      - uses: r-lib/actions/check-r-package@v2\n\n      - name: Show testthat output\n        if: always()\n        run: find check -name 'testthat.Rout*' -exec cat '{}' \\; || true\n        shell: bash\n\n      - name: Upload check results\n        if: failure()\n        uses: actions/upload-artifact@main\n        with:\n          name: ${{ runner.os }}-r${{ matrix.config.r }}-results\n          path: check\n"
  },
  {
    "path": ".gitignore",
    "content": "# History files\n.Rhistory\n.Rapp.history\n\n# Session Data files\n.RData\n# Example code in package build process\n*-Ex.R\n# Output files from R CMD build\n/*.tar.gz\n# Output files from R CMD check\n/*.Rcheck/\n# RStudio files\n.Rproj.user/\n# produced vignettes\nvignettes/*.html\nvignettes/*.pdf\nvignettes/*.log\ninst/rmarkdown/*.html\ninst/rmarkdown/*.rds\ninst/rmarkdown/*.csv\n# OAuth2 token, see https://github.com/hadley/httr/releases/tag/v0.3\n.httr-oauth\n# knitr and R markdown default cache directories\n/*_cache/\n/cache/\n# Temporary files created by R markdown\n*.utf8.md\n*.knit.md\n.Rproj.user\ncelda.Rproj\n.DS_Store\nsrc/*.o\nsrc/*.dll\nsrc/*.so\nsrc-i386/*\nsrc-x64/*\netc/*\n# Celda log files with default prefix\nCelda_chain.*log.txt\ninst/doc\ndoc\nMeta\n.Rprofile\nrenv/\nrenv.lock\n"
  },
  {
    "path": "CONDUCT.md",
    "content": "# Contributor Code of Conduct\n\nAs contributors and maintainers of this project, we pledge to respect all people who \ncontribute through reporting issues, posting feature requests, updating documentation,\nsubmitting pull requests or patches, and other activities.\n\nWe are committed to making participation in this project a harassment-free experience for\neveryone, regardless of level of experience, gender, gender identity and expression,\nsexual orientation, disability, personal appearance, body size, race, ethnicity, age, or religion.\n\nExamples of unacceptable behavior by participants include the use of sexual language or\nimagery, derogatory comments or personal attacks, trolling, public or private harassment,\ninsults, or other unprofessional conduct.\n\nProject maintainers have the right and responsibility to remove, edit, or reject comments,\ncommits, code, wiki edits, issues, and other contributions that are not aligned to this \nCode of Conduct. Project maintainers who do not follow the Code of Conduct may be removed \nfrom the project team.\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be reported by \nopening an issue or contacting one or more of the project maintainers.\n\nThis Code of Conduct is adapted from the Contributor Covenant \n(http:contributor-covenant.org), version 1.0.0, available at \nhttp://contributor-covenant.org/version/1/0/0/\n"
  },
  {
    "path": "DESCRIPTION",
    "content": "Package: celda\nTitle: CEllular Latent Dirichlet Allocation\nVersion: 1.18.2\nAuthors@R: c(person(\"Joshua\", \"Campbell\", email = \"camp@bu.edu\",\n    role = c(\"aut\", \"cre\")),\n    person(\"Shiyi\", \"Yang\", email=\"syyang@bu.edu\", role = c(\"aut\")),\n    person(\"Zhe\", \"Wang\", email=\"zhe@bu.edu\", role = c(\"aut\")),\n    person(\"Sean\", \"Corbett\", email = \"scorbett@bu.edu\", role = c(\"aut\")),\n    person(\"Yusuke\", \"Koga\", email=\"ykoga07@bu.edu\", role = c(\"aut\")))\nDescription: Celda is a suite of Bayesian hierarchical models for\n    clustering single-cell RNA-sequencing (scRNA-seq) data. It is able to\n    perform \"bi-clustering\" and simultaneously cluster genes into gene modules\n    and cells into cell subpopulations. It also contains DecontX, a novel\n    Bayesian method to computationally estimate and remove RNA contamination in\n    individual cells without empty droplet information. A variety of scRNA-seq\n    data visualization functions is also included.\nDepends: R (>= 4.0), SingleCellExperiment, Matrix\nVignetteBuilder: knitr\nImports: plyr, foreach, ggplot2, RColorBrewer, grid, scales, gtable,\n        grDevices, graphics, matrixStats, doParallel, digest, methods,\n        reshape2, S4Vectors, data.table,\n        Rcpp, RcppEigen, uwot, enrichR, SummarizedExperiment,\n        MCMCprecision, ggrepel, Rtsne, withr,\n        scater (>= 1.14.4), scran, dbscan,\n        DelayedArray, stringr, ComplexHeatmap, gridExtra,\n        circlize\nSuggests: testthat, knitr, roxygen2, rmarkdown, biomaRt, covr,\n        BiocManager, BiocStyle, TENxPBMCData, singleCellTK, M3DExampleData\nLinkingTo: Rcpp, RcppEigen\nLicense: MIT + file LICENSE\nEncoding: UTF-8\nLazyData: true\nRoxygenNote: 7.3.1\nBugReports: https://github.com/campbio/celda/issues\nbiocViews: SingleCell, GeneExpression, Clustering, Sequencing, Bayesian, ImmunoOncology, DataImport\nNeedsCompilation: yes\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2018 Joshua D Campbell\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "NAMESPACE",
    "content": "# Generated by roxygen2: do not edit by hand\n\nexport(\"celdaClusters<-\")\nexport(\"celdaModules<-\")\nexport(\"decontXcounts<-\")\nexport(\"sampleLabel<-\")\nexport(appendCeldaList)\nexport(availableModels)\nexport(bestLogLikelihood)\nexport(celda)\nexport(celdaClusters)\nexport(celdaGridSearch)\nexport(celdaHeatmap)\nexport(celdaModel)\nexport(celdaModules)\nexport(celdaPerplexity)\nexport(celdaProbabilityMap)\nexport(celdaTsne)\nexport(celdaUmap)\nexport(celda_C)\nexport(celda_CG)\nexport(celda_G)\nexport(celdatosce)\nexport(clusterProbability)\nexport(compareCountMatrix)\nexport(countChecksum)\nexport(decontX)\nexport(decontXcounts)\nexport(distinctColors)\nexport(factorizeMatrix)\nexport(featureModuleLookup)\nexport(featureModuleTable)\nexport(geneSetEnrich)\nexport(logLikelihood)\nexport(logLikelihoodHistory)\nexport(matrixNames)\nexport(moduleHeatmap)\nexport(normalizeCounts)\nexport(params)\nexport(perplexity)\nexport(plotCeldaViolin)\nexport(plotDecontXContamination)\nexport(plotDecontXMarkerExpression)\nexport(plotDecontXMarkerPercentage)\nexport(plotDimReduceCluster)\nexport(plotDimReduceFeature)\nexport(plotDimReduceGrid)\nexport(plotDimReduceModule)\nexport(plotGridSearchPerplexity)\nexport(plotHeatmap)\nexport(plotRPC)\nexport(recodeClusterY)\nexport(recodeClusterZ)\nexport(recursiveSplitCell)\nexport(recursiveSplitModule)\nexport(reorderCelda)\nexport(reportCeldaCGPlotResults)\nexport(reportCeldaCGRun)\nexport(resList)\nexport(resamplePerplexity)\nexport(retrieveFeatureIndex)\nexport(runParams)\nexport(sampleLabel)\nexport(selectBestModel)\nexport(selectFeatures)\nexport(simulateCells)\nexport(simulateContamination)\nexport(splitModule)\nexport(subsetCeldaList)\nexport(topRank)\nexportMethods(\"celdaClusters<-\")\nexportMethods(\"celdaModules<-\")\nexportMethods(\"decontXcounts<-\")\nexportMethods(\"sampleLabel<-\")\nexportMethods(bestLogLikelihood)\nexportMethods(celdaClusters)\nexportMethods(celdaGridSearch)\nexportMethods(celdaHeatmap)\nexportMethods(celdaModel)\nexportMethods(celdaModules)\nexportMethods(celdaPerplexity)\nexportMethods(celdaProbabilityMap)\nexportMethods(celdaTsne)\nexportMethods(celdaUmap)\nexportMethods(celda_C)\nexportMethods(celda_CG)\nexportMethods(celda_G)\nexportMethods(celdatosce)\nexportMethods(clusterProbability)\nexportMethods(compareCountMatrix)\nexportMethods(countChecksum)\nexportMethods(decontX)\nexportMethods(decontXcounts)\nexportMethods(factorizeMatrix)\nexportMethods(featureModuleLookup)\nexportMethods(geneSetEnrich)\nexportMethods(logLikelihood)\nexportMethods(logLikelihoodHistory)\nexportMethods(matrixNames)\nexportMethods(moduleHeatmap)\nexportMethods(params)\nexportMethods(perplexity)\nexportMethods(plotCeldaViolin)\nexportMethods(plotDimReduceCluster)\nexportMethods(plotDimReduceFeature)\nexportMethods(plotDimReduceGrid)\nexportMethods(plotDimReduceModule)\nexportMethods(plotGridSearchPerplexity)\nexportMethods(plotRPC)\nexportMethods(recursiveSplitCell)\nexportMethods(recursiveSplitModule)\nexportMethods(reorderCelda)\nexportMethods(resList)\nexportMethods(resamplePerplexity)\nexportMethods(runParams)\nexportMethods(sampleLabel)\nexportMethods(selectBestModel)\nexportMethods(selectFeatures)\nexportMethods(splitModule)\nexportMethods(subsetCeldaList)\nimport(Rcpp)\nimport(RcppEigen)\nimport(foreach)\nimport(grDevices)\nimport(graphics)\nimport(grid)\nimport(uwot)\nimportClassesFrom(Matrix,dgCMatrix)\nimportClassesFrom(SingleCellExperiment,SingleCellExperiment)\nimportFrom(MCMCprecision,fit_dirichlet)\nimportFrom(Matrix,colSums)\nimportFrom(Matrix,rowSums)\nimportFrom(Matrix,t)\nimportFrom(RColorBrewer,brewer.pal)\nimportFrom(Rtsne,Rtsne)\nimportFrom(data.table,as.data.table)\nimportFrom(digest,digest)\nimportFrom(doParallel,registerDoParallel)\nimportFrom(enrichR,enrichr)\nimportFrom(enrichR,listEnrichrDbs)\nimportFrom(ggrepel,geom_text_repel)\nimportFrom(grDevices,colorRampPalette)\nimportFrom(grDevices,colors)\nimportFrom(grDevices,hsv)\nimportFrom(grDevices,rgb2hsv)\nimportFrom(grid,grid.pretty)\nimportFrom(gtable,gtable)\nimportFrom(gtable,gtable_add_grob)\nimportFrom(gtable,gtable_height)\nimportFrom(gtable,gtable_width)\nimportFrom(matrixStats,logSumExp)\nimportFrom(methods,.hasSlot)\nimportFrom(methods,is)\nimportFrom(methods,new)\nimportFrom(plyr,mapvalues)\nimportFrom(reshape2,melt)\nimportFrom(scales,brewer_pal)\nimportFrom(scales,dscale)\nimportFrom(scales,hue_pal)\nimportFrom(withr,with_seed)\nimportMethodsFrom(Matrix,\"%*%\")\nuseDynLib(celda,\"_colSumByGroup\")\nuseDynLib(celda,\"_colSumByGroupChange\")\nuseDynLib(celda,\"_colSumByGroupChange_numeric\")\nuseDynLib(celda,\"_colSumByGroup_numeric\")\nuseDynLib(celda,\"_perplexityG\")\nuseDynLib(celda,\"_rowSumByGroup\")\nuseDynLib(celda,\"_rowSumByGroupChange\")\nuseDynLib(celda,\"_rowSumByGroupChange_numeric\")\nuseDynLib(celda,\"_rowSumByGroup_numeric\")\n"
  },
  {
    "path": "NEWS.md",
    "content": "# celda v1.18.2 (2024-04-02)\n* Updated Makevar files to new CRAN standards \n* Fixed unit test causing error\n\n# celda v1.18.1 (2023-11-05)\n* Update to match Bioconductor release version\n* Removed multipanelfigure as a dependency\n\n# celda v1.14.2 (2023-01-19)\n* Update to match Bioconductor release version\n\n# celda v1.13.0 (2022-10-20)\n* Bug fixes related to cluster labels stored as factors and plotting\n* Updated sparse matrix conversion to work with Matrix v1.4-2\n\n# celda v1.12.0 (2022-04-30)\n* Update to match Bioconductor 3.15 release version\n\n# celda v1.11.1 (2022-03-31)\n* Fixes to reports\n* Use smoothe splines for perplexity and RPC plots\n\n# celda v1.11.0 (2022-03-31)\n* Improvments to decontX vignette\n* Added ability to subsample to speed up perplexity calculations\n* Added ability to use batch parameter with the raw matrix in decontX\n\n# celda v1.10.0 (2021-12-28)\n* Update to match Bioconductor release version\n\n# celda v1.9.3 (2021-10-04)\n* Fixed bug in checking background matrix with decontX\n* Switched to using Github Actions for Continuous Integration\n* Fixed plotting bugs in celda results reports\n* Speed up final step in decontX when creating final decontaminated matrix\n\n# celda v1.9.2 (2021-07-19)\n* Added a `NEWS.md` file to track changes to the package.\n* Added new tutorials and documentation generated with pkgdown.\n* Removed warnings in plotRPC functions.\n* Added use of \"displayName\" to several functions that show feature names. \n* Minor bug fix when the input matrix was sparse and contained non-integer values.\n* Several improvements to plotting functions. \n\n# celda v1.7.7 (2021-04-12):\n* Added handling for sparse matrices\n\n# celda v1.7.6 (2021-04-04):\n* Added functions for creating HTML reports\n* Fixed bug in decontX plotting\n\n# celda v1.7.4 (2021-03-09):\n* Enable input of raw/droplet matrix into decontX to estimate ambient RNA\n\n# celda v1.1.6 (2019-07-16):\n* Add multiclass decision tree\n\n# celda v1.1.4 (2019-05-28):\n* Add Alternate headings support for plotDimReduceFeature\n\n# celda v1.1.3 (2019-05-14):\n* Add multiclass decision tree (MCDT) cell cluster annotation\n\n# celda v1.1.2 (2019-05-14):\n* Fix a bug in celdaHeatmap\n\n# celda v1.0.1 (2019-05-09):\n* Default seed setting to maintain reproducibility\n\n# celda v0.99.34 (2019-04-23):\n* Minor changes to the vignettes\n\n# celda v0.99.23 (2019-04-10):\n* Remove pheatmap import\n\n# celda v0.99.22 (2019-04-09):\n* Package celda, for bi-clustering of single-cell 'omics data.\n\n# celda v0.99.8 (2019-03-11):\n* Second submission to Bioconductor\n\n# celda v0.99.0 (2018-05-15):\n* First submission to Bioconductor\n"
  },
  {
    "path": "NOTICE",
    "content": "The celda package incldues other open source software components, including \nfunctions adapted from other R libraries. The use of these components is annotated\nthroughout the codebase.\n\nThe following is a list of these components; their corresponding licenses are listed below.\n\n- gtools\n- pheatmap\n\n\n\n\n\ngtools, pheatmap\n-----------------\n                    GNU GENERAL PUBLIC LICENSE\n                       Version 2, June 1991\n\n Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>\n 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n                            Preamble\n\n  The licenses for most software are designed to take away your\nfreedom to share and change it.  By contrast, the GNU General Public\nLicense is intended to guarantee your freedom to share and change free\nsoftware--to make sure the software is free for all its users.  This\nGeneral Public License applies to most of the Free Software\nFoundation's software and to any other program whose authors commit to\nusing it.  (Some other Free Software Foundation software is covered by\nthe GNU Lesser General Public License instead.)  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthis service if you wish), that you receive source code or can get it\nif you want it, that you can change the software or use pieces of it\nin new free programs; and that you know you can do these things.\n\n  To protect your rights, we need to make restrictions that forbid\nanyone to deny you these rights or to ask you to surrender the rights.\nThese restrictions translate to certain responsibilities for you if you\ndistribute copies of the software, or if you modify it.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must give the recipients all the rights that\nyou have.  You must make sure that they, too, receive or can get the\nsource code.  And you must show them these terms so they know their\nrights.\n\n  We protect your rights with two steps: (1) copyright the software, and\n(2) offer you this license which gives you legal permission to copy,\ndistribute and/or modify the software.\n\n  Also, for each author's protection and ours, we want to make certain\nthat everyone understands that there is no warranty for this free\nsoftware.  If the software is modified by someone else and passed on, we\nwant its recipients to know that what they have is not the original, so\nthat any problems introduced by others will not reflect on the original\nauthors' reputations.\n\n  Finally, any free program is threatened constantly by software\npatents.  We wish to avoid the danger that redistributors of a free\nprogram will individually obtain patent licenses, in effect making the\nprogram proprietary.  To prevent this, we have made it clear that any\npatent must be licensed for everyone's free use or not licensed at all.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\n                    GNU GENERAL PUBLIC LICENSE\n   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n  0. This License applies to any program or other work which contains\na notice placed by the copyright holder saying it may be distributed\nunder the terms of this General Public License.  The \"Program\", below,\nrefers to any such program or work, and a \"work based on the Program\"\nmeans either the Program or any derivative work under copyright law:\nthat is to say, a work containing the Program or a portion of it,\neither verbatim or with modifications and/or translated into another\nlanguage.  (Hereinafter, translation is included without limitation in\nthe term \"modification\".)  Each licensee is addressed as \"you\".\n\nActivities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope.  The act of\nrunning the Program is not restricted, and the output from the Program\nis covered only if its contents constitute a work based on the\nProgram (independent of having been made by running the Program).\nWhether that is true depends on what the Program does.\n\n  1. You may copy and distribute verbatim copies of the Program's\nsource code as you receive it, in any medium, provided that you\nconspicuously and appropriately publish on each copy an appropriate\ncopyright notice and disclaimer of warranty; keep intact all the\nnotices that refer to this License and to the absence of any warranty;\nand give any other recipients of the Program a copy of this License\nalong with the Program.\n\nYou may charge a fee for the physical act of transferring a copy, and\nyou may at your option offer warranty protection in exchange for a fee.\n\n  2. You may modify your copy or copies of the Program or any portion\nof it, thus forming a work based on the Program, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n    a) You must cause the modified files to carry prominent notices\n    stating that you changed the files and the date of any change.\n\n    b) You must cause any work that you distribute or publish, that in\n    whole or in part contains or is derived from the Program or any\n    part thereof, to be licensed as a whole at no charge to all third\n    parties under the terms of this License.\n\n    c) If the modified program normally reads commands interactively\n    when run, you must cause it, when started running for such\n    interactive use in the most ordinary way, to print or display an\n    announcement including an appropriate copyright notice and a\n    notice that there is no warranty (or else, saying that you provide\n    a warranty) and that users may redistribute the program under\n    these conditions, and telling the user how to view a copy of this\n    License.  (Exception: if the Program itself is interactive but\n    does not normally print such an announcement, your work based on\n    the Program is not required to print an announcement.)\n\nThese requirements apply to the modified work as a whole.  If\nidentifiable sections of that work are not derived from the Program,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works.  But when you\ndistribute the same sections as part of a whole which is a work based\non the Program, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote it.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Program.\n\nIn addition, mere aggregation of another work not based on the Program\nwith the Program (or with a work based on the Program) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n  3. You may copy and distribute the Program (or a work based on it,\nunder Section 2) in object code or executable form under the terms of\nSections 1 and 2 above provided that you also do one of the following:\n\n    a) Accompany it with the complete corresponding machine-readable\n    source code, which must be distributed under the terms of Sections\n    1 and 2 above on a medium customarily used for software interchange; or,\n\n    b) Accompany it with a written offer, valid for at least three\n    years, to give any third party, for a charge no more than your\n    cost of physically performing source distribution, a complete\n    machine-readable copy of the corresponding source code, to be\n    distributed under the terms of Sections 1 and 2 above on a medium\n    customarily used for software interchange; or,\n\n    c) Accompany it with the information you received as to the offer\n    to distribute corresponding source code.  (This alternative is\n    allowed only for noncommercial distribution and only if you\n    received the program in object code or executable form with such\n    an offer, in accord with Subsection b above.)\n\nThe source code for a work means the preferred form of the work for\nmaking modifications to it.  For an executable work, complete source\ncode means all the source code for all modules it contains, plus any\nassociated interface definition files, plus the scripts used to\ncontrol compilation and installation of the executable.  However, as a\nspecial exception, the source code distributed need not include\nanything that is normally distributed (in either source or binary\nform) with the major components (compiler, kernel, and so on) of the\noperating system on which the executable runs, unless that component\nitself accompanies the executable.\n\nIf distribution of executable or object code is made by offering\naccess to copy from a designated place, then offering equivalent\naccess to copy the source code from the same place counts as\ndistribution of the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\n  4. You may not copy, modify, sublicense, or distribute the Program\nexcept as expressly provided under this License.  Any attempt\notherwise to copy, modify, sublicense or distribute the Program is\nvoid, and will automatically terminate your rights under this License.\nHowever, parties who have received copies, or rights, from you under\nthis License will not have their licenses terminated so long as such\nparties remain in full compliance.\n\n  5. You are not required to accept this License, since you have not\nsigned it.  However, nothing else grants you permission to modify or\ndistribute the Program or its derivative works.  These actions are\nprohibited by law if you do not accept this License.  Therefore, by\nmodifying or distributing the Program (or any work based on the\nProgram), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Program or works based on it.\n\n  6. Each time you redistribute the Program (or any work based on the\nProgram), the recipient automatically receives a license from the\noriginal licensor to copy, distribute or modify the Program subject to\nthese terms and conditions.  You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties to\nthis License.\n\n  7. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Program at all.  For example, if a patent\nlicense would not permit royalty-free redistribution of the Program by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Program.\n\nIf any portion of this section is held invalid or unenforceable under\nany particular circumstance, the balance of the section is intended to\napply and the section as a whole is intended to apply in other\ncircumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system, which is\nimplemented by public license practices.  Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\n  8. If the distribution and/or use of the Program is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Program under this License\nmay add an explicit geographical distribution limitation excluding\nthose countries, so that distribution is permitted only in or among\ncountries not thus excluded.  In such case, this License incorporates\nthe limitation as if written in the body of this License.\n\n  9. The Free Software Foundation may publish revised and/or new versions\nof the General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\nEach version is given a distinguishing version number.  If the Program\nspecifies a version number of this License which applies to it and \"any\nlater version\", you have the option of following the terms and conditions\neither of that version or of any later version published by the Free\nSoftware Foundation.  If the Program does not specify a version number of\nthis License, you may choose any version ever published by the Free Software\nFoundation.\n\n  10. If you wish to incorporate parts of the Program into other free\nprograms whose distribution conditions are different, write to the author\nto ask for permission.  For software which is copyrighted by the Free\nSoftware Foundation, write to the Free Software Foundation; we sometimes\nmake exceptions for this.  Our decision will be guided by the two goals\nof preserving the free status of all derivatives of our free software and\nof promoting the sharing and reuse of software generally.\n\n                            NO WARRANTY\n\n  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\nFOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN\nOTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\nPROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\nOR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS\nTO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE\nPROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\nREPAIR OR CORRECTION.\n\n  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\nREDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\nINCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\nOUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\nTO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\nYOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\nPROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\nPOSSIBILITY OF SUCH DAMAGES.\n\n                     END OF TERMS AND CONDITIONS\n\n            How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    {description}\n    Copyright (C) {year}  {fullname}\n\n    This program is free software; you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation; either version 2 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License along\n    with this program; if not, write to the Free Software Foundation, Inc.,\n    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n\nAlso add information on how to contact you by electronic and paper mail.\n\nIf the program is interactive, make it output a short notice like this\nwhen it starts in an interactive mode:\n\n    Gnomovision version 69, Copyright (C) year name of author\n    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, the commands you use may\nbe called something other than `show w' and `show c'; they could even be\nmouse-clicks or menu items--whatever suits your program.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the program, if\nnecessary.  Here is a sample; alter the names:\n\n  Yoyodyne, Inc., hereby disclaims all copyright interest in the program\n  `Gnomovision' (which makes passes at compilers) written by James Hacker.\n\n  {signature of Ty Coon}, 1 April 1989\n  Ty Coon, President of Vice\n\nThis General Public License does not permit incorporating your program into\nproprietary programs.  If your program is a subroutine library, you may\nconsider it more useful to permit linking proprietary applications with the\nlibrary.  If this is what you want to do, use the GNU Lesser General\nPublic License instead of this License.\n"
  },
  {
    "path": "R/RcppExports.R",
    "content": "# Generated by using Rcpp::compileAttributes() -> do not edit by hand\n# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393\n\ndecontXEM <- function(counts, counts_colsums, theta, estimate_eta, eta, phi, z, estimate_delta, delta, pseudocount) {\n    .Call('_celda_decontXEM', PACKAGE = 'celda', counts, counts_colsums, theta, estimate_eta, eta, phi, z, estimate_delta, delta, pseudocount)\n}\n\ndecontXLogLik <- function(counts, theta, eta, phi, z, pseudocount) {\n    .Call('_celda_decontXLogLik', PACKAGE = 'celda', counts, theta, eta, phi, z, pseudocount)\n}\n\ndecontXInitialize <- function(counts, theta, z, pseudocount) {\n    .Call('_celda_decontXInitialize', PACKAGE = 'celda', counts, theta, z, pseudocount)\n}\n\ncalculateNativeMatrix <- function(counts, theta, eta, phi, z, pseudocount) {\n    .Call('_celda_calculateNativeMatrix', PACKAGE = 'celda', counts, theta, eta, phi, z, pseudocount)\n}\n\ncG_calcGibbsProbY_Simple <- function(counts, nGbyTS, nTSbyC, nbyTS, nbyG, y, L, index, gamma, beta, delta) {\n    .Call('_celda_cG_calcGibbsProbY_Simple', PACKAGE = 'celda', counts, nGbyTS, nTSbyC, nbyTS, nbyG, y, L, index, gamma, beta, delta)\n}\n\ncG_CalcGibbsProbY_ori <- function(index, counts, nTSbyC, nbyTS, nGbyTS, nbyG, y, L, nG, lg_beta, lg_gamma, lg_delta, delta) {\n    .Call('_celda_cG_CalcGibbsProbY_ori', PACKAGE = 'celda', index, counts, nTSbyC, nbyTS, nGbyTS, nbyG, y, L, nG, lg_beta, lg_gamma, lg_delta, delta)\n}\n\ncG_CalcGibbsProbY_fastRow <- function(index, counts, nTSbyC, nbyTS, nGbyTS, nbyG, y, L, nG, lg_beta, lg_gamma, lg_delta, delta) {\n    .Call('_celda_cG_CalcGibbsProbY_fastRow', PACKAGE = 'celda', index, counts, nTSbyC, nbyTS, nGbyTS, nbyG, y, L, nG, lg_beta, lg_gamma, lg_delta, delta)\n}\n\ncG_CalcGibbsProbY <- function(index, counts, nTSbyC, nbyTS, nGbyTS, nbyG, y, L, nG, lg_beta, lg_gamma, lg_delta, delta) {\n    .Call('_celda_cG_CalcGibbsProbY', PACKAGE = 'celda', index, counts, nTSbyC, nbyTS, nGbyTS, nbyG, y, L, nG, lg_beta, lg_gamma, lg_delta, delta)\n}\n\n#' Fast matrix multiplication for double x int\n#' \n#' @param A a double matrix\n#' @param B an integer matrix\n#' @return An integer matrix representing the product of A and B\neigenMatMultInt <- function(A, B) {\n    .Call('_celda_eigenMatMultInt', PACKAGE = 'celda', A, B)\n}\n\n#' Fast matrix multiplication for double x double\n#' \n#' @param A a double matrix\n#' @param B an integer matrix\n#' @return An integer matrix representing the product of A and B\neigenMatMultNumeric <- function(A, B) {\n    .Call('_celda_eigenMatMultNumeric', PACKAGE = 'celda', A, B)\n}\n\n#' Fast normalization for numeric matrix\n#' \n#' @param R_counts An integer matrix\n#' @param R_alpha A double value to be added to the matrix as a pseudocount\n#' @return A numeric matrix where the columns have been normalized to proportions\nfastNormProp <- function(R_counts, R_alpha) {\n    .Call('_celda_fastNormProp', PACKAGE = 'celda', R_counts, R_alpha)\n}\n\n#' Fast normalization for numeric matrix\n#' \n#' @param R_counts An integer matrix\n#' @param R_alpha A double value to be added to the matrix as a pseudocount\n#' @return A numeric matrix where the columns have been normalized to proportions\nfastNormPropLog <- function(R_counts, R_alpha) {\n    .Call('_celda_fastNormPropLog', PACKAGE = 'celda', R_counts, R_alpha)\n}\n\n#' Fast normalization for numeric matrix\n#' \n#' @param R_counts An integer matrix\n#' @param R_alpha A double value to be added to the matrix as a pseudocount\n#' @return A numeric matrix where the columns have been normalized to proportions\nfastNormPropSqrt <- function(R_counts, R_alpha) {\n    .Call('_celda_fastNormPropSqrt', PACKAGE = 'celda', R_counts, R_alpha)\n}\n\n#' get row and column indices of none zero elements in the matrix\n#' \n#' @param R_counts A matrix\n#' @return An integer matrix where each row is a row, column indices pair \nnonzero <- function(R_counts) {\n    .Call('_celda_nonzero', PACKAGE = 'celda', R_counts)\n}\n\ncolSumByGroupSparse <- function(counts, group, K) {\n    .Call('_celda_colSumByGroupSparse', PACKAGE = 'celda', counts, group, K)\n}\n\nrowSumByGroupSparse <- function(counts, group, L) {\n    .Call('_celda_rowSumByGroupSparse', PACKAGE = 'celda', counts, group, L)\n}\n\ncolSumByGroupChangeSparse <- function(counts, px, group, pgroup, K) {\n    .Call('_celda_colSumByGroupChangeSparse', PACKAGE = 'celda', counts, px, group, pgroup, K)\n}\n\nrowSumByGroupChangeSparse <- function(counts, px, group, pgroup, L) {\n    .Call('_celda_rowSumByGroupChangeSparse', PACKAGE = 'celda', counts, px, group, pgroup, L)\n}\n\n"
  },
  {
    "path": "R/aaa.R",
    "content": "setClass(\"celdaModel\",\n    slots = c(params = \"list\",\n        # K, L, model priors, checksum\n        names = \"list\",\n        completeLogLik = \"numeric\",\n        finalLogLik = \"numeric\",\n        clusters = \"list\")\n) # z and or y\n\nsetClass(\"celda_C\",\n    representation(sampleLabel = \"factor\"),\n    contains = \"celdaModel\")\n\nsetClass(\"celda_G\", contains = \"celdaModel\")\n\nsetClass(\"celda_CG\", contains = c(\"celda_C\", \"celda_G\"))\n\nsetClass(\"celdaList\",\n    slots = c(runParams = \"data.frame\",\n        resList = \"list\",\n        countChecksum = \"character\",\n        perplexity = \"matrix\",\n        celdaGridSearchParameters = \"list\")\n)\n"
  },
  {
    "path": "R/accessors.R",
    "content": "#' @title Get or set the cell cluster labels from a celda\n#'  \\linkS4class{SingleCellExperiment} object or celda model\n#'  object.\n#' @description Return or set the cell cluster labels determined\n#'  by \\link{celda_C} or \\link{celda_CG} models.\n#' @param x Can be one of\n#'  \\itemize{\n#'  \\item A \\linkS4class{SingleCellExperiment} object returned by\n#'  \\link{celda_C}, or \\link{celda_CG}, with the matrix\n#'  located in the \\code{useAssay} assay slot. The\n#'  a \\link{altExp} slot with name \\code{altExpName} will\n#'  be used. Rows represent features and columns represent cells.\n#'  \\item Celda model object.}\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @param value Character vector of cell cluster labels for replacements. Works\n#'  only if \\code{x} is a \\linkS4class{SingleCellExperiment} object.\n#' @return One of\n#' \\itemize{\n#'  \\item Character vector if \\code{x} is a\n#'  \\linkS4class{SingleCellExperiment} object.\n#'  Contains cell cluster labels for each cell in x.\n#'  \\item List if \\code{x} is a celda model object. Contains cell cluster\n#'  labels (for celda_C and celdaCG\n#'  Models) and/or feature module labels (for celda_G and celdaCG Models).}\n#' @export\nsetGeneric(\"celdaClusters\",\n    function(x, altExpName = \"featureSubset\") {\n        standardGeneric(\"celdaClusters\")\n    })\n\n\n#' @rdname celdaClusters\n#' @examples\n#' data(sceCeldaCG)\n#' celdaClusters(sceCeldaCG)\n#' @export\nsetMethod(\"celdaClusters\",\n    signature(x = \"SingleCellExperiment\"),\n    function(x, altExpName = \"featureSubset\") {\n        altExp <- SingleCellExperiment::altExp(x, altExpName)\n        return(SummarizedExperiment::colData(altExp)$celda_cell_cluster)\n    })\n\n\n#' @examples\n#' data(celdaCGMod)\n#' celdaClusters(celdaCGMod)\n#' @rdname celdaClusters\n#' @export\nsetMethod(\"celdaClusters\",\n    signature(x = \"celdaModel\"),\n    function(x) {\n        return(x@clusters)\n    }\n)\n\n\n#' @rdname celdaClusters\n#' @export\nsetGeneric(\"celdaClusters<-\",\n    function(x, altExpName = \"featureSubset\", value) {\n        standardGeneric(\"celdaClusters<-\")\n    }\n)\n\n\n#' @rdname celdaClusters\n#' @export\nsetMethod(\"celdaClusters<-\", signature(x = \"SingleCellExperiment\"),\n    function(x, altExpName = \"featureSubset\", value) {\n        altExp <- SingleCellExperiment::altExp(x, altExpName)\n        if (!is.factor(value)) {\n            message(\"Cluster labels are converted to factors.\")\n            value <- as.factor(value)\n        }\n        SummarizedExperiment::colData(altExp)$celda_cell_cluster <- value\n        SingleCellExperiment::altExp(x, altExpName) <- altExp\n        return(x)\n    })\n\n\n#' @title Get or set the feature module labels from a celda\n#'  \\linkS4class{SingleCellExperiment} object.\n#' @description Return or set the feature module cluster labels determined\n#'  by \\link{celda_G} or \\link{celda_CG} models.\n#' @param sce A \\linkS4class{SingleCellExperiment} object returned by\n#'  \\link{celda_G}, or \\link{celda_CG}, with the matrix\n#'  located in the \\code{useAssay} assay slot.\n#'  Rows represent features and columns represent cells.\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @param value Character vector of feature module labels for replacements.\n#'  Works only if \\code{x} is a \\linkS4class{SingleCellExperiment} object.\n#' @return Character vector. Contains feature module labels for each\n#'  feature in x.\n#' @export\nsetGeneric(\"celdaModules\",\n    function(sce, altExpName = \"featureSubset\") {\n        standardGeneric(\"celdaModules\")\n    })\n\n\n#' @rdname celdaModules\n#' @examples\n#' data(sceCeldaCG)\n#' celdaModules(sceCeldaCG)\n#' @export\nsetMethod(\"celdaModules\",\n    signature(sce = \"SingleCellExperiment\"),\n    function(sce, altExpName = \"featureSubset\") {\n        altExp <- SingleCellExperiment::altExp(sce, altExpName)\n        return(SummarizedExperiment::rowData(altExp)$celda_feature_module)\n    })\n\n\n#' @rdname celdaModules\n#' @export\nsetGeneric(\"celdaModules<-\",\n    function(sce, altExpName = \"featureSubset\", value) {\n        standardGeneric(\"celdaModules<-\")\n    }\n)\n\n\n#' @rdname celdaModules\n#' @export\nsetMethod(\"celdaModules<-\", signature(sce = \"SingleCellExperiment\"),\n    function(sce, altExpName = \"featureSubset\", value) {\n        altExp <- SingleCellExperiment::altExp(sce, altExpName)\n        if (!is.factor(value)) {\n            message(\"Module labels are converted to factors.\")\n            value <- as.factor(value)\n        }\n        SummarizedExperiment::rowData(altExp)$celda_feature_module <- value\n        SingleCellExperiment::altExp(sce, altExpName) <- altExp\n        return(sce)\n    })\n\n\n#' @title Get or set sample labels from a celda\n#'  \\linkS4class{SingleCellExperiment}  object\n#' @description Return or set the sample labels for the cells in \\code{sce}.\n#' @param x Can be one of\n#'  \\itemize{\n#'  \\item A \\linkS4class{SingleCellExperiment} object returned by\n#'  \\link{celda_C}, \\link{celda_G}, or \\link{celda_CG}, with the matrix\n#'  located in the \\code{useAssay} assay slot.\n#'  Rows represent features and columns represent cells.\n#'  \\item A celda model object.}\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @param value Character vector of sample labels for replacements. Works\n#'  only is \\code{x} is a \\linkS4class{SingleCellExperiment} object.\n#' @return Character vector. Contains the sample labels provided at model\n#'  creation, or those automatically generated by celda.\n#' @export\nsetGeneric(\"sampleLabel\",\n    function(x, altExpName = \"featureSubset\") {\n        standardGeneric(\"sampleLabel\")\n    })\n\n\n#' @rdname sampleLabel\n#' @examples\n#' data(sceCeldaCG)\n#' sampleLabel(sceCeldaCG)\n#' @export\nsetMethod(\"sampleLabel\",\n    signature(x = \"SingleCellExperiment\"),\n    function(x, altExpName = \"featureSubset\") {\n        altExp <- SingleCellExperiment::altExp(x, altExpName)\n        return(SummarizedExperiment::colData(altExp)$celda_sample_label)\n    })\n\n\n#' @rdname sampleLabel\n#' @export\nsetGeneric(\"sampleLabel<-\",\n    function(x, altExpName = \"featureSubset\", value) {\n        standardGeneric(\"sampleLabel<-\")\n    }\n)\n#' @rdname sampleLabel\n#' @export\nsetMethod(\"sampleLabel<-\", signature(x = \"SingleCellExperiment\"),\n    function(x, altExpName = \"featureSubset\", value) {\n        altExp <- SingleCellExperiment::altExp(x, altExpName)\n        if (!is.factor(value)) {\n            message(\"Sample labels are converted to factors.\")\n            value <- as.factor(value)\n        }\n        SummarizedExperiment::colData(altExp)$celda_sample_label <- value\n        SingleCellExperiment::altExp(x, altExpName) <- altExp\n        return(x)\n    })\n\n\n#' @examples\n#' data(celdaCGMod)\n#' sampleLabel(celdaCGMod)\n#' @rdname sampleLabel\n#' @export\nsetMethod(\"sampleLabel\",\n    signature(x = \"celdaModel\"),\n    function(x) {\n        x@sampleLabel\n    }\n)\n\n\n#' @title Get parameter values provided for celdaModel creation\n#' @description Retrieves the K/L, model priors (e.g. alpha, beta),\n#'  and count matrix checksum parameters provided during the creation of the\n#'  provided celdaModel.\n#' @param celdaMod celdaModel. Options available in\n#'  \\code{celda::availableModels}.\n#' @return List. Contains the model-specific parameters for the provided celda\n#'  model object depending on its class.\n#' @export\nsetGeneric(\n    \"params\",\n    function(celdaMod) {\n        standardGeneric(\"params\")\n    }\n)\n\n\n#' @rdname params\n#' @examples\n#' data(celdaCGMod)\n#' params(celdaCGMod)\n#' @export\nsetMethod(\"params\",\n    signature = c(celdaMod = \"celdaModel\"),\n    function(celdaMod) {\n        celdaMod@params\n    }\n)\n\n\n#' @title Get feature, cell and sample names from a celdaModel\n#' @description Retrieves the row, column, and sample names used to generate\n#'  a celdaModel.\n#' @param celdaMod celdaModel. Options available in `celda::availableModels`.\n#' @return List. Contains row, column, and sample character vectors\n#'  corresponding to the values provided when the celdaModel was generated.\n#' @export\nsetGeneric(\n    \"matrixNames\",\n    function(celdaMod) {\n        standardGeneric(\"matrixNames\")\n    }\n)\n\n\n#' @rdname matrixNames\n#' @examples\n#' data(celdaCGMod)\n#' matrixNames(celdaCGMod)\n#' @export\nsetMethod(\"matrixNames\",\n    signature = c(celdaMod = \"celdaModel\"),\n    function(celdaMod) {\n        celdaMod@names\n    }\n)\n\n\n#' @title Get run parameters from a celda model\n#'  \\code{SingleCellExperiment} or \\code{celdaList} object\n#' @description Returns details on the clustering parameters and model\n#'  priors from the celdaList object when it was created.\n#' @param x An object of class \\linkS4class{SingleCellExperiment} or class\n#'  \\code{celdaList}.\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @return Data Frame. Contains details on the various K/L parameters, chain\n#'  parameters, seed, and final log-likelihoods derived for each model in the\n#'  provided celdaList.\n#' @export\nsetGeneric(\"runParams\",\n    function(x, altExpName = \"featureSubset\") {\n        standardGeneric(\"runParams\")\n    }\n)\n\n\n#' @examples\n#' data(sceCeldaCGGridSearch)\n#' runParams(sceCeldaCGGridSearch)\n#' @rdname runParams\n#' @export\nsetMethod(\"runParams\",\n    signature(x = \"SingleCellExperiment\"),\n    function(x, altExpName = \"featureSubset\") {\n        altExp <- SingleCellExperiment::altExp(x, altExpName)\n        return(altExp@metadata$celda_grid_search@runParams)\n    }\n)\n\n\n#' @examples\n#' data(celdaCGGridSearchRes)\n#' runParams(celdaCGGridSearchRes)\n#' @rdname runParams\n#' @export\nsetMethod(\"runParams\",\n    signature(x = \"celdaList\"),\n    function(x) {\n        return(x@runParams)\n    }\n)\n\n\n#' @title Get final celdaModels from a celda model \\code{SCE} or celdaList\n#'  object\n#' @description Returns all celda models generated during a\n#'  \\link{celdaGridSearch} run.\n#' @param x An object of class \\linkS4class{SingleCellExperiment} or\n#'  \\code{celdaList}.\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @return List. Contains one celdaModel object for each of the parameters\n#'  specified in \\code{runParams(x)}.\n#' @export\nsetGeneric(\n    \"resList\",\n    function(x, altExpName = \"featureSubset\") {\n        standardGeneric(\"resList\")\n    }\n)\n\n\n#' @examples\n#' data(sceCeldaCGGridSearch)\n#' celdaCGGridModels <- resList(sceCeldaCGGridSearch)\n#' @rdname resList\n#' @export\nsetMethod(\"resList\",\n    signature(x = \"SingleCellExperiment\"),\n    function(x, altExpName = \"featureSubset\") {\n        altExp <- SingleCellExperiment::altExp(x, altExpName)\n        return(altExp@metadata$celda_grid_search@resList)\n    }\n)\n\n\n#' @examples\n#' data(celdaCGGridSearchRes)\n#' celdaCGGridModels <- resList(celdaCGGridSearchRes)\n#' @rdname resList\n#' @export\nsetMethod(\"resList\",\n    signature(x = \"celdaList\"),\n    function(x) {\n        return(x@resList)\n    }\n)\n\n\n#' @title Get celda model from a celda\n#'  \\link[SingleCellExperiment]{SingleCellExperiment} object\n#' @description Return the celda model for \\code{sce} returned by\n#'  \\link{celda_C}, \\link{celda_G} or \\link{celda_CG}.\n#' @param sce A \\link[SingleCellExperiment]{SingleCellExperiment} object\n#'  returned by \\link{celda_C}, \\link{celda_G}, or \\link{celda_CG}.\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @return Character. The celda model. Can be one of \"celda_C\", \"celda_G\", or\n#'  \"celda_CG\".\n#' @examples\n#' data(sceCeldaCG)\n#' celdaModel(sceCeldaCG)\n#' @export\nsetGeneric(\"celdaModel\",\n    function(sce, altExpName = \"featureSubset\") {\n        standardGeneric(\"celdaModel\")\n    })\n\n\n#' @rdname celdaModel\n#' @export\nsetMethod(\"celdaModel\",\n    signature(sce = \"SingleCellExperiment\"),\n    function(sce, altExpName = \"featureSubset\") {\n\n        if (!altExpName %in% SingleCellExperiment::altExpNames(sce)) {\n            stop(altExpName, \" not in 'altExpNames(sce)'. Run \",\n                \"selectFeatures(sce) first!\")\n        }\n\n        altExp <- SingleCellExperiment::altExp(sce, altExpName)\n\n        tryCatch(\n            if (S4Vectors::metadata(altExp)$celda_parameters$model %in%\n                    c(\"celda_C\", \"celda_G\", \"celda_CG\")) {\n                return(S4Vectors::metadata(altExp)$celda_parameters$model)\n            } else {\n                stop(\"S4Vectors::metadata(altExp(sce,\",\n                    \" altExpName))$celda_parameters$model must be\",\n                    \" one of 'celda_C', 'celda_G', or 'celda_CG'\")\n            },\n            error = function(e) {\n                message(\"S4Vectors::metadata(altExp(sce,\",\n                    \" altExpName))$celda_parameters$model must\",\n                    \" exist! Try running celda model (celda_C, celda_CG, or\",\n                    \" celda_G) first.\")\n                stop(e)\n            })\n    })\n\n\n#' @title Get perplexity for every model in a celdaList\n#' @description Returns perplexity for each model in a celdaList as calculated\n#'  by `perplexity().`\n#' @param celdaList An object of class celdaList.\n#' @return List. Contains one celdaModel object for each of the parameters\n#'  specified in the `runParams()` of the provided celda list.\n#' @examples\n#' data(celdaCGGridSearchRes)\n#' celdaCGGridModelPerplexities <- celdaPerplexity(celdaCGGridSearchRes)\n#' @export\nsetGeneric(\n    \"celdaPerplexity\",\n    function(celdaList) {\n        standardGeneric(\"celdaPerplexity\")\n    }\n)\n\n\n#' @title Get perplexity for every model in a celdaList\n#' @description Returns perplexity for each model in a celdaList as calculated\n#'  by `perplexity().`\n#' @param celdaList An object of class celdaList.\n#' @return List. Contains one celdaModel object for each of the parameters\n#'  specified in the `runParams()` of the provided celda list.\n#' @examples\n#' data(celdaCGGridSearchRes)\n#' celdaCGGridModelPerplexities <- celdaPerplexity(celdaCGGridSearchRes)\n#' @export\nsetMethod(\"celdaPerplexity\",\n    signature = c(celdaList = \"celdaList\"),\n    function(celdaList) {\n        celdaList@perplexity\n    }\n)\n\n\n#' @title Get the MD5 hash of the count matrix from the celdaList\n#' @description Returns the MD5 hash of the count matrix used to generate the\n#'  celdaList.\n#' @param celdaList An object of class celdaList.\n#' @return A character string of length 32 containing the MD5 digest of\n#'  the count matrix.\n#' @examples\n#' data(celdaCGGridSearchRes)\n#' countChecksum <- countChecksum(celdaCGGridSearchRes)\n#' @export\nsetGeneric(\n    \"countChecksum\",\n    function(celdaList) {\n        standardGeneric(\"countChecksum\")\n    }\n)\n\n\n#' @title Get the MD5 hash of the count matrix from the celdaList\n#' @description Returns the MD5 hash of the count matrix used to generate the\n#'  celdaList.\n#' @param celdaList An object of class celdaList.\n#' @return A character string of length 32 containing the MD5 digest of\n#'  the count matrix.\n#' @examples\n#' data(celdaCGGridSearchRes)\n#' countChecksum <- countChecksum(celdaCGGridSearchRes)\n#' @export\nsetMethod(\"countChecksum\",\n    signature = c(celdaList = \"celdaList\"),\n    function(celdaList) {\n        celdaList@countChecksum\n    }\n)\n"
  },
  {
    "path": "R/celdaGridSearch.R",
    "content": "#' @title Run Celda in parallel with multiple parameters\n#' @description Run Celda with different combinations of parameters and\n#'  multiple chains in parallel. The variable \\link{availableModels} contains\n#'  the potential models that can be utilized. Different parameters to be tested\n#'  should be stored in a list and passed to the argument \\code{paramsTest}.\n#'  Fixed parameters to be used in all models, such as \\code{sampleLabel}, can\n#'  be passed as a list to the argument \\code{paramsFixed}. When\n#'  \\code{verbose = TRUE}, output from each chain will be sent to a log file\n#'  but not be displayed in \\code{stdout}.\n#' @param x A numeric \\link{matrix} of counts or a\n#'  \\linkS4class{SingleCellExperiment}\n#'  with the matrix located in the assay slot under \\code{useAssay}.\n#'  Rows represent features and columns represent cells.\n#' @param useAssay A string specifying the name of the\n#'  \\link{assay} slot to use. Default \"counts\".\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @param model Celda model. Options available in \\link{availableModels}.\n#' @param paramsTest List. A list denoting the combinations of parameters to\n#'  run in a celda model. For example,\n#'  \\code{list(K = seq(5, 10), L = seq(15, 20))}\n#'  will run all combinations of K from 5 to 10 and L from 15 to 20 in model\n#'  \\link{celda_CG}.\n#' @param paramsFixed List. A list denoting additional parameters to use in\n#'  each celda model. Default NULL.\n#' @param maxIter Integer. Maximum number of iterations of sampling to\n#'  perform. Default 200.\n#' @param nchains Integer. Number of random cluster initializations. Default 3.\n#' @param cores Integer. The number of cores to use for parallel estimation of\n#'  chains. Default 1.\n#' @param bestOnly Logical. Whether to return only the chain with the highest\n#'  log likelihood per combination of parameters or return all chains. Default\n#'  TRUE.\n#' @param seed Integer. Passed to \\link[withr]{with_seed}. For reproducibility,\n#'  a default value of 12345 is used. Seed values\n#'  \\code{seq(seed, (seed + nchains - 1))} will be supplied to each chain in\n#'  \\code{nchains}. If NULL, no calls to\n#'  \\link[withr]{with_seed} are made.\n#' @param perplexity Logical. Whether to calculate perplexity for each model.\n#'  If FALSE, then perplexity can be calculated later with\n#'  \\link{resamplePerplexity}. Default TRUE.\n#' @param verbose Logical. Whether to print log messages during celda chain\n#'  execution. Default TRUE.\n#' @param logfilePrefix Character. Prefix for log files from worker threads\n#'  and main process. Default \"Celda\".\n#' @return A \\linkS4class{SingleCellExperiment} object. Function\n#'  parameter settings and celda model results are stored in the\n#'  \\link{metadata} \\code{\"celda_grid_search\"} slot.\n#' @seealso \\link{celda_G} for feature clustering, \\link{celda_C} for\n#'  clustering of cells, and \\link{celda_CG} for simultaneous clustering of\n#'  features and cells. \\link{subsetCeldaList} can subset the \\code{celdaList}\n#'  object. \\link{selectBestModel} can get the best model for each combination\n#'  of parameters.\n#' @import foreach\n#' @importFrom doParallel registerDoParallel\n#' @importFrom methods is\n#' @examples\n#' \\dontrun{\n#' data(celdaCGSim)\n#' ## Run various combinations of parameters with 'celdaGridSearch'\n#' celdaCGGridSearchRes <- celdaGridSearch(celdaCGSim$counts,\n#'   model = \"celda_CG\",\n#'   paramsTest = list(K = seq(4, 6), L = seq(9, 11)),\n#'   paramsFixed = list(sampleLabel = celdaCGSim$sampleLabel),\n#'   bestOnly = TRUE,\n#'   nchains = 1,\n#'   cores = 1)\n#' }\n#' @export\nsetGeneric(\"celdaGridSearch\",\n    function(\n        x,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        model,\n        paramsTest,\n        paramsFixed = NULL,\n        maxIter = 200,\n        nchains = 3,\n        cores = 1,\n        bestOnly = TRUE,\n        seed = 12345,\n        perplexity = TRUE,\n        verbose = TRUE,\n        logfilePrefix = \"Celda\") {\n    standardGeneric(\"celdaGridSearch\")})\n\n\n#' @rdname celdaGridSearch\n#' @export\nsetMethod(\"celdaGridSearch\",\n    signature(x = \"SingleCellExperiment\"),\n    function(x,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        model,\n        paramsTest,\n        paramsFixed = NULL,\n        maxIter = 200,\n        nchains = 3,\n        cores = 1,\n        bestOnly = TRUE,\n        seed = 12345,\n        perplexity = TRUE,\n        verbose = TRUE,\n        logfilePrefix = \"Celda\") {\n\n        xClass <- \"SingleCellExperiment\"\n\n        if (!altExpName %in% SingleCellExperiment::altExpNames(x)) {\n            stop(altExpName, \" not in 'altExpNames(x)'. Run \",\n                \"selectFeatures(x) first!\")\n        }\n\n        altExp <- SingleCellExperiment::altExp(x, altExpName)\n\n        if (!useAssay %in% SummarizedExperiment::assayNames(altExp)) {\n            stop(useAssay, \" not in assayNames(altExp(x, altExpName))\")\n        }\n\n        counts <- SummarizedExperiment::assay(altExp, i = useAssay)\n\n        celdaList <- .celdaGridSearch(counts = counts,\n            model = paste0(\".\", model),\n            paramsTest = paramsTest,\n            paramsFixed = paramsFixed,\n            maxIter = maxIter,\n            nchains = nchains,\n            cores = cores,\n            bestOnly = bestOnly,\n            seed = seed,\n            perplexity = perplexity,\n            verbose = verbose,\n            logfilePrefix = logfilePrefix)\n\n        altExp <- .createSCEceldaGridSearch(celdaList = celdaList,\n            sce = altExp,\n            xClass = xClass,\n            useAssay = useAssay,\n            model = model,\n            paramsTest = paramsTest,\n            paramsFixed = paramsFixed,\n            maxIter = maxIter,\n            seed = seed,\n            nchains = nchains,\n            cores = cores,\n            bestOnly = bestOnly,\n            perplexity = perplexity,\n            verbose = verbose,\n            logfilePrefix = logfilePrefix)\n        SingleCellExperiment::altExp(x, altExpName) <- altExp\n        return(x)\n    })\n\n\n#' @rdname celdaGridSearch\n#' @export\nsetMethod(\"celdaGridSearch\",\n    signature(x = \"matrix\"),\n    function(x,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        model,\n        paramsTest,\n        paramsFixed = NULL,\n        maxIter = 200,\n        nchains = 3,\n        cores = 1,\n        bestOnly = TRUE,\n        seed = 12345,\n        perplexity = TRUE,\n        verbose = TRUE,\n        logfilePrefix = \"Celda\") {\n\n        ls <- list()\n        ls[[useAssay]] <- x\n        sce <- SingleCellExperiment::SingleCellExperiment(assays = ls)\n        SingleCellExperiment::altExp(sce, altExpName) <- sce\n        xClass <- \"matrix\"\n\n        celdaList <- .celdaGridSearch(counts = x,\n            model = paste0(\".\", model),\n            paramsTest = paramsTest,\n            paramsFixed = paramsFixed,\n            maxIter = maxIter,\n            nchains = nchains,\n            cores = cores,\n            bestOnly = bestOnly,\n            seed = seed,\n            perplexity = perplexity,\n            verbose = verbose,\n            logfilePrefix = logfilePrefix)\n\n        altExp <- .createSCEceldaGridSearch(celdaList = celdaList,\n            sce = SingleCellExperiment::altExp(sce, altExpName),\n            xClass = xClass,\n            useAssay = useAssay,\n            model = model,\n            paramsTest = paramsTest,\n            paramsFixed = paramsFixed,\n            maxIter = maxIter,\n            seed = seed,\n            nchains = nchains,\n            cores = cores,\n            bestOnly = bestOnly,\n            perplexity = perplexity,\n            verbose = verbose,\n            logfilePrefix = logfilePrefix)\n        SingleCellExperiment::altExp(sce, altExpName) <- altExp\n        return(sce)\n    })\n\n\n.celdaGridSearch <- function(counts,\n                            model,\n                            paramsTest,\n                            paramsFixed,\n                            maxIter,\n                            nchains,\n                            cores,\n                            bestOnly,\n                            seed,\n                            perplexity,\n                            verbose,\n                            logfilePrefix) {\n\n  ## Check parameters\n  .validateCounts(counts)\n\n  modelParams <- as.list(formals(model))\n  if (!all(names(paramsTest) %in% names(modelParams))) {\n    badParams <- setdiff(names(paramsTest), names(modelParams))\n    stop(\n      \"The following elements in 'paramsTest' are not arguments of '\",\n      substring(model, 2),\n      \"': \",\n      paste(badParams, collapse = \",\")\n    )\n  }\n\n  if (!is.null(paramsFixed) &&\n    !all(names(paramsFixed) %in% names(modelParams))) {\n    badParams <- setdiff(names(paramsFixed), names(modelParams))\n    stop(\n      \"The following elements in 'paramsFixed' are not arguments\",\n      \" of '\",\n      substring(model, 2),\n      \"': \",\n      paste(badParams, collapse = \",\")\n    )\n  }\n\n  modelParamsRequired <- setdiff(\n    names(modelParams[modelParams == \"\"]),\n    \"counts\"\n  )\n\n  if (!all(modelParamsRequired %in% c(\n    names(paramsTest),\n    names(paramsFixed)\n  ))) {\n    missing.params <- setdiff(\n      modelParamsRequired,\n      c(names(paramsTest), names(paramsFixed))\n    )\n    stop(\n      \"The following arguments are not in 'paramsTest' or 'paramsFixed'\",\n      \" but are required for '\",\n      substring(model, 2),\n      \"': \",\n      paste(missing.params, collapse = \",\")\n    )\n  }\n\n  if (any(c(\"z.init\", \"y.init\", \"sampleLabel\") %in% names(paramsTest))) {\n    stop(\n      \"Setting parameters such as 'z.init', 'y.init', and 'sampleLabel'\",\n      \" in 'paramsTest' is not currently supported.\"\n    )\n  }\n\n  if (any(c(\"nchains\") %in% names(paramsTest))) {\n    warning(\n      \"Parameter 'nchains' should not be used within the paramsTest\",\n      \" list\"\n    )\n    paramsTest[[\"nchains\"]] <- NULL\n  }\n\n  # Pre-generate a set of random seeds to be used for each chain\n  if (is.null(seed)) {\n    allSeeds <- NULL\n  } else {\n    allSeeds <- seq(seed, (seed + nchains - 1))\n  }\n\n  # Set up parameter combinations for each individual chain\n  runParams <- base::expand.grid(c(\n    chain = list(seq_len(nchains)),\n    paramsTest\n  ))\n  runParams <- cbind(index = seq_len(nrow(runParams)), runParams)\n\n  if (is.null(allSeeds)) {\n    runParams <- cbind(runParams,\n      seed = rep(\"NULL\", nrow(runParams)))\n  } else {\n    runParams <- cbind(runParams,\n      seed = rep(allSeeds, nrow(runParams) / nchains))\n  }\n\n  .logMessages(paste(rep(\"-\", 50), collapse = \"\"),\n    logfile = NULL,\n    append = FALSE,\n    verbose = verbose\n  )\n\n  .logMessages(\"Starting celdaGridSearch with\",\n    substring(model, 2),\n    logfile = NULL,\n    append = TRUE,\n    verbose = verbose\n  )\n\n  .logMessages(\"Number of cores:\",\n    cores,\n    logfile = NULL,\n    append = TRUE,\n    verbose = verbose\n  )\n\n  .logMessages(paste(rep(\"-\", 50), collapse = \"\"),\n    logfile = NULL,\n    append = TRUE,\n    verbose = verbose\n  )\n\n  startTime <- Sys.time()\n\n  # An MD5 checksum of the count matrix. Passed to models so\n  # later on, we can check on celda_* model objects which\n  # count matrix was used.\n  counts <- .processCounts(counts)\n  countChecksum <- .createCountChecksum(counts)\n\n  ## Use DoParallel to loop through each combination of parameters\n  cl <- parallel::makeCluster(cores)\n  doParallel::registerDoParallel(cl)\n  i <- NULL # Setting visible binding for R CMD CHECK\n  resList <- foreach(\n    i = seq_len(nrow(runParams)),\n    .export = model,\n    .combine = c,\n    .multicombine = TRUE\n  ) %dopar% {\n\n    ## Set up chain parameter list\n    current.run <- c(runParams[i, ])\n    chainParams <- list()\n    for (j in names(paramsTest)) {\n      chainParams[[j]] <- current.run[[j]]\n    }\n    chainParams$counts <- counts\n    chainParams$maxIter <- maxIter\n    chainParams$nchain <- 1\n    chainParams$countChecksum <- countChecksum\n    chainParams$verbose <- verbose\n    chainParams$logfile <- paste0(\n      logfilePrefix,\n      \"_\",\n      paste(paste(\n        colnames(runParams), runParams[i, ],\n        sep = \"-\"\n      ), collapse = \"_\"),\n      \"_Seed-\",\n      ifelse(is.null(chainParams$seed), \"NULL\", chainParams$seed),\n      \"_log.txt\"\n    )\n\n    ## Run model\n    if (is.null(seed)) {\n      res <- do.call(model, c(chainParams, paramsFixed))\n    } else {\n      chainSeed <- allSeeds[ifelse(i %% nchains == 0,\n          nchains, i %% nchains)]\n      res <- with_seed(chainSeed,\n          do.call(model, c(chainParams, paramsFixed)))\n    }\n    return(list(res))\n  }\n  parallel::stopCluster(cl)\n\n  logliks <- vapply(resList, function(mod) {\n    bestLogLikelihood(mod)\n  }, double(1))\n  runParams <- cbind(runParams, logLikelihood = logliks)\n\n  celdaRes <- methods::new(\n    \"celdaList\",\n    runParams = runParams,\n    resList = resList,\n    countChecksum = countChecksum\n  )\n\n  if (isTRUE(bestOnly)) {\n    celdaRes <- selectBestModel(celdaRes, asList = TRUE)\n  }\n\n  if (isTRUE(perplexity)) {\n    .logMessages(\n      date(),\n      \".. Calculating perplexity\",\n      append = TRUE,\n      verbose = verbose,\n      logfile = NULL\n    )\n    celdaRes <- resamplePerplexity(counts, celdaRes, seed = seed)\n  }\n\n  endTime <- Sys.time()\n  .logMessages(paste(rep(\"-\", 50), collapse = \"\"),\n    logfile = NULL,\n    append = TRUE,\n    verbose = verbose\n  )\n  .logMessages(\"Completed celdaGridSearch. Total time:\",\n    format(difftime(endTime, startTime)),\n    logfile = NULL,\n    append = TRUE,\n    verbose = verbose\n  )\n  .logMessages(paste(rep(\"-\", 50), collapse = \"\"),\n    logfile = NULL,\n    append = TRUE,\n    verbose = verbose\n  )\n\n  return(celdaRes)\n}\n\n\n#' @title Subset celda model from SCE object returned from\n#'  \\code{celdaGridSearch}\n#' @description Select a subset of models from a\n#'  \\linkS4class{SingleCellExperiment} object generated by\n#'  \\link{celdaGridSearch} that match the criteria in the argument\n#'  \\code{params}.\n#' @param x Can be one of\n#' \\itemize{\n#'  \\item A \\linkS4class{SingleCellExperiment} object returned from\n#'  \\code{celdaGridSearch}, \\code{recursiveSplitModule},\n#'  or \\code{recursiveSplitCell}. Must contain a list named\n#'  \\code{\"celda_grid_search\"} in \\code{metadata(x)}.\n#'  \\item celdaList object.}\n#' @param params List. List of parameters used to subset the matching celda\n#'  models in list \\code{\"celda_grid_search\"} in \\code{metadata(x)}.\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @return One of\n#' \\itemize{\n#'  \\item A new \\linkS4class{SingleCellExperiment} object containing\n#'  all models matching the\n#'  provided criteria in \\code{params}. If only one celda model result in the\n#'  \\code{\"celda_grid_search\"} slot in \\code{metadata(x)} matches\n#'  the given criteria, a new \\linkS4class{SingleCellExperiment} object\n#'  with the matching model stored in the\n#'  \\link{metadata}\n#'  \\code{\"celda_parameters\"} slot will be returned. Otherwise, a new\n#'  \\linkS4class{SingleCellExperiment} object with the subset models stored\n#'  in the \\link{metadata}\n#'  \\code{\"celda_grid_search\"} slot will be returned.\n#'  \\item A new \\code{celdaList} object containing all models matching the\n#'  provided criteria in \\code{params}. If only one item in the\n#'  \\code{celdaList} matches the given criteria, the matching model will be\n#'  returned directly instead of a \\code{celdaList} object.}\n#' @seealso \\link{celdaGridSearch} can run Celda with multiple parameters and\n#'  chains in parallel. \\link{selectBestModel} can get the best model for each\n#'  combination of parameters.\n#' @export\nsetGeneric(\"subsetCeldaList\",\n    function(x, params, altExpName = \"featureSubset\") {\n\n    standardGeneric(\"subsetCeldaList\")})\n\n\n#' @rdname subsetCeldaList\n#' @examples\n#' data(sceCeldaCGGridSearch)\n#' sceK5L10 <- subsetCeldaList(sceCeldaCGGridSearch,\n#'     params = list(K = 5, L = 10))\n#' @export\nsetMethod(\"subsetCeldaList\",\n    signature(x = \"SingleCellExperiment\"),\n    function(x, params, altExpName = \"featureSubset\") {\n\n        ## Check for bad parameter names\n        if (!all(names(params) %in% colnames(runParams(x,\n            altExpName = altExpName)))) {\n            badParams <- setdiff(names(params),\n                colnames(runParams(x, altExpName = altExpName)))\n            stop(\"The following elements in 'params' are not columns in\",\n                \" runParams(x, altExpName = altExpName) \",\n                paste(badParams, collapse = \",\")\n            )\n        }\n\n        ## Subset 'runParams' based on items in 'params'\n        newRunParams <- runParams(x, altExpName = altExpName)\n        for (i in names(params)) {\n            newRunParams <-\n                subset(newRunParams, newRunParams[, i] %in% params[[i]])\n\n            if (nrow(newRunParams) == 0) {\n                stop(\"No runs matched the criteria given in 'params'. Check\",\n                    \" 'runParams(x, altExpName = altExpName)' for complete\",\n                    \" list of parameters used\",\n                    \" to generate 'x'.\")\n            }\n        }\n\n        ## Get index of selected models, subset celdaList, and return\n        ix <- match(newRunParams$index, runParams(x,\n            altExpName = altExpName)$index)\n        altExp <- SingleCellExperiment::altExp(x, altExpName)\n\n        if (length(ix) == 1) {\n            altExp <- .subsetCeldaListSCE(altExp, ix)\n        } else {\n            altExp@metadata$celda_grid_search@runParams <-\n                as.data.frame(newRunParams)\n            altExp@metadata$celda_grid_search@resList <-\n                altExp@metadata$celda_grid_search@resList[ix]\n        }\n        SingleCellExperiment::altExp(x, altExpName) <- altExp\n        return(x)\n    }\n)\n\n\n#' @rdname subsetCeldaList\n#' @examples\n#' data(celdaCGGridSearchRes)\n#' resK5L10 <- subsetCeldaList(celdaCGGridSearchRes,\n#'     params = list(K = 5, L = 10))\n#' @export\nsetMethod(\"subsetCeldaList\",\n    signature(x = \"celdaList\"),\n    function(x, params) {\n        ## Check for bad parameter names\n        if (!all(names(params) %in% colnames(runParams(x)))) {\n            badParams <- setdiff(names(params), colnames(runParams(x)))\n            stop(\"The following elements in 'params' are not columns in\",\n                \" runParams (x) \",\n                paste(badParams, collapse = \",\")\n            )\n        }\n\n        ## Subset 'runParams' based on items in 'params'\n        newRunParams <- runParams(x)\n        for (i in names(params)) {\n            newRunParams <-\n                subset(newRunParams, newRunParams[, i] %in% params[[i]])\n\n            if (nrow(newRunParams) == 0) {\n                stop(\"No runs matched the criteria given in 'params'. Check\",\n                    \" 'runParams(x)' for complete list of parameters used\",\n                    \" to generate 'x'.\")\n            }\n        }\n\n        ## Get index of selected models, subset celdaList, and return\n        ix <- match(newRunParams$index, runParams(x)$index)\n        if (length(ix) == 1) {\n            return(resList(x)[[ix]])\n        } else {\n            x@runParams <- as.data.frame(newRunParams)\n            x@resList <- resList(x)[ix]\n            return(x)\n        }\n    }\n)\n\n\n#' @title Select best chain within each combination of parameters\n#' @description Select the chain with the best log likelihood for each\n#'  combination of tested parameters from a \\code{SCE} object gererated by\n#'  \\link{celdaGridSearch} or from a \\code{celdaList} object.\n#' @param x Can be one of\n#' \\itemize{\n#'  \\item A \\linkS4class{SingleCellExperiment} object returned from\n#'  \\code{celdaGridSearch}, \\code{recursiveSplitModule},\n#'  or \\code{recursiveSplitCell}. Must contain a list named\n#'  \\code{\"celda_grid_search\"} in \\code{metadata(x)}.\n#'  \\item celdaList object.}\n#' @param asList \\code{TRUE} or \\code{FALSE}. Whether to return the\n#'  best model as a\n#'  \\code{celdaList} object or not. If \\code{FALSE}, return the best model as a\n#'  corresponding celda model object.\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @return One of\n#' \\itemize{\n#'  \\item A new \\linkS4class{SingleCellExperiment} object containing\n#'  one model with the best log-likelihood for each set of parameters in\n#'  \\code{metadata(x)}. If there is only one set of parameters,\n#'  a new \\linkS4class{SingleCellExperiment} object\n#'  with the matching model stored in the\n#'  \\link{metadata}\n#'  \\code{\"celda_parameters\"} slot will be returned. Otherwise, a new\n#'  \\linkS4class{SingleCellExperiment} object with the subset models stored\n#'  in the \\link{metadata}\n#'  \\code{\"celda_grid_search\"} slot will be returned.\n#'  \\item A new \\code{celdaList} object containing one model with the best\n#'  log-likelihood for each set of parameters. If only one set of parameters\n#'  is in the \\code{celdaList}, the best model will be returned directly\n#'  instead of a \\code{celdaList} object.}\n#' @seealso \\link{celdaGridSearch} \\link{subsetCeldaList}\n#' @export\nsetGeneric(\"selectBestModel\",\n    function(x, asList = FALSE, altExpName = \"featureSubset\") {\n\n    standardGeneric(\"selectBestModel\")})\n\n\n#' @rdname selectBestModel\n#' @examples\n#' data(sceCeldaCGGridSearch)\n#' ## Returns same result as running celdaGridSearch with \"bestOnly = TRUE\"\n#' sce <- selectBestModel(sceCeldaCGGridSearch)\n#' @importFrom data.table as.data.table\n#' @export\nsetMethod(\"selectBestModel\", signature(x = \"SingleCellExperiment\"),\n    function(x, asList = FALSE, altExpName = \"featureSubset\") {\n\n        altExp <- SingleCellExperiment::altExp(x, altExpName)\n        logLikelihood <- NULL\n        group <- setdiff(colnames(runParams(x, altExpName = altExpName)),\n            c(\"index\", \"chain\", \"logLikelihood\", \"mean_perplexity\", \"seed\"))\n        runParams <- S4Vectors::metadata(altExp)$celda_grid_search@runParams\n        dt <- data.table::as.data.table(runParams)\n        .SD <- NULL # fix check note\n        newRunParams <- as.data.frame(dt[, .SD[which.max(logLikelihood)],\n            by = group])\n        newRunParams <- newRunParams[, colnames(runParams)]\n\n        ix <- match(newRunParams$index, runParams$index)\n        if (nrow(newRunParams) == 1 & !asList) {\n            altExp <- .subsetCeldaListSCE(altExp, ix)\n        } else {\n            altExp@metadata$celda_grid_search@runParams <-\n                as.data.frame(newRunParams)\n            altExp@metadata$celda_grid_search@resList <-\n                altExp@metadata$celda_grid_search@resList[ix]\n        }\n        SingleCellExperiment::altExp(x, altExpName) <- altExp\n        return(x)\n    }\n)\n\n\n#' @rdname selectBestModel\n#' @examples\n#' data(celdaCGGridSearchRes)\n#' ## Returns same result as running celdaGridSearch with \"bestOnly = TRUE\"\n#' cgsBest <- selectBestModel(celdaCGGridSearchRes)\n#' @importFrom data.table as.data.table\n#' @export\nsetMethod(\"selectBestModel\", signature(x = \"celdaList\"),\n    function(x, asList = FALSE) {\n        logLikelihood <- NULL\n        group <- setdiff(colnames(runParams(x)),\n            c(\"index\", \"chain\", \"logLikelihood\", \"mean_perplexity\", \"seed\"))\n        dt <- data.table::as.data.table(runParams(x))\n        .SD <- NULL # fix check note\n        newRunParams <- as.data.frame(dt[, .SD[which.max(logLikelihood)],\n            by = group])\n        newRunParams <- newRunParams[, colnames(runParams(x))]\n\n        ix <- match(newRunParams$index, runParams(x)$index)\n        if (nrow(newRunParams) == 1 & !asList) {\n            return(resList(x)[[ix]])\n        } else {\n            x@runParams <- as.data.frame(newRunParams)\n            x@resList <- resList(x)[ix]\n            return(x)\n        }\n    }\n)\n\n\n.createSCEceldaGridSearch <- function(celdaList,\n    sce,\n    xClass,\n    useAssay,\n    model,\n    paramsTest,\n    paramsFixed,\n    maxIter,\n    seed,\n    nchains,\n    cores,\n    bestOnly,\n    perplexity,\n    verbose,\n    logfilePrefix) {\n\n    S4Vectors::metadata(sce)[[\"celda_grid_search\"]] <- celdaList\n\n    S4Vectors::metadata(sce)$celda_grid_search@celdaGridSearchParameters <-\n        list(xClass = xClass,\n            useAssay = useAssay,\n            model = model,\n            paramsTest = paramsTest,\n            paramsFixed = paramsFixed,\n            maxIter = maxIter,\n            seed = seed,\n            nchains = nchains,\n            cores = cores,\n            bestOnly = bestOnly,\n            perplexity = perplexity,\n            verbose = verbose,\n            logfilePrefix = logfilePrefix)\n    return(sce)\n}\n\n\n.subsetCeldaListSCE <- function(x, ix) {\n    cgsparam <- x@metadata$celda_grid_search@celdaGridSearchParameters\n    if (cgsparam$model == \"celda_C\") {\n        x <- .createSCEceldaC(celdaCMod =\n                x@metadata$celda_grid_search@resList[[ix]],\n            sce = x,\n            xClass = cgsparam$xClass,\n            useAssay = cgsparam$useAssay,\n            algorithm = cgsparam$algorithm,\n            stopIter = cgsparam$stopIter,\n            maxIter = cgsparam$maxIter,\n            splitOnIter = cgsparam$splitOnIter,\n            splitOnLast = cgsparam$splitOnLast,\n            nchains = cgsparam$nchains,\n            zInitialize = cgsparam[[\"zInitialize\"]],\n            zInit = cgsparam[[\"zInit\"]],\n            logfile = cgsparam$logfile,\n            verbose = cgsparam$verbose)\n    } else if (cgsparam$model == \"celda_G\") {\n        x <- .createSCEceldaG(celdaGMod =\n                x@metadata$celda_grid_search@resList[[ix]],\n            sce = x,\n            xClass = cgsparam$xClass,\n            useAssay = cgsparam$useAssay,\n            stopIter = cgsparam$stopIter,\n            maxIter = cgsparam$maxIter,\n            splitOnIter = cgsparam$splitOnIter,\n            splitOnLast = cgsparam$splitOnLast,\n            nchains = cgsparam$nchains,\n            yInitialize = cgsparam[[\"yInitialize\"]],\n            yInit = cgsparam[[\"yInit\"]],\n            logfile = cgsparam$logfile,\n            verbose = cgsparam$verbose)\n    } else if (cgsparam$model == \"celda_CG\") {\n        x <- .createSCEceldaCG(celdaCGMod =\n                x@metadata$celda_grid_search@resList[[ix]],\n            sce = x,\n            xClass = cgsparam$xClass,\n            useAssay = cgsparam$useAssay,\n            algorithm = cgsparam$algorithm,\n            stopIter = cgsparam$stopIter,\n            maxIter = cgsparam$maxIter,\n            splitOnIter = cgsparam$splitOnIter,\n            splitOnLast = cgsparam$splitOnLast,\n            nchains = cgsparam$nchains,\n            zInitialize = cgsparam[[\"zInitialize\"]],\n            yInitialize = cgsparam[[\"yInitialize\"]],\n            zInit = cgsparam[[\"zInit\"]],\n            yInit = cgsparam[[\"yInit\"]],\n            logfile = cgsparam$logfile,\n            verbose = cgsparam$verbose)\n    } else {\n        stop(\"S4Vectors::metadata(altExp(x, altExpName))$celda_grid_search@\",\n            \"celdaGridSearchParameters$model must be\",\n            \" one of 'celda_C', 'celda_G', or 'celda_CG'\")\n    }\n    return(x)\n}\n"
  },
  {
    "path": "R/celdaProbabilityMap.R",
    "content": "#' @title Probability map for a celda model\n#' @description Renders probability and relative expression heatmaps to\n#'  visualize the relationship between features and cell populations (or cell\n#'  populations and samples).\n#' @param sce A \\link[SingleCellExperiment]{SingleCellExperiment} object\n#'  returned by \\link{celda_C}, \\link{celda_G}, or \\link{celda_CG}.\n#' @param useAssay A string specifying which \\link{assay}\n#'  slot to use. Default \"counts\".\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @param level Character. One of \"cellPopulation\" or \"Sample\".\n#'  \"cellPopulation\" will display the absolute probabilities and relative\n#'  normalized expression of each module in each cell population.\n#'  \\strong{\\code{level = \"cellPopulation\"} only works for celda_CG \\code{sce}\n#'  objects}. \"sample\" will display the absolute probabilities and relative\n#'  normalized abundance of each cell population in each sample. Default\n#'  \"cellPopulation\".\n#' @param ncols The number of colors (>1) to be in the color palette of\n#'  the absolute probability heatmap.\n#' @param col2 Passed to \\code{col} argument of \\link[ComplexHeatmap]{Heatmap}.\n#'  Set color boundaries and colors for the relative expression heatmap.\n#' @param title1 Passed to \\code{column_title} argument of\n#'  \\link[ComplexHeatmap]{Heatmap}. Figure title for the absolute probability\n#'  heatmap.\n#' @param title2 Passed to \\code{column_title} argument of\n#'  \\link[ComplexHeatmap]{Heatmap}. Figure title for the relative expression\n#'  heatmap.\n#' @param showColumnNames Passed to \\code{show_column_names} argument of\n#'  \\link[ComplexHeatmap]{Heatmap}. Show column names.\n#' @param showRowNames Passed to \\code{show_row_names} argument of\n#'  \\link[ComplexHeatmap]{Heatmap}. Show row names.\n#' @param rowNamesgp Passed to \\code{row_names_gp} argument of\n#'  \\link[ComplexHeatmap]{Heatmap}. Set row name font.\n#' @param colNamesgp Passed to \\code{column_names_gp} argument of\n#'  \\link[ComplexHeatmap]{Heatmap}. Set column name font.\n#' @param clusterRows Passed to \\code{cluster_rows} argument of\n#'  \\link[ComplexHeatmap]{Heatmap}. Cluster rows.\n#' @param clusterColumns Passed to \\code{cluster_columns} argument of\n#'  \\link[ComplexHeatmap]{Heatmap}. Cluster columns.\n#' @param showHeatmapLegend Passed to \\code{show_heatmap_legend} argument of\n#'  \\link[ComplexHeatmap]{Heatmap}. Show heatmap legend.\n#' @param heatmapLegendParam Passed to \\code{heatmap_legend_param} argument of\n#'  \\link[ComplexHeatmap]{Heatmap}. Heatmap legend parameters.\n#' @param ... Additional parameters passed to \\link[ComplexHeatmap]{Heatmap}.\n#' @seealso \\link{celda_C} for clustering cells. \\link{celda_CG} for\n#'  clustering features and cells\n#' @return A \\link[ComplexHeatmap]{HeatmapList} object containing 2\n#'  \\link[ComplexHeatmap]{Heatmap-class} objects\n#' @export\nsetGeneric(\"celdaProbabilityMap\",\n    function(sce,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        level = c(\"cellPopulation\", \"sample\"),\n        ncols = 100,\n        col2 = circlize::colorRamp2(c(-2, 0, 2),\n            c(\"#1E90FF\", \"#FFFFFF\", \"#CD2626\")),\n        title1 = \"Absolute probability\",\n        title2 = \"Relative expression\",\n        showColumnNames = TRUE,\n        showRowNames = TRUE,\n        rowNamesgp = grid::gpar(fontsize = 8),\n        colNamesgp = grid::gpar(fontsize = 12),\n        clusterRows = FALSE,\n        clusterColumns = FALSE,\n        showHeatmapLegend = TRUE,\n        heatmapLegendParam = list(title = NULL,\n            legend_height = grid::unit(6, \"cm\")),\n        ...) {\n\n        standardGeneric(\"celdaProbabilityMap\")\n    })\n\n\n#' @rdname celdaProbabilityMap\n#' @importFrom RColorBrewer brewer.pal\n#' @importFrom grDevices colorRampPalette\n#' @examples\n#' data(sceCeldaCG)\n#' celdaProbabilityMap(sceCeldaCG)\n#' @export\nsetMethod(\"celdaProbabilityMap\", signature(sce = \"SingleCellExperiment\"),\n    function(sce,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        level = c(\"cellPopulation\", \"sample\"),\n        ncols = 100,\n        col2 = circlize::colorRamp2(c(-2, 0, 2),\n            c(\"#1E90FF\", \"#FFFFFF\", \"#CD2626\")),\n        title1 = \"Absolute probability\",\n        title2 = \"Relative expression\",\n        showColumnNames = TRUE,\n        showRowNames = TRUE,\n        rowNamesgp = grid::gpar(fontsize = 8),\n        colNamesgp = grid::gpar(fontsize = 12),\n        clusterRows = FALSE,\n        clusterColumns = FALSE,\n        showHeatmapLegend = TRUE,\n        heatmapLegendParam = list(title = NULL,\n            legend_height = grid::unit(6, \"cm\")),\n        ...) {\n\n        level <- match.arg(level)\n        if (celdaModel(sce, altExpName = altExpName) == \"celda_C\") {\n            if (level == \"cellPopulation\") {\n                warning(\"'level' has been set to 'sample'\")\n            }\n            pm <- .celdaProbabilityMapC(sce = sce,\n                useAssay = useAssay,\n                altExpName = altExpName,\n                level = \"sample\",\n                ncols = ncols,\n                col2 = col2,\n                title1 = title1,\n                title2 = title2,\n                showColumnNames = showColumnNames,\n                showRowNames = showRowNames,\n                rowNamesgp = rowNamesgp,\n                colNamesgp = colNamesgp,\n                clusterRows = clusterRows,\n                clusterColumns = clusterColumns,\n                showHeatmapLegend = showHeatmapLegend,\n                heatmapLegendParam = heatmapLegendParam,\n                ...)\n        } else if (celdaModel(sce, altExpName = altExpName) == \"celda_CG\") {\n            pm <- .celdaProbabilityMapCG(sce = sce,\n                useAssay = useAssay,\n                altExpName = altExpName,\n                level = level,\n                ncols = ncols,\n                col2 = col2,\n                title1 = title1,\n                title2 = title2,\n                showColumnNames = showColumnNames,\n                showRowNames = showRowNames,\n                rowNamesgp = rowNamesgp,\n                colNamesgp = colNamesgp,\n                clusterRows = clusterRows,\n                clusterColumns = clusterColumns,\n                showHeatmapLegend = showHeatmapLegend,\n                heatmapLegendParam = heatmapLegendParam,\n                ...)\n        } else {\n            stop(\"S4Vectors::metadata(altExp(sce,\",\n                \" altExpName))$celda_parameters$model must be\",\n                \" one of 'celda_C', or 'celda_CG'!\")\n        }\n        return(pm)\n    }\n)\n\n\n.celdaProbabilityMapC <- function(sce,\n    useAssay,\n    altExpName,\n    level,\n    ncols,\n    col2,\n    title1,\n    title2,\n    showColumnNames,\n    showRowNames,\n    rowNamesgp,\n    colNamesgp,\n    clusterRows,\n    clusterColumns,\n    showHeatmapLegend,\n    heatmapLegendParam,\n    ...) {\n\n    altExp <- SingleCellExperiment::altExp(sce, altExpName)\n\n    zInclude <- which(tabulate(SummarizedExperiment::colData(\n        altExp)$celda_cell_cluster,\n        S4Vectors::metadata(altExp)$celda_parameters$K) > 0)\n\n    factorized <- factorizeMatrix(x = sce, useAssay = useAssay,\n        type = \"proportion\")\n\n    samp <- factorized$proportions$sample[zInclude, , drop = FALSE]\n    col1 <- grDevices::colorRampPalette(c(\"white\",\n        \"blue\",\n        \"midnightblue\",\n        \"springgreen4\",\n        \"yellowgreen\",\n        \"yellow\",\n        \"orange\",\n        \"red\"))(100)\n    breaks <- seq(0, 1, length.out = length(col1))\n\n    g1 <- ComplexHeatmap::Heatmap(matrix = samp,\n        col = circlize::colorRamp2(breaks, col1),\n        column_title = title1,\n        show_column_names = showColumnNames,\n        show_row_names = showRowNames,\n        row_names_gp = rowNamesgp,\n        column_names_gp = colNamesgp,\n        cluster_rows = clusterRows,\n        cluster_columns = clusterColumns,\n        show_heatmap_legend = showHeatmapLegend,\n        heatmap_legend_param = heatmapLegendParam,\n        ...)\n\n    if (ncol(samp) > 1) {\n        sampNorm <- normalizeCounts(samp,\n            normalize = \"proportion\",\n            transformationFun = sqrt,\n            scaleFun = base::scale)\n\n        g2 <- ComplexHeatmap::Heatmap(matrix = sampNorm,\n            col = col2,\n            column_title = title2,\n            show_column_names = showColumnNames,\n            show_row_names = showRowNames,\n            row_names_gp = rowNamesgp,\n            column_names_gp = colNamesgp,\n            cluster_rows = clusterRows,\n            cluster_columns = clusterColumns,\n            show_heatmap_legend = showHeatmapLegend,\n            heatmap_legend_param = heatmapLegendParam,\n            ...)\n        return(g1 + g2)\n    } else {\n        return(g1)\n    }\n}\n\n\n.celdaProbabilityMapCG <- function(sce,\n    useAssay,\n    altExpName,\n    level,\n    ncols,\n    col2,\n    title1,\n    title2,\n    showColumnNames,\n    showRowNames,\n    rowNamesgp,\n    colNamesgp,\n    clusterRows,\n    clusterColumns,\n    showHeatmapLegend,\n    heatmapLegendParam,\n    ...) {\n\n    altExp <- SingleCellExperiment::altExp(sce, altExpName)\n\n    factorized <- factorizeMatrix(x = sce, useAssay = useAssay,\n        altExpName = altExpName,\n        type = c(\"counts\", \"proportion\"))\n    zInclude <- which(tabulate(SummarizedExperiment::colData(\n        altExp)$celda_cell_cluster,\n        S4Vectors::metadata(altExp)$celda_parameters$K) > 0)\n    yInclude <- which(tabulate(SummarizedExperiment::rowData(\n        altExp)$celda_feature_module,\n        S4Vectors::metadata(altExp)$celda_parameters$L) > 0)\n\n    if (level == \"cellPopulation\") {\n        pop <- factorized$proportions$cellPopulation[yInclude,\n            zInclude,\n            drop = FALSE]\n        popNorm <- normalizeCounts(pop,\n            normalize = \"proportion\",\n            transformationFun = sqrt,\n            scaleFun = base::scale)\n\n        percentile9 <- round(stats::quantile(pop, .9), digits = 2) * 100\n        cols11 <- grDevices::colorRampPalette(c(\"white\",\n            RColorBrewer::brewer.pal(n = 9, name = \"Blues\")))(percentile9)\n        cols12 <- grDevices::colorRampPalette(c(\"midnightblue\",\n            c(\"springgreen4\", \"Yellowgreen\", \"Yellow\", \"Orange\",\n                \"Red\")))(ncols - percentile9)\n        col1 <- c(cols11, cols12)\n        breaks <- seq(0, 1, length.out = length(col1))\n\n        g1 <- ComplexHeatmap::Heatmap(matrix = pop,\n            col = circlize::colorRamp2(breaks, col1),\n            column_title = title1,\n            show_column_names = showColumnNames,\n            show_row_names = showRowNames,\n            row_names_gp = rowNamesgp,\n            column_names_gp = colNamesgp,\n            cluster_rows = clusterRows,\n            cluster_columns = clusterColumns,\n            show_heatmap_legend = showHeatmapLegend,\n            heatmap_legend_param = heatmapLegendParam,\n            ...)\n        g2 <- ComplexHeatmap::Heatmap(matrix = popNorm,\n            col = col2,\n            column_title = title2,\n            show_column_names = showColumnNames,\n            show_row_names = showRowNames,\n            row_names_gp = rowNamesgp,\n            column_names_gp = colNamesgp,\n            cluster_rows = clusterRows,\n            cluster_columns = clusterColumns,\n            show_heatmap_legend = showHeatmapLegend,\n            heatmap_legend_param = heatmapLegendParam,\n            ...)\n        return(g1 + g2)\n    } else {\n        samp <- factorized$proportions$sample\n        col1 <- grDevices::colorRampPalette(c(\n            \"white\",\n            \"blue\",\n            \"#08306B\",\n            \"#006D2C\",\n            \"yellowgreen\",\n            \"yellow\",\n            \"orange\",\n            \"red\"\n        ))(100)\n        breaks <- seq(0, 1, length.out = length(col1))\n\n        g1 <- ComplexHeatmap::Heatmap(matrix = samp,\n            col = circlize::colorRamp2(breaks, col1),\n            column_title = title1,\n            show_column_names = showColumnNames,\n            show_row_names = showRowNames,\n            row_names_gp = rowNamesgp,\n            column_names_gp = colNamesgp,\n            cluster_rows = clusterRows,\n            cluster_columns = clusterColumns,\n            show_heatmap_legend = showHeatmapLegend,\n            heatmap_legend_param = heatmapLegendParam,\n            ...)\n\n        if (ncol(samp) > 1) {\n            sampNorm <- normalizeCounts(factorized$counts$sample,\n                normalize = \"proportion\",\n                transformationFun = sqrt,\n                scaleFun = base::scale)\n            g2 <- ComplexHeatmap::Heatmap(matrix = sampNorm,\n                col = col2,\n                column_title = title2,\n                show_column_names = showColumnNames,\n                show_row_names = showRowNames,\n                row_names_gp = rowNamesgp,\n                column_names_gp = colNamesgp,\n                cluster_rows = clusterRows,\n                cluster_columns = clusterColumns,\n                show_heatmap_legend = showHeatmapLegend,\n                heatmap_legend_param = heatmapLegendParam,\n                ...)\n            return(g1 + g2)\n        } else {\n            return(g1 + g2)\n        }\n    }\n}\n"
  },
  {
    "path": "R/celdaUMAP.R",
    "content": "#' @title Uniform Manifold Approximation and Projection (UMAP) dimension\n#'  reduction for celda \\code{sce} object\n#' @description Embeds cells in two dimensions using \\link[uwot]{umap} based on\n#'  a celda model. For celda_C \\code{sce} objects, PCA on the normalized counts\n#'  is used to reduce the number of features before applying UMAP. For celda_CG\n#'  \\code{sce} object, UMAP is run on module probabilities to reduce the number\n#'  of features instead of using PCA. Module probabilities are square-root\n#'  transformed before applying UMAP.\n#' @param sce A \\link[SingleCellExperiment]{SingleCellExperiment} object\n#'  returned by \\link{celda_C}, \\link{celda_G}, or \\link{celda_CG}.\n#' @param useAssay A string specifying which \\link{assay}\n#'  slot to use. Default \"counts\".\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @param maxCells Integer. Maximum number of cells to plot. Cells will be\n#'  randomly subsampled if \\code{ncol(sce) > maxCells}. Larger numbers of cells\n#'  requires more memory. If NULL, no subsampling will be performed.\n#'  Default NULL.\n#' @param minClusterSize Integer. Do not subsample cell clusters below this\n#'  threshold. Default 100.\n#' @param modules Integer vector. Determines which features modules to use for\n#'  UMAP. If NULL, all modules will be used. Default NULL.\n#' @param seed Integer. Passed to \\link[withr]{with_seed}. For reproducibility,\n#'  a default value of 12345 is used. If NULL, no calls to\n#'  \\link[withr]{with_seed} are made.\n#' @param nNeighbors The size of local neighborhood used for\n#'  manifold approximation. Larger values result in more global\n#'  views of the manifold, while smaller values result in more\n#'  local data being preserved. Default 30.\n#'  See \\link[uwot]{umap} for more information.\n#' @param minDist The effective minimum distance between embedded points.\n#'  Smaller values will result in a more clustered/clumped\n#'  embedding where nearby points on the manifold are drawn\n#'  closer together, while larger values will result on a more\n#'  even dispersal of points. Default 0.75.\n#'  See \\link[uwot]{umap} for more information.\n#' @param spread The effective scale of embedded points. In combination with\n#'  \\code{min_dist}, this determines how clustered/clumped the\n#'   embedded points are. Default 1. See \\link[uwot]{umap} for more information.\n#' @param pca Logical. Whether to perform\n#'  dimensionality reduction with PCA before UMAP. Only works for celda_C\n#'  \\code{sce} objects.\n#' @param initialDims Integer. Number of dimensions from PCA to use as\n#'  input in UMAP. Default 50. Only works for celda_C \\code{sce} objects.\n#' @param normalize Character. Passed to \\link{normalizeCounts} in\n#'  normalization step. Divides counts by the library sizes for each\n#'  cell. One of 'proportion', 'cpm', 'median', or 'mean'. 'proportion' uses\n#'  the total counts for each cell as the library size. 'cpm' divides the\n#'  library size of each cell by one million to produce counts per million.\n#'  'median' divides the library size of each cell by the median library size\n#'  across all cells. 'mean' divides the library size of each cell by the mean\n#'  library size across all cells.\n#' @param scaleFactor Numeric. Sets the scale factor for cell-level\n#'  normalization. This scale factor is multiplied to each cell after the\n#'  library size of each cell had been adjusted in \\code{normalize}. Default\n#'  \\code{NULL} which means no scale factor is applied.\n#' @param transformationFun Function. Applys a transformation such as 'sqrt',\n#'  'log', 'log2', 'log10', or 'log1p'. If \\code{NULL}, no transformation will\n#'  be applied. Occurs after applying normalization and scale factor. Default\n#'  \\code{NULL}.\n#' @param cores Number of threads to use. Default 1.\n#' @param ... Additional parameters to pass to \\link[uwot]{umap}.\n#' @return \\code{sce} with UMAP coordinates\n#'  (columns \"celda_UMAP1\" & \"celda_UMAP2\") added to\n#'  \\code{\\link{reducedDim}(sce, \"celda_UMAP\")}.\n#' @export\nsetGeneric(\"celdaUmap\",\n    function(sce,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        maxCells = NULL,\n        minClusterSize = 100,\n        modules = NULL,\n        seed = 12345,\n        nNeighbors = 30,\n        minDist = 0.75,\n        spread = 1,\n        pca = TRUE,\n        initialDims = 50,\n        normalize = \"proportion\",\n        scaleFactor = NULL,\n        transformationFun = sqrt,\n        cores = 1,\n        ...) {\n\n        standardGeneric(\"celdaUmap\")\n    })\n\n\n#' @rdname celdaUmap\n#' @examples\n#' data(sceCeldaCG)\n#' umapRes <- celdaUmap(sceCeldaCG)\n#' @export\nsetMethod(\"celdaUmap\", signature(sce = \"SingleCellExperiment\"),\n    function(sce,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        maxCells = NULL,\n        minClusterSize = 100,\n        modules = NULL,\n        seed = 12345,\n        nNeighbors = 30,\n        minDist = 0.75,\n        spread = 1,\n        pca = TRUE,\n        initialDims = 50,\n        normalize = \"proportion\",\n        scaleFactor = NULL,\n        transformationFun = sqrt,\n        cores = 1,\n        ...) {\n\n        if (is.null(seed)) {\n            sce <- .celdaUmap(sce = sce,\n                useAssay = useAssay,\n                altExpName = altExpName,\n                maxCells = maxCells,\n                minClusterSize = minClusterSize,\n                modules = modules,\n                seed = seed,\n                nNeighbors = nNeighbors,\n                minDist = minDist,\n                spread = spread,\n                pca = pca,\n                initialDims = initialDims,\n                normalize = normalize,\n                scaleFactor = scaleFactor,\n                transformationFun = transformationFun,\n                cores = cores,\n                ...)\n        } else {\n            with_seed(seed,\n                sce <- .celdaUmap(sce = sce,\n                    useAssay = useAssay,\n                    altExpName = altExpName,\n                    maxCells = maxCells,\n                    minClusterSize = minClusterSize,\n                    modules = modules,\n                    seed = seed,\n                    nNeighbors = nNeighbors,\n                    minDist = minDist,\n                    spread = spread,\n                    pca = pca,\n                    initialDims = initialDims,\n                    normalize = normalize,\n                    scaleFactor = scaleFactor,\n                    transformationFun = transformationFun,\n                    cores = cores,\n                    ...))\n        }\n        return(sce)\n    })\n\n\n.celdaUmap <- function(sce,\n    useAssay,\n    altExpName,\n    maxCells,\n    minClusterSize,\n    modules,\n    seed,\n    nNeighbors,\n    minDist,\n    spread,\n    pca,\n    initialDims,\n    cores,\n    normalize,\n    scaleFactor,\n    transformationFun,\n    ...) {\n\n    celdaMod <- celdaModel(sce, altExpName = altExpName)\n    altExp <- SingleCellExperiment::altExp(sce, altExpName)\n\n    if (celdaMod == \"celda_C\") {\n        res <- .celdaUmapC(sce = altExp,\n            useAssay = useAssay,\n            maxCells = maxCells,\n            minClusterSize = minClusterSize,\n            nNeighbors = nNeighbors,\n            minDist = minDist,\n            spread = spread,\n            pca = pca,\n            initialDims = initialDims,\n            normalize = normalize,\n            scaleFactor = scaleFactor,\n            transformationFun = transformationFun,\n            cores = cores,\n            ...)\n    } else if (celdaMod == \"celda_CG\") {\n        res <- .celdaUmapCG(sce = altExp,\n            useAssay = useAssay,\n            maxCells = maxCells,\n            minClusterSize = minClusterSize,\n            modules = modules,\n            seed = seed,\n            nNeighbors = nNeighbors,\n            minDist = minDist,\n            spread = spread,\n            normalize = normalize,\n            scaleFactor = scaleFactor,\n            transformationFun = transformationFun,\n            cores = cores,\n            ...)\n    } else if (celdaMod == \"celda_G\") {\n        res <- .celdaUmapG(sce = altExp,\n            useAssay = useAssay,\n            maxCells = maxCells,\n            minClusterSize = minClusterSize,\n            modules = modules,\n            seed = seed,\n            nNeighbors = nNeighbors,\n            minDist = minDist,\n            spread = spread,\n            normalize = normalize,\n            scaleFactor = scaleFactor,\n            transformationFun = transformationFun,\n            cores = cores,\n            ...)\n    } else {\n        stop(\"S4Vectors::metadata(altExp(sce, altExpName))$\",\n            \"celda_parameters$model must be\",\n            \" one of 'celda_C', 'celda_G', or 'celda_CG'\")\n    }\n    SingleCellExperiment::reducedDim(altExp, \"celda_UMAP\") <- res\n    SingleCellExperiment::altExp(sce, altExpName) <- altExp\n    return(sce)\n}\n\n\n.celdaUmapC <- function(sce,\n    useAssay,\n    maxCells,\n    minClusterSize,\n    nNeighbors,\n    minDist,\n    spread,\n    pca,\n    initialDims,\n    normalize,\n    scaleFactor,\n    transformationFun,\n    cores,\n    ...) {\n\n    preparedCountInfo <- .prepareCountsForDimReductionCeldaC(sce = sce,\n        useAssay = useAssay,\n        maxCells = maxCells,\n        minClusterSize = minClusterSize,\n        normalize = normalize,\n        scaleFactor = scaleFactor,\n        transformationFun = transformationFun)\n    umapRes <- .calculateUmap(preparedCountInfo$norm,\n        nNeighbors = nNeighbors,\n        minDist = minDist,\n        spread = spread,\n        pca = pca,\n        initialDims = initialDims,\n        cores = cores,\n        ...\n    )\n\n    final <- matrix(NA, nrow = ncol(sce), ncol = 2)\n    final[preparedCountInfo$cellIx, ] <- umapRes\n    rownames(final) <- colnames(sce)\n    colnames(final) <- c(\"celda_UMAP1\", \"celda_UMAP2\")\n    return(final)\n}\n\n\n.celdaUmapCG <- function(sce,\n    useAssay,\n    maxCells,\n    minClusterSize,\n    modules,\n    seed,\n    nNeighbors,\n    minDist,\n    spread,\n    normalize,\n    scaleFactor,\n    transformationFun,\n    cores,\n    ...) {\n\n    preparedCountInfo <- .prepareCountsForDimReductionCeldaCG(sce = sce,\n        useAssay = useAssay,\n        maxCells = maxCells,\n        minClusterSize = minClusterSize,\n        modules = modules,\n        normalize = normalize,\n        scaleFactor = scaleFactor,\n        transformationFun = transformationFun)\n    umapRes <- .calculateUmap(preparedCountInfo$norm,\n        nNeighbors = nNeighbors,\n        minDist = minDist,\n        spread = spread,\n        cores = cores,\n        ...)\n\n    final <- matrix(NA, nrow = ncol(sce), ncol = 2)\n    final[preparedCountInfo$cellIx, ] <- umapRes\n    rownames(final) <- colnames(sce)\n    colnames(final) <- c(\"celda_UMAP1\", \"celda_UMAP2\")\n    return(final)\n}\n\n\n.celdaUmapG <- function(sce,\n    useAssay,\n    maxCells,\n    minClusterSize,\n    modules,\n    seed,\n    nNeighbors,\n    minDist,\n    spread,\n    normalize,\n    scaleFactor,\n    transformationFun,\n    cores,\n    ...) {\n\n    preparedCountInfo <- .prepareCountsForDimReductionCeldaG(sce = sce,\n        useAssay = useAssay,\n        maxCells = maxCells,\n        minClusterSize = minClusterSize,\n        modules = modules,\n        normalize = normalize,\n        scaleFactor = scaleFactor,\n        transformationFun = transformationFun)\n    umapRes <- .calculateUmap(preparedCountInfo$norm,\n        nNeighbors = nNeighbors,\n        minDist = minDist,\n        spread = spread,\n        cores = cores,\n        ...)\n\n    final <- matrix(NA, nrow = ncol(sce), ncol = 2)\n    final[preparedCountInfo$cellIx, ] <- umapRes\n    rownames(final) <- colnames(sce)\n    colnames(final) <- c(\"celda_UMAP1\", \"celda_UMAP2\")\n    return(final)\n}\n\n\n# Run the UMAP algorithm for dimensionality reduction\n# @param norm Normalized count matrix.\n# @param nNeighbors The size of local neighborhood used for\n#   manifold approximation. Larger values result in more global\n#   views of the manifold, while smaller values result in more\n#   local data being preserved. Default 30.\n#    See `?uwot::umap` for more information.\n# @param minDist The effective minimum distance between embedded points.\n#    Smaller values will result in a more clustered/clumped\n#    embedding where nearby points on the manifold are drawn\n#    closer together, while larger values will result on a more\n#    even dispersal of points. Default 0.2.\n#    See `?uwot::umap` for more information.\n# @param spread The effective scale of embedded points. In combination with\n#    'min_dist', this determines how clustered/clumped the\n#    embedded points are. Default 1.\n#    See `?uwot::umap` for more information.\n# @param pca Logical. Whether to perform\n# dimensionality reduction with PCA before UMAP.\n# @param initialDims Integer. Number of dimensions from PCA to use as\n# input in UMAP. Default 50.\n# @param cores Number of threads to use. Default 1.\n# @param ... Other parameters to pass to `uwot::umap`.\n#' @import uwot\n.calculateUmap <- function(norm,\n    nNeighbors = 30,\n    minDist = 0.75,\n    spread = 1,\n    pca = FALSE,\n    initialDims = 50,\n    cores = 1,\n    ...) {\n    if (isTRUE(pca)) {\n        doPCA <- initialDims\n    } else {\n        doPCA <- NULL\n    }\n\n    res <- uwot::umap(norm,\n        n_neighbors = nNeighbors,\n        min_dist = minDist, spread = spread,\n        n_threads = cores, n_sgd_threads = 1, pca = doPCA, ...\n    )\n    return(res)\n}\n"
  },
  {
    "path": "R/celda_C.R",
    "content": "#' @title Cell clustering with Celda\n#' @description Clusters the columns of a count matrix containing single-cell\n#'  data into K subpopulations. The\n#'  \\code{useAssay} \\link{assay} slot in\n#'  \\code{altExpName} \\link{altExp} slot will be used if\n#'  it exists. Otherwise, the \\code{useAssay}\n#'  \\link{assay} slot in \\code{x} will be used if\n#'  \\code{x} is a \\linkS4class{SingleCellExperiment} object.\n#' @param x A \\linkS4class{SingleCellExperiment}\n#'  with the matrix located in the assay slot under \\code{useAssay}.\n#'  Rows represent features and columns represent cells. Alternatively,\n#'  any matrix-like object that can be coerced to a sparse matrix of class\n#'  \"dgCMatrix\" can be directly used as input. The matrix will automatically be\n#'  converted to a \\linkS4class{SingleCellExperiment} object.\n#' @param useAssay A string specifying the name of the\n#'  \\link{assay} slot to use. Default \"counts\".\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @param sampleLabel Vector or factor. Denotes the sample label for each cell\n#'  (column) in the count matrix.\n#' @param K Integer. Number of cell populations.\n#' @param alpha Numeric. Concentration parameter for Theta. Adds a pseudocount\n#'  to each cell population in each sample. Default 1.\n#' @param beta Numeric. Concentration parameter for Phi. Adds a pseudocount to\n#'  each feature in each cell population. Default 1.\n#' @param algorithm String. Algorithm to use for clustering cell subpopulations.\n#'  One of 'EM' or 'Gibbs'. The EM algorithm is faster, especially for larger\n#'  numbers of cells. However, more chains may be required to ensure a good\n#'  solution is found. If 'EM' is selected, then 'stopIter' will be\n#'  automatically set to 1. Default 'EM'.\n#' @param stopIter Integer. Number of iterations without improvement in the\n#'  log likelihood to stop inference. Default 10.\n#' @param maxIter Integer. Maximum number of iterations of Gibbs sampling or\n#'  EM to perform. Default 200.\n#' @param splitOnIter Integer. On every `splitOnIter` iteration, a heuristic\n#'  will be applied to determine if a cell population should be reassigned and\n#'  another cell population should be split into two clusters. To disable\n#'  splitting, set to -1. Default 10.\n#' @param splitOnLast Integer. After `stopIter` iterations have been\n#'  performed without improvement, a heuristic will be applied to determine if\n#'  a cell population should be reassigned and another cell population should be\n#'  split into two clusters. If a split occurs, then `stopIter` will be reset.\n#'  Default TRUE.\n#' @param seed Integer. Passed to \\link[withr]{with_seed}. For reproducibility,\n#'  a default value of 12345 is used. If NULL, no calls to\n#'  \\link[withr]{with_seed} are made.\n#' @param nchains Integer. Number of random cluster initializations. Default 3.\n#' @param zInitialize Character. One of 'random', 'split', or 'predefined'.\n#'  With 'random', cells are randomly assigned to a populations. With 'split',\n#'  cells will be split into sqrt(K) populations and then each population will\n#'  be subsequently split into another sqrt(K) populations. With 'predefined',\n#'  values in `zInit` will be used to initialize `z`. Default 'split'.\n#' @param zInit Integer vector. Sets initial starting values of z. 'zInit'\n#'  is only used when `zInitialize = 'predfined'`. Default NULL.\n#' @param countChecksum Character. An MD5 checksum for the `counts` matrix.\n#'  Default NULL.\n#' @param logfile Character. Messages will be redirected to a file named\n#'  `logfile`. If NULL, messages will be printed to stdout.  Default NULL.\n#' @param verbose Logical. Whether to print log messages. Default TRUE.\n#' @return A \\link[SingleCellExperiment]{SingleCellExperiment} object. Function\n#'  parameter settings are stored in the \\link{metadata}\n#'  \\code{\"celda_parameters\"} slot.\n#'  Columns \\code{celda_sample_label} and \\code{celda_cell_cluster} in\n#'  \\link{colData} contain sample labels and celda cell\n#'  population clusters.\n#' @seealso \\link{celda_G} for feature clustering and \\link{celda_CG} for\n#'  simultaneous clustering of features and cells. \\link{celdaGridSearch} can\n#'  be used to run multiple values of K and multiple chains in parallel.\n#' @examples\n#' data(celdaCSim)\n#' sce <- celda_C(celdaCSim$counts,\n#'     K = celdaCSim$K,\n#'     sampleLabel = celdaCSim$sampleLabel,\n#'     nchains = 1)\n#' @import Rcpp RcppEigen\n#' @importFrom withr with_seed\n#' @export\nsetGeneric(\"celda_C\",\n    function(x,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        sampleLabel = NULL,\n        K,\n        alpha = 1,\n        beta = 1,\n        algorithm = c(\"EM\", \"Gibbs\"),\n        stopIter = 10,\n        maxIter = 200,\n        splitOnIter = 10,\n        splitOnLast = TRUE,\n        seed = 12345,\n        nchains = 3,\n        zInitialize = c(\"split\", \"random\", \"predefined\"),\n        countChecksum = NULL,\n        zInit = NULL,\n        logfile = NULL,\n        verbose = TRUE) {\n    standardGeneric(\"celda_C\")})\n\n\n#' @rdname celda_C\n#' @export\nsetMethod(\"celda_C\",\n    signature(x = \"SingleCellExperiment\"),\n    function(x,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        sampleLabel = NULL,\n        K,\n        alpha = 1,\n        beta = 1,\n        algorithm = c(\"EM\", \"Gibbs\"),\n        stopIter = 10,\n        maxIter = 200,\n        splitOnIter = 10,\n        splitOnLast = TRUE,\n        seed = 12345,\n        nchains = 3,\n        zInitialize = c(\"split\", \"random\", \"predefined\"),\n        countChecksum = NULL,\n        zInit = NULL,\n        logfile = NULL,\n        verbose = TRUE) {\n\n        xClass <- \"SingleCellExperiment\"\n\n        if (!altExpName %in% SingleCellExperiment::altExpNames(x)) {\n            stop(altExpName, \" not in 'altExpNames(x)'. Run \",\n                \"selectFeatures(x) first!\")\n        }\n\n        altExp <- SingleCellExperiment::altExp(x, altExpName)\n\n        if (!useAssay %in% SummarizedExperiment::assayNames(altExp)) {\n            stop(useAssay, \" not in assayNames(altExp(x, altExpName))\")\n        }\n\n        counts <- SummarizedExperiment::assay(altExp, i = useAssay)\n\n        altExp <- .celdaCWithSeed(counts = counts,\n            xClass = xClass,\n            useAssay = useAssay,\n            sce = altExp,\n            sampleLabel = sampleLabel,\n            K = K,\n            alpha = alpha,\n            beta = beta,\n            algorithm = match.arg(algorithm),\n            stopIter = stopIter,\n            maxIter = maxIter,\n            splitOnIter = splitOnIter,\n            splitOnLast = splitOnLast,\n            seed = seed,\n            nchains = nchains,\n            zInitialize = match.arg(zInitialize),\n            countChecksum = countChecksum,\n            zInit = zInit,\n            logfile = logfile,\n            verbose = verbose)\n        SingleCellExperiment::altExp(x, altExpName) <- altExp\n        return(x)\n    }\n)\n\n\n#' @rdname celda_C\n#' @export\nsetMethod(\"celda_C\",\n    signature(x = \"ANY\"),\n    function(x,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        sampleLabel = NULL,\n        K,\n        alpha = 1,\n        beta = 1,\n        algorithm = c(\"EM\", \"Gibbs\"),\n        stopIter = 10,\n        maxIter = 200,\n        splitOnIter = 10,\n        splitOnLast = TRUE,\n        seed = 12345,\n        nchains = 3,\n        zInitialize = c(\"split\", \"random\", \"predefined\"),\n        countChecksum = NULL,\n        zInit = NULL,\n        logfile = NULL,\n        verbose = TRUE) {\n\n        # Convert to sparse matrix\n        x <- methods::as(x, \"CsparseMatrix\")\n\n        ls <- list()\n        ls[[useAssay]] <- x\n        sce <- SingleCellExperiment::SingleCellExperiment(assays = ls)\n        SingleCellExperiment::altExp(sce, altExpName) <- sce\n        xClass <- \"matrix\"\n\n        altExp <- .celdaCWithSeed(counts = x,\n            xClass = xClass,\n            useAssay = useAssay,\n            sce = SingleCellExperiment::altExp(sce, altExpName),\n            sampleLabel = sampleLabel,\n            K = K,\n            alpha = alpha,\n            beta = beta,\n            algorithm = match.arg(algorithm),\n            stopIter = stopIter,\n            maxIter = maxIter,\n            splitOnIter = splitOnIter,\n            splitOnLast = splitOnLast,\n            seed = seed,\n            nchains = nchains,\n            zInitialize = match.arg(zInitialize),\n            countChecksum = countChecksum,\n            zInit = zInit,\n            logfile = logfile,\n            verbose = verbose)\n        SingleCellExperiment::altExp(sce, altExpName) <- altExp\n        return(sce)\n    }\n)\n\n\n.celdaCWithSeed <- function(counts,\n    xClass,\n    useAssay,\n    sce,\n    sampleLabel,\n    K,\n    alpha,\n    beta,\n    algorithm,\n    stopIter,\n    maxIter,\n    splitOnIter,\n    splitOnLast,\n    seed,\n    nchains,\n    zInitialize,\n    countChecksum,\n    zInit,\n    logfile,\n    verbose) {\n\n    .validateCounts(counts)\n\n    if (is.null(seed)) {\n        celdaCMod <- .celda_C(counts = counts,\n            sampleLabel = sampleLabel,\n            K = K,\n            alpha = alpha,\n            beta = beta,\n            algorithm = algorithm,\n            stopIter = stopIter,\n            maxIter = maxIter,\n            splitOnIter = splitOnIter,\n            splitOnLast = splitOnLast,\n            nchains = nchains,\n            zInitialize = zInitialize,\n            countChecksum = countChecksum,\n            zInit = zInit,\n            logfile = logfile,\n            verbose = verbose,\n            reorder = TRUE)\n    } else {\n        with_seed(seed,\n            celdaCMod <- .celda_C(counts = counts,\n                sampleLabel = sampleLabel,\n                K = K,\n                alpha = alpha,\n                beta = beta,\n                algorithm = algorithm,\n                stopIter = stopIter,\n                maxIter = maxIter,\n                splitOnIter = splitOnIter,\n                splitOnLast = splitOnLast,\n                nchains = nchains,\n                zInitialize = zInitialize,\n                countChecksum = countChecksum,\n                zInit = zInit,\n                logfile = logfile,\n                verbose = verbose,\n                reorder = TRUE))\n    }\n\n    sce <- .createSCEceldaC(celdaCMod = celdaCMod,\n        sce = sce,\n        xClass = xClass,\n        useAssay = useAssay,\n        algorithm = algorithm,\n        stopIter = stopIter,\n        maxIter = maxIter,\n        splitOnIter = splitOnIter,\n        splitOnLast = splitOnLast,\n        nchains = nchains,\n        zInitialize = zInitialize,\n        zInit = zInit,\n        logfile = logfile,\n        verbose = verbose)\n    return(sce)\n}\n\n\n# celda_C main function\n.celda_C <- function(counts,\n    sampleLabel = NULL,\n    K,\n    alpha = 1,\n    beta = 1,\n    algorithm = c(\"EM\", \"Gibbs\"),\n    stopIter = 10,\n    maxIter = 200,\n    splitOnIter = 10,\n    splitOnLast = TRUE,\n    nchains = 3,\n    zInitialize = c(\"split\", \"random\", \"predefined\"),\n    countChecksum = NULL,\n    zInit = NULL,\n    logfile = NULL,\n    verbose = TRUE,\n    reorder = TRUE) {\n\n    .logMessages(paste(rep(\"-\", 50), collapse = \"\"),\n        logfile = logfile,\n        append = FALSE,\n        verbose = verbose)\n\n    .logMessages(\"Starting Celda_C: Clustering cells.\",\n        logfile = logfile,\n        append = TRUE,\n        verbose = verbose)\n\n    .logMessages(paste(rep(\"-\", 50), collapse = \"\"),\n        logfile = logfile,\n        append = TRUE,\n        verbose = verbose)\n\n    startTime <- Sys.time()\n\n    ## Error checking and variable processing\n    counts <- .processCounts(counts)\n    if (is.null(countChecksum)) {\n        countChecksum <- .createCountChecksum(counts)\n    }\n\n    sampleLabel <- .processSampleLabels(sampleLabel, ncol(counts))\n    s <- as.integer(sampleLabel)\n\n    algorithm <- match.arg(algorithm)\n    if (algorithm == \"EM\") {\n      stopIter <- 1\n    }\n\n    algorithmFun <- ifelse(algorithm == \"Gibbs\",\n      \".cCCalcGibbsProbZ\",\n      \".cCCalcEMProbZ\"\n    )\n    zInitialize <- match.arg(zInitialize)\n\n    allChains <- seq(nchains)\n\n    bestResult <- NULL\n    for (i in allChains) {\n      ## Initialize cluster labels\n      .logMessages(date(),\n        \".. Initializing 'z' in chain\",\n        i,\n        \"with\",\n        paste0(\"'\", zInitialize, \"' \"),\n        logfile = logfile,\n        append = TRUE,\n        verbose = verbose\n      )\n\n      if (zInitialize == \"predefined\") {\n        if (is.null(zInit)) {\n          stop(\"'zInit' needs to specified when initilize.z == 'given'.\")\n        }\n\n      z <- .initializeCluster(K,\n        ncol(counts),\n        initial = zInit,\n        fixed = NULL\n      )\n    } else if (zInitialize == \"split\") {\n      z <- .initializeSplitZ(counts,\n        K = K,\n        alpha = alpha,\n        beta = beta\n      )\n    } else {\n      z <- .initializeCluster(K,\n        ncol(counts),\n        initial = NULL,\n        fixed = NULL\n      )\n    }\n\n    zBest <- z\n\n    ## Calculate counts one time up front\n    p <- .cCDecomposeCounts(counts, s, z, K)\n    nS <- p$nS\n    nG <- p$nG\n    nM <- p$nM\n    mCPByS <- p$mCPByS\n    nGByCP <- p$nGByCP\n    nCP <- p$nCP\n    nByC <- p$nByC\n\n    ll <- .cCCalcLL(\n      mCPByS = mCPByS,\n      nGByCP = nGByCP,\n      s = s,\n      K = K,\n      nS = nS,\n      nG = nG,\n      alpha = alpha,\n      beta = beta\n    )\n\n    iter <- 1L\n    numIterWithoutImprovement <- 0L\n    doCellSplit <- TRUE\n    while (iter <= maxIter & numIterWithoutImprovement <= stopIter) {\n      nextZ <- do.call(algorithmFun, list(\n        counts = counts,\n        mCPByS = mCPByS,\n        nGByCP = nGByCP,\n        nByC = nByC,\n        nCP = nCP,\n        z = z,\n        s = s,\n        K = K,\n        nG = nG,\n        nM = nM,\n        alpha = alpha,\n        beta = beta\n      ))\n\n      mCPByS <- nextZ$mCPByS\n      nGByCP <- nextZ$nGByCP\n      nCP <- nextZ$nCP\n      z <- nextZ$z\n\n      ## Perform split on i-th iteration of no improvement in log\n      ## likelihood\n      tempLl <- .cCCalcLL(\n        mCPByS = mCPByS,\n        nGByCP = nGByCP,\n        s = s,\n        K = K,\n        nS = nS,\n        nG = nG,\n        alpha = alpha,\n        beta = beta\n      )\n\n      if (K > 2 & iter != maxIter &\n        ((((numIterWithoutImprovement == stopIter &\n          !all(tempLl >= ll))) & isTRUE(splitOnLast)) |\n          (splitOnIter > 0 & iter %% splitOnIter == 0 &\n            isTRUE(doCellSplit)))) {\n        .logMessages(date(),\n          \" .... Determining if any cell clusters should be split.\",\n          logfile = logfile,\n          append = TRUE,\n          sep = \"\",\n          verbose = verbose\n        )\n\n        res <- .cCSplitZ(\n          counts,\n          mCPByS,\n          nGByCP,\n          nCP,\n          s,\n          z,\n          K,\n          nS,\n          nG,\n          alpha,\n          beta,\n          zProb = t(as.matrix(nextZ$probs)),\n          maxClustersToTry = K,\n          minCell = 3\n        )\n\n        .logMessages(res$message,\n          logfile = logfile,\n          append = TRUE,\n          verbose = verbose\n        )\n\n        # Reset convergence counter if a split occured\n        if (!isTRUE(all.equal(z, res$z))) {\n          numIterWithoutImprovement <- 0L\n          doCellSplit <- TRUE\n        } else {\n          doCellSplit <- FALSE\n        }\n\n        ## Re-calculate variables\n        z <- res$z\n        mCPByS <- res$mCPByS\n        nGByCP <- res$nGByCP\n        nCP <- res$nCP\n      }\n\n      ## Calculate complete likelihood\n      tempLl <- .cCCalcLL(\n        mCPByS = mCPByS,\n        nGByCP = nGByCP,\n        s = s,\n        K = K,\n        nS = nS,\n        nG = nG,\n        alpha = alpha,\n        beta = beta\n      )\n\n      if ((all(tempLl > ll)) | iter == 1) {\n        zBest <- z\n        llBest <- tempLl\n        numIterWithoutImprovement <- 1L\n      } else {\n        numIterWithoutImprovement <- numIterWithoutImprovement + 1L\n      }\n\n      ll <- c(ll, tempLl)\n\n      .logMessages(date(),\n        \".... Completed iteration:\",\n        iter,\n        \"| logLik:\",\n        tempLl,\n        logfile = logfile,\n        append = TRUE,\n        verbose = verbose\n      )\n      iter <- iter + 1\n    }\n\n    names <- list(\n      row = rownames(counts),\n      column = colnames(counts),\n      sample = levels(sampleLabel)\n    )\n\n    result <- list(\n      z = zBest,\n      completeLogLik = ll,\n      finalLogLik = llBest,\n      K = K,\n      sampleLabel = sampleLabel,\n      alpha = alpha,\n      beta = beta,\n      countChecksum = countChecksum,\n      names = names\n    )\n\n    if (is.null(bestResult) ||\n      result$finalLogLik > bestResult$finalLogLik) {\n      bestResult <- result\n    }\n\n    .logMessages(date(),\n      \".. Finished chain\",\n      i,\n      logfile = logfile,\n      append = TRUE,\n      verbose = verbose\n    )\n  }\n\n  bestResult <- methods::new(\"celda_C\",\n    clusters = list(z = bestResult$z),\n    params = list(\n      K = as.integer(bestResult$K),\n      alpha = bestResult$alpha,\n      beta = bestResult$beta,\n      countChecksum = bestResult$countChecksum\n    ),\n    sampleLabel = bestResult$sampleLabel,\n    completeLogLik = bestResult$completeLogLik,\n    finalLogLik = bestResult$finalLogLik,\n    names = bestResult$names\n  )\n\n  if (isTRUE(reorder)) {\n    bestResult <- .reorderCeldaC(counts = counts, res = bestResult)\n  }\n\n  endTime <- Sys.time()\n  .logMessages(paste(rep(\"-\", 50), collapse = \"\"),\n    logfile = logfile,\n    append = TRUE,\n    verbose = verbose\n  )\n\n  .logMessages(\"Completed Celda_C. Total time:\",\n    format(difftime(endTime, startTime)),\n    logfile = logfile,\n    append = TRUE,\n    verbose = verbose\n  )\n\n  .logMessages(paste(rep(\"-\", 50), collapse = \"\"),\n    logfile = logfile,\n    append = TRUE,\n    verbose = verbose\n  )\n\n  return(bestResult)\n}\n\n\n# Gibbs sampling for the celda_C Model\n.cCCalcGibbsProbZ <- function(counts,\n                              mCPByS,\n                              nGByCP,\n                              nByC,\n                              nCP,\n                              z,\n                              s,\n                              K,\n                              nG,\n                              nM,\n                              alpha,\n                              beta,\n                              doSample = TRUE) {\n\n  ## Set variables up front outside of loop\n  probs <- matrix(NA, ncol = nM, nrow = K)\n\n  ix <- sample(seq(nM))\n  for (i in ix) {\n    ## Subtract cell counts from current population assignment\n    # nGByCP1 <- nGByCP\n    # nGByCP1[, z[i]] <- nGByCP[, z[i]] - counts[, i]\n    # nGByCP1 <- .colSums(lgamma(nGByCP1 + beta), nrow(nGByCP), ncol(nGByCP))\n\n    # nCP1 <- nCP\n    # nCP1[z[i]] <- nCP1[z[i]] - nByC[i]\n    # nCP1 <- lgamma(nCP1 + (nG * beta))\n\n    ## Add cell counts to all other populations\n    # nGByCP2 <- nGByCP\n    # otherIx <- seq(K)[-z[i]]\n    # nGByCP2[, otherIx] <- nGByCP2[, otherIx] + counts[, i]\n    # nGByCP2 <- .colSums(lgamma(nGByCP2 + beta), nrow(nGByCP), ncol(nGByCP))\n\n    # nCP2 <- nCP\n    # nCP2[otherIx] <- nCP2[otherIx] + nByC[i]\n    # nCP2 <- lgamma(nCP2 + (nG * beta))\n\n\n    mCPByS[z[i], s[i]] <- mCPByS[z[i], s[i]] - 1L\n\n    ## Calculate probabilities for each state\n    ## when consider a specific cluster fo this cell,\n    ##   no need to calculate cells in other cluster\n    for (j in seq_len(K)) {\n      # otherIx <- seq(K)[-j]\n      if (j != z[i]) { # when j is not current population assignment\n        ## Theta simplified\n        probs[j, i] <- log(mCPByS[j, s[i]] + alpha) +\n          # if adding this cell -- Phi Numerator\n          sum(lgamma(nGByCP[, j] + counts[, i] + beta)) -\n          # if adding this cell -- Phi Denominator\n          lgamma(nCP[j] + nByC[i] + nG * beta) -\n          # if without this cell -- Phi Numerator\n          sum(lgamma(nGByCP[, j] + beta)) +\n          # if without this cell -- Phi Denominator\n          lgamma(nCP[j] + nG * beta)\n        # sum(nGByCP1[otherIx]) + ## Phi Numerator (other cells)\n        # nGByCP2[j] - ## Phi Numerator (current cell)\n        # sum(nCP1[otherIx]) - ## Phi Denominator (other cells)\n        # nCP2[j] - ## Phi Denominator (current cell)\n      } else { # when j is current population assignment\n        ## Theta simplified\n        probs[j, i] <- log(mCPByS[j, s[i]] + alpha) +\n          sum(lgamma(nGByCP[, j] + beta)) -\n          lgamma(nCP[j] + nG * beta) -\n          sum(lgamma(nGByCP[, j] - counts[, i] + beta)) +\n          lgamma(nCP[j] - nByC[i] + nG * beta)\n      }\n    }\n\n    ## Sample next state and add back counts\n    prevZ <- z[i]\n    if (isTRUE(doSample)) {\n      z[i] <- .sampleLl(probs[, i])\n    }\n\n    if (prevZ != z[i]) {\n      nGByCP[, prevZ] <- nGByCP[, prevZ] - counts[, i]\n      nGByCP[, z[i]] <- nGByCP[, z[i]] + counts[, i]\n\n      nCP[prevZ] <- nCP[prevZ] - nByC[i]\n      nCP[z[i]] <- nCP[z[i]] + nByC[i]\n    }\n    mCPByS[z[i], s[i]] <- mCPByS[z[i], s[i]] + 1L\n  }\n\n  return(list(\n    mCPByS = mCPByS,\n    nGByCP = nGByCP,\n    nCP = nCP,\n    z = z,\n    probs = probs\n  ))\n}\n\n\n.cCCalcEMProbZ <- function(counts,\n                           mCPByS,\n                           nGByCP,\n                           nByC,\n                           nCP,\n                           z,\n                           s,\n                           K,\n                           nG,\n                           nM,\n                           alpha,\n                           beta,\n                           doSample = TRUE) {\n\n  ## Expectation given current cell population labels\n  theta <- fastNormPropLog(mCPByS, alpha)\n  phi <- fastNormPropLog(nGByCP, beta)\n\n  ## Maximization to find best label for each cell\n  probs <- .countsTimesProbs(counts, phi) + theta[, s]\n\n  if (isTRUE(doSample)) {\n    zPrevious <- z\n    z <- apply(probs, 2, which.max)\n\n    ## Recalculate counts based on new label\n    p <- .cCReDecomposeCounts(counts, s, z, zPrevious, nGByCP, K)\n    mCPByS <- p$mCPByS\n    nGByCP <- p$nGByCP\n    nCP <- p$nCP\n  }\n\n  return(list(\n    mCPByS = mCPByS,\n    nGByCP = nGByCP,\n    nCP = nCP,\n    z = z,\n    probs = probs\n  ))\n}\n\n\n# Calculate log-likelihood for celda_C model\n.cCCalcLL <- function(mCPByS,\n                      nGByCP,\n                      s,\n                      z,\n                      K,\n                      nS,\n                      nG,\n                      alpha,\n                      beta) {\n\n  ## Calculate for \"Theta\" component\n  a <- nS * lgamma(K * alpha)\n  b <- sum(lgamma(mCPByS + alpha))\n  c <- -nS * K * lgamma(alpha)\n  d <- -sum(lgamma(colSums(mCPByS + alpha)))\n\n  thetaLl <- a + b + c + d\n\n  ## Calculate for \"Phi\" component\n  a <- K * lgamma(nG * beta)\n  b <- sum(lgamma(nGByCP + beta))\n  c <- -K * nG * lgamma(beta)\n  d <- -sum(lgamma(colSums(nGByCP + beta)))\n\n  phiLl <- a + b + c + d\n\n  final <- thetaLl + phiLl\n  return(final)\n}\n\n\n# Takes raw counts matrix and converts it to a series of matrices needed for\n# log likelihood calculation\n# @param counts Integer matrix. Rows represent features and columns represent\n# cells.\n# @param s Integer vector. Contains the sample label for each cell (column) in\n# the count matrix.\n# @param z Numeric vector. Denotes cell population labels.\n# @param K Integer. Number of cell populations.\n#' @importFrom Matrix colSums\n.cCDecomposeCounts <- function(counts, s, z, K) {\n  nS <- length(unique(s))\n  nG <- nrow(counts)\n  nM <- ncol(counts)\n\n  mCPByS <- matrix(as.integer(table(factor(z, levels = seq(K)), s)),\n    ncol = nS\n  )\n\n  nGByCP <- .colSumByGroup(counts, group = z, K = K)\n  nCP <- .colSums(nGByCP, nrow(nGByCP), ncol(nGByCP))\n  nByC <- colSums(counts)\n\n  return(list(\n    mCPByS = mCPByS,\n    nGByCP = nGByCP,\n    nCP = nCP,\n    nByC = nByC,\n    nS = nS,\n    nG = nG,\n    nM = nM\n  ))\n}\n\n#' @importFrom Matrix colSums\n.cCReDecomposeCounts <- function(counts, s, z, previousZ, nGByCP, K) {\n  ## Recalculate counts based on new label\n  nGByCP <- .colSumByGroupChange(counts, nGByCP, z, previousZ, K)\n  nCP <- colSums(nGByCP)\n  nS <- length(unique(s))\n  mCPByS <- matrix(as.integer(table(factor(z, levels = seq(K)), s)),\n    ncol = nS\n  )\n\n  return(list(\n    mCPByS = mCPByS,\n    nGByCP = nGByCP,\n    nCP = nCP\n  ))\n}\n\n\n.prepareCountsForDimReductionCeldaC <- function(sce,\n    useAssay,\n    maxCells,\n    minClusterSize,\n    normalize,\n    scaleFactor,\n    transformationFun) {\n\n    counts <- SummarizedExperiment::assay(sce, i = useAssay)\n    counts <- .processCounts(counts)\n\n    ## Checking if maxCells and minClusterSize will work\n    if (!is.null(maxCells)) {\n        if ((maxCells < ncol(counts)) &\n                (maxCells / minClusterSize <\n                        S4Vectors::metadata(sce)$celda_parameters$K)) {\n\n            stop(\"Cannot distribute \",\n                maxCells,\n                \" cells among \",\n                S4Vectors::metadata(sce)$celda_parameters$K,\n                \" clusters while maintaining a minumum of \",\n                minClusterSize,\n                \" cells per cluster. Try increasing 'maxCells' or decreasing\",\n                \" 'minClusterSize'.\")\n        }\n    } else {\n        maxCells <- ncol(counts)\n    }\n\n    ## Select a subset of cells to sample if greater than 'maxCells'\n    totalCellsToRemove <- ncol(counts) - maxCells\n    zInclude <- rep(TRUE, ncol(counts))\n\n    if (totalCellsToRemove > 0) {\n        zTa <- tabulate(SummarizedExperiment::colData(sce)$celda_cell_cluster,\n            S4Vectors::metadata(sce)$celda_parameters$K)\n\n        ## Number of cells that can be sampled from each cluster without\n        ## going below the minimum threshold\n        clusterCellsToSample <- zTa - minClusterSize\n        clusterCellsToSample[clusterCellsToSample < 0] <- 0\n\n        ## Number of cells to sample after exluding smaller clusters\n        ## Rounding can cause number to be off by a few, so ceiling is\n        ## used with a second round of subtraction\n        clusterNToSample <- ceiling((clusterCellsToSample /\n                sum(clusterCellsToSample)) * totalCellsToRemove)\n        diff <- sum(clusterNToSample) - totalCellsToRemove\n        clusterNToSample[which.max(clusterNToSample)] <-\n            clusterNToSample[which.max(clusterNToSample)] - diff\n\n        ## Perform sampling for each cluster\n        for (i in which(clusterNToSample > 0)) {\n            zInclude[sample(which(\n                SummarizedExperiment::colData(sce)$celda_cell_cluster == i),\n                clusterNToSample[i])] <- FALSE\n        }\n    }\n\n    cellIx <- which(zInclude)\n    norm <- t(normalizeCounts(counts[, cellIx],\n        normalize = normalize,\n        scaleFactor = scaleFactor,\n        transformationFun = transformationFun))\n    return(list(norm = norm, cellIx = cellIx))\n}\n\n\n.createSCEceldaC <- function(celdaCMod,\n    sce,\n    xClass,\n    useAssay,\n    algorithm,\n    stopIter,\n    maxIter,\n    splitOnIter,\n    splitOnLast,\n    nchains,\n    zInitialize,\n    zInit,\n    logfile,\n    verbose) {\n\n    # add metadata\n    S4Vectors::metadata(sce)[[\"celda_parameters\"]] <- list(\n        model = \"celda_C\",\n        xClass = xClass,\n        useAssay = useAssay,\n        sampleLevels = celdaCMod@names$sample,\n        K = celdaCMod@params$K,\n        alpha = celdaCMod@params$alpha,\n        beta = celdaCMod@params$beta,\n        algorithm = algorithm,\n        stopIter = stopIter,\n        maxIter = maxIter,\n        splitOnIter = splitOnIter,\n        splitOnLast = splitOnLast,\n        seed = celdaCMod@params$seed,\n        nchains = nchains,\n        zInitialize = zInitialize,\n        countChecksum = celdaCMod@params$countChecksum,\n        zInit = zInit,\n        logfile = logfile,\n        verbose = verbose,\n        completeLogLik = celdaCMod@completeLogLik,\n        finalLogLik = celdaCMod@finalLogLik,\n        cellClusterLevels = sort(unique(celdaClusters(celdaCMod)$z)))\n\n    SummarizedExperiment::rowData(sce)[\"rownames\"] <- celdaCMod@names$row\n    SummarizedExperiment::colData(sce)[\"colnames\"] <-\n        celdaCMod@names$column\n    SummarizedExperiment::colData(sce)[\"celda_sample_label\"] <-\n        as.factor(celdaCMod@sampleLabel)\n    SummarizedExperiment::colData(sce)[\"celda_cell_cluster\"] <-\n        as.factor(celdaClusters(celdaCMod)$z)\n\n    return(sce)\n}\n\n# #' @name countsTimesProbs\n# #' @title Counts matrix times cell population probabilies\n# #' @param counts feature-by-cell matrix\n# #' @param phi feature-by-probability matrix\n#' @importMethodsFrom Matrix %*%\n.countsTimesProbs <- function(counts, phi) {\n  ## Maximization to find best label for each cell\n  if (inherits(counts, \"matrix\") & is.integer(counts)) {\n    probs <- eigenMatMultInt(phi, counts)\n  } else if (inherits(counts, \"matrix\") & is.numeric(counts)) {\n    probs <- eigenMatMultNumeric(phi, counts)\n  } else {\n    probs <- (t(phi) %*% counts)\n  }\n  return(probs)\n}\n"
  },
  {
    "path": "R/celda_CG.R",
    "content": "#' @title Cell and feature clustering with Celda\n#' @description Clusters the rows and columns of a count matrix containing\n#'  single-cell data into L modules and K subpopulations, respectively. The\n#'  \\code{useAssay} \\link{assay} slot in\n#'  \\code{altExpName} \\link{altExp} slot will be used if\n#'  it exists. Otherwise, the \\code{useAssay}\n#'  \\link{assay} slot in \\code{x} will be used if\n#'  \\code{x} is a \\linkS4class{SingleCellExperiment} object.\n#' @param x A \\linkS4class{SingleCellExperiment}\n#'  with the matrix located in the assay slot under \\code{useAssay}.\n#'  Rows represent features and columns represent cells. Alternatively,\n#'  any matrix-like object that can be coerced to a sparse matrix of class\n#'  \"dgCMatrix\" can be directly used as input. The matrix will automatically be\n#'  converted to a \\linkS4class{SingleCellExperiment} object.\n#' @param useAssay A string specifying the name of the\n#'  \\link{assay} slot to use. Default \"counts\".\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @param sampleLabel Vector or factor. Denotes the sample label for each cell\n#'  (column) in the count matrix.\n#' @param K Integer. Number of cell populations.\n#' @param L Integer. Number of feature modules.\n#' @param alpha Numeric. Concentration parameter for Theta. Adds a pseudocount\n#'  to each cell population in each sample. Default 1.\n#' @param beta Numeric. Concentration parameter for Phi. Adds a pseudocount to\n#'  each feature module in each cell population. Default 1.\n#' @param delta Numeric. Concentration parameter for Psi. Adds a pseudocount to\n#'  each feature in each module. Default 1.\n#' @param gamma Numeric. Concentration parameter for Eta. Adds a pseudocount to\n#'  the number of features in each module. Default 1.\n#' @param algorithm String. Algorithm to use for clustering cell subpopulations.\n#'  One of 'EM' or 'Gibbs'. The EM algorithm for cell clustering is faster,\n#'  especially for larger numbers of cells. However, more chains may be required\n#'  to ensure a good solution is found. Default 'EM'.\n#' @param stopIter Integer. Number of iterations without improvement in the log\n#'  likelihood to stop inference. Default 10.\n#' @param maxIter Integer. Maximum number of iterations of Gibbs sampling to\n#'  perform. Default 200.\n#' @param splitOnIter Integer. On every \\code{splitOnIter} iteration,\n#'  a heuristic\n#'  will be applied to determine if a cell population or feature module should\n#'  be reassigned and another cell population or feature module should be split\n#'  into two clusters. To disable splitting, set to -1. Default 10.\n#' @param splitOnLast Integer. After \\code{stopIter} iterations have been\n#'  performed without improvement, a heuristic will be applied to determine if\n#'  a cell population or feature module should be reassigned and another cell\n#'  population or feature module should be split into two clusters. If a split\n#'  occurs, then 'stopIter' will be reset. Default TRUE.\n#' @param seed Integer. Passed to \\link[withr]{with_seed}. For reproducibility,\n#'  a default value of 12345 is used. If NULL, no calls to\n#'  \\link[withr]{with_seed} are made.\n#' @param nchains Integer. Number of random cluster initializations. Default 3.\n#' @param zInitialize Chararacter. One of 'random', 'split', or 'predefined'.\n#'  With 'random', cells are randomly assigned to a populations. With 'split',\n#'  cells will be split into sqrt(K) populations and then each population will\n#'  be subsequently split into another sqrt(K) populations. With 'predefined',\n#'  values in \\code{zInit} will be used to initialize \\code{z}. Default 'split'.\n#' @param yInitialize Character. One of 'random', 'split', or 'predefined'.\n#'  With 'random', features are randomly assigned to a modules. With 'split',\n#'  features will be split into sqrt(L) modules and then each module will be\n#'  subsequently split into another sqrt(L) modules. With 'predefined', values\n#'  in \\code{yInit} will be used to initialize \\code{y}. Default 'split'.\n#' @param zInit Integer vector. Sets initial starting values of z. 'zInit'\n#'  is only used when `zInitialize = 'predfined'`. Default NULL.\n#' @param yInit Integer vector. Sets initial starting values of y.\n#'  'yInit' is only be used when `yInitialize = \"predefined\"`. Default NULL.\n#' @param countChecksum Character. An MD5 checksum for the counts matrix.\n#'  Default NULL.\n#' @param logfile Character. Messages will be redirected to a file named\n#'  `logfile`. If NULL, messages will be printed to stdout.  Default NULL.\n#' @param verbose Logical. Whether to print log messages. Default TRUE.\n#' @return A \\linkS4class{SingleCellExperiment} object. Function\n#'  parameter settings are stored in \\link{metadata}\n#'  \\code{\"celda_parameters\"} in \\link{altExp} slot.\n#'  In \\link{altExp} slot,\n#'  columns \\code{celda_sample_label} and \\code{celda_cell_cluster} in\n#'  \\link{colData} contain sample labels and celda cell\n#'  population clusters. Column \\code{celda_feature_module} in\n#'  \\link{rowData} contains feature modules.\n#' @seealso \\link{celda_G} for feature clustering and \\link{celda_C} for\n#'  clustering cells. \\link{celdaGridSearch} can be used to run multiple\n#'  values of K/L and multiple chains in parallel.\n#' @import Rcpp RcppEigen\n#' @export\nsetGeneric(\"celda_CG\",\n    function(x,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        sampleLabel = NULL,\n        K,\n        L,\n        alpha = 1,\n        beta = 1,\n        delta = 1,\n        gamma = 1,\n        algorithm = c(\"EM\", \"Gibbs\"),\n        stopIter = 10,\n        maxIter = 200,\n        splitOnIter = 10,\n        splitOnLast = TRUE,\n        seed = 12345,\n        nchains = 3,\n        zInitialize = c(\"split\", \"random\", \"predefined\"),\n        yInitialize = c(\"split\", \"random\", \"predefined\"),\n        countChecksum = NULL,\n        zInit = NULL,\n        yInit = NULL,\n        logfile = NULL,\n        verbose = TRUE) {\n    standardGeneric(\"celda_CG\")})\n\n\n#' @rdname celda_CG\n#' @export\nsetMethod(\"celda_CG\",\n    signature(x = \"SingleCellExperiment\"),\n    function(x,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        sampleLabel = NULL,\n        K,\n        L,\n        alpha = 1,\n        beta = 1,\n        delta = 1,\n        gamma = 1,\n        algorithm = c(\"EM\", \"Gibbs\"),\n        stopIter = 10,\n        maxIter = 200,\n        splitOnIter = 10,\n        splitOnLast = TRUE,\n        seed = 12345,\n        nchains = 3,\n        zInitialize = c(\"split\", \"random\", \"predefined\"),\n        yInitialize = c(\"split\", \"random\", \"predefined\"),\n        countChecksum = NULL,\n        zInit = NULL,\n        yInit = NULL,\n        logfile = NULL,\n        verbose = TRUE) {\n\n        xClass <- \"SingleCellExperiment\"\n\n        if (!altExpName %in% SingleCellExperiment::altExpNames(x)) {\n            stop(altExpName, \" not in 'altExpNames(x)'. Run \",\n                \"selectFeatures(x) first!\")\n        }\n\n        altExp <- SingleCellExperiment::altExp(x, altExpName)\n\n        if (!useAssay %in% SummarizedExperiment::assayNames(altExp)) {\n            stop(useAssay, \" not in assayNames(altExp(x, altExpName))\")\n        }\n\n        counts <- SummarizedExperiment::assay(altExp, i = useAssay)\n\n        altExp <- .celdaCGWithSeed(counts = counts,\n            xClass = xClass,\n            useAssay = useAssay,\n            sce = altExp,\n            sampleLabel = sampleLabel,\n            K = K,\n            L = L,\n            alpha = alpha,\n            beta = beta,\n            delta = delta,\n            gamma = gamma,\n            algorithm = match.arg(algorithm),\n            stopIter = stopIter,\n            maxIter = maxIter,\n            splitOnIter = splitOnIter,\n            splitOnLast = splitOnLast,\n            seed = seed,\n            nchains = nchains,\n            zInitialize = match.arg(zInitialize),\n            yInitialize = match.arg(yInitialize),\n            countChecksum = countChecksum,\n            zInit = zInit,\n            yInit = yInit,\n            logfile = logfile,\n            verbose = verbose)\n        SingleCellExperiment::altExp(x, altExpName) <- altExp\n        return(x)\n    }\n)\n\n\n#' @rdname celda_CG\n#' @examples\n#' data(celdaCGSim)\n#' sce <- celda_CG(celdaCGSim$counts,\n#'     K = celdaCGSim$K,\n#'     L = celdaCGSim$L,\n#'     sampleLabel = celdaCGSim$sampleLabel,\n#'     nchains = 1)\n#' @export\nsetMethod(\"celda_CG\",\n    signature(x = \"ANY\"),\n    function(x,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        sampleLabel = NULL,\n        K,\n        L,\n        alpha = 1,\n        beta = 1,\n        delta = 1,\n        gamma = 1,\n        algorithm = c(\"EM\", \"Gibbs\"),\n        stopIter = 10,\n        maxIter = 200,\n        splitOnIter = 10,\n        splitOnLast = TRUE,\n        seed = 12345,\n        nchains = 3,\n        zInitialize = c(\"split\", \"random\", \"predefined\"),\n        yInitialize = c(\"split\", \"random\", \"predefined\"),\n        countChecksum = NULL,\n        zInit = NULL,\n        yInit = NULL,\n        logfile = NULL,\n        verbose = TRUE) {\n\n        # Convert to sparse matrix\n        x <- methods::as(x, \"CsparseMatrix\")\n\n        ls <- list()\n        ls[[useAssay]] <- x\n        sce <- SingleCellExperiment::SingleCellExperiment(assays = ls)\n        SingleCellExperiment::altExp(sce, altExpName) <- sce\n        xClass <- \"matrix\"\n\n        altExp <- .celdaCGWithSeed(counts = x,\n            xClass = xClass,\n            useAssay = useAssay,\n            sce = SingleCellExperiment::altExp(sce, altExpName),\n            sampleLabel = sampleLabel,\n            K = K,\n            L = L,\n            alpha = alpha,\n            beta = beta,\n            delta = delta,\n            gamma = gamma,\n            algorithm = match.arg(algorithm),\n            stopIter = stopIter,\n            maxIter = maxIter,\n            splitOnIter = splitOnIter,\n            splitOnLast = splitOnLast,\n            seed = seed,\n            nchains = nchains,\n            zInitialize = match.arg(zInitialize),\n            yInitialize = match.arg(yInitialize),\n            countChecksum = countChecksum,\n            zInit = zInit,\n            yInit = yInit,\n            logfile = logfile,\n            verbose = verbose)\n        SingleCellExperiment::altExp(sce, altExpName) <- altExp\n        return(sce)\n    }\n)\n\n\n.celdaCGWithSeed <- function(counts,\n    xClass,\n    useAssay,\n    sce,\n    sampleLabel,\n    K,\n    L,\n    alpha,\n    beta,\n    delta,\n    gamma,\n    algorithm,\n    stopIter,\n    maxIter,\n    splitOnIter,\n    splitOnLast,\n    seed,\n    nchains,\n    zInitialize,\n    yInitialize,\n    countChecksum,\n    zInit,\n    yInit,\n    logfile,\n    verbose) {\n\n    .validateCounts(counts)\n\n    if (is.null(seed)) {\n        celdaCGMod <- .celda_CG(\n            counts = counts,\n            sampleLabel = sampleLabel,\n            K = K,\n            L = L,\n            alpha = alpha,\n            beta = beta,\n            delta = delta,\n            gamma = gamma,\n            algorithm = algorithm,\n            stopIter = stopIter,\n            maxIter = maxIter,\n            splitOnIter = splitOnIter,\n            splitOnLast = splitOnLast,\n            nchains = nchains,\n            zInitialize = zInitialize,\n            yInitialize = yInitialize,\n            countChecksum = countChecksum,\n            zInit = zInit,\n            yInit = yInit,\n            logfile = logfile,\n            verbose = verbose,\n            reorder = TRUE\n        )\n    } else {\n        with_seed(\n            seed,\n            celdaCGMod <- .celda_CG(\n                counts = counts,\n                sampleLabel = sampleLabel,\n                K = K,\n                L = L,\n                alpha = alpha,\n                beta = beta,\n                delta = delta,\n                gamma = gamma,\n                algorithm = algorithm,\n                stopIter = stopIter,\n                maxIter = maxIter,\n                splitOnIter = splitOnIter,\n                splitOnLast = splitOnLast,\n                nchains = nchains,\n                zInitialize = zInitialize,\n                yInitialize = yInitialize,\n                countChecksum = countChecksum,\n                zInit = zInit,\n                yInit = yInit,\n                logfile = logfile,\n                verbose = verbose,\n                reorder = TRUE\n            )\n        )\n    }\n\n    sce <- .createSCEceldaCG(celdaCGMod = celdaCGMod,\n        sce = sce,\n        xClass = xClass,\n        useAssay = useAssay,\n        algorithm = algorithm,\n        stopIter = stopIter,\n        maxIter = maxIter,\n        splitOnIter = splitOnIter,\n        splitOnLast = splitOnLast,\n        nchains = nchains,\n        zInitialize = zInitialize,\n        yInitialize = yInitialize,\n        zInit = zInit,\n        yInit = yInit,\n        logfile = logfile,\n        verbose = verbose)\n    return(sce)\n}\n\n\n.celda_CG <- function(counts,\n                      sampleLabel = NULL,\n                      K,\n                      L,\n                      alpha = 1,\n                      beta = 1,\n                      delta = 1,\n                      gamma = 1,\n                      algorithm = c(\"EM\", \"Gibbs\"),\n                      stopIter = 10,\n                      maxIter = 200,\n                      splitOnIter = 10,\n                      splitOnLast = TRUE,\n                      nchains = 3,\n                      zInitialize = c(\"split\", \"random\", \"predefined\"),\n                      yInitialize = c(\"split\", \"random\", \"predefined\"),\n                      countChecksum = NULL,\n                      zInit = NULL,\n                      yInit = NULL,\n                      logfile = NULL,\n                      verbose = TRUE,\n                      reorder = TRUE) {\n  .logMessages(paste(rep(\"-\", 50), collapse = \"\"),\n    logfile = logfile,\n    append = FALSE,\n    verbose = verbose\n  )\n\n  .logMessages(\"Starting Celda_CG: Clustering cells and genes.\",\n    logfile = logfile,\n    append = TRUE,\n    verbose = verbose\n  )\n\n  .logMessages(paste(rep(\"-\", 50), collapse = \"\"),\n    logfile = logfile,\n    append = TRUE,\n    verbose = verbose\n  )\n\n  startTime <- Sys.time()\n\n  counts <- .processCounts(counts)\n  if (is.null(countChecksum)) {\n    countChecksum <- .createCountChecksum(counts)\n  }\n\n  sampleLabel <- .processSampleLabels(sampleLabel, ncol(counts))\n  s <- as.integer(sampleLabel)\n\n  algorithm <- match.arg(algorithm)\n  algorithmFun <- ifelse(algorithm == \"Gibbs\",\n    \".cCCalcGibbsProbZ\",\n    \".cCCalcEMProbZ\"\n  )\n  zInitialize <- match.arg(zInitialize)\n  yInitialize <- match.arg(yInitialize)\n\n  allChains <- seq(nchains)\n\n  # Pre-compute lgamma values\n  lggamma <- lgamma(seq(0, nrow(counts) + L) + gamma)\n  lgdelta <- c(NA, lgamma((seq(nrow(counts) + L) * delta)))\n\n  bestResult <- NULL\n  for (i in allChains) {\n    ## Initialize cluster labels\n    .logMessages(date(),\n      \".. Initializing 'z' in chain\",\n      i,\n      \"with\",\n      paste0(\"'\", zInitialize, \"' \"),\n      logfile = logfile,\n      append = TRUE,\n      verbose = verbose\n    )\n\n    .logMessages(date(),\n      \".. Initializing 'y' in chain\",\n      i,\n      \"with\",\n      paste0(\"'\", yInitialize, \"' \"),\n      logfile = logfile,\n      append = TRUE,\n      verbose = verbose\n    )\n\n    if (zInitialize == \"predefined\") {\n      if (is.null(zInit)) {\n        stop(\"'zInit' needs to specified when initilize.z == 'given'.\")\n      }\n      z <- .initializeCluster(K,\n        ncol(counts),\n        initial = zInit,\n        fixed = NULL\n      )\n    } else if (zInitialize == \"split\") {\n      z <- .initializeSplitZ(\n        counts,\n        K = K,\n        alpha = alpha,\n        beta = beta\n      )\n    } else {\n      z <- .initializeCluster(K,\n        ncol(counts),\n        initial = NULL,\n        fixed = NULL\n      )\n    }\n\n    if (yInitialize == \"predefined\") {\n      if (is.null(yInit)) {\n        stop(\"'yInit' needs to specified when initilize.y == 'given'.\")\n      }\n      y <- .initializeCluster(L,\n        nrow(counts),\n        initial = yInit,\n        fixed = NULL\n      )\n    } else if (yInitialize == \"split\") {\n      y <- .initializeSplitY(counts,\n        L,\n        beta = beta,\n        delta = delta,\n        gamma = gamma\n      )\n    } else {\n      y <- .initializeCluster(L,\n        nrow(counts),\n        initial = NULL,\n        fixed = NULL\n      )\n    }\n\n    zBest <- z\n    yBest <- y\n\n    ## Calculate counts one time up front\n    p <- .cCGDecomposeCounts(counts, s, z, y, K, L)\n    mCPByS <- p$mCPByS\n    nTSByC <- p$nTSByC\n    nTSByCP <- p$nTSByCP\n    nCP <- p$nCP\n    nByG <- p$nByG\n    nByC <- p$nByC\n    nByTS <- p$nByTS\n    nGByTS <- p$nGByTS\n    nGByCP <- p$nGByCP\n    nM <- p$nM\n    nG <- p$nG\n    nS <- p$nS\n    rm(p)\n\n    ll <- .cCGCalcLL(\n      K = K,\n      L = L,\n      mCPByS = mCPByS,\n      nTSByCP = nTSByCP,\n      nByG = nByG,\n      nByTS = nByTS,\n      nGByTS = nGByTS,\n      nS = nS,\n      nG = nG,\n      alpha = alpha,\n      beta = beta,\n      delta = delta,\n      gamma = gamma\n    )\n\n    iter <- 1L\n    numIterWithoutImprovement <- 0L\n    doCellSplit <- TRUE\n    doGeneSplit <- TRUE\n    while (iter <= maxIter & numIterWithoutImprovement <= stopIter) {\n      ## Gibbs sampling for each gene\n      lgbeta <- lgamma(seq(0, max(nCP)) + beta)\n      nextY <- .cGCalcGibbsProbY(\n        counts = nGByCP,\n        nTSByC = nTSByCP,\n        nByTS = nByTS,\n        nGByTS = nGByTS,\n        nByG = nByG,\n        y = y,\n        L = L,\n        nG = nG,\n        beta = beta,\n        delta = delta,\n        gamma = gamma,\n        lgbeta = lgbeta,\n        lggamma = lggamma,\n        lgdelta = lgdelta\n      )\n      nTSByCP <- nextY$nTSByC\n      nGByTS <- nextY$nGByTS\n      nByTS <- nextY$nByTS\n      nTSByC <- .rowSumByGroupChange(counts, nTSByC, nextY$y, y, L)\n      y <- nextY$y\n\n      ## Gibbs or EM sampling for each cell\n      nextZ <- do.call(algorithmFun, list(\n        counts = nTSByC,\n        mCPByS = mCPByS,\n        nGByCP = nTSByCP,\n        nCP = nCP,\n        nByC = nByC,\n        z = z,\n        s = s,\n        K = K,\n        nG = L,\n        nM = nM,\n        alpha = alpha,\n        beta = beta\n      ))\n      mCPByS <- nextZ$mCPByS\n      nTSByCP <- nextZ$nGByCP\n      nCP <- nextZ$nCP\n      nGByCP <- .colSumByGroupChange(counts, nGByCP, nextZ$z, z, K)\n      z <- nextZ$z\n\n      ## Perform split on i-th iteration defined by splitOnIter\n      tempLl <- .cCGCalcLL(\n        K = K,\n        L = L,\n        mCPByS = mCPByS,\n        nTSByCP = nTSByCP,\n        nByG = nByG,\n        nByTS = nByTS,\n        nGByTS = nGByTS,\n        nS = nS,\n        nG = nG,\n        alpha = alpha,\n        beta = beta,\n        delta = delta,\n        gamma = gamma\n      )\n\n      if (L > 2 & iter != maxIter &\n        (((numIterWithoutImprovement == stopIter &\n          !all(tempLl >= ll)) & isTRUE(splitOnLast)) |\n          (splitOnIter > 0 & iter %% splitOnIter == 0 &\n            isTRUE(doGeneSplit)))) {\n        .logMessages(date(),\n          \" .... Determining if any gene clusters should be split.\",\n          logfile = logfile,\n          append = TRUE,\n          sep = \"\",\n          verbose = verbose\n        )\n        res <- .cCGSplitY(counts,\n          y,\n          mCPByS,\n          nGByCP,\n          nTSByC,\n          nTSByCP,\n          nByG,\n          nByTS,\n          nGByTS,\n          nCP,\n          s,\n          z,\n          K,\n          L,\n          nS,\n          nG,\n          alpha,\n          beta,\n          delta,\n          gamma,\n          yProb = t(nextY$probs),\n          maxClustersToTry = max(L / 2, 10),\n          minCell = 3\n        )\n        .logMessages(res$message,\n          logfile = logfile,\n          append = TRUE,\n          verbose = verbose\n        )\n\n        # Reset convergence counter if a split occured\n        if (!isTRUE(all.equal(y, res$y))) {\n          numIterWithoutImprovement <- 1L\n          doGeneSplit <- TRUE\n        } else {\n          doGeneSplit <- FALSE\n        }\n\n        ## Re-calculate variables\n        y <- res$y\n        nTSByCP <- res$nTSByCP\n        nByTS <- res$nByTS\n        nGByTS <- res$nGByTS\n        nTSByC <- .rowSumByGroup(counts, group = y, L = L)\n      }\n\n      if (K > 2 & iter != maxIter &\n        (((numIterWithoutImprovement == stopIter &\n          !all(tempLl > ll)) & isTRUE(splitOnLast)) |\n          (splitOnIter > 0 & iter %% splitOnIter == 0 &\n            isTRUE(doCellSplit)))) {\n        .logMessages(date(),\n          \" .... Determining if any cell clusters should be split.\",\n          logfile = logfile,\n          append = TRUE,\n          sep = \"\",\n          verbose = verbose\n        )\n        res <- .cCGSplitZ(counts,\n          mCPByS,\n          nTSByC,\n          nTSByCP,\n          nByG,\n          nByTS,\n          nGByTS,\n          nCP,\n          s,\n          z,\n          K,\n          L,\n          nS,\n          nG,\n          alpha,\n          beta,\n          delta,\n          gamma,\n          zProb = t(nextZ$probs),\n          maxClustersToTry = K,\n          minCell = 3\n        )\n        .logMessages(res$message,\n          logfile = logfile,\n          append = TRUE,\n          verbose = verbose\n        )\n\n        # Reset convergence counter if a split occured\n        if (!isTRUE(all.equal(z, res$z))) {\n          numIterWithoutImprovement <- 0L\n          doCellSplit <- TRUE\n        } else {\n          doCellSplit <- FALSE\n        }\n\n        ## Re-calculate variables\n        z <- res$z\n        mCPByS <- res$mCPByS\n        nTSByCP <- res$nTSByCP\n        nCP <- res$nCP\n        nGByCP <- .colSumByGroup(counts, group = z, K = K)\n      }\n\n      ## Calculate complete likelihood\n      tempLl <- .cCGCalcLL(\n        K = K,\n        L = L,\n        mCPByS = mCPByS,\n        nTSByCP = nTSByCP,\n        nByG = nByG,\n        nByTS = nByTS,\n        nGByTS = nGByTS,\n        nS = nS,\n        nG = nG,\n        alpha = alpha,\n        beta = beta,\n        delta = delta,\n        gamma = gamma\n      )\n      if ((all(tempLl > ll)) | iter == 1) {\n        zBest <- z\n        yBest <- y\n        llBest <- tempLl\n        numIterWithoutImprovement <- 1L\n      } else {\n        numIterWithoutImprovement <- numIterWithoutImprovement + 1L\n      }\n      ll <- c(ll, tempLl)\n\n      .logMessages(date(),\n        \" .... Completed iteration: \",\n        iter,\n        \" | logLik: \",\n        tempLl,\n        logfile = logfile,\n        append = TRUE,\n        sep = \"\",\n        verbose = verbose\n      )\n      iter <- iter + 1L\n    }\n\n    names <- list(\n      row = rownames(counts),\n      column = colnames(counts),\n      sample = levels(sampleLabel)\n    )\n\n    result <- list(\n      z = zBest,\n      y = yBest,\n      completeLogLik = ll,\n      finalLogLik = llBest,\n      K = K,\n      L = L,\n      alpha = alpha,\n      beta = beta,\n      delta = delta,\n      gamma = gamma,\n      sampleLabel = sampleLabel,\n      names = names,\n      countChecksum = countChecksum\n    )\n\n    class(result) <- \"celda_CG\"\n\n    if (is.null(bestResult) ||\n      result$finalLogLik > bestResult$finalLogLik) {\n      bestResult <- result\n    }\n\n    .logMessages(date(),\n      \".. Finished chain\",\n      i,\n      logfile = logfile,\n      append = TRUE,\n      verbose = verbose\n    )\n  }\n\n  ## Peform reordering on final Z and Y assigments:\n  bestResult <- methods::new(\"celda_CG\",\n    clusters = list(z = zBest, y = yBest),\n    params = list(\n      K = as.integer(K),\n      L = as.integer(L),\n      alpha = alpha,\n      beta = beta,\n      delta = delta,\n      gamma = gamma,\n      countChecksum = countChecksum\n    ),\n    completeLogLik = ll,\n    finalLogLik = llBest,\n    sampleLabel = sampleLabel,\n    names = names\n  )\n  if (isTRUE(reorder)) {\n    bestResult <- .reorderCeldaCG(counts = counts, res = bestResult)\n  }\n\n  endTime <- Sys.time()\n  .logMessages(paste(rep(\"-\", 50), collapse = \"\"),\n    logfile = logfile,\n    append = TRUE,\n    verbose = verbose\n  )\n  .logMessages(\"Completed Celda_CG. Total time:\",\n    format(difftime(endTime, startTime)),\n    logfile = logfile,\n    append = TRUE,\n    verbose = verbose\n  )\n  .logMessages(paste(rep(\"-\", 50), collapse = \"\"),\n    logfile = logfile,\n    append = TRUE,\n    verbose = verbose\n  )\n\n  return(bestResult)\n}\n\n\n# Calculate the loglikelihood for the celda_CG model\n.cCGCalcLL <- function(K,\n                       L,\n                       mCPByS,\n                       nTSByCP,\n                       nByG,\n                       nByTS,\n                       nGByTS,\n                       nS,\n                       nG,\n                       alpha,\n                       beta,\n                       delta,\n                       gamma) {\n  nG <- sum(nGByTS)\n\n  ## Calculate for \"Theta\" component\n  a <- nS * lgamma(K * alpha)\n  b <- sum(lgamma(mCPByS + alpha))\n  c <- -nS * K * lgamma(alpha)\n  d <- -sum(lgamma(colSums(mCPByS + alpha)))\n\n  thetaLl <- a + b + c + d\n\n  ## Calculate for \"Phi\" component\n  a <- K * lgamma(L * beta)\n  b <- sum(lgamma(nTSByCP + beta))\n  c <- -K * L * lgamma(beta)\n  d <- -sum(lgamma(colSums(nTSByCP + beta)))\n\n  phiLl <- a + b + c + d\n\n  ## Calculate for \"Psi\" component\n  a <- sum(lgamma(nGByTS * delta))\n  b <- sum(lgamma(nByG + delta))\n  c <- -nG * lgamma(delta)\n  d <- -sum(lgamma(nByTS + (nGByTS * delta)))\n\n  psiLl <- a + b + c + d\n\n  ## Calculate for \"Eta\" side\n  a <- lgamma(L * gamma)\n  b <- sum(lgamma(nGByTS + gamma))\n  c <- -L * lgamma(gamma)\n  d <- -lgamma(sum(nGByTS + gamma))\n\n  etaLl <- a + b + c + d\n\n  final <- thetaLl + phiLl + psiLl + etaLl\n  return(final)\n}\n\n\n# Takes raw counts matrix and converts it to a series of matrices needed for\n# log likelihood calculation\n# @param counts Integer matrix. Rows represent features and columns represent\n# cells.\n# @param s Integer vector. Contains the sample label for each cell (column) in\n# the count matrix.\n# @param z Numeric vector. Denotes cell population labels.\n# @param y Numeric vector. Denotes feature module labels.\n# @param K Integer. Number of cell populations.\n# @param L Integer. Number of feature modules.\n#' @importFrom Matrix colSums rowSums\n.cCGDecomposeCounts <- function(counts, s, z, y, K, L) {\n  nS <- length(unique(s))\n  mCPByS <- matrix(as.integer(table(factor(z, levels = seq(K)), s)),\n    ncol = nS\n  )\n\n  nTSByC <- .rowSumByGroup(counts, group = y, L = L)\n  nGByCP <- .colSumByGroup(counts, group = z, K = K)\n  nTSByCP <- .colSumByGroup(nTSByC, group = z, K = K)\n\n  nByC <- colSums(counts)\n  nByG <- rowSums(counts)\n  nByTS <- .rowSumByGroup(matrix(nByG, ncol = 1), group = y, L = L)\n  nCP <- .colSums(nTSByCP, nrow(nTSByCP), ncol(nTSByCP))\n  nGByTS <- tabulate(y, L) + 1 ## Add pseudogene to each module\n  nG <- nrow(counts)\n  nM <- ncol(counts)\n\n  return(list(\n    mCPByS = mCPByS,\n    nTSByC = nTSByC,\n    nTSByCP = nTSByCP,\n    nCP = nCP,\n    nByG = nByG,\n    nByC = nByC,\n    nByTS = nByTS,\n    nGByTS = nGByTS,\n    nGByCP = nGByCP,\n    nM = nM,\n    nG = nG,\n    nS = nS\n  ))\n}\n\n\n.prepareCountsForDimReductionCeldaCG <- function(sce,\n    useAssay,\n    maxCells,\n    minClusterSize,\n    modules,\n    normalize,\n    scaleFactor,\n    transformationFun) {\n\n    counts <- SummarizedExperiment::assay(sce, i = useAssay)\n    counts <- .processCounts(counts)\n\n    K <- S4Vectors::metadata(sce)$celda_parameters$K\n    z <- as.integer(SummarizedExperiment::colData(sce)$celda_cell_cluster)\n    y <- as.integer(SummarizedExperiment::rowData(sce)$celda_feature_module)\n    L <- S4Vectors::metadata(sce)$celda_parameters$L\n    alpha <- S4Vectors::metadata(sce)$celda_parameters$alpha\n    beta <- S4Vectors::metadata(sce)$celda_parameters$beta\n\n    delta <- S4Vectors::metadata(sce)$celda_parameters$delta\n    gamma <- S4Vectors::metadata(sce)$celda_parameters$gamma\n    sampleLabel <-\n        SummarizedExperiment::colData(sce)$celda_sample_label\n    cNames <- colnames(sce)\n    rNames <- rownames(sce)\n    sNames <- S4Vectors::metadata(sce)$celda_parameters$sampleLevels\n\n    ## Checking if maxCells and minClusterSize will work\n    if (!is.null(maxCells)) {\n        if ((maxCells < ncol(counts)) &\n                (maxCells / minClusterSize < K)) {\n            stop(\"Cannot distribute \",\n                maxCells,\n                \" cells among \",\n                K,\n                \" clusters while maintaining a minumum of \",\n                minClusterSize,\n                \" cells per cluster. Try increasing 'maxCells' or\",\n                \" decreasing 'minClusterSize'.\")\n        }\n    } else {\n        maxCells <- ncol(counts)\n    }\n\n    fm <- .factorizeMatrixCG(\n        counts = counts,\n        K = K,\n        z = z,\n        y = y,\n        L = L,\n        alpha = alpha,\n        beta = beta,\n        delta = delta,\n        gamma = gamma,\n        sampleLabel = sampleLabel,\n        cNames = cNames,\n        rNames = rNames,\n        sNames = sNames,\n        type = \"counts\")\n    modulesToUse <- seq(nrow(fm$counts$cell))\n    if (!is.null(modules)) {\n        if (!all(modules %in% modulesToUse)) {\n            stop(\"'modules' must be a vector of numbers between 1 and \",\n                modulesToUse,\n                \".\")\n        }\n        modulesToUse <- modules\n    }\n\n    ## Select a subset of cells to sample if greater than 'maxCells'\n    totalCellsToRemove <- ncol(counts) - maxCells\n    zInclude <- rep(TRUE, ncol(counts))\n\n    if (totalCellsToRemove > 0) {\n        zTa <- tabulate(z, K)\n\n        ## Number of cells that can be sampled from each cluster without\n        ## going below the minimum threshold\n        clusterCellsToSample <- zTa - minClusterSize\n        clusterCellsToSample[clusterCellsToSample < 0] <- 0\n\n        ## Number of cells to sample after exluding smaller clusters\n        ## Rounding can cause number to be off by a few, so ceiling is used\n        ## with a second round of subtraction\n        clusterNToSample <- ceiling((clusterCellsToSample /\n                sum(clusterCellsToSample)) * totalCellsToRemove)\n        diff <- sum(clusterNToSample) - totalCellsToRemove\n        clusterNToSample[which.max(clusterNToSample)] <-\n            clusterNToSample[which.max(clusterNToSample)] - diff\n\n        ## Perform sampling for each cluster\n        for (i in which(clusterNToSample > 0)) {\n            zInclude[sample(which(z == i), clusterNToSample[i])] <- FALSE\n        }\n    }\n    cellIx <- which(zInclude)\n\n    norm <- t(normalizeCounts(fm$counts$cell[modulesToUse, cellIx],\n        normalize = normalize,\n        scaleFactor = scaleFactor,\n        transformationFun = transformationFun))\n    return(list(norm = norm, cellIx = cellIx))\n}\n\n\n.createSCEceldaCG <- function(celdaCGMod,\n    sce,\n    xClass,\n    useAssay,\n    algorithm,\n    stopIter,\n    maxIter,\n    splitOnIter,\n    splitOnLast,\n    nchains,\n    zInitialize,\n    yInitialize,\n    zInit,\n    yInit,\n    logfile,\n    verbose) {\n\n    # add metadata\n    S4Vectors::metadata(sce)[[\"celda_parameters\"]] <- list(\n        model = \"celda_CG\",\n        xClass = xClass,\n        useAssay = useAssay,\n        sampleLevels = celdaCGMod@names$sample,\n        K = celdaCGMod@params$K,\n        L = celdaCGMod@params$L,\n        alpha = celdaCGMod@params$alpha,\n        beta = celdaCGMod@params$beta,\n        delta = celdaCGMod@params$delta,\n        gamma = celdaCGMod@params$gamma,\n        algorithm = algorithm,\n        stopIter = stopIter,\n        maxIter = maxIter,\n        splitOnIter = splitOnIter,\n        splitOnLast = splitOnLast,\n        seed = celdaCGMod@params$seed,\n        nchains = nchains,\n        zInitialize = zInitialize,\n        yInitialize = yInitialize,\n        countChecksum = celdaCGMod@params$countChecksum,\n        zInit = zInit,\n        yInit = yInit,\n        logfile = logfile,\n        verbose = verbose,\n        completeLogLik = celdaCGMod@completeLogLik,\n        finalLogLik = celdaCGMod@finalLogLik,\n        cellClusterLevels = sort(unique(celdaClusters(celdaCGMod)$z)),\n        featureModuleLevels = sort(unique(celdaClusters(celdaCGMod)$y)))\n\n    SummarizedExperiment::rowData(sce)[\"rownames\"] <- celdaCGMod@names$row\n    SummarizedExperiment::colData(sce)[\"colnames\"] <-\n        celdaCGMod@names$column\n    SummarizedExperiment::colData(sce)[\"celda_sample_label\"] <-\n        as.factor(celdaCGMod@sampleLabel)\n    SummarizedExperiment::colData(sce)[\"celda_cell_cluster\"] <-\n        as.factor(celdaClusters(celdaCGMod)$z)\n    SummarizedExperiment::rowData(sce)[\"celda_feature_module\"] <-\n        as.factor(celdaClusters(celdaCGMod)$y)\n\n    return(sce)\n}\n"
  },
  {
    "path": "R/celda_G.R",
    "content": "#' @title Feature clustering with Celda\n#' @description Clusters the rows of a count matrix containing single-cell data\n#'  into L modules. The\n#'  \\code{useAssay} \\link{assay} slot in\n#'  \\code{altExpName} \\link{altExp} slot will be used if\n#'  it exists. Otherwise, the \\code{useAssay}\n#'  \\link{assay} slot in \\code{x} will be used if\n#'  \\code{x} is a \\linkS4class{SingleCellExperiment} object.\n#' @param x A \\linkS4class{SingleCellExperiment}\n#'  with the matrix located in the assay slot under \\code{useAssay}.\n#'  Rows represent features and columns represent cells. Alternatively,\n#'  any matrix-like object that can be coerced to a sparse matrix of class\n#'  \"dgCMatrix\" can be directly used as input. The matrix will automatically be\n#'  converted to a \\linkS4class{SingleCellExperiment} object.\n#' @param useAssay A string specifying the name of the\n#'  \\link{assay} slot to use. Default \"counts\".\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @param L Integer. Number of feature modules.\n#' @param beta Numeric. Concentration parameter for Phi. Adds a pseudocount to\n#'  each feature module in each cell. Default 1.\n#' @param delta Numeric. Concentration parameter for Psi. Adds a pseudocount to\n#'  each feature in each module. Default 1.\n#' @param gamma Numeric. Concentration parameter for Eta. Adds a pseudocount to\n#'  the number of features in each module. Default 1.\n#' @param stopIter Integer. Number of iterations without improvement in the\n#'  log likelihood to stop inference. Default 10.\n#' @param maxIter Integer. Maximum number of iterations of Gibbs sampling to\n#'  perform. Default 200.\n#' @param splitOnIter Integer. On every `splitOnIter` iteration, a heuristic\n#'  will be applied to determine if a feature module should be reassigned and\n#'  another feature module should be split into two clusters. To disable\n#'  splitting, set to -1. Default 10.\n#' @param splitOnLast Integer. After `stopIter` iterations have been\n#'  performed without improvement, a heuristic will be applied to determine if\n#'  a cell population should be reassigned and another cell population should be\n#'  split into two clusters. If a split occurs, then `stopIter` will be reset.\n#'  Default TRUE.\n#' @param seed Integer. Passed to \\link[withr]{with_seed}. For reproducibility,\n#'  a default value of 12345 is used. If NULL, no calls to\n#'  \\link[withr]{with_seed} are made.\n#' @param nchains Integer. Number of random cluster initializations. Default 3.\n#' @param yInitialize Chararacter. One of 'random', 'split', or 'predefined'.\n#'  With 'random', features are randomly assigned to a modules. With 'split',\n#'  features will be split into sqrt(L) modules and then each module will be\n#'  subsequently split into another sqrt(L) modules. With 'predefined', values\n#'  in `yInit` will be used to initialize `y`. Default 'split'.\n#' @param yInit Integer vector. Sets initial starting values of y.\n#'  `yInit` can only be used when `yInitialize = 'predefined'`. Default NULL.\n#' @param countChecksum Character. An MD5 checksum for the `counts` matrix.\n#'  Default NULL.\n#' @param logfile Character. Messages will be redirected to a file named\n#'  \\code{logfile}. If NULL, messages will be printed to stdout. Default NULL.\n#' @param verbose Logical. Whether to print log messages. Default TRUE.\n#' @return A \\linkS4class{SingleCellExperiment} object. Function\n#'  parameter settings are stored in the \\link{metadata}\n#'  \\code{\"celda_parameters\"} slot. Column \\code{celda_feature_module} in\n#'  \\link{rowData} contains feature modules.\n#' @seealso \\link{celda_C} for cell clustering and \\link{celda_CG} for\n#'  simultaneous clustering of features and cells. \\link{celdaGridSearch} can\n#'  be used to run multiple values of L and multiple chains in parallel.\n#' @examples\n#' data(celdaGSim)\n#' sce <- celda_G(celdaGSim$counts, L = celdaGSim$L, nchains = 1)\n#' @export\nsetGeneric(\"celda_G\",\n    function(x,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        L,\n        beta = 1,\n        delta = 1,\n        gamma = 1,\n        stopIter = 10,\n        maxIter = 200,\n        splitOnIter = 10,\n        splitOnLast = TRUE,\n        seed = 12345,\n        nchains = 3,\n        yInitialize = c(\"split\", \"random\", \"predefined\"),\n        countChecksum = NULL,\n        yInit = NULL,\n        logfile = NULL,\n        verbose = TRUE) {\n    standardGeneric(\"celda_G\")})\n\n\n#' @rdname celda_G\n#' @export\nsetMethod(\"celda_G\",\n    signature(x = \"SingleCellExperiment\"),\n    function(x,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        L,\n        beta = 1,\n        delta = 1,\n        gamma = 1,\n        stopIter = 10,\n        maxIter = 200,\n        splitOnIter = 10,\n        splitOnLast = TRUE,\n        seed = 12345,\n        nchains = 3,\n        yInitialize = c(\"split\", \"random\", \"predefined\"),\n        countChecksum = NULL,\n        yInit = NULL,\n        logfile = NULL,\n        verbose = TRUE) {\n\n        xClass <- \"SingleCellExperiment\"\n\n        if (!altExpName %in% SingleCellExperiment::altExpNames(x)) {\n            stop(altExpName, \" not in 'altExpNames(x)'. Run \",\n                \"selectFeatures(x) first!\")\n        }\n\n        altExp <- SingleCellExperiment::altExp(x, altExpName)\n\n        if (!useAssay %in% SummarizedExperiment::assayNames(altExp)) {\n            stop(useAssay, \" not in assayNames(altExp(x, altExpName))\")\n        }\n\n        counts <- SummarizedExperiment::assay(altExp, i = useAssay)\n\n        altExp <- .celdaGWithSeed(counts = counts,\n            xClass = xClass,\n            useAssay = useAssay,\n            sce = altExp,\n            L = L,\n            beta = beta,\n            delta = delta,\n            gamma = gamma,\n            stopIter = stopIter,\n            maxIter = maxIter,\n            splitOnIter = splitOnIter,\n            splitOnLast = splitOnLast,\n            seed = seed,\n            nchains = nchains,\n            yInitialize = match.arg(yInitialize),\n            countChecksum = countChecksum,\n            yInit = yInit,\n            logfile = logfile,\n            verbose = verbose)\n        SingleCellExperiment::altExp(x, altExpName) <- altExp\n        return(x)\n    }\n)\n\n\n#' @rdname celda_G\n#' @export\nsetMethod(\"celda_G\",\n    signature(x = \"ANY\"),\n    function(x,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        L,\n        beta = 1,\n        delta = 1,\n        gamma = 1,\n        stopIter = 10,\n        maxIter = 200,\n        splitOnIter = 10,\n        splitOnLast = TRUE,\n        seed = 12345,\n        nchains = 3,\n        yInitialize = c(\"split\", \"random\", \"predefined\"),\n        countChecksum = NULL,\n        yInit = NULL,\n        logfile = NULL,\n        verbose = TRUE) {\n\n        # Convert to sparse matrix\n        x <- methods::as(x, \"CsparseMatrix\")\n\n        ls <- list()\n        ls[[useAssay]] <- x\n        sce <- SingleCellExperiment::SingleCellExperiment(assays = ls)\n        SingleCellExperiment::altExp(sce, altExpName) <- sce\n        xClass <- \"matrix\"\n\n        altExp <- .celdaGWithSeed(counts = x,\n            xClass = xClass,\n            useAssay = useAssay,\n            sce = SingleCellExperiment::altExp(sce, altExpName),\n            L = L,\n            beta = beta,\n            delta = delta,\n            gamma = gamma,\n            stopIter = stopIter,\n            maxIter = maxIter,\n            splitOnIter = splitOnIter,\n            splitOnLast = splitOnLast,\n            seed = seed,\n            nchains = nchains,\n            yInitialize = match.arg(yInitialize),\n            countChecksum = countChecksum,\n            yInit = yInit,\n            logfile = logfile,\n            verbose = verbose)\n        SingleCellExperiment::altExp(sce, altExpName) <- altExp\n        return(sce)\n    }\n)\n\n\n.celdaGWithSeed <- function(counts,\n    xClass,\n    useAssay,\n    sce,\n    L,\n    beta,\n    delta,\n    gamma,\n    stopIter,\n    maxIter,\n    splitOnIter,\n    splitOnLast,\n    seed,\n    nchains,\n    yInitialize,\n    countChecksum,\n    yInit,\n    logfile,\n    verbose) {\n\n    .validateCounts(counts)\n\n    if (is.null(seed)) {\n        celdaGMod <- .celda_G(counts = counts,\n            L = L,\n            beta = beta,\n            delta = delta,\n            gamma = gamma,\n            stopIter = stopIter,\n            maxIter = maxIter,\n            splitOnIter = splitOnIter,\n            splitOnLast = splitOnLast,\n            nchains = nchains,\n            yInitialize = yInitialize,\n            countChecksum = countChecksum,\n            yInit = yInit,\n            logfile = logfile,\n            verbose = verbose,\n            reorder = TRUE)\n    } else {\n        with_seed(\n            seed,\n            celdaGMod <- .celda_G(counts = counts,\n                L = L,\n                beta = beta,\n                delta = delta,\n                gamma = gamma,\n                stopIter = stopIter,\n                maxIter = maxIter,\n                splitOnIter = splitOnIter,\n                splitOnLast = splitOnLast,\n                nchains = nchains,\n                yInitialize = yInitialize,\n                countChecksum = countChecksum,\n                yInit = yInit,\n                logfile = logfile,\n                verbose = verbose,\n                reorder = TRUE)\n        )\n    }\n\n    sce <- .createSCEceldaG(celdaGMod = celdaGMod,\n        sce = sce,\n        xClass = xClass,\n        useAssay = useAssay,\n        stopIter = stopIter,\n        maxIter = maxIter,\n        splitOnIter = splitOnIter,\n        splitOnLast = splitOnLast,\n        nchains = nchains,\n        yInitialize = yInitialize,\n        yInit = yInit,\n        logfile = logfile,\n        verbose = verbose)\n    return(sce)\n}\n\n#' @importFrom Matrix colSums\n.celda_G <- function(counts,\n                     L,\n                     beta = 1,\n                     delta = 1,\n                     gamma = 1,\n                     stopIter = 10,\n                     maxIter = 200,\n                     splitOnIter = 10,\n                     splitOnLast = TRUE,\n                     nchains = 3,\n                     yInitialize = c(\"split\", \"random\", \"predefined\"),\n                     countChecksum = NULL,\n                     yInit = NULL,\n                     logfile = NULL,\n                     verbose = TRUE,\n                     reorder = TRUE) {\n  .logMessages(paste(rep(\"-\", 50), collapse = \"\"),\n    logfile = logfile,\n    append = FALSE,\n    verbose = verbose\n  )\n  .logMessages(\"Starting Celda_G: Clustering genes.\",\n    logfile = logfile,\n    append = TRUE,\n    verbose = verbose\n  )\n  .logMessages(paste(rep(\"-\", 50), collapse = \"\"),\n    logfile = logfile,\n    append = TRUE,\n    verbose = verbose\n  )\n  start.time <- Sys.time()\n\n  ## Error checking and variable processing\n  counts <- .processCounts(counts)\n  if (is.null(countChecksum)) {\n    countChecksum <- .createCountChecksum(counts)\n  }\n  yInitialize <- match.arg(yInitialize)\n\n  allChains <- seq(nchains)\n\n  # Pre-compute lgamma values\n  cs <- colSums(counts)\n  lgbeta <- lgamma(seq(0, max(cs)) + beta)\n  lggamma <- lgamma(seq(0, nrow(counts) + L) + gamma)\n  lgdelta <- c(NA, lgamma((seq(nrow(counts) + L) * delta)))\n\n  bestResult <- NULL\n  for (i in allChains) {\n    ## Randomly select y or y to supplied initial values\n    ## Initialize cluster labels\n    .logMessages(date(),\n      \".. Initializing 'y' in chain\",\n      i,\n      \"with\",\n      paste0(\"'\", yInitialize, \"' \"),\n      logfile = logfile,\n      append = TRUE,\n      verbose = verbose\n    )\n\n    if (yInitialize == \"predefined\") {\n      if (is.null(yInit)) {\n        stop(\"'yInit' needs to specified when initilize.y == 'given'.\")\n      }\n      y <- .initializeCluster(L,\n        nrow(counts),\n        initial = yInit,\n        fixed = NULL\n      )\n    } else if (yInitialize == \"split\") {\n      y <- .initializeSplitY(counts,\n        L,\n        beta = beta,\n        delta = delta,\n        gamma = gamma\n      )\n    } else {\n      y <- .initializeCluster(L,\n        nrow(counts),\n        initial = NULL,\n        fixed = NULL\n      )\n    }\n    yBest <- y\n\n    ## Calculate counts one time up front\n    p <- .cGDecomposeCounts(counts = counts, y = y, L = L)\n    nTSByC <- p$nTSByC\n    nByG <- p$nByG\n    nByTS <- p$nByTS\n    nGByTS <- p$nGByTS\n    nM <- p$nM\n    nG <- p$nG\n    rm(p)\n\n    ## Calculate initial log likelihood\n    ll <- .cGCalcLL(\n      nTSByC = nTSByC,\n      nByTS = nByTS,\n      nByG = nByG,\n      nGByTS = nGByTS,\n      nM = nM,\n      nG = nG,\n      L = L,\n      beta = beta,\n      delta = delta,\n      gamma = gamma\n    )\n\n    iter <- 1L\n    numIterWithoutImprovement <- 0L\n    doGeneSplit <- TRUE\n    while (iter <= maxIter & numIterWithoutImprovement <= stopIter) {\n      nextY <- .cGCalcGibbsProbY(\n        counts = counts,\n        nTSByC = nTSByC,\n        nByTS = nByTS,\n        nGByTS = nGByTS,\n        nByG = nByG,\n        y = y,\n        nG = nG,\n        L = L,\n        beta = beta,\n        delta = delta,\n        gamma = gamma,\n        lgbeta = lgbeta,\n        lggamma = lggamma,\n        lgdelta = lgdelta\n      )\n      nTSByC <- nextY$nTSByC\n      nGByTS <- nextY$nGByTS\n      nByTS <- nextY$nByTS\n      y <- nextY$y\n\n      ## Perform split on i-th iteration of no improvement in log\n      ## likelihood\n      tempLl <- .cGCalcLL(\n        nTSByC = nTSByC,\n        nByTS = nByTS,\n        nByG = nByG,\n        nGByTS = nGByTS,\n        nM = nM,\n        nG = nG,\n        L = L,\n        beta = beta,\n        delta = delta,\n        gamma = gamma\n      )\n      if (L > 2 & iter != maxIter &\n        ((((numIterWithoutImprovement == stopIter &\n          !all(tempLl >= ll))) & isTRUE(splitOnLast)) |\n          (splitOnIter > 0 & iter %% splitOnIter == 0 &\n            isTRUE(doGeneSplit)))) {\n        .logMessages(date(),\n          \" .... Determining if any gene clusters should be split.\",\n          logfile = logfile,\n          append = TRUE,\n          sep = \"\",\n          verbose = verbose\n        )\n        res <- .cGSplitY(counts,\n          y,\n          nTSByC,\n          nByTS,\n          nByG,\n          nGByTS,\n          nM,\n          nG,\n          L,\n          beta,\n          delta,\n          gamma,\n          yProb = t(nextY$probs),\n          minFeature = 3,\n          maxClustersToTry = max(L / 2, 10)\n        )\n        .logMessages(res$message,\n          logfile = logfile,\n          append = TRUE,\n          verbose = verbose\n        )\n\n        # Reset convergence counter if a split occured\n        if (!isTRUE(all.equal(y, res$y))) {\n          numIterWithoutImprovement <- 1L\n          doGeneSplit <- TRUE\n        } else {\n          doGeneSplit <- FALSE\n        }\n\n        ## Re-calculate variables\n        y <- res$y\n        nTSByC <- res$nTSByC\n        nByTS <- res$nByTS\n        nGByTS <- res$nGByTS\n      }\n\n      ## Calculate complete likelihood\n      tempLl <- .cGCalcLL(\n        nTSByC = nTSByC,\n        nByTS = nByTS,\n        nByG = nByG,\n        nGByTS = nGByTS,\n        nM = nM,\n        nG = nG,\n        L = L,\n        beta = beta,\n        delta = delta,\n        gamma = gamma\n      )\n      if ((all(tempLl > ll)) | iter == 1) {\n        yBest <- y\n        llBest <- tempLl\n        numIterWithoutImprovement <- 1L\n      } else {\n        numIterWithoutImprovement <- numIterWithoutImprovement + 1L\n      }\n      ll <- c(ll, tempLl)\n\n      .logMessages(date(),\n        \".... Completed iteration:\",\n        iter,\n        \"| logLik:\",\n        tempLl,\n        logfile = logfile,\n        append = TRUE,\n        verbose = verbose\n      )\n      iter <- iter + 1\n    }\n\n    names <- list(row = rownames(counts), column = colnames(counts))\n\n    result <- list(\n      y = yBest,\n      completeLogLik = ll,\n      finalLogLik = llBest,\n      L = L,\n      beta = beta,\n      delta = delta,\n      gamma = gamma,\n      countChecksum = countChecksum,\n      names = names\n    )\n\n    if (is.null(bestResult) ||\n      result$finalLogLik > bestResult$finalLogLik) {\n      bestResult <- result\n    }\n\n    .logMessages(date(),\n      \".. Finished chain\",\n      i,\n      logfile = logfile,\n      append = TRUE,\n      verbose = verbose\n    )\n  }\n\n  bestResult <- methods::new(\"celda_G\",\n    clusters = list(y = yBest),\n    params = list(\n      L = as.integer(L),\n      beta = beta,\n      delta = delta,\n      gamma = gamma,\n      countChecksum = countChecksum\n    ),\n    completeLogLik = ll,\n    finalLogLik = llBest,\n    names = names\n  )\n  if (isTRUE(reorder)) {\n    bestResult <- .reorderCeldaG(counts = counts, res = bestResult)\n  }\n\n  endTime <- Sys.time()\n  .logMessages(paste0(rep(\"-\", 50), collapse = \"\"),\n    logfile = logfile,\n    append = TRUE,\n    verbose = verbose\n  )\n  .logMessages(\"Completed Celda_G. Total time:\",\n    format(difftime(endTime, start.time)),\n    logfile = logfile,\n    append = TRUE,\n    verbose = verbose\n  )\n  .logMessages(paste0(rep(\"-\", 50), collapse = \"\"),\n    logfile = logfile,\n    append = TRUE,\n    verbose = verbose\n  )\n\n  return(bestResult)\n}\n\n\n# Calculate Log Likelihood For Single Set of Cluster Assignments\n# (Gene Clustering)\n# This function calculates the log-likelihood of a given set of cluster\n# assigments for the samples\n# represented in the provided count matrix.\n# @param nTSByC Number of counts in each Transcriptional State per Cell.\n# @param nByTS Number of counts per Transcriptional State.\n# @param nGByTS Number of genes in each Transcriptional State.\n# @param nG.in.Y  Number of genes in each of the cell cluster.\n# @param gamma Numeric. Concentration parameter for Eta. Adds a pseudocount to\n# the number of features in each module. Default 1.\n# @param delta Numeric. Concentration parameter for Psi. Adds a pseudocount to\n# each feature in each module. Default 1.\n# @param beta Numeric. Concentration parameter for Phi. Adds a pseudocount to\n# each feature module in each cell. Default 1.\n# @keywords log likelihood\n.cGCalcGibbsProbY <- function(counts,\n                              nTSByC,\n                              nByTS,\n                              nGByTS,\n                              nByG,\n                              y,\n                              L,\n                              nG,\n                              beta,\n                              delta,\n                              gamma,\n                              lgbeta,\n                              lggamma,\n                              lgdelta,\n                              doSample = TRUE) {\n\n  ## Set variables up front outside of loop\n  probs <- matrix(NA, ncol = nG, nrow = L)\n  ix <- sample(seq(nG))\n  for (i in ix) {\n    probs[, i] <- cG_CalcGibbsProbY(index = i,\n      counts = as.numeric(counts[i, ]),\n      nTSbyC = nTSByC,\n      nbyTS = nByTS,\n      nGbyTS = nGByTS,\n      nbyG = nByG,\n      y = y,\n      L = L,\n      nG = nG,\n      lg_beta = lgbeta,\n      lg_gamma = lggamma,\n      lg_delta = lgdelta,\n      delta = delta\n    )\n    ## Sample next state and add back counts\n    if (isTRUE(doSample)) {\n      prevY <- y[i]\n      y[i] <- .sampleLl(probs[, i])\n\n      if (prevY != y[i]) {\n        nTSByC[prevY, ] <- nTSByC[prevY, ] - counts[i, ]\n        nGByTS[prevY] <- nGByTS[prevY] - 1L\n        nByTS[prevY] <- nByTS[prevY] - nByG[i]\n\n        nTSByC[y[i], ] <- nTSByC[y[i], ] + counts[i, ]\n        nGByTS[y[i]] <- nGByTS[y[i]] + 1L\n        nByTS[y[i]] <- nByTS[y[i]] + nByG[i]\n      }\n    }\n  }\n\n  return(list(\n    nTSByC = nTSByC,\n    nGByTS = nGByTS,\n    nByTS = nByTS,\n    y = y,\n    probs = probs\n  ))\n}\n\n\n# Calculate log-likelihood of celda_CG model\n.cGCalcLL <- function(nTSByC,\n                      nByTS,\n                      nByG,\n                      nGByTS,\n                      nM,\n                      nG,\n                      L,\n                      beta,\n                      delta,\n                      gamma) {\n  nG <- sum(nGByTS)\n\n  ## Calculate for \"Phi\" component\n  a <- nM * lgamma(L * beta)\n  b <- sum(lgamma(nTSByC + beta))\n  c <- -nM * L * lgamma(beta)\n  d <- -sum(lgamma(colSums(nTSByC + beta)))\n\n  phiLl <- a + b + c + d\n\n  ## Calculate for \"Psi\" component\n  a <- sum(lgamma(nGByTS * delta))\n  b <- sum(lgamma(nByG + delta))\n  c <- -nG * lgamma(delta)\n  d <- -sum(lgamma(nByTS + (nGByTS * delta)))\n\n  psiLl <- a + b + c + d\n\n  ## Calculate for \"Eta\" component\n  a <- lgamma(L * gamma)\n  b <- sum(lgamma(nGByTS + gamma))\n  c <- -L * lgamma(gamma)\n  d <- -sum(lgamma(sum(nGByTS + gamma)))\n\n  etaLl <- a + b + c + d\n\n  final <- phiLl + psiLl + etaLl\n  return(final)\n}\n\n\n# Takes raw counts matrix and converts it to a series of matrices needed for\n# log likelihood calculation\n# @param counts Integer matrix. Rows represent features and columns represent\n# cells.\n# @param y Numeric vector. Denotes feature module labels.\n# @param L Integer. Number of feature modules.\n#' @importFrom Matrix rowSums\n.cGDecomposeCounts <- function(counts, y, L) {\n  if (any(y > L)) {\n    stop(\"Assigned value of feature module greater than the total number\",\n        \" of feature modules!\")\n  }\n\n  nTSByC <- .rowSumByGroup(counts, group = y, L = L)\n  nByG <- rowSums(counts)\n  nByTS <- .rowSumByGroup(matrix(nByG, ncol = 1), group = y, L = L)\n  nGByTS <- tabulate(y, L) + 1 ## Add pseudogene to each state\n  nM <- ncol(counts)\n  nG <- nrow(counts)\n\n  return(list(\n    nTSByC = nTSByC,\n    nByG = nByG,\n    nByTS = nByTS,\n    nGByTS = nGByTS,\n    nM = nM,\n    nG = nG\n  ))\n}\n\n\n.cGReDecomposeCounts <- function(counts, y, previousY, nTSByC, nByG, L) {\n  ## Recalculate counts based on new label\n  nTSByC <- .rowSumByGroupChange(counts, nTSByC, y, previousY, L)\n  nByTS <- .rowSumByGroup(matrix(nByG, ncol = 1), group = y, L = L)\n  nGByTS <- tabulate(y, L) + 1\n\n  return(list(\n    nTSByC = nTSByC,\n    nByTS = nByTS,\n    nGByTS = nGByTS\n  ))\n}\n\n\n.prepareCountsForDimReductionCeldaG <- function(sce,\n    useAssay,\n    maxCells,\n    minClusterSize,\n    modules,\n    normalize,\n    scaleFactor,\n    transformationFun) {\n\n    counts <- SummarizedExperiment::assay(sce, i = useAssay)\n    counts <- .processCounts(counts)\n    y <- as.integer(SummarizedExperiment::rowData(sce)$celda_feature_module)\n    L <- S4Vectors::metadata(sce)$celda_parameters$L\n    beta <- S4Vectors::metadata(sce)$celda_parameters$beta\n    delta <- S4Vectors::metadata(sce)$celda_parameters$delta\n    gamma <- S4Vectors::metadata(sce)$celda_parameters$gamma\n    cNames <- colnames(sce)\n    rNames <- rownames(sce)\n\n    if (is.null(maxCells) || maxCells > ncol(counts)) {\n        maxCells <- ncol(counts)\n        cellIx <- seq_len(ncol(counts))\n    } else {\n        cellIx <- sample(seq(ncol(counts)), maxCells)\n    }\n\n    fm <- .factorizeMatrixG(\n        counts = counts,\n        y = y,\n        L = L,\n        beta = beta,\n        delta = delta,\n        gamma = gamma,\n        cNames = cNames,\n        rNames = rNames,\n        type = \"counts\")\n\n    modulesToUse <- seq(nrow(fm$counts$cell))\n    if (!is.null(modules)) {\n        if (!all(modules %in% modulesToUse)) {\n            stop(\n                \"'modules' must be a vector of numbers between 1 and \",\n                modulesToUse,\n                \".\"\n            )\n        }\n        modulesToUse <- modules\n    }\n\n    norm <- t(normalizeCounts(fm$counts$cell[modulesToUse, cellIx],\n        normalize = normalize,\n        scaleFactor = scaleFactor,\n        transformationFun = transformationFun))\n    return(list(norm = norm, cellIx = cellIx))\n}\n\n\n.createSCEceldaG <- function(celdaGMod,\n    sce,\n    xClass,\n    useAssay,\n    stopIter,\n    maxIter,\n    splitOnIter,\n    splitOnLast,\n    nchains,\n    yInitialize,\n    yInit,\n    logfile,\n    verbose) {\n\n    # add metadata\n    S4Vectors::metadata(sce)[[\"celda_parameters\"]] <- list(\n        model = \"celda_G\",\n        xClass = xClass,\n        useAssay = useAssay,\n        L = celdaGMod@params$L,\n        beta = celdaGMod@params$beta,\n        delta = celdaGMod@params$delta,\n        gamma = celdaGMod@params$gamma,\n        stopIter = stopIter,\n        maxIter = maxIter,\n        splitOnIter = splitOnIter,\n        splitOnLast = splitOnLast,\n        seed = celdaGMod@params$seed,\n        nchains = nchains,\n        yInitialize = yInitialize,\n        countChecksum = celdaGMod@params$countChecksum,\n        yInit = yInit,\n        logfile = logfile,\n        verbose = verbose,\n        completeLogLik = celdaGMod@completeLogLik,\n        finalLogLik = celdaGMod@finalLogLik,\n        featureModuleLevels = sort(unique(celdaClusters(celdaGMod)$y)))\n\n    SummarizedExperiment::rowData(sce)[\"rownames\"] <- celdaGMod@names$row\n    SummarizedExperiment::colData(sce)[\"colnames\"] <-\n        celdaGMod@names$column\n    SummarizedExperiment::rowData(sce)[\"celda_feature_module\"] <-\n        as.factor(celdaClusters(celdaGMod)$y)\n\n    return(sce)\n}\n"
  },
  {
    "path": "R/celda_functions.R",
    "content": ".sampleLl <- function(llProbs) {\n  probsSub <- exp(llProbs - max(llProbs))\n  probsNorm <- probsSub / sum(probsSub)\n  probsSelect <- sample.int(\n    length(probsNorm),\n    size = 1L,\n    replace = TRUE,\n    prob = probsNorm\n  )\n  return(probsSelect)\n}\n\n\n.cosineDist <- function(x) {\n  x <- t(x)\n  y <- (1 - .cosine(x)) / 2\n  return(stats::as.dist(y))\n}\n\n\n.cosine <- function(x) {\n  y <- x %*% t(x) / (sqrt(rowSums(x^2) %*% t(rowSums(x^2))))\n  return(y)\n}\n\n\n.spearmanDist <- function(x) {\n  y <- (1 - stats::cor(x, method = \"spearman\")) / 2\n  return(stats::as.dist(y))\n}\n\n\n.hellingerDist <- function(x) {\n  y <- stats::dist(t(sqrt(x)), method = \"euclidean\") * 1 / sqrt(2)\n  return(y)\n}\n\n\n.normalizeLogProbs <- function(llProbs) {\n  llProbs <- exp(sweep(llProbs, 1, base::apply(llProbs, 1, max), \"-\"))\n  probs <- sweep(llProbs, 1, rowSums(llProbs), \"/\")\n  return(probs)\n}\n\n\n#' @title Normalization of count data\n#' @description Performs normalization, transformation, and/or scaling of a\n#'  counts matrix\n#' @param counts Integer, Numeric or Sparse matrix. Rows represent features\n#' and columns represent cells.\n#' @param normalize Character.\n#'  Divides counts by the library sizes for each cell. One of 'proportion',\n#'  'cpm', 'median', or 'mean'. 'proportion' uses the total counts for each\n#'  cell as the library size. 'cpm' divides the library size of each cell by\n#'  one million to produce counts per million. 'median' divides the library\n#'  size of each cell by the median library size across all cells. 'mean'\n#'  divides the library size of each cell by the mean library size across all\n#'  cells.\n#' @param scaleFactor Numeric. Sets the scale factor for cell-level\n#'  normalization. This scale factor is multiplied to each cell after the\n#'  library size of each cell had been adjusted in \\code{normalize}. Default\n#'  \\code{NULL} which means no scale factor is applied.\n#' @param transformationFun Function. Applys a transformation such as\n#'  \\link{sqrt}, \\link{log}, \\link{log2}, \\link{log10}, or \\link{log1p}.\n#'  If NULL, no transformation will be applied. Occurs after normalization.\n#'  Default NULL.\n#' @param scaleFun Function. Scales the rows of the normalized and transformed\n#'  count matrix. For example, 'scale' can be used to z-score normalize the\n#'  rows. Default NULL.\n#' @param pseudocountNormalize Numeric. Add a pseudocount to counts before\n#'  normalization. Default 0.\n#' @param pseudocountTransform Numeric. Add a pseudocount to normalized counts\n#'  before applying the transformation function. Adding a pseudocount\n#'  can be useful before applying a log transformation. Default  0.\n#' @return Numeric Matrix. A normalized matrix.\n#' @examples\n#' data(celdaCGSim)\n#' normalizedCounts <- normalizeCounts(celdaCGSim$counts, \"proportion\",\n#'   pseudocountNormalize = 1)\n#' @importFrom Matrix colSums\n#' @export\nnormalizeCounts <- function(counts,\n                            normalize = c(\"proportion\", \"cpm\",\n                              \"median\", \"mean\"),\n                            scaleFactor = NULL,\n                            transformationFun = NULL,\n                            scaleFun = NULL,\n                            pseudocountNormalize = 0,\n                            pseudocountTransform = 0) {\n\n  normalize <- match.arg(normalize)\n\n  if (!is.null(transformationFun) &&\n    !is.function(transformationFun)) {\n    stop(\"'transformationFun' needs to be of class 'function'\")\n  }\n  if (!is.null(scaleFun) && !is.function(scaleFun)) {\n    stop(\"'scaleFun' needs to be of class 'function'\")\n  }\n  # Perform normalization\n  if (normalize == \"proportion\" & inherits(counts, \"matrix\")) {\n    norm <- fastNormProp(counts, pseudocountNormalize)\n  } else {\n    counts <- counts + pseudocountNormalize\n    cs <- colSums(counts)\n    norm <- switch(\n      normalize,\n      \"proportion\" = sweep(counts, 2, cs, \"/\"),\n      \"cpm\" = sweep(counts, 2, cs / 1e6, \"/\"),\n      \"median\" = sweep(counts, 2, cs / stats::median(cs), \"/\"),\n      \"mean\" = sweep(counts, 2, cs / mean(cs), \"/\")\n    )\n  }\n\n  if (!is.null(scaleFactor)) {\n      norm <- norm * scaleFactor\n  }\n\n  if (!is.null(transformationFun)) {\n    norm <- do.call(\n      transformationFun,\n      list(norm + pseudocountTransform)\n    )\n  }\n  if (!is.null(scaleFun)) {\n    norm <- t(base::apply(norm, 1, scaleFun))\n  }\n  colnames(norm) <- colnames(counts)\n  rownames(norm) <- rownames(counts)\n  return(norm)\n}\n\n\n#' @title Recode cell cluster labels\n#' @description Recode cell subpopulaton clusters using a mapping in the\n#'  \\code{from} and \\code{to} arguments.\n#' @param sce \\linkS4class{SingleCellExperiment} object returned from\n#'  \\link{celda_C} or \\link{celda_CG}. Must contain column\n#'  \\code{celda_cell_cluster} in\n#'  \\code{\\link{colData}(altExp(sce, altExpName))}.\n#' @param from Numeric vector. Unique values in the range of\n#'  \\code{seq(max(as.integer(celdaClusters(sce, altExpName = altExpName))))}\n#'  that correspond to the original cluster\n#'  labels in \\code{sce}.\n#' @param to Numeric vector. Unique values in the range of\n#'  \\code{seq(max(as.integer(celdaClusters(sce, altExpName = altExpName))))}\n#'  that correspond to the new cluster labels.\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @return \\linkS4class{SingleCellExperiment} object with recoded cell\n#'  cluster labels.\n#' @examples\n#' data(sceCeldaCG)\n#' sceReorderedZ <- recodeClusterZ(sceCeldaCG, c(1, 3), c(3, 1))\n#' @importFrom plyr mapvalues\n#' @export\nrecodeClusterZ <- function(sce, from, to, altExpName = \"featureSubset\") {\n    if (length(setdiff(from, to)) != 0) {\n        stop(\"All values in 'from' must have a mapping in 'to'\")\n    }\n    if (is.null(celdaClusters(sce, altExpName = altExpName))) {\n        stop(\"Provided 'sce' argument does not have a 'celda_cell_cluster'\",\n            \" column in 'colData(altExp(sce, altExpName))'\")\n    }\n    z <- as.integer(celdaClusters(sce, altExpName = altExpName))\n    new.clusters <- plyr::mapvalues(z,\n                                    from = from, to = to)\n    new.clusters <- factor(new.clusters, levels =\n                             sort(as.numeric(unique(new.clusters))))\n\n    celdaClusters(sce, altExpName = altExpName) <- new.clusters\n    return(sce)\n}\n\n\n# for deprecated celda model objects\n.recodeClusterZ <- function(celdaMod, from, to) {\n    if (length(setdiff(from, to)) != 0) {\n        stop(\"All values in 'from' must have a mapping in 'to'\")\n    }\n    if (is.null(celdaClusters(celdaMod)$z)) {\n        stop(\"Provided celdaMod argument does not have a z attribute\")\n    }\n    z <- as.integer(celdaClusters(celdaMod)$z)\n    new.clusters <- plyr::mapvalues(z, from = from, to = to)\n    new.clusters <- factor(new.clusters, levels =\n                             sort(as.numeric(unique(new.clusters))))\n    \n    celdaMod@clusters$z <- new.clusters\n    return(celdaMod)\n}\n\n\n#' @title Recode feature module labels\n#' @description Recode feature module clusters using a mapping in the\n#'  \\code{from} and \\code{to} arguments.\n#' @param sce \\linkS4class{SingleCellExperiment} object returned from\n#'  \\link{celda_G} or \\link{celda_CG}. Must contain column\n#'  \\code{celda_feature_module} in\n#'  \\code{\\link{rowData}(altExp(sce, altExpName))}.\n#' @param from Numeric vector. Unique values in the range of\n#'  \\code{seq(celdaModules(sce))} that correspond to the original module labels\n#'  in \\code{sce}.\n#' @param to Numeric vector. Unique values in the range of\n#'  \\code{seq(celdaModules(sce))} that correspond to the new module labels.\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @return @return \\linkS4class{SingleCellExperiment} object with recoded\n#'  feature module labels.\n#' @examples\n#' data(sceCeldaCG)\n#' sceReorderedY <- recodeClusterY(sceCeldaCG, c(1, 3), c(3, 1))\n#' @export\nrecodeClusterY <- function(sce, from, to, altExpName = \"featureSubset\") {\n    if (length(setdiff(from, to)) != 0) {\n        stop(\"All values in 'from' must have a mapping in 'to'\")\n    }\n    if (is.null(celdaModules(sce, altExpName = altExpName))) {\n        stop(\"Provided 'sce' argument does not have a 'celda_feature_module'\",\n            \" column in 'rowData(altExp(sce, altExpName))'\")\n    }\n    y <- as.integer(celdaModules(sce, altExpName = altExpName))\n    new.clusters <- plyr::mapvalues(y, from = from, to = to)\n    new.clusters <- factor(new.clusters, levels =\n                             sort(as.numeric(unique(new.clusters))))\n    \n    celdaModules(sce, altExpName = altExpName) <- new.clusters\n    return(sce)\n}\n\n\n# for deprecated celda model objects\n.recodeClusterY <- function(celdaMod, from, to) {\n    if (length(setdiff(from, to)) != 0) {\n        stop(\"All values in 'from' must have a mapping in 'to'\")\n    }\n    if (is.null(celdaClusters(celdaMod)$y)) {\n        stop(\"Provided celdaMod argument does not have a y attribute\")\n    }\n    y <- as.integer(celdaClusters(celdaMod)$y)\n    \n    new.clusters <- plyr::mapvalues(y, from = from, to = to)\n    new.clusters <- factor(new.clusters, levels =\n                             sort(as.numeric(unique(new.clusters))))\n    \n    celdaMod@clusters$y <- new.clusters\n    return(celdaMod)\n}\n\n\n#' @title Check count matrix consistency\n#' @description Checks if the counts matrix is the same one used to generate\n#'  the celda model object by comparing dimensions and MD5 checksum.\n#' @param counts Integer , Numeric, or Sparse matrix. Rows represent features\n#' and columns represent cells.\n#' @param celdaMod A \\code{celdaModel} or \\code{celdaList} object.\n#' @param errorOnMismatch Logical. Whether to throw an error in the event of\n#'  a mismatch. Default TRUE.\n#' @return Returns TRUE if provided count matrix matches the one used in the\n#'  celda object and/or \\code{errorOnMismatch = FALSE}, FALSE otherwise.\n#' @export\nsetGeneric(\"compareCountMatrix\",\n    function(counts, celdaMod, errorOnMismatch = TRUE) {\n        standardGeneric(\"compareCountMatrix\")})\n\n\n#' @rdname compareCountMatrix\n#' @examples\n#' data(celdaCGSim, celdaCGMod)\n#' compareCountMatrix(celdaCGSim$counts, celdaCGMod, errorOnMismatch = FALSE)\n#' @export\nsetMethod(\"compareCountMatrix\",\n    signature(celdaMod = \"celdaModel\"),\n    function(counts, celdaMod, errorOnMismatch = TRUE) {\n\n        if (\"y\" %in% names(celdaClusters(celdaMod))) {\n            if (nrow(counts) != length(celdaClusters(celdaMod)$y)) {\n                stop(\n                    \"The provided celda object was generated from a counts\",\n                    \" matrix with a different number of features than the one\",\n                    \" provided.\"\n                )\n            }\n        }\n\n        if (\"z\" %in% names(celdaClusters(celdaMod))) {\n            if (ncol(counts) != length(celdaClusters(celdaMod)$z)) {\n                stop(\n                    \"The provided celda object was generated from a counts\",\n                    \" matrix with a different number of cells than the one\",\n                    \" provided.\"\n                )\n            }\n        }\n        celdaChecksum <- params(celdaMod)$countChecksum\n        counts <- .processCounts(counts)\n\n        # Checksums are generated in celdaGridSearch and model after processing\n        count.md5 <- .createCountChecksum(counts)\n        res <- isTRUE(count.md5 == celdaChecksum)\n        if (res) {\n            return(TRUE)\n        }\n        if (!res && errorOnMismatch) {\n            stop(\n                \"There was a mismatch between the provided count matrix and\",\n                \" the count matrix used to generate the provided celda result.\"\n            )\n        } else if (!res && !errorOnMismatch) {\n            warning(\"There was a mismatch between the provided count matrix\",\n                \" and the count matrix used to generate the provided celda\",\n                \" result.\")\n            return(FALSE)\n        }\n    }\n)\n\n\n#' @rdname compareCountMatrix\n#' @examples\n#' data(celdaCGSim, celdaCGGridSearchRes)\n#' compareCountMatrix(celdaCGSim$counts, celdaCGGridSearchRes,\n#'     errorOnMismatch = FALSE)\n#' @export\nsetMethod(\"compareCountMatrix\",\n    signature(celdaMod = \"celdaList\"),\n    function(counts, celdaMod, errorOnMismatch = TRUE) {\n\n        if (\"y\" %in% names(celdaMod@resList[[1]]@clusters)) {\n            if (nrow(counts) != length(celdaMod@resList[[1]]@clusters$y)) {\n                stop(\n                    \"The provided celda object was generated from a counts\",\n                    \" matrix with a different number of features than the one\",\n                    \" provided.\"\n                )\n            }\n        }\n\n        if (\"z\" %in% names(celdaMod@resList[[1]]@clusters)) {\n            if (ncol(counts) != length(celdaMod@resList[[1]]@clusters$z)) {\n                stop(\n                    \"The provided celda object was generated from a counts\",\n                    \" matrix with a different number of cells than the one\",\n                    \" provided.\"\n                )\n            }\n        }\n        celdaChecksum <- celdaMod@countChecksum\n        counts <- .processCounts(counts)\n\n        # Checksums are generated in celdaGridSearch and model after processing\n        count.md5 <- .createCountChecksum(counts)\n        res <- isTRUE(count.md5 == celdaChecksum)\n        if (res) {\n            return(TRUE)\n        }\n        if (!res && errorOnMismatch) {\n            stop(\n                \"There was a mismatch between the provided count matrix and\",\n                \" the count matrix used to generate the provided celda result.\"\n            )\n        } else if (!res && !errorOnMismatch) {\n            warning(\"There was a mismatch between the provided count matrix\",\n                \" and the count matrix used to generate the provided celda\",\n                \" result.\")\n            return(FALSE)\n        }\n    }\n)\n\n\n.logMessages <- function(...,\n                         sep = \" \",\n                         logfile = NULL,\n                         append = FALSE,\n                         verbose = TRUE) {\n  if (isTRUE(verbose)) {\n    if (!is.null(logfile)) {\n      if (!is.character(logfile) || length(logfile) > 1) {\n        stop(\n          \"The log file parameter needs to be a single character\",\n          \" string.\"\n        )\n      }\n      cat(paste(..., \"\\n\", sep = sep),\n        file = logfile,\n        append = append\n      )\n    } else {\n      message(paste(..., sep = sep))\n    }\n  }\n}\n\n\n#' @title Create a color palette\n#' @description Generate a palette of `n` distinct colors.\n#' @param n Integer. Number of colors to generate.\n#' @param hues Character vector. Colors available from `colors()`. These will\n#'  be used as the base colors for the clustering scheme in HSV. Different\n#'  saturations and values will be generated for each hue. Default c(\"red\",\n#'  \"cyan\", \"orange\", \"blue\", \"yellow\", \"purple\", \"green\", \"magenta\").\n#' @param saturationRange Numeric vector. A vector of length 2 denoting the\n#'  saturation for HSV. Values must be in [0,1]. Default: c(0.25, 1).\n#' @param valueRange Numeric vector. A vector of length 2 denoting the range\n#'  of values for HSV. Values must be in [0,1]. Default: `c(0.5, 1)`.\n#' @return A vector of distinct colors that have been converted to HEX from HSV.\n#' @examples\n#' colorPal <- distinctColors(6) # can be used in plotting functions\n#' @importFrom grDevices colors\n#' @importFrom grDevices rgb2hsv\n#' @importFrom grDevices hsv\n#' @export\ndistinctColors <- function(n,\n                           hues = c(\n                             \"red\",\n                             \"cyan\",\n                             \"orange\",\n                             \"blue\",\n                             \"yellow\",\n                             \"purple\",\n                             \"green\",\n                             \"magenta\"\n                           ),\n                           saturationRange = c(0.7, 1),\n                           valueRange = c(0.7, 1)) {\n  if (!(all(hues %in% grDevices::colors()))) {\n    stop(\n      \"Only color names listed in the 'color' function can be used in\",\n      \" 'hues'\"\n    )\n  }\n  # Convert R colors to RGB and then to HSV color format\n  huesHsv <- grDevices::rgb2hsv(grDevices::col2rgb(hues))\n  # Calculate all combination of saturation/value pairs\n  # Note that low saturation with low value (i.e. high darkness) is too dark\n  # for all hues. Likewise, high saturation with high value (i.e. low\n  # darkness) is hard to distinguish. Therefore, saturation and value are\n  # set to be anticorrelated\n  numVs <- ceiling(n / length(hues))\n  s <- seq(\n    from = saturationRange[1],\n    to = saturationRange[2],\n    length = numVs\n  )\n  v <- seq(\n    from = valueRange[2],\n    to = valueRange[1],\n    length = numVs\n  )\n  # Create all combination of hues with saturation/value pairs\n  list <- lapply(seq(numVs), function(x) {\n    rbind(huesHsv[1, ], s[x], v[x])\n  })\n  newHsv <- do.call(cbind, list)\n  # Convert to hex\n  col <- grDevices::hsv(newHsv[1, ], newHsv[2, ], newHsv[3, ])\n  return(col[seq(n)])\n}\n\n\n.processCounts <- function(counts) {\n  if (!((inherits(counts, \"matrix\") &\n        (is.integer(counts) | is.numeric(counts))) |\n     inherits(counts, \"dgCMatrix\"))) {\n    stop(\"'counts' must be a sparse dgCMatrix \",\n         \"from the 'Matrix' package or a matrix containing integer or numeric \",\n         \"values.\")\n  }\n  return(counts)\n}\n\n\n# Perform some simple checks on the counts matrix, to ensure celda modeling\n# expectations are met\n#' @importFrom Matrix rowSums colSums\n.validateCounts <- function(counts) {\n  countRowSum <- rowSums(counts)\n  countColSum <- colSums(counts)\n\n  if (sum(countRowSum == 0) > 0 | sum(countColSum == 0) > 0) {\n    stop(\n      \"Each row and column of the count matrix must have at least\",\n      \" one count\"\n    )\n  }\n}\n\n\n# Wrapper function, creates checksum for matrix.\n# Feature names, cell names are not taken into account.\n#' @importFrom digest digest\n.createCountChecksum <- function(counts) {\n  rownames(counts) <- NULL\n  colnames(counts) <- NULL\n  countChecksum <- digest::digest(counts, algo = \"md5\")\n  return(countChecksum)\n}\n\n\n# Generate n random deviates from the Dirichlet function with shape parameters\n# alpha. Adapted from gtools v3.5\n.rdirichlet <- function(n, alpha) {\n  l <- length(alpha)\n  x <- matrix(stats::rgamma(l * n, alpha),\n    ncol = l,\n    byrow = TRUE\n  )\n  # Check for case where all sampled entries are zero due to round off\n  # One entry will be randomly chosen to be one\n  isZero <- rowSums(x) == 0\n  assignment <- sample(seq(l), size = sum(isZero), replace = TRUE)\n  x[cbind(which(isZero), assignment)] <- 1\n  # Normalize\n  sm <- x %*% rep(1, l)\n  y <- x / as.vector(sm)\n  return(y)\n}\n\n\n# Make sure provided sample labels are the right type,\n# or generate some if none were provided\n.processSampleLabels <- function(sampleLabel, numCells) {\n  if (is.null(sampleLabel)) {\n    sampleLabel <- as.factor(rep(\"Sample_1\", numCells))\n  } else {\n    if (length(sampleLabel) != numCells) {\n      stop(\n        \"'sampleLabel' must be the same length as the number of\",\n        \" columns in the 'counts' matrix.\"\n      )\n    }\n  }\n\n  if (!is.factor(sampleLabel)) {\n    sampleLabel <- as.factor(sampleLabel)\n  }\n  return(sampleLabel)\n}\n\n\n#' @title Output a feature module table\n#' @description Creates a table that contains the list of features in\n#'  each feature module.\n#' @param sce A \\linkS4class{SingleCellExperiment} object returned by\n#'  \\link{celda_G}, or \\link{celda_CG}, with the matrix\n#'  located in the \\code{useAssay} assay slot.\n#'  Rows represent features and columns represent cells.\n#' @param useAssay A string specifying which \\link{assay}\n#'  slot to use. Default \"counts\".\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @param displayName Character. The column name of\n#'  \\code{rowData(sce)} that specifies the display names for\n#'  the features. Default \\code{NULL}, which displays the row names.\n#' @param outputFile File name for feature module table. If NULL, file will\n#'  not be created. Default NULL.\n#' @return Matrix. Contains a list of features per each column (feature module)\n#' @examples\n#' data(sceCeldaCG)\n#' featureModuleTable(sceCeldaCG)\n#' @export\nfeatureModuleTable <- function(sce,\n    useAssay = \"counts\",\n    altExpName = \"featureSubset\",\n    displayName = NULL,\n    outputFile = NULL) {\n\n  factorizeMatrix <- factorizeMatrix(sce,\n      useAssay = useAssay,\n      altExpName = altExpName,\n      type = \"proportion\")\n  altExp <- SingleCellExperiment::altExp(sce, altExpName)\n\n  allGenes <- topRank(factorizeMatrix$proportions$module, n = nrow(altExp))\n  maxlen <- max(vapply(allGenes$names, length, integer(1)))\n\n  if (is.null(displayName)) {\n      res <- vapply(allGenes$names,\n          FUN = \"[\",\n          FUN.VALUE = character(length = maxlen),\n          seq(maxlen))\n  } else {\n      dn <- lapply(allGenes$index,\n          FUN = function(v) {\n            SummarizedExperiment::rowData(altExp)[[displayName]][v]\n          })\n      res <- vapply(dn,\n          FUN = \"[\",\n          FUN.VALUE = character(length = maxlen),\n          seq(maxlen))\n  }\n\n  res <- apply(res, c(1, 2), function(x) {\n    if (is.na(x)) {\n      return(\"\")\n    } else {\n      return(x)\n    }\n  })\n\n  if (is.null(outputFile)) {\n    return(res)\n  } else {\n    utils::write.table(\n      res,\n      file = outputFile,\n      sep = \"\\t\",\n      row.names = FALSE,\n      quote = FALSE\n    )\n  }\n}\n\n\n#' @title Retrieve row index for a set of features\n#' @description This will return indices of features among the rownames\n#' or rowData of a data.frame, matrix, or a \\linkS4class{SummarizedExperiment}\n#' object including a \\linkS4class{SingleCellExperiment}.\n#' Partial matching (i.e. grepping) can be used by setting\n#' \\code{exactMatch = FALSE}.\n#' @param features Character vector of feature names to find in the rows of\n#' \\code{x}.\n#' @param x A data.frame, matrix, or \\linkS4class{SingleCellExperiment}\n#' object to search.\n#' @param by Character. Where to search for features in \\code{x}. If set to\n#' \\code{\"rownames\"} then the features will be searched for among\n#' \\code{rownames(x)}. If \\code{x} inherits from class\n#' \\linkS4class{SummarizedExperiment}, then \\code{by} can be one of the\n#' fields in the row annotation data.frame (i.e. one of\n#' \\code{colnames(rowData(x))}).\n#' @param exactMatch Boolean. Whether to only identify exact matches\n#' or to identify partial matches using \\code{\\link{grep}}.\n#' @param removeNA Boolean. If set to \\code{FALSE}, features not found in\n#' \\code{x} will be given \\code{NA} and the returned vector will be the same\n#' length as \\code{features}. If set to \\code{TRUE}, then the \\code{NA}\n#' values will be removed from the returned vector. Default \\code{FALSE}.\n#' @return A vector of row indices for the matching features in \\code{x}.\n#' @author Yusuke Koga, Joshua Campbell\n#' @seealso '\\link[scater]{retrieveFeatureInfo}' from package \\code{'scater'}\n#' and \\code{link{regex}} for how to use regular expressions when\n#' \\code{exactMatch = FALSE}.\n#' @examples\n#' data(celdaCGSim)\n#' retrieveFeatureIndex(c(\"Gene_1\", \"Gene_5\"), celdaCGSim$counts)\n#' retrieveFeatureIndex(c(\"Gene_1\", \"Gene_5\"), celdaCGSim$counts,\n#'                                             exactMatch = FALSE)\n#' @export\nretrieveFeatureIndex <- function(features,\n                                 x,\n                                 by = \"rownames\",\n                                 exactMatch = TRUE,\n                                 removeNA = FALSE) {\n\n  # Extract vector to search through\n  if (by == \"rownames\") {\n    if (is.null(rownames(x))) {\n      stop(\"'rownames' of 'x' are 'NULL'. Please set 'rownames' or change\",\n           \" 'by' to search a different column in 'x'.\")\n    }\n    search <- rownames(x)\n  } else if (length(ncol(x)) > 0) {\n    if (inherits(x, \"SummarizedExperiment\")) {\n      if (!(by %in% colnames(SummarizedExperiment::rowData(x)))) {\n        stop(\"'by' is not a column in 'rowData(x)'.\")\n      }\n      search <- SummarizedExperiment::rowData(x)[, by]\n    } else {\n      if (!(by %in% colnames(x))) {\n        stop(\"'by' is not a column in 'x'.\")\n      }\n      search <- x[, by]\n    }\n  } else {\n    search <- as.character(x)\n  }\n\n  # Match each element of 'pattern' in vector 'search'\n  if (!isTRUE(exactMatch)) {\n    featuresIndices <- rep(NA, length(features))\n    for (i in seq_along(features)) {\n      g <- grep(features[i], search)\n      if (length(g) == 1) {\n        featuresIndices[i] <- g\n      } else if (length(g) > 1) {\n        warning(\n          \"Feature '\", features[i], \"' matched multiple items in '\",\n          by, \"': \", paste(search[g], collapse = \",\"),\n          \". Only the first match will be selected.\"\n        )\n        featuresIndices[i] <- g[1]\n      }\n    }\n  } else {\n    featuresIndices <- match(features, search)\n  }\n\n  if (sum(is.na(featuresIndices)) > 0) {\n    if (sum(is.na(featuresIndices)) == length(features)) {\n      if (isTRUE(exactMatch)) {\n        stop(\n          \"None of the provided features had matching\",\n          \" items in '\", by, \"' within 'x'. \",\n          \"Check the spelling or try setting\",\n          \" 'exactMatch = FALSE'.\"\n        )\n      } else {\n        stop(\n          \"None of the provided features had matching\",\n          \" items in '\", by, \"' within 'x'. \",\n          \"Check the spelling and make sure 'by' is set\",\n          \" to the appropriate place in 'x'.\"\n        )\n      }\n    }\n    warning(\n      \"The following features were not present in 'x': \",\n      paste(features[which(is.na(featuresIndices))],\n        collapse = \",\"\n      )\n    )\n  }\n\n  if (isTRUE(removeNA)) {\n    featuresIndices <- featuresIndices[!is.na(featuresIndices)]\n  }\n  return(featuresIndices)\n}\n"
  },
  {
    "path": "R/celda_heatmap.R",
    "content": "#' @title Plot celda Heatmap\n#' @description Render a stylable heatmap of count data based on celda\n#'  clustering results.\n#' @param sce A \\link[SingleCellExperiment]{SingleCellExperiment} object\n#'  returned by \\link{celda_C}, \\link{celda_G}, or \\link{celda_CG}.\n#' @param useAssay A string specifying which \\link{assay}\n#'  slot to use. Default \"counts\".\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @param featureIx Integer vector. Select features for display in heatmap. If\n#'  NULL, no subsetting will be performed. Default NULL. \\strong{Only used for\n#'  \\code{sce} containing celda_C model result returned by \\link{celda_C}.}\n#' @param nfeatures Integer. Maximum number of features to select for each\n#'  gene module. Default 25. \\strong{Only used for \\code{sce} containing\n#'  celda_CG or celda_G model results returned by \\link{celda_CG} or\n#'  \\link{celda_G}.}\n#' @param ... Additional parameters passed to \\link{plotHeatmap}.\n#' @seealso `celdaTsne()` for generating 2-dimensional tSNE coordinates\n#' @return list A list containing dendrogram information and the heatmap grob\n#' @export\nsetGeneric(\"celdaHeatmap\",\n    function(sce,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        featureIx = NULL,\n        nfeatures = 25,\n        ...) {\n\n        standardGeneric(\"celdaHeatmap\")\n    })\n\n\n#' @rdname celdaHeatmap\n#' @examples\n#' data(sceCeldaCG)\n#' celdaHeatmap(sceCeldaCG)\n#' @export\nsetMethod(\"celdaHeatmap\", signature(sce = \"SingleCellExperiment\"),\n    function(sce, useAssay = \"counts\", altExpName = \"featureSubset\",\n        featureIx = NULL, nfeatures = 25, ...) {\n\n        counts <- SummarizedExperiment::assay(sce, i = useAssay)\n        counts <- .processCounts(counts)\n        model <- celdaModel(sce, altExpName = altExpName)\n\n        if (model == \"celda_C\") {\n            z <- as.integer(celdaClusters(sce, altExpName = altExpName))\n            g <- .celdaHeatmapCelda_C(\n                counts = counts,\n                z = z,\n                featureIx = featureIx,\n                ...)\n        } else if (model == \"celda_CG\") {\n            fm <- factorizeMatrix(x = sce, useAssay = useAssay,\n                altExpName = altExpName, type = \"proportion\")\n            z <- as.integer(celdaClusters(sce, altExpName = altExpName))\n            y <- as.integer(celdaModules(sce, altExpName = altExpName))\n            g <- .celdaHeatmapCelda_CG(\n                counts = counts,\n                fm = fm,\n                z = z,\n                y = y,\n                nfeatures = nfeatures,\n                ...)\n        } else if (model == \"celda_G\") {\n            fm <- factorizeMatrix(x = sce, useAssay = useAssay,\n                altExpName = altExpName, type = \"proportion\")\n            y <- as.integer(celdaModules(sce, altExpName = altExpName))\n            g <- .celdaHeatmapCelda_G(counts,\n                fm,\n                y,\n                nfeatures = nfeatures,\n                ...)\n        } else {\n            stop(\"S4Vectors::metadata(altExp(sce, altExpName))$\",\n                \"celda_parameters$model must be\",\n                \" one of 'celda_C', 'celda_G', or 'celda_CG'\")\n        }\n        return(g)\n    }\n)\n\n\n.celdaHeatmapCelda_C <- function(\n    counts,\n    z,\n    featureIx, ...) {\n\n    norm <- normalizeCounts(counts,\n        normalize = \"proportion\",\n        transformationFun = sqrt)\n\n    if (is.null(featureIx)) {\n        return(plotHeatmap(norm, z, ...))\n    }\n    return(plotHeatmap(norm[featureIx, ], z = z, ...))\n}\n\n\n.celdaHeatmapCelda_CG <- function(\n    counts = counts,\n    fm = fm,\n    z = z,\n    y = y,\n    nfeatures,\n    ...) {\n\n    top <- topRank(fm$proportions$module, n = nfeatures)\n    ix <- unlist(top$index)\n    rn <- unlist(top$names)\n    norm <- normalizeCounts(counts,\n        normalize = \"proportion\",\n        transformationFun = sqrt)\n    plt <- plotHeatmap(norm[rn, ],\n        z = z,\n        y = y[ix],\n        ...)\n    return(plt)\n}\n\n\n.celdaHeatmapCelda_G <- function(counts, fm, y, nfeatures, ...) {\n    top <- topRank(fm$proportions$module, n = nfeatures)\n    ix <- unlist(top$index)\n    rn <- unlist(top$names)\n    norm <- normalizeCounts(counts,\n        normalize = \"proportion\",\n        transformationFun = sqrt)\n    plt <- plotHeatmap(norm[rn, ], y = y[ix], ...)\n    return(plt)\n}\n"
  },
  {
    "path": "R/celdatSNE.R",
    "content": "#' @title t-Distributed Stochastic Neighbor Embedding (t-SNE) dimension\n#'  reduction for celda \\code{sce} object\n#' @description Embeds cells in two dimensions using \\link[Rtsne]{Rtsne} based\n#'  on a celda model. For celda_C \\code{sce} objects, PCA on the normalized\n#'  counts is used to reduce the number of features before applying t-SNE. For\n#'  celda_CG and celda_G \\code{sce} objects, tSNE is run on module\n#'  probabilities to reduce the number of features instead of using PCA.\n#'  Module probabilities are square-root transformed before applying tSNE.\n#' @param sce A \\linkS4class{SingleCellExperiment} object\n#'  returned by \\link{celda_C}, \\link{celda_G}, or \\link{celda_CG}.\n#' @param useAssay A string specifying which \\link{assay}\n#'  slot to use. Default \"counts\".\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @param maxCells Integer. Maximum number of cells to plot. Cells will be\n#'  randomly subsampled if \\code{ncol(counts) > maxCells}. Larger numbers of\n#'  cells requires more memory. If \\code{NULL}, no subsampling will be\n#'  performed. Default \\code{NULL}.\n#' @param minClusterSize Integer. Do not subsample cell clusters below this\n#'  threshold. Default 100.\n#' @param initialDims Integer. PCA will be used to reduce the dimensionality\n#'  of the dataset. The top 'initialDims' principal components will be used\n#'  for tSNE. Default 20.\n#' @param modules Integer vector. Determines which feature modules to use for\n#'  tSNE. If \\code{NULL}, all modules will be used. Default \\code{NULL}.\n#' @param perplexity Numeric. Perplexity parameter for tSNE. Default 20.\n#' @param maxIter Integer. Maximum number of iterations in tSNE generation.\n#'  Default 2500.\n#' @param normalize Character. Passed to \\link{normalizeCounts} in\n#'  normalization step. Divides counts by the library sizes for each\n#'  cell. One of 'proportion', 'cpm', 'median', or 'mean'. 'proportion' uses\n#'  the total counts for each cell as the library size. 'cpm' divides the\n#'  library size of each cell by one million to produce counts per million.\n#'  'median' divides the library size of each cell by the median library size\n#'  across all cells. 'mean' divides the library size of each cell by the mean\n#'  library size across all cells.\n#' @param scaleFactor Numeric. Sets the scale factor for cell-level\n#'  normalization. This scale factor is multiplied to each cell after the\n#'  library size of each cell had been adjusted in \\code{normalize}. Default\n#'  \\code{NULL} which means no scale factor is applied.\n#' @param transformationFun Function. Applys a transformation such as 'sqrt',\n#'  'log', 'log2', 'log10', or 'log1p'. If \\code{NULL}, no transformation will\n#'  be applied. Occurs after applying normalization and scale factor. Default\n#'  \\code{NULL}.\n#' @param seed Integer. Passed to \\link[withr]{with_seed}. For reproducibility,\n#'  a default value of 12345 is used. If NULL, no calls to\n#'  \\link[withr]{with_seed} are made.\n#' @return \\code{sce} with t-SNE coordinates\n#'  (columns \"celda_tSNE1\" & \"celda_tSNE2\") added to\n#'  \\code{\\link{reducedDim}(sce, \"celda_tSNE\")}.\n#' @export\nsetGeneric(\"celdaTsne\",\n    function(sce,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        maxCells = NULL,\n        minClusterSize = 100,\n        initialDims = 20,\n        modules = NULL,\n        perplexity = 20,\n        maxIter = 2500,\n        normalize = \"proportion\",\n        scaleFactor = NULL,\n        transformationFun = sqrt,\n        seed = 12345) {\n\n        standardGeneric(\"celdaTsne\")\n    })\n\n\n#' @rdname celdaTsne\n#' @examples\n#' data(sceCeldaCG)\n#' tsneRes <- celdaTsne(sceCeldaCG)\n#' @export\nsetMethod(\"celdaTsne\", signature(sce = \"SingleCellExperiment\"),\n    function(sce,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        maxCells = NULL,\n        minClusterSize = 100,\n        initialDims = 20,\n        modules = NULL,\n        perplexity = 20,\n        maxIter = 2500,\n        normalize = \"proportion\",\n        scaleFactor = NULL,\n        transformationFun = sqrt,\n        seed = 12345) {\n\n        if (is.null(seed)) {\n            sce <- .celdaTsne(sce = sce,\n                useAssay = useAssay,\n                altExpName = altExpName,\n                maxCells = maxCells,\n                minClusterSize = minClusterSize,\n                initialDims = initialDims,\n                modules = modules,\n                perplexity = perplexity,\n                maxIter = maxIter,\n                normalize = normalize,\n                scaleFactor = scaleFactor,\n                transformationFun = transformationFun)\n        } else {\n            with_seed(seed,\n                sce <- .celdaTsne(sce = sce,\n                    useAssay = useAssay,\n                    altExpName = altExpName,\n                    maxCells = maxCells,\n                    minClusterSize = minClusterSize,\n                    initialDims = initialDims,\n                    modules = modules,\n                    perplexity = perplexity,\n                    maxIter = maxIter,\n                    normalize = normalize,\n                    scaleFactor = scaleFactor,\n                    transformationFun = transformationFun))\n        }\n        return(sce)\n    })\n\n\n.celdaTsne <- function(sce,\n    useAssay,\n    altExpName,\n    maxCells,\n    minClusterSize,\n    initialDims,\n    modules,\n    perplexity,\n    maxIter,\n    normalize,\n    scaleFactor,\n    transformationFun) {\n\n    celdaMod <- celdaModel(sce, altExpName = altExpName)\n    altExp <- SingleCellExperiment::altExp(sce, altExpName)\n\n    if (celdaMod == \"celda_C\") {\n        res <- .celdaTsneC(sce = altExp,\n            useAssay = useAssay,\n            maxCells = maxCells,\n            minClusterSize = minClusterSize,\n            initialDims = initialDims,\n            perplexity = perplexity,\n            maxIter = maxIter,\n            normalize = normalize,\n            scaleFactor = scaleFactor,\n            transformationFun = transformationFun)\n    } else if (celdaMod == \"celda_CG\") {\n        res <- .celdaTsneCG(sce = altExp,\n            useAssay = useAssay,\n            maxCells = maxCells,\n            minClusterSize = minClusterSize,\n            initialDims = initialDims,\n            modules = modules,\n            perplexity = perplexity,\n            maxIter = maxIter,\n            normalize = normalize,\n            scaleFactor = scaleFactor,\n            transformationFun = transformationFun)\n    } else if (celdaMod == \"celda_G\") {\n        res <- .celdaTsneG(sce = altExp,\n            useAssay = useAssay,\n            maxCells = maxCells,\n            minClusterSize = minClusterSize,\n            initialDims = initialDims,\n            modules = modules,\n            perplexity = perplexity,\n            maxIter = maxIter,\n            normalize = normalize,\n            scaleFactor = scaleFactor,\n            transformationFun = transformationFun)\n    } else {\n        stop(\"S4Vectors::metadata(altExp(sce, altExpName))$\",\n            \"celda_parameters$model must be\",\n            \" one of 'celda_C', 'celda_G', or 'celda_CG'\")\n    }\n    SingleCellExperiment::reducedDim(altExp, \"celda_tSNE\") <- res\n    SingleCellExperiment::altExp(sce, altExpName) <- altExp\n    return(sce)\n}\n\n\n.celdaTsneC <- function(sce,\n    useAssay,\n    maxCells,\n    minClusterSize,\n    initialDims,\n    perplexity,\n    maxIter,\n    normalize,\n    scaleFactor,\n    transformationFun) {\n\n    preparedCountInfo <- .prepareCountsForDimReductionCeldaC(sce = sce,\n        useAssay = useAssay,\n        maxCells = maxCells,\n        minClusterSize = minClusterSize,\n        normalize = normalize,\n        scaleFactor = scaleFactor,\n        transformationFun = transformationFun)\n\n    res <- .calculateTsne(preparedCountInfo$norm,\n        perplexity = perplexity,\n        maxIter = maxIter,\n        doPca = TRUE,\n        initialDims = initialDims)\n\n    final <- matrix(NA, nrow = ncol(sce), ncol = 2)\n    final[preparedCountInfo$cellIx, ] <- res\n    rownames(final) <- colnames(sce)\n    colnames(final) <- c(\"celda_tSNE1\", \"celda_tSNE2\")\n    return(final)\n}\n\n\n.celdaTsneCG <- function(sce,\n    useAssay,\n    maxCells,\n    minClusterSize,\n    initialDims,\n    modules,\n    perplexity,\n    maxIter,\n    normalize,\n    scaleFactor,\n    transformationFun) {\n\n    preparedCountInfo <- .prepareCountsForDimReductionCeldaCG(sce = sce,\n        useAssay = useAssay,\n        maxCells = maxCells,\n        minClusterSize = minClusterSize,\n        modules = modules,\n        normalize = normalize,\n        scaleFactor = scaleFactor,\n        transformationFun = transformationFun)\n    norm <- preparedCountInfo$norm\n    res <- .calculateTsne(norm,\n        doPca = FALSE,\n        perplexity = perplexity,\n        maxIter = maxIter,\n        initialDims = initialDims)\n    final <- matrix(NA, nrow = ncol(sce), ncol = 2)\n    final[preparedCountInfo$cellIx, ] <- res\n    rownames(final) <- colnames(sce)\n    colnames(final) <- c(\"celda_tSNE1\", \"celda_tSNE2\")\n    return(final)\n}\n\n\n.celdaTsneG <- function(sce,\n    useAssay,\n    maxCells,\n    minClusterSize,\n    initialDims,\n    modules,\n    perplexity,\n    maxIter,\n    normalize,\n    scaleFactor,\n    transformationFun) {\n\n    preparedCountInfo <- .prepareCountsForDimReductionCeldaG(sce = sce,\n        useAssay = useAssay,\n        maxCells = maxCells,\n        minClusterSize = minClusterSize,\n        modules = modules,\n        normalize = normalize,\n        scaleFactor = scaleFactor,\n        transformationFun = transformationFun)\n    res <- .calculateTsne(preparedCountInfo$norm,\n        perplexity = perplexity,\n        maxIter = maxIter,\n        doPca = FALSE,\n        initialDims = initialDims)\n    final <- matrix(NA, nrow = ncol(sce), ncol = 2)\n    final[preparedCountInfo$cellIx, ] <- res\n    rownames(final) <- colnames(sce)\n    colnames(final) <- c(\"celda_tSNE1\", \"celda_tSNE2\")\n    return(final)\n}\n\n\n# Run the t-SNE algorithm for dimensionality reduction\n# @param norm Normalized count matrix.\n# @param perplexity Numeric vector. Determines perplexity for tsne. Default 20.\n# @param maxIter Numeric vector. Determines iterations for tsne. Default 1000.\n# @param doPca Logical. Whether to perform\n# dimensionality reduction with PCA before tSNE.\n# @param initialDims Integer. Number of dimensions from PCA to use as\n# input in tSNE. Default 50.\n#' @importFrom Rtsne Rtsne\n.calculateTsne <- function(norm,\n    perplexity,\n    maxIter,\n    doPca,\n    initialDims) {\n\n    res <- Rtsne::Rtsne(\n        norm,\n        pca = doPca,\n        max_iter = maxIter,\n        perplexity = perplexity,\n        check_duplicates = FALSE,\n        is_distance = FALSE,\n        initial_dims = initialDims)$Y\n\n    return(res)\n}\n"
  },
  {
    "path": "R/celdatosce.R",
    "content": "\n#' @title Convert old celda model object to \\code{SCE} object\n#' @description Convert a old celda model object (\\code{celda_C},\n#'  \\code{celda_G}, or \\code{celda_CG} object) to a\n#'  \\linkS4class{SingleCellExperiment} object containing celda model\n#'  information in \\code{metadata} slot. Counts matrix is stored in the\n#'  \\code{\"counts\"} assay slot in \\code{assays}.\n#' @param celdaModel A \\code{celdaModel} or \\code{celdaList} object generated\n#'  using older versions of \\code{celda}.\n#' @param counts A numeric \\link{matrix} of counts used to generate\n#'  \\code{celdaModel}. Dimensions and MD5 checksum will be checked by\n#'  \\link{compareCountMatrix}.\n#' @param useAssay A string specifying the name of the\n#'  \\link{assay} slot to use. Default \"counts\".\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @return A \\linkS4class{SingleCellExperiment} object. Function\n#'  parameter settings are stored in the \\link{metadata}\n#'  \\code{\"celda_parameters\"} slot.\n#'  Columns \\code{celda_sample_label} and \\code{celda_cell_cluster} in\n#'  \\link{colData} contain sample labels and celda cell\n#'  population clusters. Column \\code{celda_feature_module} in\n#'  \\link{rowData} contain feature modules.\n#' @export\nsetGeneric(\"celdatosce\",\n    function(celdaModel,\n        counts,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\") {\n    standardGeneric(\"celdatosce\")})\n\n\n#' @rdname celdatosce\n#' @examples\n#' data(celdaCMod, celdaCSim)\n#' sce <- celdatosce(celdaCMod, celdaCSim$counts)\n#' @export\nsetMethod(\"celdatosce\",\n    signature(celdaModel = \"celda_C\"),\n    function(celdaModel,\n        counts,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\") {\n\n        compareCountMatrix(counts, celdaModel, errorOnMismatch = FALSE)\n\n        ls <- list()\n        ls[[useAssay]] <- counts\n        sce <- SingleCellExperiment::SingleCellExperiment(assays = ls)\n        SingleCellExperiment::altExp(sce, altExpName) <- sce\n        xClass <- \"matrix\"\n\n        altExp <- .createSCEceldaC(celdaCMod = celdaModel,\n            sce = SingleCellExperiment::altExp(sce, altExpName),\n            xClass = xClass,\n            useAssay = useAssay,\n            algorithm = NULL,\n            stopIter = NULL,\n            maxIter = NULL,\n            splitOnIter = NULL,\n            splitOnLast = NULL,\n            nchains = NULL,\n            zInitialize = NULL,\n            zInit = NULL,\n            logfile = NULL,\n            verbose = NULL)\n        SingleCellExperiment::altExp(sce, altExpName) <- altExp\n        return(sce)\n    }\n)\n\n\n#' @rdname celdatosce\n#' @examples\n#' data(celdaGMod, celdaGSim)\n#' sce <- celdatosce(celdaGMod, celdaGSim$counts)\n#' @export\nsetMethod(\"celdatosce\",\n    signature(celdaModel = \"celda_G\"),\n    function(celdaModel,\n        counts,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\") {\n\n        compareCountMatrix(counts, celdaModel, errorOnMismatch = FALSE)\n\n        ls <- list()\n        ls[[useAssay]] <- counts\n        sce <- SingleCellExperiment::SingleCellExperiment(assays = ls)\n        SingleCellExperiment::altExp(sce, altExpName) <- sce\n        xClass <- \"matrix\"\n\n        altExp <- .createSCEceldaG(celdaGMod = celdaModel,\n            sce = SingleCellExperiment::altExp(sce, altExpName),\n            xClass = xClass,\n            useAssay = useAssay,\n            stopIter = NULL,\n            maxIter = NULL,\n            splitOnIter = NULL,\n            splitOnLast = NULL,\n            nchains = NULL,\n            yInitialize = NULL,\n            yInit = NULL,\n            logfile = NULL,\n            verbose = NULL)\n        SingleCellExperiment::altExp(sce, altExpName) <- altExp\n        return(sce)\n    }\n)\n\n\n#' @rdname celdatosce\n#' @examples\n#' data(celdaCGMod, celdaCGSim)\n#' sce <- celdatosce(celdaCGMod, celdaCGSim$counts)\n#' @export\nsetMethod(\"celdatosce\",\n    signature(celdaModel = \"celda_CG\"),\n    function(celdaModel,\n        counts,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\") {\n\n        compareCountMatrix(counts, celdaModel, errorOnMismatch = FALSE)\n\n        ls <- list()\n        ls[[useAssay]] <- counts\n        sce <- SingleCellExperiment::SingleCellExperiment(assays = ls)\n        SingleCellExperiment::altExp(sce, altExpName) <- sce\n        xClass <- \"matrix\"\n\n        altExp <- .createSCEceldaCG(celdaCGMod = celdaModel,\n            sce = SingleCellExperiment::altExp(sce, altExpName),\n            xClass = xClass,\n            useAssay = useAssay,\n            algorithm = NULL,\n            stopIter = NULL,\n            maxIter = NULL,\n            splitOnIter = NULL,\n            splitOnLast = NULL,\n            nchains = NULL,\n            zInitialize = NULL,\n            yInitialize = NULL,\n            zInit = NULL,\n            yInit = NULL,\n            logfile = NULL,\n            verbose = NULL)\n        SingleCellExperiment::altExp(sce, altExpName) <- altExp\n        return(sce)\n    }\n)\n\n\n#' @rdname celdatosce\n#' @examples\n#' data(celdaCGGridSearchRes, celdaCGSim)\n#' sce <- celdatosce(celdaCGGridSearchRes, celdaCGSim$counts)\n#' @export\nsetMethod(\"celdatosce\",\n    signature(celdaModel = \"celdaList\"),\n    function(celdaModel,\n        counts,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\") {\n\n        compareCountMatrix(counts, celdaModel, errorOnMismatch = FALSE)\n\n        ls <- list()\n        ls[[useAssay]] <- counts\n        sce <- SingleCellExperiment::SingleCellExperiment(assays = ls)\n        SingleCellExperiment::altExp(sce, altExpName) <- sce\n        xClass <- \"matrix\"\n        model <- celdaModel@celdaGridSearchParameters$model\n        paramsTest <- celdaModel@celdaGridSearchParameters$paramsTest\n        paramsFixed <-\n            celdaModel@celdaGridSearchParameters$paramsFixed\n        maxIter <- celdaModel@celdaGridSearchParameters$maxIter\n        nchains <- celdaModel@celdaGridSearchParameters$nchains\n        cores <- celdaModel@celdaGridSearchParameters$cores\n        bestOnly <- celdaModel@celdaGridSearchParameters$bestOnly\n        perplexity <- celdaModel@celdaGridSearchParameters$perplexity\n        verbose <- celdaModel@celdaGridSearchParameters$verbose\n        logfilePrefix <-\n            celdaModel@celdaGridSearchParameters$logfilePrefix\n\n        altExp <- .createSCEceldaGridSearch(celdaList = celdaModel,\n            sce = SingleCellExperiment::altExp(sce, altExpName),\n            xClass = xClass,\n            useAssay = useAssay,\n            model = model,\n            paramsTest = paramsTest,\n            paramsFixed = paramsFixed,\n            maxIter = maxIter,\n            seed = NULL,\n            nchains = nchains,\n            cores = cores,\n            bestOnly = bestOnly,\n            perplexity = perplexity,\n            verbose = verbose,\n            logfilePrefix = logfilePrefix)\n        SingleCellExperiment::altExp(sce, altExpName) <- altExp\n        return(sce)\n    }\n)\n"
  },
  {
    "path": "R/clusterProbability.R",
    "content": "#' @title Get the conditional probabilities of cell in subpopulations from celda\n#'  model\n#' @description Calculate the conditional probability of each cell belonging to\n#'  each subpopulation given all other cell cluster assignments and/or\n#'  each feature belonging to each module given all other feature cluster\n#'  assignments in a celda model.\n#' @param sce A \\linkS4class{SingleCellExperiment} object returned by\n#'  \\link{celda_C}, \\link{celda_G}, or \\link{celda_CG}, with the matrix\n#'  located in the \\code{useAssay} assay slot.\n#'  Rows represent features and columns represent cells.\n#' @param useAssay A string specifying which \\link{assay}\n#'  slot to use. Default \"counts\".\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @param log Logical. If \\code{FALSE}, then the normalized conditional\n#'  probabilities will be returned. If \\code{TRUE}, then the unnormalized log\n#'  probabilities will be returned. Default \\code{FALSE}.\n#' @examples\n#' data(sceCeldaCG)\n#' clusterProb <- clusterProbability(sceCeldaCG, log = TRUE)\n#' @return A list containging a matrix for the conditional cell subpopulation\n#'  cluster and/or feature module probabilities.\n#' @export\nsetGeneric(\"clusterProbability\",\n    function(sce,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        log = FALSE) {\n\n        standardGeneric(\"clusterProbability\")\n    })\n\n\n#' @seealso `celda_C()` for clustering cells\n#' @examples\n#' data(sceCeldaC)\n#' clusterProb <- clusterProbability(sceCeldaC)\n#' @rdname clusterProbability\n#' @export\nsetMethod(\"clusterProbability\", signature(sce = \"SingleCellExperiment\"),\n    function(sce,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        log = FALSE) {\n\n        model <- celdaModel(sce, altExpName = altExpName)\n        altExp <- SingleCellExperiment::altExp(sce, altExpName)\n        counts <- SummarizedExperiment::assay(altExp, i = useAssay)\n        beta <- S4Vectors::metadata(altExp)$celda_parameters$beta\n\n        if (model == \"celda_C\") {\n            s <- as.integer(\n                SummarizedExperiment::colData(altExp)$celda_sample_label)\n            z <- as.integer(\n                SummarizedExperiment::colData(altExp)$celda_cell_cluster)\n            K <- S4Vectors::metadata(altExp)$celda_parameters$K\n            alpha <- S4Vectors::metadata(altExp)$celda_parameters$alpha\n\n            cp <- .clusterProbabilityCeldaC(\n                counts = counts,\n                z = z,\n                s = s,\n                K = K,\n                alpha = alpha,\n                beta = beta,\n                log = log)\n        } else if (model == \"celda_CG\") {\n            s <- as.integer(\n                SummarizedExperiment::colData(altExp)$celda_sample_label)\n            z <- as.integer(\n                SummarizedExperiment::colData(altExp)$celda_cell_cluster)\n            K <- S4Vectors::metadata(altExp)$celda_parameters$K\n            y <- as.integer(\n                SummarizedExperiment::rowData(altExp)$celda_feature_module)\n            L <- S4Vectors::metadata(altExp)$celda_parameters$L\n            alpha <- S4Vectors::metadata(altExp)$celda_parameters$alpha\n            delta <- S4Vectors::metadata(altExp)$celda_parameters$delta\n            gamma <- S4Vectors::metadata(altExp)$celda_parameters$gamma\n\n            cp <- .clusterProbabilityCeldaCG(\n                counts = counts,\n                s = s,\n                z = z,\n                y = y,\n                K = K,\n                L = L,\n                alpha = alpha,\n                delta = delta,\n                beta = beta,\n                gamma = gamma,\n                log = log)\n        } else if (model == \"celda_G\") {\n            y <- as.integer(\n                SummarizedExperiment::rowData(altExp)$celda_feature_module)\n            L <- S4Vectors::metadata(altExp)$celda_parameters$L\n            delta <- S4Vectors::metadata(altExp)$celda_parameters$delta\n            gamma <- S4Vectors::metadata(altExp)$celda_parameters$gamma\n\n            cp <- .clusterProbabilityCeldaG(\n                counts = counts,\n                y = y,\n                L = L,\n                delta = delta,\n                beta = beta,\n                gamma = gamma,\n                log = log)\n        } else {\n            stop(\"S4Vectors::metadata(altExp(sce, altExpName))$\",\n                \"celda_parameters$model must be\",\n                \" one of 'celda_C', 'celda_G', or 'celda_CG'!\")\n        }\n        return(cp)\n    }\n)\n\n\n.clusterProbabilityCeldaC <- function(\n    counts,\n    z,\n    s,\n    K,\n    alpha,\n    beta,\n    log) {\n\n    p <- .cCDecomposeCounts(counts, s, z, K)\n\n    nextZ <- .cCCalcGibbsProbZ(counts = counts,\n        mCPByS = p$mCPByS,\n        nGByCP = p$nGByCP,\n        nByC = p$nByC,\n        nCP = p$nCP,\n        z = z,\n        s = s,\n        K = K,\n        nG = p$nG,\n        nM = p$nM,\n        alpha = alpha,\n        beta = beta,\n        doSample = FALSE)\n    zProb <- t(nextZ$probs)\n\n    if (!isTRUE(log)) {\n        zProb <- .normalizeLogProbs(zProb)\n    }\n    return(list(zProbability = zProb))\n}\n\n\n.clusterProbabilityCeldaCG <- function(\n    counts,\n    s,\n    z,\n    y,\n    K,\n    L,\n    alpha,\n    delta,\n    beta,\n    gamma,\n    log) {\n\n    p <- .cCGDecomposeCounts(counts, s, z, y, K, L)\n    lgbeta <- lgamma(seq(0, max(p$nCP)) + beta)\n    lggamma <- lgamma(seq(0, nrow(counts) + L) + gamma)\n    lgdelta <- c(NA, lgamma((seq(nrow(counts) + L) * delta)))\n\n    nextZ <- .cCCalcGibbsProbZ(\n        counts = p$nTSByC,\n        mCPByS = p$mCPByS,\n        nGByCP = p$nTSByCP,\n        nCP = p$nCP,\n        nByC = p$nByC,\n        z = z,\n        s = s,\n        K = K,\n        nG = L,\n        nM = p$nM,\n        alpha = alpha,\n        beta = beta,\n        doSample = FALSE\n    )\n    zProb <- t(nextZ$probs)\n\n    ## Gibbs sampling for each gene\n    nextY <- .cGCalcGibbsProbY(\n        counts = p$nGByCP,\n        nTSByC = p$nTSByCP,\n        nByTS = p$nByTS,\n        nGByTS = p$nGByTS,\n        nByG = p$nByG,\n        y = y,\n        L = L,\n        nG = p$nG,\n        lgbeta = lgbeta,\n        lgdelta = lgdelta,\n        lggamma = lggamma,\n        delta = delta,\n        doSample = FALSE\n    )\n\n    yProb <- t(nextY$probs)\n\n    if (!isTRUE(log)) {\n        zProb <- .normalizeLogProbs(zProb)\n        yProb <- .normalizeLogProbs(yProb)\n    }\n\n    return(list(zProbability = zProb, yProbability = yProb))\n}\n\n\n.clusterProbabilityCeldaG <- function(\n    counts,\n    y,\n    L,\n    delta,\n    beta,\n    gamma,\n    log) {\n\n    ## Calculate counts one time up front\n    p <- .cGDecomposeCounts(counts = counts, y = y, L = L)\n    lgbeta <- lgamma(seq(0, max(.colSums(\n        counts,\n        nrow(counts), ncol(counts)\n    ))) + beta)\n    lggamma <- lgamma(seq(0, nrow(counts) + L) + gamma)\n    lgdelta <- c(NA, lgamma(seq(nrow(counts) + L) * delta))\n\n    nextY <- .cGCalcGibbsProbY(\n        counts = counts,\n        nTSByC = p$nTSByC,\n        nByTS = p$nByTS,\n        nGByTS = p$nGByTS,\n        nByG = p$nByG,\n        y = y,\n        nG = p$nG,\n        L = L,\n        lgbeta = lgbeta,\n        lgdelta = lgdelta,\n        lggamma = lggamma,\n        delta = delta,\n        doSample = FALSE\n    )\n    yProb <- t(nextY$probs)\n\n    if (!isTRUE(log)) {\n        yProb <- .normalizeLogProbs(yProb)\n    }\n    return(list(yProbability = yProb))\n}\n"
  },
  {
    "path": "R/data.R",
    "content": "#' @title available models\n#' @export\navailableModels <- c(\"celda_C\", \"celda_G\", \"celda_CG\")\n\n\n#' A toy count matrix for use with celda.\n#'\n#' @title sampleCells\n#' @description A matrix of simulated gene counts.\n#' @format A matrix of simulated gene counts with 10 rows (genes) and 10\n#'  columns (cells).\n#' @details Generated by Josh Campbell.\n#' @source \\url{http://github.com/campbio/celda}\n\"sampleCells\"\n\n\n#' @title celdaCGSim\n#' @description An deprecated example of simulated count matrix from the\n#'  celda_CG model.\n#' @format A list of counts and properties as returned from old simulateCells().\n\"celdaCGSim\"\n\n\n#' @title celdaCGmod\n#' @description celda_CG model object generated from \\code{celdaCGSim} using\n#'  old \\code{celda_CG} function.\n#' @format A celda_CG object\n# @examples\n# data(celdaCGSim)\n# celdaCGMod <- celda_CG(celdaCGSim$counts,\n#   K = celdaCGSim$K,\n#   L = celdaCGSim$L,\n#   nchains = 1)\n\"celdaCGMod\"\n\n\n#' @title celdaCGGridSearchRes\n#' @description Example results of old celdaGridSearch on celdaCGSim\n#' @format An object as returned from old celdaGridSearch()\n# @examples\n# data(celdaCGSim)\n# celdaCGGridSearchRes <- celdaGridSearch(celdaCGSim$counts,\n#   model = \"celda_CG\",\n#   paramsTest = list(K = seq(4, 6), L = seq(9, 11)),\n#   paramsFixed = list(sampleLabel = celdaCGSim$sampleLabel),\n#   bestOnly = TRUE,\n#   nchains = 1,\n#   cores = 2)\n\"celdaCGGridSearchRes\"\n\n\n#' @title celdaCSim\n#' @description An old example simulated count matrix from the celda_C model.\n#' @format A list of counts and properties as returned from old simulateCells().\n# @examples\n# celdaCSim <- simulateCells(\"celda_C\")\n\"celdaCSim\"\n\n\n#' @title celdaCMod\n#' @description Old celda_C results generated from celdaCSim\n#' @format A celda_C object\n# @examples\n# data(celdaCSim)\n# celdaCMod <- celda_C(celdaCSim$counts, K = celdaCSim$K, nchains = 1)\n\"celdaCMod\"\n\n\n#' @title celdaGSim\n#' @description An old example simulated count matrix from the celda_G model.\n#' @format A list of counts and properties as returned from old simulateCells()\n# @examples\n# celdaGSim <- simulateCells(\"celda_G\")\n\"celdaGSim\"\n\n\n#' @title celdaGMod\n#' @description Old celda_G results generated from celdaGsim\n#' @format A celda_G object\n# @examples\n# data(celdaGSim)\n# celdaGMod <- celda_G(celdaGSim$counts, L = celdaGSim$L, nchains = 1)\n\"celdaGMod\"\n\n\n#' @title contaminationSim\n#' @description A toy contamination data generated by\n#'  \\link{simulateContamination}\n#' @format A list\n\"contaminationSim\"\n\n\n#' @title sceCeldaC\n#' @description A \\linkS4class{SingleCellExperiment} object containing the\n#'  results of running \\link{selectFeatures} and \\link{celda_C} on\n#'  \\link{celdaCSim}.\n#' @format A \\linkS4class{SingleCellExperiment} object\n#' @examples\n#' data(celdaCSim)\n#' sceCeldaC <- selectFeatures(celdaCSim$counts)\n#' sceCeldaC <- celda_C(sceCeldaC,\n#'     K = celdaCSim$K,\n#'     sampleLabel = celdaCSim$sampleLabel,\n#'     nchains = 1)\n\"sceCeldaC\"\n\n\n#' @title sceCeldaG\n#' @description A \\linkS4class{SingleCellExperiment} object containing the\n#'  results of running \\link{selectFeatures} and \\link{celda_G} on\n#'  \\link{celdaGSim}.\n#' @format A \\linkS4class{SingleCellExperiment} object\n#' @examples\n#' data(celdaGSim)\n#' sceCeldaG <- selectFeatures(celdaGSim$counts)\n#' sceCeldaG <- celda_G(sceCeldaG, L = celdaGSim$L, nchains = 1)\n\"sceCeldaG\"\n\n\n#' @title sceCeldaCG\n#' @description A \\linkS4class{SingleCellExperiment} object containing the\n#'  results of running \\link{selectFeatures} and \\link{celda_CG} on\n#'  \\link{celdaCGSim}.\n#' @format A \\linkS4class{SingleCellExperiment} object\n#' @examples\n#' data(celdaCGSim)\n#' sceCeldaCG <- selectFeatures(celdaCGSim$counts)\n#' sceCeldaCG <- celda_CG(sceCeldaCG,\n#'     K = celdaCGSim$K,\n#'     L = celdaCGSim$L,\n#'     sampleLabel = celdaCGSim$sampleLabel,\n#'     nchains = 1)\n\"sceCeldaCG\"\n\n\n#' @title sceCeldaCGGridSearch\n#' @description A \\linkS4class{SingleCellExperiment} object containing the\n#'  results of running \\link{selectFeatures} and \\link{celdaGridSearch} on\n#'  \\link{celdaCGSim}.\n#' @format A \\linkS4class{SingleCellExperiment} object\n#' @examples\n#' data(celdaCGSim)\n#' sce <- selectFeatures(celdaCGSim$counts)\n#' sceCeldaCGGridSearch <- celdaGridSearch(sce,\n#'     model = \"celda_CG\",\n#'     paramsTest = list(K = seq(4, 6), L = seq(9, 11)),\n#'     paramsFixed = list(sampleLabel = celdaCGSim$sampleLabel),\n#'     bestOnly = TRUE,\n#'     nchains = 1,\n#'     cores = 1,\n#'     verbose = FALSE)\n\"sceCeldaCGGridSearch\"\n"
  },
  {
    "path": "R/decon.R",
    "content": "#' @title Contamination estimation with decontX\n#'\n#' @description Identifies contamination from factors such as ambient RNA\n#' in single cell genomic datasets.\n#'\n#' @name decontX\n#'\n#' @param x A numeric matrix of counts or a \\linkS4class{SingleCellExperiment}\n#' with the matrix located in the assay slot under \\code{assayName}.\n#' Cells in each batch will be subsetted and converted to a sparse matrix\n#' of class \\code{dgCMatrix} from package \\link{Matrix} before analysis. This\n#' object should only contain filtered cells after cell calling. Empty\n#' cell barcodes (low expression droplets before cell calling) are not needed\n#' to run DecontX.\n#' @param assayName Character. Name of the assay to use if \\code{x} is a\n#' \\linkS4class{SingleCellExperiment}.\n#' @param z Numeric or character vector. Cell cluster labels. If NULL,\n#' PCA will be used to reduce the dimensionality of the dataset initially,\n#' '\\link[uwot]{umap}' from the 'uwot' package\n#' will be used to further reduce the dataset to 2 dimenions and\n#' the '\\link[dbscan]{dbscan}' function from the 'dbscan' package\n#' will be used to identify clusters of broad cell types. Default NULL.\n#' @param batch Numeric or character vector. Batch labels for cells.\n#' If batch labels are supplied, DecontX is run on cells from each\n#' batch separately. Cells run in different channels or assays\n#' should be considered different batches. Default NULL.\n#' @param background A numeric matrix of counts or a\n#' \\linkS4class{SingleCellExperiment} with the matrix located in the assay\n#' slot under \\code{assayName}. It should have the same data format as \\code{x}\n#' except it contains the empty droplets instead of cells. When supplied,\n#' empirical distribution of transcripts from these empty droplets\n#' will be used as the contamination distribution. Default NULL.\n#' @param bgAssayName Character. Name of the assay to use if \\code{background}\n#' is a \\linkS4class{SingleCellExperiment}. Default to same as\n#' \\code{assayName}.\n#' @param bgBatch Numeric or character vector. Batch labels for\n#' \\code{background}. Its unique values should be the same as those in\n#' \\code{batch}, such that each batch of cells have their corresponding batch\n#' of empty droplets as background, pointed by this parameter. Default to NULL.\n#' @param maxIter Integer. Maximum iterations of the EM algorithm. Default 500.\n#' @param convergence Numeric. The EM algorithm will be stopped if the maximum\n#' difference in the contamination estimates between the previous and\n#' current iterations is less than this. Default 0.001.\n#' @param iterLogLik Integer. Calculate log likelihood every \\code{iterLogLik}\n#' iteration. Default 10.\n#' @param delta Numeric Vector of length 2. Concentration parameters for\n#' the Dirichlet prior for the contamination in each cell. The first element\n#' is the prior for the native counts while the second element is the prior for\n#' the contamination counts. These essentially act as pseudocounts for the\n#' native and contamination in each cell. If \\code{estimateDelta = TRUE},\n#' this is only used to produce a random sample of proportions for an initial\n#' value of contamination in each cell. Then\n#' \\code{\\link[MCMCprecision]{fit_dirichlet}} is used to update\n#' \\code{delta} in each iteration.\n#' If \\code{estimateDelta = FALSE}, then \\code{delta} is fixed with these\n#' values for the entire inference procedure. Fixing \\code{delta} and\n#' setting a high number in the second element will force \\code{decontX}\n#' to be more aggressive and estimate higher levels of contamination at\n#' the expense of potentially removing native expression.\n#' Default \\code{c(10, 10)}.\n#' @param estimateDelta Boolean. Whether to update \\code{delta} at each\n#' iteration.\n#' @param varGenes Integer. The number of variable genes to use in\n#' dimensionality reduction before clustering. Variability is calcualted using\n#' \\code{\\link[scran]{modelGeneVar}} function from the 'scran' package.\n#' Used only when z is not provided. Default 5000.\n#' @param dbscanEps Numeric. The clustering resolution parameter\n#' used in '\\link[dbscan]{dbscan}' to estimate broad cell clusters.\n#' Used only when z is not provided. Default 1.\n#' @param seed Integer. Passed to \\link[withr]{with_seed}. For reproducibility,\n#'  a default value of 12345 is used. If NULL, no calls to\n#'  \\link[withr]{with_seed} are made.\n#' @param logfile Character. Messages will be redirected to a file named\n#'  `logfile`. If NULL, messages will be printed to stdout.  Default NULL.\n#' @param verbose Logical. Whether to print log messages. Default TRUE.\n#' @param ... For the generic, further arguments to pass to each method.\n#'\n#' @return If \\code{x} is a matrix-like object, a list will be returned\n#' with the following items:\n#' \\describe{\n#' \\item{\\code{decontXcounts}:}{The decontaminated matrix. Values obtained\n#' from the variational inference procedure may be non-integer. However,\n#' integer counts can be obtained by rounding,\n#' e.g. \\code{round(decontXcounts)}.}\n#' \\item{\\code{contamination}:}{Percentage of contamination in each cell.}\n#' \\item{\\code{estimates}:}{List of estimated parameters for each batch. If z\n#' was not supplied, then the UMAP coordinates used to generated cell\n#' cluster labels will also be stored here.}\n#' \\item{\\code{z}:}{Cell population/cluster labels used for analysis.}\n#' \\item{\\code{runParams}:}{List of arguments used in the function call.}\n#' }\n#'\n#' If \\code{x} is a \\linkS4class{SingleCellExperiment}, then the decontaminated\n#' counts will be stored as an assay and can be accessed with\n#' \\code{decontXcounts(x)}. The contamination values and cluster labels\n#' will be stored in \\code{colData(x)}. \\code{estimates} and \\code{runParams}\n#' will be stored in \\code{metadata(x)$decontX}. The UMAPs used to generated\n#' cell cluster labels will be stored in\n#' \\code{reducedDims} slot in \\code{x}.\n#'\n#' @author Shiyi Yang, Yuan Yin, Joshua Campbell\n#'\n#' @examples\n#' # Generate matrix with contamination\n#' s <- simulateContamination(seed = 12345)\n#'\n#' library(SingleCellExperiment)\n#' sce <- SingleCellExperiment(list(counts = s$observedCounts))\n#' sce <- decontX(sce)\n#'\n#' # Plot contamination on UMAP\n#' plotDecontXContamination(sce)\n#'\n#' # Plot decontX cluster labels\n#' umap <- reducedDim(sce)\n#' plotDimReduceCluster(x = sce$decontX_clusters,\n#'     dim1 = umap[, 1], dim2 = umap[, 2], )\n#'\n#' # Plot percentage of marker genes detected\n#' # in each cell cluster before decontamination\n#' s$markers\n#' plotDecontXMarkerPercentage(sce, markers = s$markers, assayName = \"counts\")\n#'\n#' # Plot percentage of marker genes detected\n#' # in each cell cluster after contamination\n#' plotDecontXMarkerPercentage(sce, markers = s$markers,\n#'                             assayName = \"decontXcounts\")\n#'\n#' # Plot percentage of marker genes detected in each cell\n#' # comparing original and decontaminated counts side-by-side\n#' plotDecontXMarkerPercentage(sce, markers = s$markers,\n#'                             assayName = c(\"counts\", \"decontXcounts\"))\n#'\n#' # Plot raw counts of indiviual markers genes before\n#' # and after decontamination\n#' plotDecontXMarkerExpression(sce, unlist(s$markers))\nNULL\n\n#' @export\n#' @rdname decontX\nsetGeneric(\"decontX\", function(x, ...) standardGeneric(\"decontX\"))\n\n\n#########################\n# Setting up S4 methods #\n#########################\n\n\n#' @export\n#' @rdname decontX\n#' @importClassesFrom SingleCellExperiment SingleCellExperiment\n#' @importClassesFrom Matrix dgCMatrix\nsetMethod(\"decontX\", \"SingleCellExperiment\", function(x,\n                                                      assayName = \"counts\",\n                                                      z = NULL,\n                                                      batch = NULL,\n                                                      background = NULL,\n                                                      bgAssayName = NULL,\n                                                      bgBatch = NULL,\n                                                      maxIter = 500,\n                                                      delta = c(10, 10),\n                                                      estimateDelta = TRUE,\n                                                      convergence = 0.001,\n                                                      iterLogLik = 10,\n                                                      varGenes = 5000,\n                                                      dbscanEps = 1,\n                                                      seed = 12345,\n                                                      logfile = NULL,\n                                                      verbose = TRUE) {\n  countsBackground <- NULL\n  if (!is.null(background)) {\n    # Remove cells with the same ID between x and the background matrix\n    # Also update bgBatch when background is updated and bgBatch is not null\n    temp <- .checkBackground(x = x,\n                             background = background,\n                             bgBatch = bgBatch,\n                             logfile = logfile,\n                             verbose = verbose)\n\n    background <- temp$background\n    bgBatch <- temp$bgBatch\n\n    if (is.null(bgAssayName)) {\n      bgAssayName <- assayName\n    }\n    countsBackground <- SummarizedExperiment::assay(background, i = bgAssayName)\n  }\n\n  mat <- SummarizedExperiment::assay(x, i = assayName)\n\n  result <- .decontX(\n    counts = mat,\n    z = z,\n    batch = batch,\n    countsBackground = countsBackground,\n    batchBackground = bgBatch,\n    maxIter = maxIter,\n    convergence = convergence,\n    iterLogLik = iterLogLik,\n    delta = delta,\n    estimateDelta = estimateDelta,\n    varGenes = varGenes,\n    dbscanEps = dbscanEps,\n    seed = seed,\n    logfile = logfile,\n    verbose = verbose\n  )\n\n  ## Add results into column annotation\n  SummarizedExperiment::colData(x)$decontX_contamination <- result$contamination\n  SummarizedExperiment::colData(x)$decontX_clusters <- as.factor(result$z)\n\n  ## Put estimated UMAPs into SCE\n  batchIndex <- unique(result$runParams$batch)\n  if (length(batchIndex) > 1) {\n    for (i in batchIndex) {\n\n      ## Each individual UMAP will only be for one batch so need\n      ## to put NAs in for cells in other batches\n      tempUMAP <- matrix(NA, ncol = 2, nrow = ncol(mat))\n      tempUMAP[result$runParams$batch == i, ] <- result$estimates[[i]]$UMAP\n      colnames(tempUMAP) <- c(\"UMAP_1\", \"UMAP_2\")\n      rownames(tempUMAP) <- colnames(mat)\n\n      SingleCellExperiment::reducedDim(\n        x,\n        paste(\"decontX\", i, \"UMAP\", sep = \"_\")\n      ) <- tempUMAP\n    }\n  } else {\n    SingleCellExperiment::reducedDim(x, \"decontX_UMAP\") <-\n      result$estimates[[batchIndex]]$UMAP\n  }\n\n  ## Save the rest of the result object into metadata\n  decontXcounts(x) <- result$decontXcounts\n  result$decontXcounts <- NULL\n  S4Vectors::metadata(x)$decontX <- result\n\n  return(x)\n})\n\n#' @export\n#' @rdname decontX\nsetMethod(\"decontX\", \"ANY\", function(x,\n                                     z = NULL,\n                                     batch = NULL,\n                                     background = NULL,\n                                     bgBatch = NULL,\n                                     maxIter = 500,\n                                     delta = c(10, 10),\n                                     estimateDelta = TRUE,\n                                     convergence = 0.001,\n                                     iterLogLik = 10,\n                                     varGenes = 5000,\n                                     dbscanEps = 1,\n                                     seed = 12345,\n                                     logfile = NULL,\n                                     verbose = TRUE) {\n\n  countsBackground <- NULL\n  if (!is.null(background)) {\n    # Remove cells with the same ID between x and the background matrix\n    # Also update bgBatch when background is updated and bgBatch is not null\n    temp <- .checkBackground(x = x,\n                             background = background,\n                             bgBatch = bgBatch,\n                             logfile = logfile,\n                             verbose = verbose)\n\n    background <- temp$background\n    countsBackground <- background\n    \n    bgBatch <- temp$bgBatch\n\n  }\n\n  .decontX(\n    counts = x,\n    z = z,\n    batch = batch,\n    countsBackground = countsBackground,\n    batchBackground = bgBatch,\n    maxIter = maxIter,\n    convergence = convergence,\n    iterLogLik = iterLogLik,\n    delta = delta,\n    estimateDelta = estimateDelta,\n    varGenes = varGenes,\n    dbscanEps = dbscanEps,\n    seed = seed,\n    logfile = logfile,\n    verbose = verbose\n  )\n})\n\n\n## Copied from SingleCellExperiment Package\n\nGET_FUN <- function(exprs_values, ...) {\n  (exprs_values) # To ensure evaluation\n  function(object, ...) {\n    SummarizedExperiment::assay(object, i = exprs_values, ...)\n  }\n}\n\nSET_FUN <- function(exprs_values, ...) {\n  (exprs_values) # To ensure evaluation\n  function(object, ..., value) {\n    SummarizedExperiment::assay(object, i = exprs_values, ...) <- value\n    object\n  }\n}\n\n\n\n#' @title Get or set decontaminated counts matrix\n#'\n#' @description Gets or sets the decontaminated counts matrix from a\n#' a \\linkS4class{SingleCellExperiment} object.\n#' @name decontXcounts\n#' @param object A \\linkS4class{SingleCellExperiment} object.\n#' @param value A matrix to save as an assay called \\code{decontXcounts}\n#' @param ... For the generic, further arguments to pass to each method.\n#' @return If getting, the assay from \\code{object} with the name\n#' \\code{decontXcounts} will be returned. If setting, a\n#' \\linkS4class{SingleCellExperiment} object will be returned with\n#' \\code{decontXcounts} listed in the \\code{assay} slot.\n#' @seealso \\code{\\link{assay}} and \\code{\\link{assay<-}}\nNULL\n\n#' @export\n#' @rdname decontXcounts\nsetGeneric(\"decontXcounts\", function(object, ...) {\n  standardGeneric(\"decontXcounts\")\n})\n\n#' @export\n#' @rdname decontXcounts\nsetGeneric(\"decontXcounts<-\", function(object, ..., value) {\n  standardGeneric(\"decontXcounts<-\")\n})\n\n#' @export\n#' @rdname decontXcounts\nsetMethod(\"decontXcounts\", \"SingleCellExperiment\", GET_FUN(\"decontXcounts\"))\n\n#' @export\n#' @rdname decontXcounts\nsetMethod(\n  \"decontXcounts<-\", c(\"SingleCellExperiment\", \"ANY\"),\n  SET_FUN(\"decontXcounts\")\n)\n\n\n\n\n##########################\n# Core Decontx Functions #\n##########################\n\n.decontX <- function(counts,\n                     z = NULL,\n                     batch = NULL,\n                     countsBackground = NULL,\n                     batchBackground = NULL,\n                     maxIter = 200,\n                     convergence = 0.001,\n                     iterLogLik = 10,\n                     delta = c(10, 10),\n                     estimateDelta = TRUE,\n                     varGenes = NULL,\n                     dbscanEps = NULL,\n                     seed = 12345,\n                     logfile = NULL,\n                     verbose = TRUE) {\n  startTime <- Sys.time()\n  .logMessages(paste(rep(\"-\", 50), collapse = \"\"),\n    logfile = logfile,\n    append = TRUE,\n    verbose = verbose\n  )\n  .logMessages(\"Starting DecontX\",\n    logfile = logfile,\n    append = TRUE,\n    verbose = verbose\n  )\n  .logMessages(paste(rep(\"-\", 50), collapse = \"\"),\n    logfile = logfile,\n    append = TRUE,\n    verbose = verbose\n  )\n\n  runParams <- list(\n    z = z,\n    batch = batch,\n    batchBackground = batchBackground,\n    maxIter = maxIter,\n    delta = delta,\n    estimateDelta = estimateDelta,\n    convergence = convergence,\n    varGenes = varGenes,\n    dbscanEps = dbscanEps,\n    logfile = logfile,\n    verbose = verbose\n  )\n\n\n  totalGenes <- nrow(counts)\n  totalCells <- ncol(counts)\n  geneNames <- rownames(counts)\n  nC <- ncol(counts)\n  allCellNames <- colnames(counts)\n\n  ## Set up final decontaminated matrix\n  estRmat <- Matrix::Matrix(\n    data = 0,\n    ncol = totalCells,\n    nrow = totalGenes,\n    sparse = TRUE,\n    dimnames = list(geneNames, allCellNames)\n  )\n\n  ## Generate batch labels if none were supplied\n  if (is.null(batch)) {\n    batch <- rep(\"all_cells\", nC)\n\n    # If batch null, bgBatch has to be null\n    if (!is.null(batchBackground)) {\n      stop(\n        \"When experiment default to no bacth, background should \",\n        \"also default to no batch.\"\n      )\n    }\n\n    if (!is.null(countsBackground)) {\n      batchBackground <- rep(\"all_cells\", ncol(countsBackground))\n    }\n  } else {\n\n    # If batch not null and countsBackground supplied,\n    # user has to supply batchBackground as well\n    if (!is.null(countsBackground) & is.null(batchBackground)) {\n      stop(\n        \"Cell batch, and background are supplied. Please also \",\n        \"supply background batch.\"\n      )\n    }\n\n  }\n  runParams$batch <- batch\n  runParams$batchBackground <- batchBackground\n  batchIndex <- unique(batch)\n\n  ## Set result lists upfront for all cells from different batches\n  logLikelihood <- c()\n  estConp <- rep(NA, nC)\n  returnZ <- rep(NA, nC)\n  resBatch <- list()\n\n  ## Cycle through each sample/batch and run DecontX\n  for (bat in batchIndex) {\n    if (length(batchIndex) == 1) {\n      .logMessages(\n        date(),\n        \".. Analyzing all cells\",\n        logfile = logfile,\n        append = TRUE,\n        verbose = verbose\n      )\n    } else {\n      .logMessages(\n        date(),\n        \" .. Analyzing cells in batch '\",\n        bat, \"'\",\n        sep = \"\",\n        logfile = logfile,\n        append = TRUE,\n        verbose = verbose\n      )\n    }\n\n    zBat <- NULL\n    countsBat <- counts[, batch == bat]\n    bgBat <- countsBackground[, batchBackground == bat]\n\n    ## Convert to sparse matrix\n    if (!inherits(countsBat, \"dgCMatrix\")) {\n      .logMessages(\n        date(),\n        \".... Converting to sparse matrix\",\n        logfile = logfile,\n        append = TRUE,\n        verbose = verbose\n      )\n      countsBat <- methods::as(countsBat, \"CsparseMatrix\")\n    }\n    if (!is.null(bgBat)) {\n      if (!inherits(bgBat, \"dgCMatrix\")) {\n        bgBat <- methods::as(bgBat, \"CsparseMatrix\")\n      }\n    }\n\n    if (!is.null(z)) {\n      zBat <- z[batch == bat]\n    }\n    if (is.null(seed)) {\n      res <- .decontXoneBatch(\n        counts = countsBat,\n        z = zBat,\n        batch = bat,\n        countsBackground = bgBat,\n        maxIter = maxIter,\n        delta = delta,\n        estimateDelta = estimateDelta,\n        convergence = convergence,\n        iterLogLik = iterLogLik,\n        logfile = logfile,\n        verbose = verbose,\n        varGenes = varGenes,\n        dbscanEps = dbscanEps,\n        seed = seed\n      )\n    } else {\n      withr::with_seed(\n        seed,\n        res <- .decontXoneBatch(\n          counts = countsBat,\n          z = zBat,\n          batch = bat,\n          countsBackground = bgBat,\n          maxIter = maxIter,\n          delta = delta,\n          estimateDelta = estimateDelta,\n          convergence = convergence,\n          iterLogLik = iterLogLik,\n          logfile = logfile,\n          verbose = verbose,\n          varGenes = varGenes,\n          dbscanEps = dbscanEps,\n          seed = seed\n        )\n      )\n    }\n\n    ## Try to convert class of new matrix to class of original matrix\n\n    .logMessages(\n      date(),\n      \".. Calculating final decontaminated matrix\",\n      logfile = logfile,\n      append = TRUE,\n      verbose = verbose\n    )\n\n    estRmat.temp <- calculateNativeMatrix(\n      counts = countsBat,\n      theta = res$theta,\n      eta = res$eta,\n      phi = res$phi,\n      z = as.integer(res$z),\n      pseudocount = 1e-20\n    )\n\n    # Speed up sparse matrix value assignment by cbind -> order recovery\n    allCol <- paste0(\"col_\", seq_len(ncol(estRmat)))\n    colnames(estRmat) <- allCol\n\n    subCol <- paste0(\"col_\", which(batch == bat))\n    colnames(estRmat.temp) <- subCol\n\n    estRmat <- estRmat[, !(allCol %in% subCol)]\n    estRmat <- cbind(estRmat, estRmat.temp)\n\n    # Recover order and set names\n    estRmat <- estRmat[, allCol]\n    dimnames(estRmat) <- list(geneNames, allCellNames)\n\n    resBatch[[bat]] <- list(\n      z = res$z,\n      phi = res$phi,\n      eta = res$eta,\n      delta = res$delta,\n      theta = res$theta,\n      contamination = res$contamination,\n      logLikelihood = res$logLikelihood,\n      UMAP = res$UMAP,\n      z = res$z,\n      iteration = res$iteration\n    )\n\n    estConp[batch == bat] <- res$contamination\n    if (length(batchIndex) > 1) {\n      returnZ[batch == bat] <- paste0(bat, \"-\", res$z)\n    } else {\n      returnZ[batch == bat] <- res$z\n    }\n  }\n  names(resBatch) <- batchIndex\n\n  returnResult <- list(\n    \"runParams\" = runParams,\n    \"estimates\" = resBatch,\n    \"decontXcounts\" = estRmat,\n    \"contamination\" = estConp,\n    \"z\" = returnZ\n  )\n\n\n  if (inherits(counts, c(\"DelayedMatrix\", \"DelayedArray\"))) {\n\n    .logMessages(\n      date(),\n      \".. Converting decontaminated matrix to\", class(counts),\n      logfile = logfile,\n      append = TRUE,\n      verbose = verbose\n    )\n\n    ## Determine class of seed in DelayedArray\n    seed.class <- unique(DelayedArray::seedApply(counts, class))[[1]]\n    if (seed.class == \"HDF5ArraySeed\") {\n      returnResult$decontXcounts <-\n        methods::as(returnResult$decontXcounts, \"HDF5Matrix\")\n    } else {\n      if (isTRUE(methods::canCoerce(returnResult$decontXcounts, seed.class))) {\n        returnResult$decontXcounts <-\n          methods::as(returnResult$decontXcounts, seed.class)\n      }\n    }\n    returnResult$decontXcounts <-\n      DelayedArray::DelayedArray(returnResult$decontXcounts)\n  } else {\n    try({\n      if (methods::canCoerce(returnResult$decontXcounts, class(counts))) {\n          returnResult$decontXcounts <-\n            methods::as(returnResult$decontXcounts, class(counts))\n        }\n      },\n      silent = TRUE\n    )\n  }\n\n  endTime <- Sys.time()\n  .logMessages(paste(rep(\"-\", 50), collapse = \"\"),\n    logfile = logfile,\n    append = TRUE,\n    verbose = verbose\n  )\n  .logMessages(\"Completed DecontX. Total time:\",\n    format(difftime(endTime, startTime)),\n    logfile = logfile,\n    append = TRUE,\n    verbose = verbose\n  )\n  .logMessages(paste(rep(\"-\", 50), collapse = \"\"),\n    logfile = logfile,\n    append = TRUE,\n    verbose = verbose\n  )\n\n  return(returnResult)\n}\n\n\n# This function updates decontamination for one batch\n# seed passed to this function is to be furhter passed to\n# function .decontxInitializeZ()\n.decontXoneBatch <- function(counts,\n                             z = NULL,\n                             batch = NULL,\n                             countsBackground = NULL,\n                             maxIter = 200,\n                             delta = c(10, 10),\n                             estimateDelta = TRUE,\n                             convergence = 0.01,\n                             iterLogLik = 10,\n                             logfile = NULL,\n                             verbose = TRUE,\n                             varGenes = NULL,\n                             dbscanEps = NULL,\n                             seed = 12345) {\n  .checkCountsDecon(counts)\n  .checkDelta(delta)\n\n  # nG <- nrow(counts)\n  nC <- ncol(counts)\n  deconMethod <- \"clustering\"\n\n  ## Generating UMAP and cell cluster labels if none are provided\n  umap <- NULL\n  if (is.null(z)) {\n    m <- \".... Generating UMAP and estimating cell types\"\n    estimateCellTypes <- TRUE\n  } else {\n    m <- \".... Generating UMAP\"\n    estimateCellTypes <- FALSE\n  }\n  .logMessages(\n    date(),\n    m,\n    logfile = logfile,\n    append = TRUE,\n    verbose = verbose\n  )\n\n  varGenes <- .processvarGenes(varGenes)\n  dbscanEps <- .processdbscanEps(dbscanEps)\n\n  celda.init <- .decontxInitializeZ(\n    object = counts,\n    varGenes = varGenes,\n    dbscanEps = dbscanEps,\n    estimateCellTypes = estimateCellTypes,\n    seed = seed\n  )\n  if (is.null(z)) {\n    z <- celda.init$z\n  }\n  umap <- celda.init$umap\n  colnames(umap) <- c(\n    \"DecontX_UMAP_1\",\n    \"DecontX_UMAP_2\"\n  )\n  rownames(umap) <- colnames(counts)\n\n  z <- .processCellLabels(z, numCells = nC)\n  K <- length(unique(z))\n\n  iter <- 1L\n  numIterWithoutImprovement <- 0L\n  stopIter <- 3L\n\n  .logMessages(\n    date(),\n    \".... Estimating contamination\",\n    logfile = logfile,\n    append = TRUE,\n    verbose = verbose\n  )\n\n  if (deconMethod == \"clustering\") {\n    ## Initialization\n    theta <- stats::rbeta(\n      n = nC,\n      shape1 = delta[1],\n      shape2 = delta[2]\n    )\n\n    nextDecon <- decontXInitialize(\n      counts = counts,\n      theta = theta,\n      z = z,\n      pseudocount = 1e-20\n    )\n    phi <- nextDecon$phi\n    eta <- nextDecon$eta\n\n    # if countsBackground is not null, use empirical dist. to replace eta\n    if (!is.null(countsBackground)) {\n      # Add pseudocount to each gene in eta\n       eta_tilda <- Matrix::rowSums(countsBackground) + 1e-20\n       eta <- eta_tilda / sum(eta_tilda)\n       # Make eta a matrix same dimension as phi\n       eta <- matrix(eta, length(eta), dim(phi)[2])\n    }\n\n    ll <- c()\n    llRound <- decontXLogLik(\n      counts = counts,\n      z = z,\n      phi = phi,\n      eta = eta,\n      theta = theta,\n      pseudocount = 1e-20\n    )\n\n    ## EM updates\n    theta.previous <- theta\n    converged <- FALSE\n    counts.colsums <- Matrix::colSums(counts)\n    while (iter <= maxIter & !isTRUE(converged) &\n      numIterWithoutImprovement <= stopIter) {\n        if (is.null(countsBackground)) {\n          nextDecon <- decontXEM(\n            counts = counts,\n            counts_colsums = counts.colsums,\n            phi = phi,\n            estimate_eta = TRUE,\n            eta = eta,\n            theta = theta,\n            z = z,\n            estimate_delta = isTRUE(estimateDelta),\n            delta = delta,\n            pseudocount = 1e-20\n          )\n        } else {\n           nextDecon <- decontXEM(\n            counts = counts,\n            counts_colsums = counts.colsums,\n            phi = phi,\n            estimate_eta = FALSE,\n            eta = eta,\n            theta = theta,\n            z = z,\n            estimate_delta = isTRUE(estimateDelta),\n            delta = delta,\n            pseudocount = 1e-20\n          )\n        }\n\n\n      theta <- nextDecon$theta\n      phi <- nextDecon$phi\n      eta <- nextDecon$eta\n      delta <- nextDecon$delta\n\n      max.divergence <- max(abs(theta.previous - theta))\n      if (max.divergence < convergence) {\n        converged <- TRUE\n      }\n      theta.previous <- theta\n\n      ## Calculate likelihood and check for convergence\n      if (iter %% iterLogLik == 0 || converged) {\n        llTemp <- decontXLogLik(\n          counts = counts,\n          z = z,\n          phi = phi,\n          eta = eta,\n          theta = theta,\n          pseudocount = 1e-20\n        )\n\n        ll <- c(ll, llTemp)\n\n        .logMessages(date(),\n          \"...... Completed iteration:\",\n          iter,\n          \"| converge:\",\n          signif(max.divergence, 4),\n          logfile = logfile,\n          append = TRUE,\n          verbose = verbose\n        )\n      }\n\n      iter <- iter + 1L\n    }\n  }\n\n  resConp <- nextDecon$contamination\n  names(resConp) <- colnames(counts)\n\n  return(list(\n    \"logLikelihood\" = ll,\n    \"contamination\" = resConp,\n    \"theta\" = theta,\n    \"delta\" = delta,\n    \"phi\" = phi,\n    \"eta\" = eta,\n    \"UMAP\" = umap,\n    \"iteration\" = iter - 1L,\n    \"z\" = z\n  ))\n}\n\n\n\n\n\n# This function calculates the log-likelihood\n#\n# counts Numeric/Integer matrix. Observed count matrix, rows represent features\n# and columns represent cells\n# z Integer vector. Cell population labels\n# phi Numeric matrix. Rows represent features and columns represent cell\n# populations\n# eta Numeric matrix. Rows represent features and columns represent cell\n# populations\n# theta Numeric vector. Proportion of truely expressed transcripts\n.deconCalcLL <- function(counts, z, phi, eta, theta) {\n  # ll = sum( t(counts) * log( (1-conP )*geneDist[z,] + conP * conDist[z, ] +\n  # 1e-20 ) )  # when dist_mat are K x G matrices\n  ll <- sum(Matrix::t(counts) * log(theta * t(phi)[z, ] +\n    (1 - theta) * t(eta)[z, ] + 1e-20))\n  return(ll)\n}\n\n# DEPRECATED. This is not used, but is kept as it might be useful in the future\n# This function calculates the log-likelihood of background distribution\n# decontamination\n# bgDist Numeric matrix. Rows represent feature and columns are the times that\n# the background-distribution has been replicated.\n.bgCalcLL <- function(counts, globalZ, cbZ, phi, eta, theta) {\n  # ll <- sum(t(counts) * log(theta * t(cellDist) +\n  #        (1 - theta) * t(bgDist) + 1e-20))\n  ll <- sum(t(counts) * log(theta * t(phi)[cbZ, ] +\n    (1 - theta) * t(eta)[globalZ, ] + 1e-20))\n  return(ll)\n}\n\n\n# This function updates decontamination\n#  phi Numeric matrix. Rows represent features and columns represent cell\n# populations\n#  eta Numeric matrix. Rows represent features and columns represent cell\n# populations\n#  theta Numeric vector. Proportion of truely expressed transctripts\n#' @importFrom MCMCprecision fit_dirichlet\n.cDCalcEMDecontamination <- function(counts,\n                                     phi,\n                                     eta,\n                                     theta,\n                                     z,\n                                     K,\n                                     delta) {\n  ## Notes: use fix-point iteration to update prior for theta, no need\n  ## to feed delta anymore\n\n  logPr <- log(t(phi)[z, ] + 1e-20) + log(theta + 1e-20)\n  logPc <- log(t(eta)[z, ] + 1e-20) + log(1 - theta + 1e-20)\n  Pr.e <- exp(logPr)\n  Pc.e <- exp(logPc)\n  Pr <- Pr.e / (Pr.e + Pc.e)\n\n  estRmat <- t(Pr) * counts\n  rnGByK <- .colSumByGroupNumeric(estRmat, z, K)\n  cnGByK <- rowSums(rnGByK) - rnGByK\n\n  counts.cs <- colSums(counts)\n  estRmat.cs <- colSums(estRmat)\n  estRmat.cs.n <- estRmat.cs / counts.cs\n  estCmat.cs.n <- 1 - estRmat.cs.n\n  temp <- cbind(estRmat.cs.n, estCmat.cs.n)\n  deltaV2 <- MCMCprecision::fit_dirichlet(temp)$alpha\n\n  ## Update parameters\n  theta <-\n    (estRmat.cs + deltaV2[1]) / (counts.cs + sum(deltaV2))\n  phi <- normalizeCounts(rnGByK,\n    normalize = \"proportion\",\n    pseudocountNormalize = 1e-20\n  )\n  eta <- normalizeCounts(cnGByK,\n    normalize = \"proportion\",\n    pseudocountNormalize = 1e-20\n  )\n\n  return(list(\n    \"estRmat\" = estRmat,\n    \"theta\" = theta,\n    \"phi\" = phi,\n    \"eta\" = eta,\n    \"delta\" = deltaV2\n  ))\n}\n\n# DEPRECATED. This is not used, but is kept as it might be useful in the\n# feature.\n# This function updates decontamination using background distribution\n.cDCalcEMbgDecontamination <-\n  function(counts, globalZ, cbZ, trZ, phi, eta, theta) {\n    logPr <- log(t(phi)[cbZ, ] + 1e-20) + log(theta + 1e-20)\n    logPc <-\n      log(t(eta)[globalZ, ] + 1e-20) + log(1 - theta + 1e-20)\n\n    Pr <- exp(logPr) / (exp(logPr) + exp(logPc))\n    Pc <- 1 - Pr\n    deltaV2 <-\n      MCMCprecision::fit_dirichlet(matrix(c(Pr, Pc), ncol = 2))$alpha\n\n    estRmat <- t(Pr) * counts\n    phiUnnormalized <-\n      .colSumByGroupNumeric(estRmat, cbZ, max(cbZ))\n    etaUnnormalized <-\n      rowSums(phiUnnormalized) - .colSumByGroupNumeric(\n        phiUnnormalized,\n        trZ, max(trZ)\n      )\n\n    ## Update paramters\n    theta <-\n      (colSums(estRmat) + deltaV2[1]) / (colSums(counts) + sum(deltaV2))\n    phi <-\n      normalizeCounts(phiUnnormalized,\n        normalize = \"proportion\",\n        pseudocountNormalize = 1e-20\n      )\n    eta <-\n      normalizeCounts(etaUnnormalized,\n        normalize = \"proportion\",\n        pseudocountNormalize = 1e-20\n      )\n\n    return(list(\n      \"estRmat\" = estRmat,\n      \"theta\" = theta,\n      \"phi\" = phi,\n      \"eta\" = eta,\n      \"delta\" = deltaV2\n    ))\n  }\n\n## Make sure provided count matrix is the right type\n.checkCountsDecon <- function(counts) {\n  if (sum(is.na(counts)) > 0) {\n    stop(\"Missing value in 'counts' matrix.\")\n  }\n  if (is.null(dim(counts))) {\n    stop(\"At least 2 genes need to have non-zero expressions.\")\n  }\n}\n\n\n## Make sure provided cell labels are the right type\n#' @importFrom plyr mapvalues\n.processCellLabels <- function(z, numCells) {\n  if (length(z) != numCells) {\n    stop(\n      \"'z' must be of the same length as the number of cells in the\",\n      \" 'counts' matrix.\"\n    )\n  }\n  if (length(unique(z)) < 2) {\n    stop(\n      \"No need to decontaminate when only one cluster\",\n      \" is in the dataset.\"\n    ) # Even though\n    # everything runs smoothly when length(unique(z)) == 1, result is not\n    # trustful\n  }\n  if (!is.factor(z)) {\n    z <- plyr::mapvalues(z, unique(z), seq(length(unique(z))))\n    z <- as.factor(z)\n  }\n  return(z)\n}\n\n\n## Add two (veried-length) vectors of logLikelihood\naddLogLikelihood <- function(llA, llB) {\n  lengthA <- length(llA)\n  lengthB <- length(llB)\n\n  if (lengthA >= lengthB) {\n    llB <- c(llB, rep(llB[lengthB], lengthA - lengthB))\n    ll <- llA + llB\n  } else {\n    llA <- c(llA, rep(llA[lengthA], lengthB - lengthA))\n    ll <- llA + llB\n  }\n\n  return(ll)\n}\n\n.decontxInitializeZ <- function(object,\n                                varGenes = 2000,\n                                dbscanEps = 1,\n                                estimateCellTypes = TRUE,\n                                seed = 12345) {\n  if (!is(object, \"SingleCellExperiment\")) {\n    sce <- SingleCellExperiment::SingleCellExperiment(\n      assays = list(counts = object)\n    )\n  }\n  sce <- scater::logNormCounts(sce, log = TRUE)\n\n  if (!is.null(seed)) {\n    with_seed(\n      seed,\n      resUmap <- scater::calculateUMAP(sce, ntop = varGenes,\n                                       n_threads = 1,\n                                       exprs_values = \"logcounts\")\n    )\n  } else {\n    resUmap <- scater::calculateUMAP(sce, ntop = varGenes,\n                                     n_threads = 1,\n                                     exprs_values = \"logcounts\")\n  }\n\n  z <- NULL\n  if (isTRUE(estimateCellTypes)) {\n    # Find clusters with dbSCAN\n    totalClusters <- 1\n    iter <- 1\n    while (totalClusters <= 1 & dbscanEps > 0 & iter < 10) {\n      resDbscan <- dbscan::dbscan(resUmap, dbscanEps)\n      dbscanEps <- dbscanEps - (0.25 * dbscanEps)\n      totalClusters <- length(unique(resDbscan$cluster))\n      iter <- iter + 1\n    }\n\n    # If dbscan was not able to get more than 2 clusters,\n    # use kmeans to force 2 clusters as a last resort\n    if (totalClusters == 1) {\n      cl <- stats::kmeans(t(SingleCellExperiment::logcounts(sce)), 2)\n      z <- cl$cluster\n    } else {\n      z <- resDbscan$cluster\n    }\n  }\n\n  return(list(\n    \"z\" = z,\n    \"umap\" = resUmap\n  ))\n}\n\n\n## Initialization of cell labels for DecontX when they are not given\n.decontxInitializeZ_prevous <-\n  function(object, # object is either a sce object or a count matrix\n           varGenes = 5000,\n           dbscanEps = 1.0,\n           verbose = TRUE,\n           seed = 12345,\n           logfile = NULL) {\n    if (!is(object, \"SingleCellExperiment\")) {\n      sce <- SingleCellExperiment::SingleCellExperiment(\n        assays =\n          list(counts = object)\n      )\n    }\n\n    sce <- sce[Matrix::rowSums(SingleCellExperiment::counts(sce)) > 0, ]\n    sce <- scater::logNormCounts(sce, log = TRUE)\n    # sce <- scater::normalize(sce)\n\n\n    if (nrow(sce) <= varGenes) {\n      topVariableGenes <- seq_len(nrow(sce))\n    } else if (nrow(sce) > varGenes) {\n      sce.var <- scran::modelGeneVar(sce)\n      topVariableGenes <- order(sce.var$bio,\n        decreasing = TRUE\n      )[seq(varGenes)]\n    }\n    countsFiltered <- as.matrix(SingleCellExperiment::counts(\n      sce[topVariableGenes, ]\n    ))\n    storage.mode(countsFiltered) <- \"integer\"\n\n    .logMessages(\n      date(),\n      \"...... Collapsing features into\",\n      L,\n      \"modules\",\n      logfile = logfile,\n      append = TRUE,\n      verbose = verbose\n    )\n    ## Celda clustering using recursive module splitting\n    L <- min(L, nrow(countsFiltered))\n    if (is.null(seed)) {\n      initialModuleSplit <- recursiveSplitModule(countsFiltered,\n        initialL = L, maxL = L, perplexity = FALSE, verbose = FALSE\n      )\n    } else {\n      with_seed(seed,\n                initialModuleSplit <- recursiveSplitModule(countsFiltered,\n        initialL = L, maxL = L, perplexity = FALSE, verbose = FALSE\n      ))\n    }\n    initialModel <- subsetCeldaList(initialModuleSplit, list(L = L))\n\n    .logMessages(\n      date(),\n      \"...... Reducing dimensionality with UMAP\",\n      logfile = logfile,\n      append = TRUE,\n      verbose = verbose\n    )\n    ## Louvan graph-based method to reduce dimension into 2 cluster\n    nNeighbors <- min(15, ncol(countsFiltered))\n    # resUmap <- uwot::umap(t(sqrt(fm)), n_neighbors = nNeighbors,\n    #    min_dist = 0.01, spread = 1)\n    # rm(fm)\n    resUmap <- celdaUmap(countsFiltered, initialModel,\n      minDist = 0.01, spread = 1, nNeighbors = nNeighbors, seed = seed\n    )\n\n    .logMessages(\n      date(),\n      \" ...... Determining cell clusters with DBSCAN (Eps=\",\n      dbscanEps,\n      \")\",\n      sep = \"\",\n      logfile = logfile,\n      append = TRUE,\n      verbose = verbose\n    )\n    # Use dbSCAN on the UMAP to identify broad cell types\n    totalClusters <- 1\n    while (totalClusters <= 1 & dbscanEps > 0) {\n      resDbscan <- dbscan::dbscan(resUmap, dbscanEps)\n      dbscanEps <- dbscanEps - (0.25 * dbscanEps)\n      totalClusters <- length(unique(resDbscan$cluster))\n    }\n\n    return(list(\n      \"z\" = resDbscan$cluster,\n      \"umap\" = resUmap\n    ))\n  }\n\n\n## process varGenes\n.processvarGenes <- function(varGenes) {\n  if (is.null(varGenes)) {\n    varGenes <- 5000\n  } else {\n    if (varGenes < 2 | length(varGenes) > 1) {\n      stop(\"Parameter 'varGenes' must be an integer larger than 1.\")\n    }\n  }\n  return(varGenes)\n}\n\n## process dbscanEps for resolusion threshold using DBSCAN\n.processdbscanEps <- function(dbscanEps) {\n  if (is.null(dbscanEps)) {\n    dbscanEps <- 1\n  } else {\n    if (dbscanEps < 0) {\n      stop(\"Parameter 'dbscanEps' needs to be non-negative.\")\n    }\n  }\n  return(dbscanEps)\n}\n\n.checkDelta <- function(delta) {\n  if (!is.numeric(delta) | length(delta) != 2 | any(delta < 0)) {\n    stop(\"'delta' needs to be a numeric vector of length 2\",\n         \" containing positive values.\")\n  }\n  return(delta)\n}\n\n\n\n\n#########################\n# Simulating Data       #\n#########################\n\n#' @title Simulate contaminated count matrix\n#' @description This function generates a list containing two count matrices --\n#'  one for real expression, the other one for contamination, as well as other\n#'  parameters used in the simulation which can be useful for running\n#'  decontamination.\n#' @param C Integer. Number of cells to be simulated. Default \\code{300}.\n#' @param G Integer. Number of genes to be simulated. Default \\code{100}.\n#' @param K Integer. Number of cell populations to be simulated.\n#' Default \\code{3}.\n#' @param NRange Integer vector. A vector of length 2 that specifies the lower\n#'  and upper bounds of the number of counts generated for each cell. Default\n#'  \\code{c(500, 1000)}.\n#' @param beta Numeric. Concentration parameter for Phi. Default \\code{0.1}.\n#' @param delta Numeric or Numeric vector. Concentration parameter for Theta.\n#'  If input as a single numeric value, symmetric values for beta\n#'  distribution are specified; if input as a vector of lenght 2, the two\n#'  values will be the shape1 and shape2 paramters of the beta distribution\n#'  respectively. Default \\code{c(1, 5)}.\n#' @param numMarkers Integer. Number of markers for each cell population.\n#' Default \\code{3}.\n#' @param seed Integer. Passed to \\code{\\link[withr]{with_seed}}.\n#' For reproducibility, a default value of 12345 is used. If NULL, no calls to\n#'  \\code{\\link[withr]{with_seed}} are made.\n#' @return A list containing the \\code{nativeMatirx} (real expression),\n#' \\code{observedMatrix} (real expression + contamination), as well as other\n#' parameters used in the simulation.\n#' @author Shiyi Yang, Yuan Yin, Joshua Campbell\n#' @examples\n#' contaminationSim <- simulateContamination(K = 3, delta = c(1, 10))\n#' @export\nsimulateContamination <- function(C = 300,\n                                  G = 100,\n                                  K = 3,\n                                  NRange = c(500, 1000),\n                                  beta = 0.1,\n                                  delta = c(1, 10),\n                                  numMarkers = 3,\n                                  seed = 12345) {\n  if (is.null(seed)) {\n    res <- .simulateContaminatedMatrix(\n      C = C,\n      G = G,\n      K = K,\n      NRange = NRange,\n      beta = beta,\n      delta = delta,\n      numMarkers = numMarkers\n    )\n  } else {\n    with_seed(\n      seed,\n      res <- .simulateContaminatedMatrix(\n        C = C,\n        G = G,\n        K = K,\n        NRange = NRange,\n        beta = beta,\n        delta = delta,\n        numMarkers = numMarkers\n      )\n    )\n  }\n\n  return(res)\n}\n\n\n.simulateContaminatedMatrix <- function(C = 300,\n                                        G = 100,\n                                        K = 3,\n                                        NRange = c(500, 1000),\n                                        beta = 0.5,\n                                        delta = c(1, 2),\n                                        numMarkers = 3) {\n  if (length(delta) == 1) {\n    cpByC <- stats::rbeta(\n      n = C,\n      shape1 = delta,\n      shape2 = delta\n    )\n  } else {\n    cpByC <- stats::rbeta(\n      n = C,\n      shape1 = delta[1],\n      shape2 = delta[2]\n    )\n  }\n\n  z <- sample(seq(K), size = C, replace = TRUE)\n  if (length(unique(z)) < K) {\n    warning(\n      \"Only \",\n      length(unique(z)),\n      \" clusters are simulated. Try to increase numebr of cells 'C' if\",\n      \" more clusters are needed\"\n    )\n    K <- length(unique(z))\n    z <- plyr::mapvalues(z, unique(z), seq(length(unique(z))))\n  }\n\n  NbyC <- sample(seq(min(NRange), max(NRange)),\n    size = C,\n    replace = TRUE\n  )\n  cNbyC <- vapply(seq(C), function(i) {\n    stats::rbinom(\n      n = 1,\n      size = NbyC[i],\n      p = cpByC[i]\n    )\n  }, integer(1))\n  rNbyC <- NbyC - cNbyC\n\n  phi <- .rdirichlet(K, rep(beta, G))\n\n  ## Select random genes to be markers in each cell population\n  ## by setting their values to zero.\n  if (K * numMarkers > G) {\n    stop(\"The number of markers ('numMarkers') times the number of cell\",\n         \" populations ('K') cannot be greater than the number of\",\n         \" genes ('G').\")\n  }\n  markerKIndex <- rep(seq(K), each = numMarkers)\n  markerRowIndex <- sample(seq(G), numMarkers * K)\n  for (i in seq(K)) {\n    ix <- markerRowIndex[markerKIndex == i]\n    phi[i, ix] <- max(phi[i, ])\n    for (j in setdiff(seq(K), i)) {\n      phi[j, ix] <- 0\n    }\n  }\n  phi <- prop.table(phi, margin = 1)\n\n  ## sample real expressed count matrix\n  cellRmat <- vapply(seq(C), function(i) {\n    stats::rmultinom(1, size = rNbyC[i], prob = phi[z[i], ])\n  }, integer(G))\n\n  rownames(cellRmat) <- paste0(\"Gene_\", seq(G))\n  colnames(cellRmat) <- paste0(\"Cell_\", seq(C))\n\n  ## Get list of marker names\n  markerNames <- list()\n  for (i in seq(K)) {\n    markerNames[[i]] <- rownames(cellRmat)[markerRowIndex[markerKIndex == i]]\n  }\n  names(markerNames) <- paste0(\"CellType_\", seq(K), \"_Markers\")\n\n  ## sample contamination count matrix\n  nGByK <-\n    rowSums(cellRmat) - .colSumByGroup(cellRmat, group = z, K = K)\n  eta <- normalizeCounts(counts = nGByK, normalize = \"proportion\")\n\n  cellCmat <- vapply(seq(C), function(i) {\n    stats::rmultinom(1, size = cNbyC[i], prob = eta[, z[i]])\n  }, integer(G))\n  cellOmat <- cellRmat + cellCmat\n  contamination <- colSums(cellCmat) / colSums(cellOmat)\n\n  rownames(cellOmat) <- paste0(\"Gene_\", seq(G))\n  colnames(cellOmat) <- paste0(\"Cell_\", seq(C))\n\n  return(\n    list(\n      \"nativeCounts\" = cellRmat,\n      \"observedCounts\" = cellOmat,\n      \"NByC\" = NbyC,\n      \"z\" = z,\n      \"eta\" = eta,\n      \"phi\" = t(phi),\n      \"markers\" = markerNames,\n      \"numMarkers\" = numMarkers,\n      \"contamination\" = contamination\n    )\n  )\n}\n\n\n.checkBackground <- function(x, background, bgBatch,\n                             logfile = NULL, verbose = FALSE) {\n  # Remove background barcodes that have already appeared in x\n  # If bgBatch param is supplied, also remove duplicate bgBatch\n  if (!is.null(colnames(background))) {\n    dupBarcode <- colnames(background) %in% colnames(x)\n  } else {\n    dupBarcode <- FALSE\n    warning(\"No column names were found for the 'background' matrix. \",\n            \"No checking was performed between the ids in the 'backgroud' \",\n            \"matrix and 'x'.\",\n            \" Please ensure that no true cells are included in the background \",\n            \"matrix. Otherwise, results will be incorrect.\")\n  }\n\n  if (any(dupBarcode)) {\n    .logMessages(\n      date(),\n      \".. \",\n      sum(dupBarcode),\n      \" cells in the background matrix were removed as they were found in\",\n      \" the filtered matrix.\",\n      logfile = logfile,\n      append = TRUE,\n      verbose = verbose\n    )\n    background <- background[, !(dupBarcode), drop = FALSE]\n\n    if (!is.null(bgBatch)) {\n      if (length(bgBatch) != length(dupBarcode)) {\n        stop(\n          \"Length of bgBatch must be equal to the number of columns\",\n          \"of background matrix.\"\n          )\n      }\n      bgBatch <- bgBatch[!(dupBarcode)]\n    }\n  }\n\n  re <- list(background = background,\n            bgBatch = bgBatch)\n\n  return(re)\n}\n"
  },
  {
    "path": "R/elbow.R",
    "content": "# https://stackoverflow.com/questions/35194048/using-r-how-to-calculate\n#-the-distance-from-one-point-to-a-line\n# http://mathworld.wolfram.com/Point-LineDistance2-Dimensional.html\n# Kimberling, C. \"Triangle Centers and Central Triangles.\" Congr.\n# Numer. 129, 1-295, 1998.\n.dist2d <- function(a, b, c) {\n  v1 <- b - c\n  v2 <- a - b\n  m <- cbind(v1, v2)\n  d <- abs(det(m)) / sqrt(sum(v1 * v1))\n  return(d)\n}\n\n\n.secondDerivativeEstimate <- function(v) {\n  nv <- length(v)\n  res <- rep(NA, nv)\n  for (i in seq(2, nv - 1)) {\n    res[i] <- v[i + 1] + v[i - 1] - (2 * v[i])\n  }\n  return(res)\n}\n\n\n.curveElbow <- function(var, perplexity, pvalCutoff = 0.05) {\n  len <- length(perplexity)\n  a <- c(var[1], perplexity[1])\n  b <- c(var[len], perplexity[len])\n  res <- rep(NA, len)\n  for (i in seq_along(var)) {\n    res[i] <- .dist2d(c(var[i], perplexity[i]), a, b)\n  }\n  elbow <- which.max(res)\n  ix <- var > var[elbow]\n  perplexitySde <- .secondDerivativeEstimate(perplexity)\n  perplexitySdeSd <- stats::sd(perplexitySde[ix], na.rm = TRUE)\n  perplexitySdeMean <- mean(perplexitySde[ix], na.rm = TRUE)\n  perplexitySdePval <-\n    stats::pnorm(perplexitySde,\n      mean = perplexitySdeMean,\n      sd = perplexitySdeSd,\n      lower.tail = FALSE\n    )\n  # other <- which(ix & perplexitySdePval < pvalCutoff)\n  return(list(elbow = var[elbow]))\n}\n"
  },
  {
    "path": "R/factorizeMatrix.R",
    "content": "#' @title Generate factorized matrices showing each feature's influence on cell\n#'  / gene clustering\n#' @description Generates factorized matrices showing the contribution of each\n#'  feature in each cell population or each cell population in each sample.\n#' @param x Can be one of\n#'  \\itemize{\n#'  \\item A \\linkS4class{SingleCellExperiment} object returned by\n#'  \\link{celda_C}, \\link{celda_G} or \\link{celda_CG}, with the matrix\n#'  located in the \\code{useAssay} assay slot in \\code{altExp(x, altExpName)}.\n#'  Rows represent features and columns represent cells.\n#'  \\item Integer counts matrix. Rows represent features and columns represent\n#'  cells. This matrix should be the same as the one used to generate\n#'  \\code{celdaMod}.}\n#' @param useAssay A string specifying which \\link{assay}\n#'  slot to use if \\code{x} is a \\linkS4class{SingleCellExperiment} object.\n#'  Default \"counts\".\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @param celdaMod Celda model object. Only works if \\code{x} is an integer\n#'  counts matrix.\n#' @param type Character vector. A vector containing one or more of \"counts\",\n#'  \"proportion\", or \"posterior\". \"counts\" returns the raw number of counts for\n#'  each factorized matrix. \"proportions\" returns the normalized probabilities\n#'  for each factorized matrix, which are calculated by dividing the raw counts\n#'  in each factorized matrix by the total counts in each column. \"posterior\"\n#'  returns the posterior estimates which include the addition of the Dirichlet\n#'  concentration parameter (essentially as a pseudocount). Default\n#'  \\code{\"counts\"}.\n#' @export\nsetGeneric(\"factorizeMatrix\",\n    function(x,\n        celdaMod,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        type = c(\"counts\", \"proportion\", \"posterior\")) {\n\n        standardGeneric(\"factorizeMatrix\")})\n\n\n#' @examples\n#' data(sceCeldaCG)\n#' factorizedMatrices <- factorizeMatrix(sceCeldaCG, type = \"posterior\")\n#' @rdname factorizeMatrix\n#' @export\nsetMethod(\"factorizeMatrix\", signature(x = \"SingleCellExperiment\"),\n    function(x,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        type = c(\"counts\", \"proportion\", \"posterior\")) {\n\n        altExp <- SingleCellExperiment::altExp(x, e = altExpName)\n        counts <- SummarizedExperiment::assay(altExp, i = useAssay)\n        counts <- .processCounts(counts)\n\n        beta <- S4Vectors::metadata(altExp)$celda_parameters$beta\n        rNames <- rownames(altExp)\n\n        if (celdaModel(x, altExpName = altExpName) == \"celda_C\") {\n            z <- as.integer(\n                SummarizedExperiment::colData(altExp)$celda_cell_cluster)\n            K <- S4Vectors::metadata(altExp)$celda_parameters$K\n            alpha <- S4Vectors::metadata(altExp)$celda_parameters$alpha\n            sampleLabel <-\n                SummarizedExperiment::colData(altExp)$celda_sample_label\n            sNames <- S4Vectors::metadata(altExp)$celda_parameters$sampleLevels\n\n            res <- .factorizeMatrixC(\n                counts = counts,\n                z = z,\n                K = K,\n                alpha = alpha,\n                beta = beta,\n                sampleLabel = sampleLabel,\n                rNames = rNames,\n                sNames = sNames,\n                type = type)\n        } else if (celdaModel(x, altExpName = altExpName) == \"celda_CG\") {\n            K <- S4Vectors::metadata(altExp)$celda_parameters$K\n            z <- as.integer(\n                SummarizedExperiment::colData(altExp)$celda_cell_cluster)\n            y <- as.integer(\n                SummarizedExperiment::rowData(altExp)$celda_feature_module)\n            L <- S4Vectors::metadata(altExp)$celda_parameters$L\n            alpha <- S4Vectors::metadata(altExp)$celda_parameters$alpha\n            delta <- S4Vectors::metadata(altExp)$celda_parameters$delta\n            gamma <- S4Vectors::metadata(altExp)$celda_parameters$gamma\n            sampleLabel <-\n                SummarizedExperiment::colData(altExp)$celda_sample_label\n            cNames <- colnames(altExp)\n            sNames <- S4Vectors::metadata(altExp)$celda_parameters$sampleLevels\n\n            res <- .factorizeMatrixCG(\n                counts = counts,\n                K = K,\n                z = z,\n                y = y,\n                L = L,\n                alpha = alpha,\n                beta = beta,\n                delta = delta,\n                gamma = gamma,\n                sampleLabel = sampleLabel,\n                cNames = cNames,\n                rNames = rNames,\n                sNames = sNames,\n                type = type)\n        } else if (celdaModel(x, altExpName = altExpName) == \"celda_G\") {\n            y <- as.integer(\n                SummarizedExperiment::rowData(altExp)$celda_feature_module)\n            L <- S4Vectors::metadata(altExp)$celda_parameters$L\n            delta <- S4Vectors::metadata(altExp)$celda_parameters$delta\n            gamma <- S4Vectors::metadata(altExp)$celda_parameters$gamma\n            cNames <- colnames(altExp)\n\n            res <- .factorizeMatrixG(\n                counts = counts,\n                y = y,\n                L = L,\n                beta = beta,\n                delta = delta,\n                gamma = gamma,\n                cNames = cNames,\n                rNames = rNames,\n                type = type)\n        } else {\n            stop(\"S4Vectors::metadata(altExp(x, altExpName))$\",\n                \"celda_parameters$model must be\",\n                \" one of 'celda_C', 'celda_G', or 'celda_CG'\")\n        }\n        return(res)\n    })\n\n\n#' @return For celda_CG model, A list with elements for \"counts\", \"proportions\",\n#'  or \"posterior\" probabilities. Each element will be a list containing\n#'  factorized matrices for \"module\", \"cellPopulation\", and \"sample\".\n#'  Additionally, the contribution of each module in each individual cell will\n#'  be included in the \"cell\" element of \"counts\" and \"proportions\" elements.\n#' @examples\n#' data(celdaCGSim, celdaCGMod)\n#' factorizedMatrices <- factorizeMatrix(\n#'   celdaCGSim$counts,\n#'   celdaCGMod,\n#'   \"posterior\")\n#' @rdname factorizeMatrix\n#' @export\nsetMethod(\"factorizeMatrix\", signature(x = \"ANY\", celdaMod = \"celda_CG\"),\n    function(x,\n        celdaMod,\n        type = c(\"counts\", \"proportion\", \"posterior\")) {\n\n        counts <- .processCounts(x)\n        compareCountMatrix(counts, celdaMod)\n\n        z <- as.integer(celdaClusters(celdaMod)$z)\n        y <- as.integer(celdaClusters(celdaMod)$y)\n        # Sometimes, fewer clusters get returned by celda_C/G\n        # Taking the max(z)/max(y) rather than\n        # the original K/L will prevent errors\n        # K <- params(celdaMod)$K; L <- params(celdaMod)$L\n        K <- max(z)\n        L <- max(y)\n        alpha <- params(celdaMod)$alpha\n        beta <- params(celdaMod)$beta\n        delta <- params(celdaMod)$delta\n        gamma <- params(celdaMod)$gamma\n        sampleLabel <- sampleLabel(celdaMod)\n\n        cNames <- matrixNames(celdaMod)$column\n        rNames <- matrixNames(celdaMod)$row\n        sNames <- matrixNames(celdaMod)$sample\n\n        res <- .factorizeMatrixCG(\n            counts = counts,\n            K = K,\n            z = z,\n            y = y,\n            L = L,\n            alpha = alpha,\n            beta = beta,\n            delta = delta,\n            gamma = gamma,\n            sampleLabel = sampleLabel,\n            cNames = cNames,\n            rNames = rNames,\n            sNames = sNames,\n            type = type)\n        return(res)\n    }\n)\n\n\n.factorizeMatrixCG <- function(counts,\n    K,\n    z,\n    y,\n    L,\n    alpha,\n    beta,\n    delta,\n    gamma,\n    sampleLabel,\n    cNames,\n    rNames,\n    sNames,\n    type) {\n\n    s <- as.integer(sampleLabel)\n\n    ## Calculate counts one time up front\n    p <- .cCGDecomposeCounts(counts, s, z, y, K, L)\n    nS <- p$nS\n    nG <- p$nG\n    nM <- p$nM\n    mCPByS <- p$mCPByS\n    nTSByC <- p$nTSByC\n    nTSByCP <- p$nTSByCP\n    nByG <- p$nByG\n    nByTS <- p$nByTS\n    nGByTS <- p$nGByTS\n    nGByTS[nGByTS == 0] <- 1\n\n    GByTS <- matrix(0, nrow = length(y), ncol = L)\n    GByTS[cbind(seq(nG), y)] <- p$nByG\n\n    LNames <- paste0(\"L\", seq(L))\n    KNames <- paste0(\"K\", seq(K))\n    colnames(nTSByC) <- cNames\n    rownames(nTSByC) <- LNames\n    colnames(GByTS) <- LNames\n    rownames(GByTS) <- rNames\n    rownames(mCPByS) <- KNames\n    colnames(mCPByS) <- sNames\n    colnames(nTSByCP) <- KNames\n    rownames(nTSByCP) <- LNames\n\n    countsList <- c()\n    propList <- c()\n    postList <- c()\n    res <- list()\n\n    if (any(\"counts\" %in% type)) {\n        countsList <- list(\n            sample = mCPByS,\n            cellPopulation = nTSByCP,\n            cell = nTSByC,\n            module = GByTS,\n            geneDistribution = nGByTS\n        )\n        res <- c(res, list(counts = countsList))\n    }\n\n    if (any(\"proportion\" %in% type)) {\n        ## Need to avoid normalizing cell/gene states with zero cells/genes\n        uniqueZ <- sort(unique(z))\n        tempNTSByCP <- nTSByCP\n        tempNTSByCP[, uniqueZ] <- normalizeCounts(tempNTSByCP[, uniqueZ],\n            normalize = \"proportion\"\n        )\n\n        uniqueY <- sort(unique(y))\n        tempGByTS <- GByTS\n        tempGByTS[, uniqueY] <- normalizeCounts(tempGByTS[, uniqueY],\n            normalize = \"proportion\"\n        )\n        tempNGByTS <- nGByTS / sum(nGByTS)\n\n        propList <- list(\n            sample = normalizeCounts(mCPByS,\n                normalize = \"proportion\"\n            ),\n            cellPopulation = tempNTSByCP,\n            cell = normalizeCounts(nTSByC, normalize = \"proportion\"),\n            module = tempGByTS,\n            geneDistribution = tempNGByTS\n        )\n        res <- c(res, list(proportions = propList))\n    }\n\n    if (any(\"posterior\" %in% type)) {\n        gs <- GByTS\n        gs[cbind(seq(nG), y)] <- gs[cbind(seq(nG), y)] + delta\n        gs <- normalizeCounts(gs, normalize = \"proportion\")\n        tempNGByTS <- (nGByTS + gamma) / sum(nGByTS + gamma)\n\n        postList <- list(\n            sample = normalizeCounts(mCPByS + alpha,\n                normalize = \"proportion\"\n            ),\n            cellPopulation = normalizeCounts(nTSByCP + beta,\n                normalize = \"proportion\"\n            ),\n            module = gs,\n            geneDistribution = tempNGByTS\n        )\n        res <- c(res, posterior = list(postList))\n    }\n    return(res)\n}\n\n\n#' @examples\n#' data(celdaCSim, celdaCMod)\n#' factorizedMatrices <- factorizeMatrix(\n#'   celdaCSim$counts,\n#'   celdaCMod, \"posterior\"\n#' )\n#' @return For celda_C model, a list with elements for \"counts\", \"proportions\",\n#'  or \"posterior\" probabilities. Each element will be a list containing\n#'  factorized matrices for \"module\" and \"sample\".\n#' @rdname factorizeMatrix\n#' @export\nsetMethod(\"factorizeMatrix\", signature(x = \"ANY\", celdaMod = \"celda_C\"),\n    function(x,\n        celdaMod,\n        type = c(\"counts\", \"proportion\", \"posterior\")) {\n\n        counts <- .processCounts(x)\n        compareCountMatrix(counts, celdaMod)\n\n        z <- as.integer(celdaClusters(celdaMod)$z)\n        # Sometimes, fewer clusters get returned by celda_C\n        # Taking the max(z) rather than the\n        # original K will prevent errors\n        # K <- params(celdaMod)$K\n        K <- max(z)\n        alpha <- params(celdaMod)$alpha\n        beta <- params(celdaMod)$beta\n        sampleLabel <- sampleLabel(celdaMod)\n        rNames <- matrixNames(celdaMod)$row\n        sNames <- matrixNames(celdaMod)$sample\n\n        res <- .factorizeMatrixC(\n            counts = counts,\n            z = z,\n            K = K,\n            alpha = alpha,\n            beta = beta,\n            sampleLabel = sampleLabel,\n            rNames = rNames,\n            sNames = sNames,\n            type = type)\n        return(res)\n    }\n)\n\n\n.factorizeMatrixC <- function(\n    counts,\n    z,\n    K,\n    alpha,\n    beta,\n    sampleLabel,\n    rNames,\n    sNames,\n    type) {\n\n    s <- as.integer(sampleLabel)\n\n    p <- .cCDecomposeCounts(counts, s, z, K)\n    mCPByS <- p$mCPByS\n    nGByCP <- p$nGByCP\n    KNames <- paste0(\"K\", seq(K))\n    rownames(nGByCP) <- rNames\n    colnames(nGByCP) <- KNames\n    rownames(mCPByS) <- KNames\n    colnames(mCPByS) <- sNames\n\n    countsList <- c()\n    propList <- c()\n    postList <- c()\n    res <- list()\n\n    if (any(\"counts\" %in% type)) {\n        countsList <- list(sample = mCPByS, module = nGByCP)\n        res <- c(res, list(counts = countsList))\n    }\n\n    if (any(\"proportion\" %in% type)) {\n        ## Need to avoid normalizing cell/gene states with zero cells/genes\n        uniqueZ <- sort(unique(z))\n        tempNGByCP <- nGByCP\n        tempNGByCP[, uniqueZ] <- normalizeCounts(tempNGByCP[, uniqueZ],\n            normalize = \"proportion\"\n        )\n\n        propList <- list(\n            sample = normalizeCounts(mCPByS,\n                normalize = \"proportion\"\n            ),\n            module = tempNGByCP\n        )\n        res <- c(res, list(proportions = propList))\n    }\n\n    if (any(\"posterior\" %in% type)) {\n        postList <- list(\n            sample = normalizeCounts(mCPByS + alpha,\n                normalize = \"proportion\"\n            ),\n            module = normalizeCounts(nGByCP + beta,\n                normalize = \"proportion\"\n            )\n        )\n\n        res <- c(res, posterior = list(postList))\n    }\n\n    return(res)\n}\n\n\n#' @return For celda_G model, a list with elements for \"counts\", \"proportions\",\n#'  or \"posterior\" probabilities. Each element will be a list containing\n#'  factorized matrices for \"module\" and \"cell\".\n#' @examples\n#' data(celdaGSim, celdaGMod)\n#' factorizedMatrices <- factorizeMatrix(\n#'   celdaGSim$counts,\n#'   celdaGMod, \"posterior\"\n#' )\n#' @rdname factorizeMatrix\n#' @export\nsetMethod(\"factorizeMatrix\", signature(x = \"ANY\", celdaMod = \"celda_G\"),\n    function(x,\n        celdaMod,\n        type = c(\"counts\", \"proportion\", \"posterior\")) {\n\n        counts <- .processCounts(x)\n        compareCountMatrix(counts, celdaMod)\n\n        y <- as.integer(celdaClusters(celdaMod)$y)\n        # Sometimes, fewer clusters get returned by celda_G\n        # Taking the max(y) rather than the original\n        # L will prevent errors\n        # L <- params(celdaMod)$L\n        L <- max(y)\n        beta <- params(celdaMod)$beta\n        delta <- params(celdaMod)$delta\n        gamma <- params(celdaMod)$gamma\n        cNames <- matrixNames(celdaMod)$column\n        rNames <- matrixNames(celdaMod)$row\n\n        res <- .factorizeMatrixG(\n            counts = counts,\n            y = y,\n            L = L,\n            beta = beta,\n            delta = delta,\n            gamma = gamma,\n            cNames = cNames,\n            rNames = rNames,\n            type = type)\n        return(res)\n    }\n)\n\n\n.factorizeMatrixG <- function(\n    counts,\n    y,\n    L,\n    beta,\n    delta,\n    gamma,\n    cNames,\n    rNames,\n    type) {\n\n    p <- .cGDecomposeCounts(counts = counts, y = y, L = L)\n    nTSByC <- p$nTSByC\n    nByG <- p$nByG\n    nByTS <- p$nByTS\n    nGByTS <- p$nGByTS\n    nGByTS[nGByTS == 0] <- 1\n    nM <- p$nM\n    nG <- p$nG\n    rm(p)\n\n    GByTS <- matrix(0, nrow = length(y), ncol = L)\n    GByTS[cbind(seq(nG), y)] <- nByG\n\n    LNames <- paste0(\"L\", seq(L))\n    colnames(nTSByC) <- cNames\n    rownames(nTSByC) <- LNames\n    colnames(GByTS) <- LNames\n    rownames(GByTS) <- rNames\n    names(nGByTS) <- LNames\n\n    countsList <- c()\n    propList <- c()\n    postList <- c()\n    res <- list()\n\n    if (any(\"counts\" %in% type)) {\n        countsList <- list(\n            cell = nTSByC,\n            module = GByTS,\n            geneDistribution = nGByTS\n        )\n        res <- c(res, list(counts = countsList))\n    }\n\n    if (any(\"proportion\" %in% type)) {\n        ## Need to avoid normalizing cell/gene states with zero cells/genes\n        uniqueY <- sort(unique(y))\n        tempGByTS <- GByTS\n        tempGByTS[, uniqueY] <- normalizeCounts(tempGByTS[, uniqueY],\n            normalize = \"proportion\"\n        )\n        tempNGByTS <- nGByTS / sum(nGByTS)\n\n        propList <- list(\n            cell = normalizeCounts(nTSByC,\n                normalize = \"proportion\"\n            ),\n            module = tempGByTS,\n            geneDistribution = tempNGByTS\n        )\n        res <- c(res, list(proportions = propList))\n    }\n\n    if (any(\"posterior\" %in% type)) {\n        gs <- GByTS\n        gs[cbind(seq(nG), y)] <- gs[cbind(seq(nG), y)] + delta\n        gs <- normalizeCounts(gs, normalize = \"proportion\")\n        tempNGByTS <- (nGByTS + gamma) / sum(nGByTS + gamma)\n\n        postList <- list(\n            cell = normalizeCounts(nTSByC + beta,\n                normalize = \"proportion\"\n            ),\n            module = gs,\n            geneDistribution = tempNGByTS\n        )\n        res <- c(res, posterior = list(postList))\n    }\n\n    return(res)\n}\n"
  },
  {
    "path": "R/featureModuleLookup.R",
    "content": "#' @title Obtain the gene module of a gene of interest\n#' @description This function will output the corresponding feature module for\n#'  a specified vector of genes from a celda_CG or celda_G \\code{celdaModel}.\n#'  \\code{features} must match the rownames of \\code{sce}.\n#' @param sce A \\linkS4class{SingleCellExperiment} object returned by\n#'  \\link{celda_G}, or \\link{celda_CG}, with the matrix\n#'  located in the \\code{useAssay} assay slot.\n#'  Rows represent features and columns represent cells.\n#' @param features Character vector. Identify feature modules for the specified\n#'  feature names. \\code{feature} must match the rownames of \\code{sce}.\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @param exactMatch Logical. Whether to look for exactMatch of the gene name\n#'  within counts matrix. Default \\code{TRUE}.\n#' @param by Character. Where to search for \\code{features} in the sce object.\n#' If set to \\code{\"rownames\"} then the features will be searched for among\n#' rownames(sce). This can also be set to one of the \\code{colnames} of\n#' rowData(sce). Default \\code{\"rownames\"}.\n#' @return Numeric vector containing the module numbers for each feature. If\n#' the feature was not found, then an \\code{NA} value will be returned in that\n#' position. If no features were found, then an error will be given.\n#' @export\nsetGeneric(\"featureModuleLookup\",\n    function(sce,\n        features,\n        altExpName = \"featureSubset\",\n        exactMatch = TRUE,\n        by = \"rownames\") {\n\n        standardGeneric(\"featureModuleLookup\")})\n\n\n#' @examples\n#' data(sceCeldaCG)\n#' module <- featureModuleLookup(sce = sceCeldaCG,\n#'     features = c(\"Gene_1\", \"Gene_XXX\"))\n#' @export\n#' @rdname featureModuleLookup\nsetMethod(\"featureModuleLookup\", signature(sce = \"SingleCellExperiment\"),\n    function(sce,\n        features,\n        altExpName = \"featureSubset\",\n        exactMatch = TRUE,\n        by = \"rownames\") {\n\n        modules <- as.numeric(celdaModules(sce, altExpName = altExpName))\n\n        if (celdaModel(sce, altExpName = altExpName) %in%\n                c(\"celda_CG\", \"celda_G\")) {\n          altExp <- SingleCellExperiment::altExp(sce, altExpName)\n          featureIndex <- retrieveFeatureIndex(features, x = altExp,\n                exactMatch = exactMatch, by = by)\n          featureModules <- modules[featureIndex]\n          names(featureModules) <- features\n        } else {\n            stop(\"S4Vectors::metadata(altExp(sce, altExpName))$\",\n                \"celda_parameters$model must be\",\n                \" one of 'celda_G', or 'celda_CG'\")\n        }\n        return(featureModules)\n    }\n)\n"
  },
  {
    "path": "R/geneSetEnrich.R",
    "content": "#' @title Gene set enrichment\n#' @description Identify and return significantly-enriched terms for each gene\n#'  module in a Celda object or a \\linkS4class{SingleCellExperiment} object.\n#'  Performs gene set enrichment analysis for Celda\n#'  identified modules using the \\link[enrichR]{enrichr}.\n#' @author Ahmed Youssef, Zhe Wang\n#' @param x A numeric \\link{matrix} of counts or a\n#'  \\linkS4class{SingleCellExperiment}\n#'  with the matrix located in the assay slot under \\code{useAssay}.\n#'  Rows represent features and columns represent cells. Rownames of the\n#'  matrix or \\linkS4class{SingleCellExperiment} object should be gene names.\n#' @param useAssay A string specifying which \\link{assay}\n#'  slot to use if \\code{x} is a\n#'  \\linkS4class{SingleCellExperiment} object. Default \"counts\".\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @param celdaModel Celda object of class \\code{celda_G} or \\code{celda_CG}.\n#' @param databases Character vector. Name of reference database. Available\n#'  databases can be viewed by \\link[enrichR]{listEnrichrDbs}.\n#' @param fdr False discovery rate (FDR). Numeric. Cutoff value for adjusted\n#'  p-value, terms with FDR below this value are considered significantly\n#'  enriched.\n#' @return List of length 'L' where each member contains the significantly\n#'  enriched terms for the corresponding module.\n#' @importFrom enrichR enrichr\n#' @importFrom enrichR listEnrichrDbs\n#' @export\nsetGeneric(\"geneSetEnrich\",\n    function(x,\n        celdaModel,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        databases,\n        fdr = 0.05) {\n\n        standardGeneric(\"geneSetEnrich\")})\n\n\n#' @rdname geneSetEnrich\n#' @examples\n#' library(M3DExampleData)\n#' counts <- M3DExampleData::Mmus_example_list$data\n#' # subset 500 genes for fast clustering\n#' counts <- counts[seq(1501, 2000), ]\n#' # cluster genes into 10 modules for quick demo\n#' sce <- celda_G(x = as.matrix(counts), L = 10, verbose = FALSE)\n#' gse <- geneSetEnrich(sce,\n#'   databases = c(\"GO_Biological_Process_2018\", \"GO_Molecular_Function_2018\"))\n#' @export\nsetMethod(\"geneSetEnrich\",\n    signature(x = \"SingleCellExperiment\"),\n    function(x,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        databases,\n        fdr = 0.05) {\n\n        altExp <- SingleCellExperiment::altExp(x, e = altExpName)\n\n        # initialize list with one entry for each gene module\n        modules <- vector(\"list\",\n            length = S4Vectors::metadata(altExp)$celda_parameters$L)\n\n        # create dataframe with gene-module associations\n        genes <- data.frame(gene = rownames(altExp),\n            module = celdaModules(x, altExpName = altExpName))\n\n        # iterate over each module, get genes in that module, add to list\n        for (i in seq_len(S4Vectors::metadata(altExp)$celda_parameters$L)) {\n            modules[[i]] <- as.character(genes[genes$module == i, \"gene\"])\n        }\n\n        # enrichment analysis\n        enrichment <- lapply(modules, function(module) {\n            invisible(utils::capture.output(table <- enrichR::enrichr(\n                genes = module,\n                databases = databases)))\n            table <- Reduce(f = rbind, x = table)\n            table[table$Adjusted.P.value < fdr, \"Term\"]\n        })\n\n        # return results as a list\n        return(enrichment)\n    }\n)\n\n\n#' @rdname geneSetEnrich\n#' @export\nsetMethod(\"geneSetEnrich\",\n    signature(x = \"matrix\"),\n    function(x, celdaModel, databases, fdr = 0.05) {\n        # check for correct celda object\n        if (!(class(celdaModel) %in% c(\"celda_G\", \"celda_CG\"))) {\n            stop(\n                \"No gene modules in celda object. \",\n                \"Please provide object of class celda_G or celda_CG.\"\n            )\n        }\n\n        # initialize list with one entry for each gene module\n        modules <- vector(\"list\", length = params(celdaModel)$L)\n\n        # create dataframe with gene-module associations\n        genes <- data.frame(gene = rownames(x),\n            module = celdaClusters(celdaModel)$y)\n\n        # iterate over each module, get genes in that module, add to list\n        for (i in seq_len(params(celdaModel)$L)) {\n            modules[[i]] <- as.character(genes[genes$module == i, \"gene\"])\n        }\n\n        # enrichment analysis\n        enrichment <- lapply(modules, function(module) {\n            invisible(utils::capture.output(table <- enrichR::enrichr(\n                genes = module,\n                databases = databases\n            )))\n            table <- Reduce(f = rbind, x = table)\n            table[table$Adjusted.P.value < fdr, \"Term\"]\n        })\n\n        # return results as a list\n        return(enrichment)\n    }\n)\n"
  },
  {
    "path": "R/initialize_clusters.R",
    "content": ".initializeCluster <- function(N,\n                               len,\n                               z = NULL,\n                               initial = NULL,\n                               fixed = NULL) {\n\n  # If initial values are given, then they will not be randomly initialized\n  if (!is.null(initial)) {\n    initValues <- sort(unique(initial))\n    if (length(unique(initial)) != N || length(initial) != len ||\n      !all(initValues %in% seq(N))) {\n      stop(\n        \"'initial' needs to be a vector of length 'len'\",\n        \" containing N unique values.\"\n      )\n    }\n    z <- as.integer(as.factor(initial))\n  } else {\n    z <- rep(NA, len)\n  }\n\n  # Set any values that need to be fixed during sampling\n  if (!is.null(fixed)) {\n    fixedValues <- sort(unique(fixed))\n    if (length(fixed) != len || !all(fixedValues %in% seq(N))) {\n      stop(\n        \"'fixed' to be a vector of length 'len' where each entry is\",\n        \" one of N unique values or NA.\"\n      )\n    }\n    fixedIx <- !is.na(fixed)\n    z[fixedIx] <- fixed[fixedIx]\n    zNotUsed <- setdiff(seq(N), unique(fixed[fixedIx]))\n  } else {\n    zNotUsed <- seq(N)\n    fixedIx <- rep(FALSE, len)\n  }\n\n  # Randomly sample remaining values\n  zNa <- which(is.na(z))\n  if (length(zNa) > 0) {\n    z[zNa] <- sample(zNotUsed, length(zNa), replace = TRUE)\n  }\n\n  # Check to ensure each value is in the vector at least once\n  missing <- setdiff(seq(N), z)\n  for (i in missing) {\n    ta <- sort(table(z[!fixedIx]), decreasing = TRUE)\n    if (ta[1] == 1) {\n      stop(\"'len' is not long enough to accomodate 'N' unique values\")\n    }\n    ix <- which(z == as.integer(names(ta))[1] & !fixedIx)\n    z[sample(ix, 1)] <- i\n  }\n\n  return(z)\n}\n\n\n.initializeSplitZ <- function(counts,\n                              K,\n                              KSubcluster = NULL,\n                              alpha = 1,\n                              beta = 1,\n                              minCell = 3) {\n  s <- rep(1, ncol(counts))\n  if (is.null(KSubcluster)) {\n    KSubcluster <- ceiling(sqrt(K))\n  }\n\n  # Initialize the model with KSubcluster clusters\n  res <- .celda_C(\n    counts,\n    K = min(KSubcluster, ncol(counts)),\n    maxIter = 20,\n    zInitialize = \"random\",\n    alpha = alpha,\n    beta = beta,\n    splitOnIter = -1,\n    splitOnLast = FALSE,\n    verbose = FALSE,\n    reorder = FALSE\n  )\n  overallZ <- as.integer(as.factor(celdaClusters(res)$z))\n  currentK <- max(overallZ)\n\n  counter <- 0\n  while (currentK < K & counter < 25) {\n    # Determine which clusters are split-able\n    # KRemaining <- K - currentK\n    KPerCluster <- min(ceiling(K / currentK), KSubcluster)\n    KToUse <- ifelse(KPerCluster < 2, 2, KPerCluster)\n\n    zTa <- tabulate(overallZ, max(overallZ))\n\n    zToSplit <- which(zTa > minCell & zTa > KToUse)\n    if (length(zToSplit) > 1) {\n      zToSplit <- sample(zToSplit)\n    } else if (length(zToSplit) == 0) {\n      break\n    }\n\n    # Cycle through each splitable cluster and split it up into\n    # K.sublcusters\n    for (i in zToSplit) {\n      clustLabel <- .celda_C(counts[, overallZ == i, drop = FALSE],\n        K = KToUse,\n        zInitialize = \"random\",\n        alpha = alpha,\n        beta = beta,\n        maxIter = 20,\n        splitOnIter = -1,\n        splitOnLast = FALSE,\n        verbose = FALSE,\n        reorder = FALSE)\n      tempZ <- as.integer(as.factor(celdaClusters(clustLabel)$z))\n\n      # Reassign clusters with label > 1\n      splitIx <- tempZ > 1\n      ix <- overallZ == i\n      newZ <- overallZ[ix]\n      newZ[splitIx] <- currentK + tempZ[splitIx] - 1\n\n      overallZ[ix] <- newZ\n      currentK <- max(overallZ)\n\n      # Ensure that the maximum number of clusters does not get too large'\n      if (currentK > K + 10) {\n        break\n      }\n    }\n    counter <- counter + 1\n  }\n\n  # Decompose counts for likelihood calculation\n  p <- .cCDecomposeCounts(counts, s, overallZ, currentK)\n  nS <- p$nS\n  nG <- p$nG\n  nM <- p$nM\n  mCPByS <- p$mCPByS\n  nGByCP <- p$nGByCP\n  nCP <- p$nCP\n  nByC <- p$nByC\n\n  # Remove clusters 1-by-1 until K is reached\n  while (currentK > K) {\n    # Find second best assignment give current assignments for each cell\n    probs <- .cCCalcEMProbZ(counts,\n      s = s,\n      z = overallZ,\n      K = currentK,\n      mCPByS = mCPByS,\n      nGByCP = nGByCP,\n      nByC = nByC,\n      nCP = nCP,\n      nG = nG,\n      nM = nM,\n      alpha = alpha,\n      beta = beta,\n      doSample = FALSE)\n    zProb <- t(as.matrix(probs$probs))\n    zProb[cbind(seq(nrow(zProb)), overallZ)] <- NA\n    zSecond <- apply(zProb, 1, which.max)\n\n    zTa <- tabulate(overallZ, currentK)\n    zNonEmpty <- which(zTa > 0)\n\n    # Find worst cluster by logLik to remove\n    previousZ <- overallZ\n    llShuffle <- rep(NA, currentK)\n    for (i in zNonEmpty) {\n      ix <- overallZ == i\n      newZ <- overallZ\n      newZ[ix] <- zSecond[ix]\n\n      p <- .cCReDecomposeCounts(\n        counts,\n        s,\n        newZ,\n        previousZ,\n        nGByCP,\n        currentK)\n      nGByCP <- p$nGByCP\n      mCPByS <- p$mCPByS\n      llShuffle[i] <- .cCCalcLL(\n        mCPByS,\n        nGByCP,\n        s,\n        newZ,\n        currentK,\n        nS,\n        nG,\n        alpha,\n        beta)\n      previousZ <- newZ\n    }\n\n    # Remove the cluster which had the the largest likelihood after removal\n    zToRemove <- which.max(llShuffle)\n\n    ix <- overallZ == zToRemove\n    overallZ[ix] <- zSecond[ix]\n\n    p <- .cCReDecomposeCounts(counts,\n      s,\n      overallZ,\n      previousZ,\n      nGByCP,\n      currentK)\n    nGByCP <- p$nGByCP[, -zToRemove, drop = FALSE]\n    mCPByS <- p$mCPByS[-zToRemove, , drop = FALSE]\n    overallZ <- as.integer(as.factor(overallZ))\n    currentK <- currentK - 1\n  }\n  return(overallZ)\n}\n\n\n.initializeSplitY <- function(counts,\n                              L,\n                              LSubcluster = NULL,\n                              tempK = 100,\n                              beta = 1,\n                              delta = 1,\n                              gamma = 1,\n                              minFeature = 3) {\n  if (is.null(LSubcluster)) {\n    LSubcluster <- ceiling(sqrt(L))\n  }\n\n  # Collapse cells to managable number of clusters\n  if (!is.null(tempK) && ncol(counts) > tempK) {\n    z <- .initializeSplitZ(counts, K = tempK)\n    counts <- .colSumByGroup(counts, z, length(unique(z)))\n  }\n\n  # Initialize the model with KSubcluster clusters\n  res <- .celda_G(counts,\n    L = LSubcluster,\n    maxIter = 10,\n    yInitialize = \"random\",\n    beta = beta,\n    delta = delta,\n    gamma = gamma,\n    splitOnIter = -1,\n    splitOnLast = FALSE,\n    verbose = FALSE,\n    reorder = FALSE)\n  overallY <- as.integer(as.factor(celdaClusters(res)$y))\n  currentL <- max(overallY)\n\n  counter <- 0\n  while (currentL < L & counter < 25) {\n    # Determine which clusters are split-able\n    yTa <- tabulate(overallY, max(overallY))\n    yToSplit <- sample(which(yTa > minFeature & yTa > LSubcluster))\n\n    if (length(yToSplit) == 0) {\n      break\n    }\n\n    # Cycle through each splitable cluster and split it up into\n    # LSublcusters\n    for (i in yToSplit) {\n      # make sure the colSums of subset counts is not 0\n      countsY <- counts[overallY == i, , drop = FALSE]\n      countsY <- countsY[, !(colSums(countsY) == 0)]\n\n      if (ncol(countsY) == 0) {\n        next\n      }\n\n      clustLabel <- .celda_G(\n        countsY,\n        L = min(LSubcluster, nrow(countsY)),\n        yInitialize = \"random\",\n        beta = beta,\n        delta = delta,\n        gamma = gamma,\n        maxIter = 20,\n        splitOnIter = -1,\n        splitOnLast = FALSE,\n        verbose = FALSE,\n        reorder = FALSE\n      )\n      tempY <- as.integer(as.factor(celdaClusters(clustLabel)$y))\n\n      # Reassign clusters with label > 1\n      splitIx <- tempY > 1\n      ix <- overallY == i\n      newY <- overallY[ix]\n      newY[splitIx] <- currentL + tempY[splitIx] - 1\n\n      overallY[ix] <- newY\n      currentL <- max(overallY)\n\n      # Ensure that the maximum number of clusters does not get too large\n      if (currentL > L + 10) {\n        break\n      }\n    }\n    counter <- counter + 1\n  }\n\n  ## Decompose counts for likelihood calculation\n  p <- .cGDecomposeCounts(counts = counts, y = overallY, L = currentL)\n  nTSByC <- p$nTSByC\n  nByG <- p$nByG\n  nByTS <- p$nByTS\n  nGByTS <- p$nGByTS\n  nM <- p$nM\n  nG <- p$nG\n  rm(p)\n\n  # Pre-compute lgamma values\n  lgbeta <- lgamma((seq(0, max(colSums(counts)))) + beta)\n  lggamma <- lgamma(seq(0, nrow(counts) + L) + gamma)\n  lgdelta <- c(NA, lgamma(seq(nrow(counts) + L) * delta))\n\n  # Remove clusters 1-by-1 until L is reached\n  while (currentL > L) {\n    # Find second best assignment give current assignments for each cell\n    probs <- .cGCalcGibbsProbY(\n      counts = counts,\n      y = overallY,\n      L = currentL,\n      nTSByC = nTSByC,\n      nByTS = nByTS,\n      nGByTS = nGByTS,\n      nByG = nByG,\n      nG = nG,\n      beta = beta,\n      delta = delta,\n      gamma = gamma,\n      lgbeta = lgbeta,\n      lggamma = lggamma,\n      lgdelta = lgdelta,\n      doSample = FALSE)\n    yProb <- t(probs$probs)\n    yProb[cbind(seq(nrow(yProb)), overallY)] <- NA\n    ySecond <- apply(yProb, 1, which.max)\n\n    yTa <- tabulate(overallY, currentL)\n    yNonEmpty <- which(yTa > 0)\n\n    # Find worst cluster by logLik to remove\n    previousY <- overallY\n    llShuffle <- rep(NA, currentL)\n    for (i in yNonEmpty) {\n      ix <- overallY == i\n      newY <- overallY\n      newY[ix] <- ySecond[ix]\n\n      # Move arounds counts for likelihood calculation\n      p <- .cGReDecomposeCounts(\n        counts,\n        newY,\n        previousY,\n        nTSByC,\n        nByG,\n        currentL)\n      nTSByC <- p$nTSByC\n      nGByTS <- p$nGByTS\n      nByTS <- p$nByTS\n      llShuffle[i] <- .cGCalcLL(\n        nTSByC,\n        nByTS,\n        nByG,\n        nGByTS,\n        nM,\n        nG,\n        currentL,\n        beta,\n        delta,\n        gamma)\n      previousY <- newY\n    }\n\n    # Remove the cluster which had the the largest likelihood after removal\n    yToRemove <- which.max(llShuffle)\n\n    ix <- overallY == yToRemove\n    overallY[ix] <- ySecond[ix]\n\n    # Move around counts and remove module\n    p <- .cGReDecomposeCounts(\n      counts,\n      overallY,\n      previousY,\n      nTSByC,\n      nByG,\n      currentL)\n    nTSByC <- p$nTSByC[-yToRemove, , drop = FALSE]\n    nGByTS <- p$nGByTS[-yToRemove]\n    nByTS <- p$nByTS[-yToRemove]\n    overallY <- as.integer(as.factor(overallY))\n    currentL <- currentL - 1\n  }\n  return(overallY)\n}\n"
  },
  {
    "path": "R/loglikelihood.R",
    "content": "#' @title Calculate the Log-likelihood of a celda model\n#' @description Calculate the log-likelihood for cell population\n#'  and feature module cluster assignments on the count matrix, per celda model.\n#' @param x A \\linkS4class{SingleCellExperiment} object returned by\n#'  \\link{celda_C}, \\link{celda_G}, or \\link{celda_CG}, with the matrix\n#'  located in the \\code{useAssay} assay slot.\n#'  Rows represent features and columns represent cells.\n#' @param useAssay A string specifying which \\link{assay}\n#'  slot to use. Default \"counts\".\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @param celdaMod celda model object. Ignored if \\code{x} is a\n#'  \\linkS4class{SingleCellExperiment} object.\n#' @return The log-likelihood of the cluster assignment for the\n#'  provided \\linkS4class{SingleCellExperiment}.\n#' @seealso `celda_C()` for clustering cells\n#' @export\nsetGeneric(\"logLikelihood\",\n    function(x,\n        celdaMod,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\") {\n    standardGeneric(\"logLikelihood\")\n})\n\n\n#' @rdname logLikelihood\n#' @examples\n#' data(sceCeldaC, sceCeldaCG)\n#' loglikC <- logLikelihood(sceCeldaC)\n#' loglikCG <- logLikelihood(sceCeldaCG)\n#' @export\nsetMethod(\"logLikelihood\", signature(x = \"SingleCellExperiment\"),\n    function(x, useAssay = \"counts\", altExpName = \"featureSubset\") {\n        altExp <- SingleCellExperiment::altExp(x, altExpName)\n\n        counts <- SummarizedExperiment::assay(altExp, i = useAssay)\n        sampleLabel <- sampleLabel(x, altExpName = altExpName)\n        z <- as.integer(celdaClusters(x, altExpName = altExpName))\n        y <- as.integer(celdaModules(x, altExpName = altExpName))\n        K <- S4Vectors::metadata(altExp)$celda_parameters$K\n        L <- S4Vectors::metadata(altExp)$celda_parameters$L\n        alpha <- S4Vectors::metadata(altExp)$celda_parameters$alpha\n        beta <- S4Vectors::metadata(altExp)$celda_parameters$beta\n        delta <- S4Vectors::metadata(altExp)$celda_parameters$delta\n        gamma <- S4Vectors::metadata(altExp)$celda_parameters$gamma\n\n        if (celdaModel(x, altExpName = altExpName) == \"celda_C\") {\n            ll <- .logLikelihoodcelda_C(counts = counts,\n                sampleLabel = sampleLabel,\n                z = z,\n                K = K,\n                alpha = alpha,\n                beta = beta)\n        } else if (celdaModel(x, altExpName = altExpName) == \"celda_CG\") {\n            ll <- .logLikelihoodcelda_CG(counts = counts,\n                sampleLabel = sampleLabel,\n                z = z,\n                y = y,\n                K = K,\n                L = L,\n                alpha = alpha,\n                beta = beta,\n                delta = delta,\n                gamma = gamma)\n        } else if (celdaModel(x, altExpName = altExpName) == \"celda_G\") {\n            ll <- .logLikelihoodcelda_G(counts = counts,\n                y = y,\n                L = L,\n                beta = beta,\n                delta = delta,\n                gamma = gamma)\n        } else {\n            stop(\"S4Vectors::metadata(altExp(x, altExpName))$\",\n                \"celda_parameters$model must be\",\n                \" one of 'celda_C', 'celda_G', or 'celda_CG'!\")\n        }\n        return(ll)\n    }\n)\n\n\n#' @rdname logLikelihood\n#' @export\nsetMethod(\"logLikelihood\", signature(x = \"matrix\", celdaMod = \"celda_C\"),\n    function(x, celdaMod) {\n        sampleLabel <- sampleLabel(celdaMod)\n        z <- as.integer(celdaClusters(celdaMod)$z)\n        K <- params(celdaMod)$K\n        alpha <- params(celdaMod)$alpha\n        beta <- params(celdaMod)$beta\n\n        ll <- .logLikelihoodcelda_C(counts = x,\n            sampleLabel = sampleLabel,\n            z = z,\n            K = K,\n            alpha = alpha,\n            beta = beta)\n        return(ll)\n    }\n)\n\n\n#' @rdname logLikelihood\n#' @export\nsetMethod(\"logLikelihood\", signature(x = \"matrix\", celdaMod = \"celda_G\"),\n    function(x, celdaMod) {\n        y <- as.integer(celdaClusters(celdaMod)$y)\n        L <- params(celdaMod)$L\n        beta <- params(celdaMod)$beta\n        delta <- params(celdaMod)$delta\n        gamma <- params(celdaMod)$gamma\n\n        ll <- .logLikelihoodcelda_G(counts = x,\n            y = y,\n            L = L,\n            beta = beta,\n            delta = delta,\n            gamma = gamma)\n        return(ll)\n    }\n)\n\n\n#' @rdname logLikelihood\n#' @export\nsetMethod(\"logLikelihood\", signature(x = \"matrix\", celdaMod = \"celda_CG\"),\n    function(x, celdaMod) {\n        sampleLabel <- sampleLabel(celdaMod)\n        z <- as.integer(celdaClusters(celdaMod)$z)\n        y <- as.integer(celdaClusters(celdaMod)$y)\n        K <- params(celdaMod)$K\n        L <- params(celdaMod)$L\n        alpha <- params(celdaMod)$alpha\n        beta <- params(celdaMod)$beta\n        delta <- params(celdaMod)$delta\n        gamma <- params(celdaMod)$gamma\n\n        ll <- .logLikelihoodcelda_CG(counts = x,\n            sampleLabel = sampleLabel,\n            z = z,\n            y = y,\n            K = K,\n            L = L,\n            alpha = alpha,\n            beta = beta,\n            delta = delta,\n            gamma = gamma)\n        return(ll)\n    }\n)\n\n\n#' @title Get log-likelihood history\n#' @description Retrieves the complete log-likelihood from all iterations of\n#'  Gibbs sampling used to generate a celda model.\n#' @param x A \\linkS4class{SingleCellExperiment} object\n#'  returned by \\link{celda_C}, \\link{celda_G}, or \\link{celda_CG}, or a celda\n#'  model object.\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @return Numeric. The log-likelihood at each step of Gibbs sampling used to\n#'  generate the model.\n#' @export\nsetGeneric(\n    \"logLikelihoodHistory\",\n    function(x, altExpName = \"featureSubset\") {\n        standardGeneric(\"logLikelihoodHistory\")\n    }\n)\n\n\n#' @rdname logLikelihoodHistory\n#' @examples\n#' data(sceCeldaCG)\n#' logLikelihoodHistory(sceCeldaCG)\n#' @export\nsetMethod(\"logLikelihoodHistory\",\n    signature(x = \"SingleCellExperiment\"),\n    function(x, altExpName = \"featureSubset\") {\n        altExp <- SingleCellExperiment::altExp(x, altExpName)\n        cll <- S4Vectors::metadata(altExp)$celda_parameters$completeLogLik\n        return(cll)\n    }\n)\n\n\n#' @rdname logLikelihoodHistory\n#' @examples\n#' data(celdaCGMod)\n#' logLikelihoodHistory(celdaCGMod)\n#' @export\nsetMethod(\"logLikelihoodHistory\",\n    signature(x = \"celdaModel\"),\n    function(x) {\n        cll <- x@completeLogLik\n        return(cll)\n    }\n)\n\n\n#' @title Get the log-likelihood\n#' @description Retrieves the final log-likelihood from all iterations of Gibbs\n#'  sampling used to generate a celdaModel.\n#' @return Numeric. The log-likelihood at the final step of Gibbs sampling used\n#'  to generate the model.\n#' @param x A \\linkS4class{SingleCellExperiment} object\n#'  returned by \\link{celda_C}, \\link{celda_G}, or \\link{celda_CG}, or a celda\n#'  model object.\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @export\nsetGeneric(\"bestLogLikelihood\",\n    function(x, altExpName = \"featureSubset\") {\n        standardGeneric(\"bestLogLikelihood\")\n    }\n)\n\n\n#' @rdname bestLogLikelihood\n#' @examples\n#' data(sceCeldaCG)\n#' bestLogLikelihood(sceCeldaCG)\n#' @export\nsetMethod(\"bestLogLikelihood\",\n    signature(x = \"SingleCellExperiment\"),\n    function(x, altExpName = \"featureSubset\") {\n        altExp <- SingleCellExperiment::altExp(x, altExpName)\n        fll <- S4Vectors::metadata(altExp)$celda_parameters$finalLogLik\n        return(fll)\n    }\n)\n\n\n#' @rdname bestLogLikelihood\n#' @examples\n#' data(celdaCGMod)\n#' bestLogLikelihood(celdaCGMod)\n#' @export\nsetMethod(\"bestLogLikelihood\",\n    signature(x = \"celdaModel\"),\n    function(x) {\n        fll <- x@finalLogLik\n        return(fll)\n    }\n)\n\n\n.logLikelihoodcelda_C <- function(counts, sampleLabel, z, K, alpha, beta) {\n    if (sum(z > K) > 0) {\n        stop(\"Assigned value of cell cluster greater than the total number of\",\n            \" cell clusters!\")\n    }\n    sampleLabel <- .processSampleLabels(sampleLabel, ncol(counts))\n    s <- as.integer(sampleLabel)\n    p <- .cCDecomposeCounts(counts, s, z, K)\n    final <- .cCCalcLL(\n        mCPByS = p$mCPByS,\n        nGByCP = p$nGByCP,\n        s = s,\n        z = z,\n        K = K,\n        nS = p$nS,\n        nG = p$nG,\n        alpha = alpha,\n        beta = beta\n    )\n    return(final)\n}\n\n\n.logLikelihoodcelda_CG <- function(counts,\n    sampleLabel,\n    z,\n    y,\n    K,\n    L,\n    alpha,\n    beta,\n    delta,\n    gamma) {\n\n    if (sum(z > K) > 0) {\n        stop(\"Assigned value of cell cluster greater than the total number of\",\n            \" cell clusters!\")\n    }\n    if (sum(y > L) > 0) {\n        stop(\"Assigned value of feature module greater than the total number\",\n            \" of feature modules!\")\n    }\n\n    sampleLabel <- .processSampleLabels(sampleLabel, ncol(counts))\n    s <- as.integer(sampleLabel)\n    p <- .cCGDecomposeCounts(counts, s, z, y, K, L)\n    final <- .cCGCalcLL(\n        K = K,\n        L = L,\n        mCPByS = p$mCPByS,\n        nTSByCP = p$nTSByCP,\n        nByG = p$nByG,\n        nByTS = p$nByTS,\n        nGByTS = p$nGByTS,\n        nS = p$nS,\n        nG = p$nG,\n        alpha = alpha,\n        beta = beta,\n        delta = delta,\n        gamma = gamma)\n    return(final)\n}\n\n\n.logLikelihoodcelda_G <- function(counts, y, L, beta, delta, gamma) {\n    if (sum(y > L) > 0) {\n        stop(\"Assigned value of feature module greater than the total number\",\n            \" of feature modules!\")\n    }\n    p <- .cGDecomposeCounts(counts = counts, y = y, L = L)\n    final <- .cGCalcLL(\n        nTSByC = p$nTSByC,\n        nByTS = p$nByTS,\n        nByG = p$nByG,\n        nGByTS = p$nGByTS,\n        nM = p$nM,\n        nG = p$nG,\n        L = L,\n        beta = beta,\n        delta = delta,\n        gamma = gamma\n    )\n\n    return(final)\n}\n"
  },
  {
    "path": "R/matrixSums.R",
    "content": ".rowSumByGroup <- function(counts, group, L) {\n  if (inherits(counts, \"matrix\") & is.integer(counts)) {\n    res <- .rowSumByGroupInteger(counts, group, L)\n  } else if (inherits(counts, \"matrix\") & is.numeric(counts)) {\n    res <- .rowSumByGroupNumeric(counts, group, L)\n  } else if (inherits(counts, \"dgCMatrix\")) {\n    res <- rowSumByGroupSparse(counts, group, L)\n  } else {\n    stop(\"'counts' must be an integer, numeric, or dgCMatrix matrix.\")\n  }\n  return(res)\n}\n\n.rowSumByGroupChange <- function(counts, pcounts, group, pgroup, L) {\n  if (inherits(counts, \"matrix\") & is.integer(counts)) {\n    res <- .rowSumByGroupChangeInteger(counts, pcounts, group, pgroup, L)\n  } else if (inherits(counts, \"matrix\") & is.numeric(counts)) {\n    res <- .rowSumByGroupChangeNumeric(counts, pcounts, group, pgroup, L)\n  } else if (inherits(counts, \"dgCMatrix\")) {\n    res <- rowSumByGroupChangeSparse(counts, pcounts, group, pgroup, L)\n  } else {\n    stop(\"'counts' must be an integer, numeric, or dgCMatrix matrix.\")\n  }\n  return(res)\n}\n\n.colSumByGroup <- function(counts, group, K) {\n  if (inherits(counts, \"matrix\") & is.integer(counts)) {\n    res <- .colSumByGroupInteger(counts, group, K)\n  } else if (inherits(counts, \"matrix\") & is.numeric(counts)) {\n    res <- .colSumByGroupNumeric(counts, group, K)\n  } else if (inherits(counts, \"dgCMatrix\")) {\n    res <- colSumByGroupSparse(counts, group, K)\n  } else {\n    stop(\"'counts' must be an integer, numeric, or dgCMatrix matrix.\")\n  }\n  return(res)\n}\n\n.colSumByGroupChange <- function(counts, pcounts, group, pgroup, K) {\n  if (inherits(counts, \"matrix\") & is.integer(counts)) {\n    res <- .colSumByGroupChangeInteger(counts, pcounts, group, pgroup, K)\n  } else if (inherits(counts, \"matrix\") & is.numeric(counts)) {\n    res <- .colSumByGroupChangeNumeric(counts, pcounts, group, pgroup, K)\n  } else if (inherits(counts, \"dgCMatrix\")) {\n    res <- colSumByGroupChangeSparse(counts, pcounts, group, pgroup, K)\n  } else {\n    stop(\"'counts' must be an integer, numeric, or dgCMatrix matrix.\")\n  }\n  return(res)\n}\n\n\n\n#' @useDynLib celda _rowSumByGroup\n.rowSumByGroupInteger <- function(x, group, L) {\n  group <- factor(group, levels = seq(L))\n  res <- .Call(\"_rowSumByGroup\", x, group)\n  return(res)\n}\n\n#' @useDynLib celda _rowSumByGroupChange\n.rowSumByGroupChangeInteger <- function(x, px, group, pgroup, L) {\n  group <- factor(group, levels = seq(L))\n  pgroup <- factor(pgroup, levels = seq(L))\n  res <- .Call(\"_rowSumByGroupChange\", x, px, group, pgroup)\n  return(res)\n}\n\n#' @useDynLib celda _colSumByGroup\n.colSumByGroupInteger <- function(x, group, K) {\n  group <- factor(group, levels = seq(K))\n  res <- .Call(\"_colSumByGroup\", x, group)\n  return(res)\n}\n\n#' @useDynLib celda _colSumByGroupChange\n.colSumByGroupChangeInteger <- function(x, px, group, pgroup, K) {\n  group <- factor(group, levels = seq(K))\n  pgroup <- factor(pgroup, levels = seq(K))\n  res <- .Call(\"_colSumByGroupChange\", x, px, group, pgroup)\n  return(res)\n}\n\n\n#' @useDynLib celda _rowSumByGroup_numeric\n.rowSumByGroupNumeric <- function(x, group, L) {\n  group <- factor(group, levels = seq(L))\n  res <- .Call(\"_rowSumByGroup_numeric\", x, group)\n  return(res)\n}\n\n#' @useDynLib celda _colSumByGroup_numeric\n.colSumByGroupNumeric <- function(x, group, K) {\n  group <- factor(group, levels = seq(K))\n  res <- .Call(\"_colSumByGroup_numeric\", x, group)\n  return(res)\n}\n\n#' @useDynLib celda _rowSumByGroupChange_numeric\n.rowSumByGroupChangeNumeric <- function(x, px, group, pgroup, L) {\n  group <- factor(group, levels = seq(L))\n  pgroup <- factor(pgroup, levels = seq(L))\n  res <- .Call(\"_rowSumByGroupChange_numeric\", x, px, group, pgroup)\n  return(res)\n}\n\n#' @useDynLib celda _colSumByGroupChange_numeric\n.colSumByGroupChangeNumeric <- function(x, px, group, pgroup, K) {\n  group <- factor(group, levels = seq(K))\n  pgroup <- factor(pgroup, levels = seq(K))\n  res <- .Call(\"_colSumByGroupChange_numeric\", x, px, group, pgroup)\n  return(res)\n}\n\n#' @useDynLib celda _perplexityG\n.perplexityGLogPx <- function(x, phi, psi, group, L) {\n  group <- factor(group, levels = seq(L))\n  res <- .Call(\"_perplexityG\", x, phi, psi, group)\n  return(res)\n}\n"
  },
  {
    "path": "R/misc.R",
    "content": "#' @title Celda models\n#' @description List of available Celda models with correpsonding descriptions.\n#' @export\n#' @examples\n#' celda()\n#' @return None\ncelda <- function() {\n    message(\n        \"celda_C: Clusters the columns of a count matrix containing\",\n        \" single-cell data into K subpopulations.\"\n    )\n    message(\n        \"celda_G: Clusters the rows of a count matrix containing\",\n        \" single-cell data into L modules.\"\n    )\n    message(\n        \"celda_CG: Clusters the rows and columns of a count matrix\",\n        \" containing single-cell data into L modules and K subpopulations,\",\n        \" respectively.\"\n    )\n    message(\n        \"celdaGridSearch: Run Celda with different combinations of\",\n        \" parameters and multiple chains in parallel.\"\n    )\n}\n\n\n#' @title Append two celdaList objects\n#' @description Returns a single celdaList representing the combination of two\n#'  provided celdaList objects.\n#' @return A celdaList object. This object contains all resList entries and\n#'  runParam records from both lists.\n#' @param list1 A celda_list object\n#' @param list2 A celda_list object to be joined with list_1\n#' @examples\n#' data(celdaCGGridSearchRes)\n#' appendedList <- appendCeldaList(\n#'   celdaCGGridSearchRes,\n#'   celdaCGGridSearchRes\n#' )\n#' @importFrom methods new\n#' @export\nappendCeldaList <- function(list1, list2) {\n  if (!is.element(\"celdaList\", class(list1)) |\n    !is.element(\"celdaList\", class(list2))) {\n    stop(\"Both parameters to appendCeldaList must be of class celdaList.\")\n  }\n  if (!(countChecksum(list1) == countChecksum(list2))) {\n    warning(\n      \"Provided lists have different countChecksums and may have\",\n      \" been generated from different count matrices. Using checksum\",\n      \" from first list...\"\n    )\n  }\n  newList <- methods::new(\n    \"celdaList\",\n    runParams = rbind(runParams(list1), runParams(list2)),\n    resList = c(resList(list1), resList(list2)),\n    countChecksum = countChecksum(list1),\n    perplexity = matrix(nrow = 0, ncol = 0)\n  )\n  return(newList)\n}\n"
  },
  {
    "path": "R/moduleHeatmap.R",
    "content": "#' @title Heatmap for featureModules\n#' @description Renders a heatmap for selected \\code{featureModule}. Cells are\n#'  ordered from those with the lowest probability of the module on the left to\n#'  the highest probability on the right. Features are ordered from those\n#'  with the highest probability in the module\n#'  on the top to the lowest probability on the bottom.\n#' @param x A numeric \\link{matrix} of counts or a\n#'  \\linkS4class{SingleCellExperiment}\n#'  with the matrix located in the assay slot under \\code{useAssay}.\n#'  Rows represent features and columns represent cells. Celda\n#'  results must be present under \\code{metadata(altExp(x, altExpName))}.\n#' @param useAssay A string specifying which \\link{assay}\n#'  slot to use if \\code{x} is a\n#'  \\linkS4class{SingleCellExperiment} object. Default \"counts\".\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @param modules Integer Vector. The featureModule(s) to display.\n#'  Multiple modules can be included in a vector. Default \\code{NULL} which\n#'  plots all module heatmaps.\n#' @param featureModule Same as \\code{modules}. Either can be used to specify\n#'  the modules to display.\n#' @param col Passed to \\link[ComplexHeatmap]{Heatmap}. Set color boundaries\n#'  and colors.\n#' @param topCells Integer. Number of cells with the highest and lowest\n#'  probabilities for each module to include in the heatmap. For example, if\n#'  \\code{topCells = 50}, the 50 cells with the lowest probabilities and\n#'  the 50 cells\n#'  with the highest probabilities for each featureModule will be included. If\n#'  NULL, all cells will be plotted. Default 100.\n#' @param topFeatures Integer. Plot `topFeatures` features with the highest\n#'  probabilities in the module heatmap for each featureModule. If \\code{NULL},\n#'  plot all features in the module. Default \\code{NULL}.\n#' @param normalizedCounts Integer matrix. Rows represent features and columns\n#'  represent cells. If you have a normalized matrix result from\n#'  \\link{normalizeCounts}, you can pass through the result here to\n#'  skip the normalization step in this function. Make sure the colnames and\n#'  rownames match the object in x. This matrix should\n#'  correspond to one generated from this count matrix\n#'  \\code{assay(altExp(x, altExpName), i = useAssay)}. If \\code{NA},\n#'  normalization will be carried out in the following form\n#'  \\code{normalizeCounts(assay(altExp(x, altExpName), i = useAssay),\n#'  normalize = \"proportion\", transformationFun = sqrt)}.\n#'  Use of this parameter is particularly useful for plotting many\n#'  module heatmaps, where normalizing the counts matrix repeatedly would\n#'  be too time consuming. Default NA.\n#' @param normalize Character. Passed to \\link{normalizeCounts} if\n#'  \\code{normalizedCounts} is \\code{NA}.\n#'  Divides counts by the library sizes for each cell. One of 'proportion',\n#'  'cpm', 'median', or 'mean'. 'proportion' uses the total counts for each\n#'  cell as the library size. 'cpm' divides the library size of each cell by\n#'  one million to produce counts per million. 'median' divides the library\n#'  size of each cell by the median library size across all cells. 'mean'\n#'  divides the library size of each cell by the mean library size across all\n#'  cells. Default \"proportion\".\n#' @param transformationFun Function. Passed to \\link{normalizeCounts} if\n#'  \\code{normalizedCounts} is \\code{NA}. Applies a transformation such as\n#'  \\link{sqrt}, \\link{log}, \\link{log2}, \\link{log10}, or \\link{log1p}.\n#'  If \\code{NULL}, no transformation will be applied. Occurs after\n#'  normalization. Default \\link{sqrt}.\n#' @param scaleRow Function. Which function to use to scale each individual\n#'  row. Set to NULL to disable. Occurs after normalization and log\n#'  transformation. For example, \\link{scale} will Z-score transform each row.\n#'  Default \\link{scale}.\n#' @param showFeatureNames Logical. Whether feature names should be displayed.\n#'  Default TRUE.\n#' @param displayName Character. The column name of\n#'  \\code{rowData(altExp(x, altExpName))} that specifies the display names for\n#'  the features. Default \\code{NULL}, which displays the row names. Only works\n#'  if \\code{showFeaturenames} is \\code{TRUE} and \\code{x} is a\n#'  \\linkS4class{SingleCellExperiment} object.\n#' @param trim Numeric vector. Vector of length two that specifies the lower\n#'  and upper bounds for plotting the data. This threshold is applied\n#'  after row scaling. Set to NULL to disable. Default \\code{c(-2,2)}.\n#' @param rowFontSize Numeric. Font size for feature names. If \\code{NULL},\n#' then the size will automatically be determined. Default \\code{NULL}.\n#' @param showHeatmapLegend Passed to \\link[ComplexHeatmap]{Heatmap}. Show\n#'  legend for expression levels.\n#' @param showTopAnnotationLegend Passed to\n#'  \\link[ComplexHeatmap]{HeatmapAnnotation}. Show legend for cell annotation.\n#' @param showTopAnnotationName Passed to\n#'  \\link[ComplexHeatmap]{HeatmapAnnotation}. Show heatmap top annotation name.\n#' @param topAnnotationHeight Passed to\n#'  \\link[ComplexHeatmap]{HeatmapAnnotation}. Column annotation height.\n#'  \\link[ComplexHeatmap]{rowAnnotation}. Show legend for module annotation.\n#' @param showModuleLabel Show left side module labels.\n#' @param moduleLabel The left side row titles for module heatmap. Must be\n#'  vector of the same length as \\code{featureModule}. Default \"auto\", which\n#'  automatically pulls module labels from \\code{x}.\n#' @param moduleLabelSize Passed to \\link{gpar}. The size of text (in points).\n#' @param byrow Passed to \\link{matrix}. logical. If \\code{FALSE} (the default)\n#'  the figure panel is filled by columns, otherwise the figure panel is filled\n#'  by rows.\n#' @param top Passed to \\link[gridExtra]{marrangeGrob}. The title for each page.\n#' @param unit Passed to \\link[grid]{unit}. Single\n#'  character object defining the unit of all dimensions defined.\n#' @param ncol Integer. Number of columns of module heatmaps. If \\code{NULL},\n#' then this will be automatically calculated so that the number of columns\n#' and rows will be approximately the same. Default \\code{NULL}.\n#' @param useRaster Boolean. Rasterizing will make the heatmap a single object\n#' and reduced the memory of the plot and the size of a file. If \\code{NULL},\n#' then rasterization will be automatically determined by the underlying\n#' \\link[ComplexHeatmap]{Heatmap} function. Default \\code{TRUE}.\n#' @param returnAsList Boolean. If \\code{TRUE}, then a list of plots will be\n#' returned instead of a single multi-panel figure. These plots can be\n#' displayed using the \\link[grid]{grid.draw} function. Default \\code{FALSE}.\n#' @param ... Additional parameters passed to \\link[ComplexHeatmap]{Heatmap}.\n#' @return A list object if plotting\n#'  more than one module heatmaps. Otherwise a\n#'  \\link[ComplexHeatmap]{HeatmapList} object is returned.\n#' @importFrom methods .hasSlot\n#' @export\nsetGeneric(\"moduleHeatmap\",\n    function(x,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        modules = NULL,\n        featureModule = NULL,\n        col = circlize::colorRamp2(c(-2, 0, 2),\n            c(\"#1E90FF\", \"#FFFFFF\", \"#CD2626\")),\n        topCells = 100,\n        topFeatures = NULL,\n        normalizedCounts = NA,\n        normalize = \"proportion\",\n        transformationFun = sqrt,\n        scaleRow = scale,\n        showFeatureNames = TRUE,\n        displayName = NULL,\n        trim = c(-2, 2),\n        rowFontSize = NULL,\n        showHeatmapLegend = FALSE,\n        showTopAnnotationLegend = FALSE,\n        showTopAnnotationName = FALSE,\n        topAnnotationHeight = 5,\n        showModuleLabel = TRUE,\n        moduleLabel = \"auto\",\n        moduleLabelSize = NULL,\n        byrow = TRUE,\n        top = NA,\n        unit = \"mm\",\n        ncol = NULL,\n        useRaster = TRUE,\n        returnAsList = FALSE,\n        ...) {\n    standardGeneric(\"moduleHeatmap\")})\n\n\n#' @rdname moduleHeatmap\n#' @examples\n#' data(sceCeldaCG)\n#' moduleHeatmap(sceCeldaCG, displayName = \"rownames\")\n#' @export\nsetMethod(\"moduleHeatmap\",\n    signature(x = \"SingleCellExperiment\"),\n    function(x,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        modules = NULL,\n        featureModule = NULL,\n        col = circlize::colorRamp2(c(-2, 0, 2),\n            c(\"#1E90FF\", \"#FFFFFF\", \"#CD2626\")),\n        topCells = 100,\n        topFeatures = NULL,\n        normalizedCounts = NA,\n        normalize = \"proportion\",\n        transformationFun = sqrt,\n        scaleRow = scale,\n        showFeatureNames = TRUE,\n        displayName = NULL,\n        trim = c(-2, 2),\n        rowFontSize = NULL,\n        showHeatmapLegend = FALSE,\n        showTopAnnotationLegend = FALSE,\n        showTopAnnotationName = FALSE,\n        topAnnotationHeight = 5,\n        showModuleLabel = TRUE,\n        moduleLabel = \"auto\",\n        moduleLabelSize = NULL,\n        byrow = TRUE,\n        top = NA,\n        unit = \"mm\",\n        ncol = NULL,\n        useRaster = TRUE,\n        returnAsList = FALSE,\n        ...) {\n\n        # 'modules' is an easier parameter name to remember so we include\n        # support for both.\n        if(!is.null(modules)) {\n            featureModule <- modules\n        }\n\n        altExp <- SingleCellExperiment::altExp(x, altExpName)\n\n        counts <- SummarizedExperiment::assay(altExp, i = useAssay)\n        if (is.null(colnames(counts))) {\n            stop(\"colnames(altExp(x, altExpName)) is NULL!\",\n                \" Please assign column names to x and\",\n                \" try again.\")\n        }\n\n        if (is.null(rownames(counts))) {\n            stop(\"rownames(altExp(x, altExpName)) is NULL!\",\n                \" Please assign row names to x and\",\n                \" try again.\")\n        }\n\n        if (!(S4Vectors::metadata(altExp)$celda_parameters$model %in%\n                c(\"celda_G\", \"celda_CG\"))) {\n            stop(\"metadata(altExp(x, altExpName))$\",\n                \"celda_parameters$model must be 'celda_G' or\",\n                \" 'celda_CG'\")\n        }\n\n        if (is.null(featureModule)) {\n            featureModule <- sort(unique(celdaModules(x)))\n        }\n\n        if (length(featureModule) == 1) {\n            returnHeatmap <- TRUE\n        } else {\n            returnHeatmap <- FALSE\n        }\n\n        if (moduleLabel == \"auto\") {\n            moduleLabel <- paste0(\"Module \", as.character(featureModule))\n        } else if (length(moduleLabel) == 1 & length(featureModule) > 1) {\n            moduleLabel <- rep(moduleLabel, length(featureModule))\n        } else if (length(moduleLabel) != length(featureModule)) {\n            stop(\"Invalid 'moduleLabel' length\")\n        }\n\n        # factorize counts matrix\n        factorizedMatrix <- factorizeMatrix(x,\n            useAssay = useAssay,\n            altExpName = altExpName,\n            type = \"proportion\")\n        allCellStates <- factorizedMatrix$proportions$cell\n\n        if (is.na(normalizedCounts)) {\n            normCounts <- normalizeCounts(counts,\n                normalize = normalize,\n                transformationFun = transformationFun)\n        } else {\n            normCounts <- normalizedCounts\n        }\n\n        # take topRank\n        if (!is.null(topFeatures) && (is.numeric(topFeatures)) |\n                is.integer(topFeatures)) {\n            topRanked <- topRank(\n                matrix = factorizedMatrix$proportions$module,\n                n = topFeatures)\n        } else {\n            topRanked <- topRank(\n                matrix = factorizedMatrix$proportions$module,\n                n = nrow(factorizedMatrix$proportions$module))\n        }\n\n        # filter topRank using featureModule into featureIndices\n        featureIndices <- lapply(\n            featureModule,\n            function(module) {\n                topRanked$index[[module]]\n            }\n        )\n\n        # Set up displayName variable if specified\n        if (is.null(displayName)) {\n            displayNames <- rownames(altExp)\n        } else {\n            displayNames <- SummarizedExperiment::rowData(altExp)[[\n                displayName]]\n        }\n\n        z <- celdaClusters(x, altExpName = altExpName)\n        y <- celdaModules(x, altExpName = altExpName)\n\n        # Get max rowFontSize if multiple modules are selected\n        if (is.null(rowFontSize)) {\n          if (length(featureIndices) > 1 & !isTRUE(returnAsList)) {\n            # If there is more than 1 module selected, then the miniumum size\n            # size will be caculated for each module. This will ensure that\n            # all modules will have the same rowFontSize and the module\n            # heatmaps will have the same width.\n            maxlen <- max(unlist(lapply(featureIndices, length)))\n            maxlen <- maxlen * sqrt(length(featureIndices))\n            rowFontSize <- rep(min(200 / maxlen, 20), length(featureIndices))\n          } else {\n            # If there is only one plot or each plot will be generated\n            # separately and returned in a list, then the size of the labels,\n            # will be caculated for each module separately.\n            len <- unlist(lapply(featureIndices, length))\n            rowFontSize <- pmin(200 / len, 20)\n          }\n        }\n\n        plts <- vector(\"list\", length = length(featureModule))\n        for (i in seq(length(featureModule))) {\n            plts[[i]] <- .plotModuleHeatmap(normCounts = normCounts,\n                col = col,\n                allCellStates = allCellStates,\n                featureIndices = featureIndices[[i]],\n                featureModule = featureModule[i],\n                z = z,\n                y = y,\n                topCells = topCells,\n                altExpName = altExpName,\n                scaleRow = scaleRow,\n                showFeatureNames = showFeatureNames,\n                displayNames = displayNames[featureIndices[[i]]],\n                trim = trim,\n                rowFontSize = rowFontSize[i],\n                showHeatmapLegend = showHeatmapLegend,\n                showTopAnnotationLegend = showTopAnnotationLegend,\n                showTopAnnotationName = showTopAnnotationName,\n                topAnnotationHeight = topAnnotationHeight,\n                showModuleLabel = showModuleLabel,\n                moduleLabel = moduleLabel[i],\n                moduleLabelSize = moduleLabelSize,\n                useRaster = useRaster,\n                unit = unit,\n                ... = ...)\n        }\n\n        if (isTRUE(returnHeatmap)) {\n            return(plts[[1]])\n        } else {\n            if (is.null(ncol)) {\n                ncol <- floor(sqrt(length(plts)))\n            }\n            nrow <- ceiling(length(plts) / ncol)\n\n            for (i in seq(length(plts))) {\n                plts[[i]] <- grid::grid.grabExpr(\n                    ComplexHeatmap::draw(plts[[i]]),\n                    wrap.grobs = TRUE)\n            }\n\n            if (isTRUE(returnAsList)) {\n                figure <- plts\n            } else {\n                figure <- gridExtra::marrangeGrob(plts,\n                    ncol = ncol,\n                    nrow = nrow,\n                    layout_matrix = matrix(seq_len(nrow * ncol),\n                        nrow = nrow,\n                        ncol = ncol,\n                        byrow = TRUE),\n                    top = NA)\n            }\n\n            suppressWarnings(return(figure))\n        }\n    }\n)\n\n\n.plotModuleHeatmap <- function(normCounts,\n    col,\n    allCellStates,\n    featureIndices,\n    featureModule,\n    z,\n    y,\n    topCells,\n    altExpName,\n    scaleRow,\n    showFeatureNames,\n    displayNames,\n    trim,\n    rowFontSize,\n    showHeatmapLegend,\n    showTopAnnotationLegend,\n    showTopAnnotationName,\n    topAnnotationHeight,\n    showModuleLabel,\n    moduleLabel,\n    moduleLabelSize,\n    useRaster,\n    unit,\n    ...) {\n\n    # Determine cell order from factorizedMatrix$proportions$cell\n    cellStates <- allCellStates[featureModule, , drop = TRUE]\n\n    singleModuleOrdered <- order(cellStates, decreasing = TRUE)\n\n    if (!is.null(topCells)) {\n        if (topCells * 2 < ncol(allCellStates)) {\n            cellIndices <- c(\n                utils::head(singleModuleOrdered, n = topCells),\n                utils::tail(singleModuleOrdered, n = topCells))\n        } else {\n            cellIndices <- singleModuleOrdered\n        }\n    } else {\n        cellIndices <- singleModuleOrdered\n    }\n\n    cellIndices <- rev(cellIndices)\n\n    # filter counts based on featureIndices\n    filteredNormCounts <-\n        normCounts[featureIndices, cellIndices, drop = FALSE]\n\n    # Show/hide features with 0 counts in these cells in the module\n    # filteredNormCounts <-\n    #     filteredNormCounts[rowSums(filteredNormCounts > 0) > 0, ,\n    #         drop = FALSE]\n\n    geneIx <- match(rownames(filteredNormCounts), rownames(normCounts))\n    cellIx <- match(colnames(filteredNormCounts), colnames(normCounts))\n\n    zToPlot <- z[cellIx]\n\n    uniquezToPlot <- sort(unique(zToPlot))\n    ccols <- distinctColors(length(unique(z)))[uniquezToPlot]\n    names(ccols) <- uniquezToPlot\n\n    yToPlot <- y[geneIx]\n\n    uniqueyToPlot <- sort(unique(yToPlot))\n    rcols <- distinctColors(length(y))[uniqueyToPlot]\n    names(rcols) <- uniqueyToPlot\n\n    # scale indivisual rows by scaleRow\n    if (!is.null(scaleRow)) {\n        if (is.function(scaleRow)) {\n            cn <- colnames(filteredNormCounts)\n            filteredNormCounts <- t(base::apply(filteredNormCounts,\n                1, scaleRow))\n            colnames(filteredNormCounts) <- cn\n        } else {\n            stop(\"'scaleRow' needs to be of class 'function'\")\n        }\n        # If the standard deviation was 0 then the values will be NA\n        # Replacing the NAs with zero will keep the row the middle color\n        # rather than grey (default with ComplexHeatmap)\n        filteredNormCounts[is.na(filteredNormCounts)] <- 0\n    }\n\n    if (!is.null(trim)) {\n        if (length(trim) != 2) {\n            stop(\n                \"'trim' should be a 2 element vector specifying the lower\",\n                \" and upper boundaries\"\n            )\n        }\n        trim <- sort(trim)\n        filteredNormCounts[filteredNormCounts < trim[1]] <- trim[1]\n        filteredNormCounts[filteredNormCounts > trim[2]] <- trim[2]\n    }\n\n    if (isTRUE(showModuleLabel)) {\n        plt <- ComplexHeatmap::Heatmap(matrix = filteredNormCounts,\n            col = col,\n            row_title = moduleLabel,\n            row_title_gp = grid::gpar(fontsize = moduleLabelSize),\n            show_column_names = FALSE,\n            show_row_names = showFeatureNames,\n            row_labels = displayNames,\n            row_names_gp = grid::gpar(fontsize = rowFontSize),\n            cluster_rows = FALSE,\n            cluster_columns = FALSE,\n            heatmap_legend_param = list(title = \"Expression\"),\n            show_heatmap_legend = showHeatmapLegend,\n            use_raster = useRaster,\n            top_annotation = ComplexHeatmap::HeatmapAnnotation(\n                cell = factor(zToPlot,\n                    levels = stringr::str_sort(unique(zToPlot),\n                        numeric = TRUE)),\n                show_legend = showTopAnnotationLegend,\n                show_annotation_name = showTopAnnotationName,\n                col = list(cell = ccols),\n                simple_anno_size = grid::unit(topAnnotationHeight, unit),\n                simple_anno_size_adjust = TRUE),\n            ...)\n    } else {\n        plt <- ComplexHeatmap::Heatmap(matrix = filteredNormCounts,\n            col = col,\n            show_column_names = FALSE,\n            show_row_names = showFeatureNames,\n            row_labels = displayNames,\n            row_names_gp = grid::gpar(fontsize = rowFontSize),\n            cluster_rows = FALSE,\n            cluster_columns = FALSE,\n            heatmap_legend_param = list(title = \"Expression\"),\n            show_heatmap_legend = showHeatmapLegend,\n            use_raster = useRaster,\n            top_annotation = ComplexHeatmap::HeatmapAnnotation(\n                cell = factor(zToPlot,\n                    levels = stringr::str_sort(unique(zToPlot),\n                        numeric = TRUE)),\n                show_legend = showTopAnnotationLegend,\n                show_annotation_name = showTopAnnotationName,\n                col = list(cell = ccols),\n                simple_anno_size = grid::unit(topAnnotationHeight, unit),\n                simple_anno_size_adjust = TRUE),\n            ...)\n    }\n    return(plt)\n}\n"
  },
  {
    "path": "R/perplexity.R",
    "content": "#' @title Calculate the perplexity of a celda model\n#' @description Perplexity is a statistical measure of how well a probability\n#'  model can predict new data. Lower perplexity indicates a better model.\n#' @param x Can be one of\n#'  \\itemize{\n#'  \\item A \\linkS4class{SingleCellExperiment} object returned by\n#'  \\link{celda_C}, \\link{celda_G} or \\link{celda_CG}, with the matrix\n#'  located in the \\code{useAssay} assay slot.\n#'  Rows represent features and columns represent cells.\n#'  \\item Integer counts matrix. Rows represent features and columns represent\n#'  cells. This matrix should be the same as the one used to generate\n#'  \\code{celdaMod}.}\n#' @param useAssay A string specifying which \\link{assay}\n#'  slot to use if \\code{x} is a \\linkS4class{SingleCellExperiment} object.\n#'  Default \"counts\".\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @param celdaMod Celda model object. Only works if \\code{x} is an integer\n#'  counts matrix.\n#' @param newCounts A new counts matrix used to calculate perplexity. If NULL,\n#'  perplexity will be calculated for the matrix in \\code{useAssay} slot in\n#'  \\code{x}. Default NULL.\n#' @return Numeric. The perplexity for the provided \\code{x} (and\n#'  \\code{celdaModel}).\n#' @export\nsetGeneric(\"perplexity\",\n    function(x,\n        celdaMod,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        newCounts = NULL) {\n\n        standardGeneric(\"perplexity\")})\n\n\n#' @importFrom matrixStats logSumExp\n#' @examples\n#' data(sceCeldaCG)\n#' perplexity <- perplexity(sceCeldaCG)\n#' @rdname perplexity\n#' @export\nsetMethod(\"perplexity\", signature(x = \"SingleCellExperiment\"),\n    function(x,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        newCounts = NULL) {\n\n        altExp <- SingleCellExperiment::altExp(x, altExpName)\n\n        counts <- SummarizedExperiment::assay(altExp, i = useAssay)\n        counts <- .processCounts(counts)\n\n        if (celdaModel(x, altExpName = altExpName) == \"celda_C\") {\n            factorized <- factorizeMatrix(x = x,\n                useAssay = useAssay,\n                altExpName = altExpName,\n                type = \"posterior\")\n            s <- as.integer(sampleLabel(x, altExpName = altExpName))\n            p <- .perplexityCelda_C(\n                counts = counts,\n                factorized = factorized,\n                s = s,\n                newCounts = newCounts)\n        } else if (celdaModel(x, altExpName = altExpName) == \"celda_CG\") {\n            factorized <- factorizeMatrix(x = x,\n                useAssay = useAssay,\n                altExpName = altExpName,\n                type = c(\"posterior\", \"counts\"))\n            s <- as.integer(sampleLabel(x, altExpName = altExpName))\n            p <- .perplexityCelda_CG(counts = counts,\n                factorized = factorized,\n                s = s,\n                newCounts = newCounts)\n        } else if (celdaModel(x, altExpName = altExpName) == \"celda_G\") {\n            factorized <- factorizeMatrix(x = x,\n                useAssay = useAssay,\n                altExpName = altExpName,\n                type = c(\"posterior\", \"counts\"))\n            L <- S4Vectors::metadata(altExp)$celda_parameters$L\n            y <- celdaModules(x, altExpName = altExpName)\n            p <- .perplexityCelda_G(counts,\n                factorized,\n                L = L,\n                y = y,\n                beta = S4Vectors::metadata(altExp)$celda_parameters$beta,\n                newCounts = newCounts)\n        } else {\n            stop(\"S4Vectors::metadata(altExp(x, altExpName))$\",\n                \"celda_parameters$model must be\",\n                \" one of 'celda_C', 'celda_G', or 'celda_CG'\")\n        }\n        return(p)\n    })\n\n\n#' @importFrom matrixStats logSumExp\n#' @examples\n#' data(celdaCGSim, celdaCGMod)\n#' perplexity <- perplexity(celdaCGSim$counts, celdaCGMod)\n#' @rdname perplexity\n#' @export\nsetMethod(\"perplexity\", signature(x = \"ANY\", celdaMod = \"celda_CG\"),\n    function(x, celdaMod, newCounts = NULL) {\n        if (!(\"celda_CG\" %in% class(celdaMod))) {\n            stop(\"The celdaMod provided was not of class celda_CG.\")\n        }\n\n        counts <- .processCounts(x)\n        compareCountMatrix(counts, celdaMod)\n\n        if (is.null(newCounts)) {\n            newCounts <- counts\n        } else {\n            newCounts <- .processCounts(newCounts)\n        }\n        if (nrow(newCounts) != nrow(counts)) {\n            stop(\"newCounts should have the same number of rows as counts.\")\n        }\n\n        factorized <- factorizeMatrix(\n            x = counts,\n            celdaMod = celdaMod,\n            type = c(\"posterior\", \"counts\")\n        )\n\n        theta <- log(factorized$posterior$sample)\n        phi <- factorized$posterior$cellPopulation\n        psi <- factorized$posterior$module\n        s <- as.integer(sampleLabel(celdaMod))\n        eta <- factorized$posterior$geneDistribution\n        nGByTS <- factorized$counts$geneDistribution\n\n        etaProb <- log(eta) * nGByTS\n        geneByPopProb <- log(psi %*% phi)\n        innerLogProb <- .countsTimesProbs(newCounts, geneByPopProb) + theta[, s]\n        # innerLogProb = (t(geneByPopProb) %*% newCounts) + theta[, s]\n\n        log.px <- sum(apply(innerLogProb, 2, matrixStats::logSumExp))\n        # + sum(etaProb)\n        perplexity <- exp(- (log.px / sum(newCounts)))\n        return(perplexity)\n    }\n)\n\n\n#' @examples\n#' data(celdaCSim, celdaCMod)\n#' perplexity <- perplexity(celdaCSim$counts, celdaCMod)\n#' @importFrom matrixStats logSumExp\n#' @rdname perplexity\n#' @export\nsetMethod(\n    \"perplexity\", signature(x = \"ANY\", celdaMod = \"celda_C\"),\n    function(x, celdaMod, newCounts = NULL) {\n        if (!(\"celda_C\" %in% class(celdaMod))) {\n            stop(\"The celdaMod provided was not of class celda_C.\")\n        }\n\n        counts <- .processCounts(x)\n        compareCountMatrix(counts, celdaMod)\n\n        if (is.null(newCounts)) {\n            newCounts <- counts\n        } else {\n            newCounts <- .processCounts(newCounts)\n        }\n\n        if (nrow(newCounts) != nrow(counts)) {\n            stop(\"newCounts should have the same number of rows as counts.\")\n        }\n\n        factorized <- factorizeMatrix(\n            x = counts,\n            celdaMod = celdaMod,\n            type = \"posterior\"\n        )\n        theta <- log(factorized$posterior$sample)\n        phi <- log(factorized$posterior$module)\n        s <- as.integer(sampleLabel(celdaMod))\n\n        # inner.log.prob = (t(phi) %*% newCounts) + theta[, s]\n        inner.log.prob <- .countsTimesProbs(newCounts, phi) + theta[, s]\n        logPx <- sum(apply(inner.log.prob, 2, matrixStats::logSumExp))\n\n        perplexity <- exp(- (logPx / sum(newCounts)))\n        return(perplexity)\n    }\n)\n\n\n#' @examples\n#' data(celdaGSim, celdaGMod)\n#' perplexity <- perplexity(celdaGSim$counts, celdaGMod)\n#' @rdname perplexity\n#' @export\nsetMethod(\n    \"perplexity\", signature(x = \"ANY\", celdaMod = \"celda_G\"),\n    function(x, celdaMod, newCounts = NULL) {\n         counts <- .processCounts(x)\n         compareCountMatrix(counts, celdaMod)\n\n        factorized <- factorizeMatrix(\n            x = counts,\n            celdaMod = celdaMod,\n            type = c(\"posterior\", \"counts\")\n        )\n        psi <- factorized$posterior$module\n        phi <- factorized$posterior$cell\n        eta <- factorized$posterior$geneDistribution\n        nGByTS <- factorized$counts$geneDistribution\n\n        if (is.null(newCounts)) {\n            newCounts <- counts\n        } else {\n            newCounts <- .processCounts(newCounts)\n        }\n        if (nrow(newCounts) != nrow(counts)) {\n            stop(\"newCounts should have the same number of rows as counts.\")\n        }\n        \n        #etaProb <- log(eta) * nGByTS\n        #gene.by.cell.prob = log(psi %*% phi)\n        #logPx = sum(gene.by.cell.prob * newCounts) # + sum(etaProb)\n        gene.by.cell.prob <- log(psi %*% phi)\n        logPx <- sum(gene.by.cell.prob * newCounts) # + sum(etaProb)\n\n        perplexity <- exp(- (logPx / sum(newCounts)))\n        return(perplexity)\n    }\n)\n\n\n.perplexityCelda_C <- function(\n    counts,\n    factorized,\n    s,\n    newCounts) {\n\n    if (is.null(newCounts)) {\n        newCounts <- counts\n    } else {\n        newCounts <- .processCounts(newCounts)\n    }\n\n    if (nrow(newCounts) != nrow(counts)) {\n        stop(\"'newCounts' should have the same number of rows as\",\n            \" 'assay(altExp(x, altExpName), i = useAssay)'.\")\n    }\n\n    theta <- log(factorized$posterior$sample)\n    phi <- log(factorized$posterior$module)\n\n    # inner.log.prob = (t(phi) %*% newCounts) + theta[, s]\n    inner.log.prob <- .countsTimesProbs(newCounts, phi) + theta[, s]\n    logPx <- sum(apply(inner.log.prob, 2, matrixStats::logSumExp))\n\n    perplexity <- exp(- (logPx / sum(newCounts)))\n    return(perplexity)\n}\n\n\n.perplexityCelda_CG <- function(\n    counts,\n    factorized,\n    s,\n    newCounts) {\n\n    if (is.null(newCounts)) {\n        newCounts <- counts\n    } else {\n        newCounts <- .processCounts(newCounts)\n    }\n    if (nrow(newCounts) != nrow(counts)) {\n        stop(\"newCounts should have the same number of rows as\",\n            \" 'assay(altExp(x, altExpName), i = useAssay)'.\")\n    }\n\n    theta <- log(factorized$posterior$sample)\n    phi <- factorized$posterior$cellPopulation\n    psi <- factorized$posterior$module\n    eta <- factorized$posterior$geneDistribution\n    nGByTS <- factorized$counts$geneDistribution\n\n    etaProb <- log(eta) * nGByTS\n    geneByPopProb <- log(psi %*% phi)\n    innerLogProb <- .countsTimesProbs(newCounts, geneByPopProb) + theta[, s]\n    # innerLogProb = (t(geneByPopProb) %*% newCounts) + theta[, s]\n\n    log.px <- sum(apply(innerLogProb, 2, matrixStats::logSumExp))\n    # + sum(etaProb)\n    perplexity <- exp(- (log.px / sum(newCounts)))\n    return(perplexity)\n}\n\n\n.perplexityCelda_G <- function(counts,\n    factorized,\n    L,\n    y,\n    beta,\n    newCounts) {\n\n    psi <- factorized$posterior$module\n    phi <- factorized$posterior$cell\n    #eta <- factorized$posterior$geneDistribution\n    #nGByTS <- factorized$counts$geneDistribution\n\n    if (is.null(newCounts)) {\n        newCounts <- counts\n    } else {\n        newCounts <- .processCounts(newCounts)\n    }\n    if (nrow(newCounts) != nrow(counts)) {\n        stop(\"newCounts should have the same number of rows as counts.\")\n    }\n    \n    #etaProb <- log(eta) * nGByTS\n    #gene.by.cell.prob <- log(psi %*% phi)\n\n    gene.by.cell.prob <- log(psi %*% phi)\n    logPx <- sum(gene.by.cell.prob * newCounts) # + sum(etaProb)\n    \n    perplexity <- exp(- (logPx / sum(newCounts)))\n    return(perplexity)\n}\n\n\n#' @title Calculate and visualize perplexity of all models in a celdaList\n#' @description Calculates the perplexity of each model's cluster assignments\n#'  given the provided countMatrix, as well as resamplings of that count\n#'  matrix, providing a distribution of perplexities and a better sense of the\n#'  quality of a given K/L choice.\n#' @param x A numeric \\link{matrix} of counts or a\n#'  \\linkS4class{SingleCellExperiment} returned from \\link{celdaGridSearch}\n#'  with the matrix located in the assay slot under \\code{useAssay}.\n#'  Rows represent features and columns represent cells. Must contain\n#'  \"celda_grid_search\" slot in \\code{metadata(x)} if \\code{x} is a\n#'  \\linkS4class{SingleCellExperiment} object.\n#' @param useAssay A string specifying which \\link{assay}\n#'  slot to use if \\code{x} is a\n#'  \\linkS4class{SingleCellExperiment} object. Default \"counts\".\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @param celdaList Object of class 'celdaList'. Used only if \\code{x} is a\n#'  matrix object.\n#' @param doResampling Boolean. If \\code{TRUE}, then each cell in the counts\n#' matrix will be resampled according to a multinomial distribution to introduce\n#' noise before calculating perplexity. Default \\code{FALSE}.\n#' @param numResample Integer. The number of times to resample the counts matrix\n#' for evaluating perplexity if \\code{doResampling} is set to \\code{TRUE}.\n#' Default \\code{5}.\n#' @param seed Integer. Passed to \\link[withr]{with_seed}. For reproducibility,\n#'  a default value of \\code{12345} is used. If \\code{NULL}, no calls to\n#'  \\link[withr]{with_seed} are made.\n#' @return A \\linkS4class{SingleCellExperiment} object or\n#'  \\code{celdaList} object with a \\code{perplexity}\n#'  property, detailing the perplexity of all K/L combinations that appeared in\n#'  the celdaList's models.\n#' @export\nsetGeneric(\"resamplePerplexity\",\n    function(x,\n        celdaList,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        doResampling = FALSE,\n        numResample = 5,\n        seed = 12345) {\n    standardGeneric(\"resamplePerplexity\")})\n\n\n#' @rdname resamplePerplexity\n#' @examples\n#' data(sceCeldaCGGridSearch)\n#' sce <- resamplePerplexity(sceCeldaCGGridSearch)\n#' plotGridSearchPerplexity(sce)\n#' @export\nsetMethod(\"resamplePerplexity\",\n    signature(x = \"SingleCellExperiment\"),\n    function(x,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        doResampling = FALSE,\n        numResample = 5,\n        seed = 12345) {\n\n        altExp <- SingleCellExperiment::altExp(x, altExpName)\n\n        counts <- SummarizedExperiment::assay(altExp, i = useAssay)\n        celdaList <- S4Vectors::metadata(altExp)$celda_grid_search\n        if (is.null(seed)) {\n            res <- .resamplePerplexity(\n                counts = counts,\n                celdaList = celdaList,\n                doResampling = doResampling,\n                numResample = numResample)\n        } else {\n            with_seed(seed,\n                res <- .resamplePerplexity(\n                    counts = counts,\n                    celdaList = celdaList,\n                    doResampling = doResampling,\n                    numResample = numResample))\n        }\n\n        S4Vectors::metadata(altExp)$celda_grid_search <- res\n        SingleCellExperiment::altExp(x, altExpName) <- altExp\n        return(x)\n    }\n)\n\n\n#' @rdname resamplePerplexity\n#' @examples\n#' data(celdaCGSim, celdaCGGridSearchRes)\n#' celdaCGGridSearchRes <- resamplePerplexity(\n#'   celdaCGSim$counts,\n#'   celdaCGGridSearchRes\n#' )\n#' plotGridSearchPerplexity(celdaCGGridSearchRes)\n#' @export\nsetMethod(\"resamplePerplexity\",\n    signature(x = \"ANY\"),\n    function(x,\n        celdaList,\n        doResampling = FALSE,\n        numResample = 5,\n        seed = 12345) {\n\n        if (is.null(seed)) {\n            res <- .resamplePerplexity(\n                counts = x,\n                celdaList = celdaList,\n                doResampling = doResampling,\n                numResample = numResample)\n        } else {\n            with_seed(seed,\n                res <- .resamplePerplexity(\n                    counts = x,\n                    celdaList = celdaList,\n                    doResampling = doResampling,\n                    numResample = numResample))\n        }\n\n        return(res)\n    }\n)\n\n\n.resamplePerplexity <- function(counts,\n    celdaList,\n    doResampling = FALSE,\n    numResample = 5) {\n\n    if (!methods::is(celdaList, \"celdaList\")) {\n        stop(\"celdaList parameter was not of class celdaList.\")\n    }\n    if (!isTRUE(is.logical(doResampling))) {\n        stop(\"The 'doResampling' parameter needs to be logical (TRUE/FALSE).\")\n    } \n    if (!isTRUE(doResampling) & (!is.numeric(numResample) || numResample < 1)) {\n        stop(\"The 'numResample' parameter needs to be an integer greater \",\n        \"than 0.\")\n    }\n\n    if(isTRUE(doResampling)) {\n        perpRes <- matrix(NA,\n                          nrow = length(resList(celdaList)),\n                          ncol = numResample)\n        for (j in seq(numResample)) {\n            newCounts <- .resampleCountMatrix(counts)\n            for (i in seq(length(resList(celdaList)))) {\n                perpRes[i, j] <- perplexity(x = counts,\n                    celdaMod = resList(celdaList)[[i]],\n                    newCounts = newCounts)\n            }\n        }\n        celdaList@perplexity <- perpRes\n        \n    } else {\n        perpRes <- matrix(NA,\n                          nrow = length(resList(celdaList)),\n                          ncol = 1)\n        for (i in seq(length(resList(celdaList)))) {\n            perpRes[i,1] <- perplexity(x = counts,\n                                       celdaMod = resList(celdaList)[[i]],\n                                       newCounts = counts)\n        }\n    }    \n   \n    # Add perplexity data.frame to celda list object\n    celdaList@perplexity <- perpRes\n    \n    ## Add mean perplexity to runParams\n    perpMean <- apply(perpRes, 1, mean)\n    celdaList@runParams$mean_perplexity <- perpMean\n\n    return(celdaList)\n}\n\n\n#' @title Visualize perplexity of a list of celda models\n#' @description Visualize perplexity of every model in a celdaList, by unique\n#'  K/L combinations\n#' @param x Can be one of\n#' \\itemize{\n#'  \\item A \\linkS4class{SingleCellExperiment} object returned from\n#'  \\code{celdaGridSearch}, \\code{recursiveSplitModule},\n#'  or \\code{recursiveSplitCell}. Must contain a list named\n#'  \\code{\"celda_grid_search\"} in \\code{metadata(x)}.\n#'  \\item celdaList object.}\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\". Only works if \\code{x} is a\n#'  \\linkS4class{SingleCellExperiment} object.\n#' @param sep Numeric. Breaks in the x axis of the resulting plot.\n#' @param alpha Numeric. Passed to \\link{geom_jitter}. Opacity of the points.\n#'  Values of alpha range from 0 to 1, with lower values corresponding\n#'  to more transparent colors.\n#' @return A ggplot plot object showing perplexity as a function of clustering\n#'  parameters.\n#' @export\nsetGeneric(\"plotGridSearchPerplexity\",\n    function(x, altExpName = \"featureSubset\", sep = 5, alpha = 0.5) {\n    standardGeneric(\"plotGridSearchPerplexity\")})\n\n\n#' @rdname plotGridSearchPerplexity\n#' @examples\n#' data(sceCeldaCGGridSearch)\n#' sce <- resamplePerplexity(sceCeldaCGGridSearch)\n#' plotGridSearchPerplexity(sce)\n#' @export\nsetMethod(\"plotGridSearchPerplexity\",\n    signature(x = \"SingleCellExperiment\"),\n    function(x, altExpName = \"featureSubset\", sep = 5, alpha = 0.5) {\n        altExp <- SingleCellExperiment::altExp(x, altExpName)\n        celdaList <- S4Vectors::metadata(altExp)$celda_grid_search\n        g <- do.call(paste0(\".plotGridSearchPerplexity\",\n            as.character(class(resList(x, altExpName = altExpName)[[1]]))),\n            args = list(celdaList, sep, alpha))\n        return(g)\n    }\n)\n\n\n#' @rdname plotGridSearchPerplexity\n#' @examples\n#' data(celdaCGSim, celdaCGGridSearchRes)\n#' ## Run various combinations of parameters with 'celdaGridSearch'\n#' celdaCGGridSearchRes <- resamplePerplexity(\n#'   celdaCGSim$counts,\n#'   celdaCGGridSearchRes)\n#' plotGridSearchPerplexity(celdaCGGridSearchRes)\n#' @export\nsetMethod(\"plotGridSearchPerplexity\",\n    signature(x = \"celdaList\"),\n    function(x, sep = 5, alpha = 0.5) {\n        g <- do.call(paste0(\".plotGridSearchPerplexity\",\n            as.character(class(resList(x)[[1]]))),\n            args = list(x, sep, alpha))\n        return(g)\n    }\n)\n\n\n.plotGridSearchPerplexitycelda_CG <- function(celdaList, sep, alpha) {\n    if (!all(c(\"K\", \"L\") %in% colnames(runParams(celdaList)))) {\n        stop(\"runParams(celdaList) needs K and L columns.\")\n    }\n    if (is.null(celdaPerplexity(celdaList))) {\n        stop(\"No perplexity measurements available. First run\",\n            \" 'resamplePerplexity' with celdaList object.\")\n    }\n\n    ix1 <- rep(seq(nrow(celdaPerplexity(celdaList))),\n        each = ncol(celdaPerplexity(celdaList))\n    )\n    ix2 <- rep(\n        seq(ncol(celdaPerplexity(celdaList))),\n        nrow(celdaPerplexity(celdaList))\n    )\n    df <- data.frame(runParams(celdaList)[ix1, ],\n        perplexity = celdaPerplexity(celdaList)[cbind(ix1, ix2)]\n    )\n    df$K <- as.factor(df$K)\n    df$L <- as.factor(df$L)\n\n    lMeansByK <- stats::aggregate(df$perplexity,\n        by = list(df$K, df$L),\n        FUN = mean\n    )\n    colnames(lMeansByK) <- c(\"K\", \"L\", \"mean_perplexity\")\n    lMeansByK$K <- as.factor(lMeansByK$K)\n    lMeansByK$L <- as.factor(lMeansByK$L)\n\n    if (nlevels(df$K) > 1) {\n        if (nlevels(df$L) > 1) {\n            plot <- ggplot2::ggplot(\n                df,\n                ggplot2::aes_string(x = \"K\", y = \"perplexity\")\n            ) +\n                ggplot2::geom_jitter(\n                    height = 0, width = 0.1, alpha = alpha,\n                    ggplot2::aes_string(color = \"L\")\n                ) +\n                ggplot2::scale_color_discrete(name = \"L\") +\n                ggplot2::geom_path(data = lMeansByK, ggplot2::aes_string(\n                    x = \"K\",\n                    y = \"mean_perplexity\", group = \"L\", color = \"L\"\n                )) +\n                ggplot2::ylab(\"Perplexity\") +\n                ggplot2::xlab(\"K\") +\n                ggplot2::scale_x_discrete(breaks = seq(\n                    min(runParams(celdaList)$K),\n                    max(runParams(celdaList)$K), sep\n                )) +\n                ggplot2::theme_bw() +\n                ggplot2::theme(panel.grid.major = ggplot2::element_blank(),\n                    panel.grid.minor = ggplot2::element_blank())\n        } else {\n            plot <- ggplot2::ggplot(\n                df,\n                ggplot2::aes_string(x = \"K\", y = \"perplexity\")) +\n                ggplot2::geom_jitter(height = 0, width = 0.1,\n                    color = \"grey\", alpha = alpha) +\n                ggplot2::scale_color_manual(name = \"L\", values = \"black\") +\n                ggplot2::geom_path(data = lMeansByK, ggplot2::aes_string(\n                    x = \"K\",\n                    y = \"mean_perplexity\", group = \"L\", color = \"L\"\n                )) +\n                ggplot2::ylab(\"Perplexity\") +\n                ggplot2::xlab(\"K\") +\n                ggplot2::scale_x_discrete(breaks = seq(\n                    min(runParams(celdaList)$K),\n                    max(runParams(celdaList)$K), sep\n                )) +\n                ggplot2::theme_bw() +\n                ggplot2::theme(panel.grid.major = ggplot2::element_blank(),\n                    panel.grid.minor = ggplot2::element_blank())\n        }\n    } else {\n        plot <- ggplot2::ggplot(\n            df,\n            ggplot2::aes_string(x = \"L\", y = \"perplexity\")) +\n            ggplot2::geom_jitter(height = 0, width = 0.1,\n                color = \"grey\", alpha = alpha) +\n            ggplot2::geom_path(data = lMeansByK,\n                ggplot2::aes_string(x = \"L\",\n                    y = \"mean_perplexity\",\n                    group = \"K\",\n                    color = \"K\")) +\n            ggplot2::scale_color_manual(name = \"K\", values = \"black\") +\n            ggplot2::ylab(\"Perplexity\") +\n            ggplot2::xlab(\"L\") +\n            ggplot2::scale_x_discrete(breaks = seq(min(runParams(celdaList)$L),\n                max(runParams(celdaList)$L), sep)) +\n            ggplot2::theme_bw() +\n            ggplot2::theme(panel.grid.major = ggplot2::element_blank(),\n                panel.grid.minor = ggplot2::element_blank())\n    }\n    return(plot)\n}\n\n\n.plotGridSearchPerplexitycelda_C <- function(celdaList, sep, alpha) {\n    if (!all(c(\"K\") %in% colnames(runParams(celdaList)))) {\n        stop(\"runParams(celdaList) needs the column K.\")\n    }\n    if (is.null(celdaPerplexity(celdaList))) {\n        stop(\n            \"No perplexity measurements available. First run\",\n            \" 'resamplePerplexity' with celdaList object.\"\n        )\n    }\n\n    ix1 <- rep(seq(nrow(celdaPerplexity(celdaList))),\n        each = ncol(celdaPerplexity(celdaList))\n    )\n    ix2 <- rep(\n        seq(ncol(celdaPerplexity(celdaList))),\n        nrow(celdaPerplexity(celdaList))\n    )\n    df <- data.frame(runParams(celdaList)[ix1, ],\n        perplexity = celdaPerplexity(celdaList)[cbind(ix1, ix2)]\n    )\n    df$K <- as.factor(df$K)\n\n    meansByK <- stats::aggregate(df$perplexity, by = list(df$K), FUN = mean)\n    colnames(meansByK) <- c(\"K\", \"mean_perplexity\")\n    meansByK$K <- as.factor(meansByK$K)\n\n    plot <-\n        ggplot2::ggplot(df, ggplot2::aes_string(x = \"K\", y = \"perplexity\")) +\n        ggplot2::geom_jitter(height = 0, width = 0.1,\n            color = \"grey\", alpha = alpha) +\n        ggplot2::geom_path(\n            data = meansByK,\n            ggplot2::aes_string(x = \"K\", y = \"mean_perplexity\", group = 1)\n        ) +\n        ggplot2::ylab(\"Perplexity\") +\n        ggplot2::xlab(\"K\") +\n        ggplot2::scale_x_discrete(breaks = seq(\n            min(runParams(celdaList)$K),\n            max(runParams(celdaList)$K), sep\n        )) +\n        ggplot2::theme_bw() +\n        ggplot2::theme(panel.grid.major = ggplot2::element_blank(),\n            panel.grid.minor = ggplot2::element_blank())\n\n    return(plot)\n}\n\n\n.plotGridSearchPerplexitycelda_G <- function(celdaList, sep, alpha) {\n    if (!all(c(\"L\") %in% colnames(runParams(celdaList)))) {\n        stop(\"runParams(celdaList) needs the column L.\")\n    }\n    if (length(celdaPerplexity(celdaList)) == 0) {\n        stop(\n            \"No perplexity measurements available. First run\",\n            \" 'resamplePerplexity' with celdaList object.\"\n        )\n    }\n\n    ix1 <- rep(seq(nrow(celdaPerplexity(celdaList))),\n        each = ncol(celdaPerplexity(celdaList))\n    )\n    ix2 <- rep(\n        seq(ncol(celdaPerplexity(celdaList))),\n        nrow(celdaPerplexity(celdaList))\n    )\n    df <- data.frame(runParams(celdaList)[ix1, ],\n        perplexity = celdaPerplexity(celdaList)[cbind(ix1, ix2)]\n    )\n    df$L <- as.factor(df$L)\n\n    meansByL <- stats::aggregate(df$perplexity, by = list(df$L), FUN = mean)\n    colnames(meansByL) <- c(\"L\", \"mean_perplexity\")\n    meansByL$L <- as.factor(meansByL$L)\n\n    plot <-\n        ggplot2::ggplot(df, ggplot2::aes_string(x = \"L\", y = \"perplexity\")) +\n        ggplot2::geom_jitter(height = 0, width = 0.1,\n            color = \"grey\", alpha = alpha) +\n        ggplot2::geom_path(\n            data = meansByL,\n            ggplot2::aes_string(x = \"L\", y = \"mean_perplexity\", group = 1)\n        ) +\n        ggplot2::ylab(\"Perplexity\") +\n        ggplot2::xlab(\"L\") +\n        ggplot2::scale_x_discrete(breaks = seq(\n            min(runParams(celdaList)$L),\n            max(runParams(celdaList)$L), sep\n        )) +\n        ggplot2::theme_bw() +\n        ggplot2::theme(panel.grid.major = ggplot2::element_blank(),\n            panel.grid.minor = ggplot2::element_blank())\n\n    return(plot)\n}\n\n\n# Resample a counts matrix for evaluating perplexity\n#' @importFrom Matrix colSums t\n.resampleCountMatrix <- function(countMatrix) {\n    colsums <- colSums(countMatrix)\n    prob <- t(t(countMatrix) / colsums)\n    resample <- vapply(seq(ncol(countMatrix)), function(idx) {\n        stats::rmultinom(\n            n = 1,\n            size = colsums[idx],\n            prob = prob[, idx]\n        )\n    }, integer(nrow(countMatrix)))\n    return(resample)\n}\n\n\n#' @title Visualize perplexity differences of a list of celda models\n#' @description Visualize perplexity differences of every model in a celdaList,\n#'  by unique K/L combinations. \n#' @param x Can be one of\n#' \\itemize{\n#'  \\item A \\linkS4class{SingleCellExperiment} object returned from\n#'  \\code{celdaGridSearch}, \\code{recursiveSplitModule},\n#'  or \\code{recursiveSplitCell}. Must contain a list named\n#'  \\code{\"celda_grid_search\"} in \\code{metadata(x)}.\n#'  \\item celdaList object.}\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @param sep Numeric. Breaks in the x axis of the resulting plot.\n#' @param alpha Numeric. Passed to \\link{geom_jitter}. Opacity of the points.\n#'  Values of alpha range from 0 to 1, with lower values corresponding\n#'  to more transparent colors.\n#' @return A ggplot plot object showing perplexity differences as a function of\n#'  clustering parameters.\n#' @export\nsetGeneric(\"plotRPC\",\n    function(x, altExpName = \"featureSubset\", sep = 5, alpha = 0.5) {\n    standardGeneric(\"plotRPC\")})\n\n\n#' @rdname plotRPC\n#' @examples\n#' data(sceCeldaCGGridSearch)\n#' sce <- resamplePerplexity(sceCeldaCGGridSearch)\n#' plotRPC(sce)\n#' @export\nsetMethod(\"plotRPC\",\n    signature(x = \"SingleCellExperiment\"),\n    function(x, altExpName = \"featureSubset\", sep = 5, alpha = 0.5) {\n        altExp <- SingleCellExperiment::altExp(x, altExpName)\n        model <- altExp@metadata$celda_grid_search@celdaGridSearchParameters$\n            model\n        celdaList <- S4Vectors::metadata(altExp)$celda_grid_search\n\n        if (model == \"celda_C\") {\n            g <- .plotRPCC(celdaList, sep, \n                alpha = alpha)\n        } else if (model == \"celda_G\") {\n            g <- .plotRPCG(celdaList, sep, \n                alpha = alpha)\n        } else if (model == \"celda_CG\") {\n            g <- .plotRPCCG(celdaList, sep, \n                alpha = alpha)\n        } else {\n            stop(\"S4Vectors::metadata(altExp(x, altExpName))$\",\n                \"celda_grid_search@\",\n                \"celdaGridSearchParameters$model must be\",\n                \" one of 'celda_C', 'celda_G', or 'celda_CG'\")\n        }\n        return(g)\n    }\n)\n\n\n#' @rdname plotRPC\n#' @examples\n#' data(celdaCGSim, celdaCGGridSearchRes)\n#' ## Run various combinations of parameters with 'celdaGridSearch'\n#' celdaCGGridSearchRes <- resamplePerplexity(\n#'   celdaCGSim$counts,\n#'   celdaCGGridSearchRes)\n#' plotRPC(celdaCGGridSearchRes)\n#' @export\nsetMethod(\"plotRPC\",\n    signature(x = \"celdaList\"),\n    function(x, sep = 5, alpha = 0.5) {\n        g <- do.call(paste0(\".plotRPC\",\n            unlist(strsplit(as.character(class(resList(x)[[1]])), \"_\"))[[2]]),\n            args = list(x, sep, alpha))\n        return(g)\n    }\n)\n\n\n.plotRPCCG <- function(celdaList, sep, alpha) {\n    # fix check note\n    K <- L <- perpdiffK <- meanperpdiffK <- perpdiffL <- meanperpdiffL <- NULL\n\n    if (!all(c(\"K\", \"L\") %in% colnames(runParams(celdaList)))) {\n        stop(\"runParams(celdaList) needs K and L columns.\")\n    }\n    if (is.null(celdaPerplexity(celdaList))) {\n        stop(\"No perplexity measurements available. First run\",\n            \" 'resamplePerplexity' with celdaList object.\")\n    }\n\n    ix1 <- rep(seq(nrow(celdaPerplexity(celdaList))),\n        each = ncol(celdaPerplexity(celdaList)))\n    ix2 <- rep(seq(ncol(celdaPerplexity(celdaList))),\n        nrow(celdaPerplexity(celdaList)))\n    dt <- data.table::data.table(runParams(celdaList)[ix1, ],\n        perplexity = celdaPerplexity(celdaList)[cbind(ix1, ix2)])\n    dt$K <- as.factor(dt$K)\n    dt$L <- as.factor(dt$L)\n\n    if (nlevels(dt$K) > 1) {\n        for (i in seq(nlevels(dt$L))) {\n            for (j in seq(2, nlevels(dt$K))) {\n                p1 <- dt[K == levels(dt$K)[j - 1] & L == levels(dt$L)[i],\n                    perplexity]\n                p2 <- dt[K == levels(dt$K)[j] & L == levels(dt$L)[i],\n                    perplexity]\n                dt[K == levels(dt$K)[j] & L == levels(dt$L)[i],\n                    \"perpdiffK\"] <- p2 - p1\n            }\n        }\n\n        diffMeansByK <- data.table::data.table(stats::aggregate(\n            dt$perpdiffK,\n            by = list(dt$K, dt$L),\n            FUN = mean))\n        colnames(diffMeansByK) <- c(\"K\", \"L\", \"meanperpdiffK\")\n        diffMeansByK$K <- as.factor(diffMeansByK$K)\n        diffMeansByK$L <- as.factor(diffMeansByK$L)\n        diffMeansByK <- diffMeansByK[stats::complete.cases(diffMeansByK), ]\n        diffMeansByK$spline <- stats::smooth.spline(diffMeansByK$meanperpdiffK)$y\n        \n        if (nlevels(dt$L) > 1) {\n            plot <- ggplot2::ggplot(dt[!is.na(perpdiffK), ],\n                ggplot2::aes_string(x = \"K\",\n                    y = \"perpdiffK\")) +\n                ggplot2::geom_jitter(height = 0, width = 0.1, alpha = alpha,\n                    ggplot2::aes_string(color = \"L\")) +\n                ggplot2::scale_color_discrete(name = \"L\") +\n                ggplot2::geom_path(data = diffMeansByK,\n                    ggplot2::aes_string(x = \"K\", y = \"spline\", group = \"L\",\n                        color = \"L\"), size = 1) +\n                ggplot2::ylab(\"Rate of perplexity change\") +\n                ggplot2::xlab(\"K\") +\n                ggplot2::scale_x_discrete(\n                    breaks = seq(min(as.integer(levels(dt$K))),\n                        max(as.integer(levels(dt$K))), sep)) +\n                ggplot2::theme_bw() +\n                ggplot2::theme(panel.grid.major = ggplot2::element_blank(),\n                    panel.grid.minor = ggplot2::element_blank())\n        } else {\n            plot <- ggplot2::ggplot(dt[!is.na(perpdiffK), ],\n                ggplot2::aes_string(x = \"K\",\n                    y = \"perpdiffK\")) +\n                ggplot2::geom_jitter(height = 0, width = 0.1,\n                    color = \"grey\", alpha = alpha) +\n                ggplot2::scale_color_manual(name = \"L\", values = \"black\") +\n                ggplot2::geom_path(data = diffMeansByK,\n                    ggplot2::aes_string(x = \"K\", y = \"spline\", group = \"L\",\n                        color = \"L\"), size = 1) +\n                ggplot2::ylab(\"Rate of perplexity change\") +\n                ggplot2::xlab(\"K\") +\n                ggplot2::scale_x_discrete(\n                    breaks = seq(min(as.integer(levels(dt$K))),\n                        max(as.integer(levels(dt$K))), sep)) +\n                ggplot2::theme_bw() +\n                ggplot2::theme(panel.grid.major = ggplot2::element_blank(),\n                    panel.grid.minor = ggplot2::element_blank())\n        }\n    } else if (nlevels(dt$L) > 1) {\n        for (j in seq(2, nlevels(dt$L))) {\n            p1 <- dt[K == levels(dt$K) & L == levels(dt$L)[j - 1],\n                perplexity]\n            p2 <- dt[K == levels(dt$K) & L == levels(dt$L)[j],\n                perplexity]\n            dt[K == levels(dt$K) & L == levels(dt$L)[j],\n                \"perpdiffL\"] <- p2 - p1\n        }\n\n        diffMeansByL <- data.table::data.table(stats::aggregate(dt$perpdiffL,\n            by = list(dt$K, dt$L),\n            FUN = mean))\n        colnames(diffMeansByL) <- c(\"K\", \"L\", \"meanperpdiffL\")\n        diffMeansByL$K <- as.factor(diffMeansByL$K)\n        diffMeansByL$L <- as.factor(diffMeansByL$L)\n        diffMeansByL <- diffMeansByL[stats::complete.cases(diffMeansByL), ]\n        diffMeansByL$spline <- stats::smooth.spline(diffMeansByL$meanperpdiffL)$y\n        \n        plot <- ggplot2::ggplot(dt[!is.na(perpdiffL), ],\n            ggplot2::aes_string(x = \"L\", y = \"perpdiffL\")) +\n            ggplot2::geom_jitter(height = 0, width = 0.1,\n                color = \"grey\", alpha = alpha) +\n            ggplot2::scale_color_manual(name = \"K\", values = \"black\") +\n            ggplot2::geom_path(\n                data = diffMeansByL,\n                ggplot2::aes_string(\n                    x = \"L\", y = \"spline\", group = \"K\", color = \"K\"),\n                size = 1) +\n            ggplot2::ylab(\"Rate of perplexity change\") +\n            ggplot2::xlab(\"L\") +\n            ggplot2::scale_x_discrete(\n                breaks = seq(min(as.integer(levels(dt$L))),\n                max(as.integer(levels(dt$L))), sep)) +\n            ggplot2::theme_bw() +\n            ggplot2::theme(panel.grid.major = ggplot2::element_blank(),\n                panel.grid.minor = ggplot2::element_blank())\n    } else {\n        stop(\"Only one combination of K and L available! Unable to calculate\",\n            \" perplexity differences.\")\n    }\n\n    return(plot)\n}\n\n\n.plotRPCC <- function(celdaList, sep, alpha) {\n    K <- perpdiffK <- meanperpdiffK <- NULL # fix check note\n    if (!all(c(\"K\") %in% colnames(runParams(celdaList)))) {\n        stop(\"runParams(celdaList) needs the column K.\")\n    }\n    if (is.null(celdaPerplexity(celdaList))) {\n        stop(\n            \"No perplexity measurements available. First run\",\n            \" 'resamplePerplexity' with celdaList object.\"\n        )\n    }\n\n    ix1 <- rep(seq(nrow(celdaPerplexity(celdaList))),\n        each = ncol(celdaPerplexity(celdaList)))\n    ix2 <- rep(seq(ncol(celdaPerplexity(celdaList))),\n        nrow(celdaPerplexity(celdaList)))\n    dt <- data.table::data.table(runParams(celdaList)[ix1, ],\n        perplexity = celdaPerplexity(celdaList)[cbind(ix1, ix2)])\n    dt$K <- as.factor(dt$K)\n\n    if (nlevels(dt$K) > 1) {\n        for (i in seq(2, nlevels(dt$K))) {\n            p1 <- dt[K == levels(dt$K)[i - 1], perplexity]\n            p2 <- dt[K == levels(dt$K)[i], perplexity]\n            dt[K == levels(dt$K)[i], \"perpdiffK\"] <- p2 - p1\n        }\n\n        diffMeansByK <- data.table::data.table(stats::aggregate(dt$perpdiffK,\n            by = list(dt$K),\n            FUN = mean))\n        colnames(diffMeansByK) <- c(\"K\", \"meanperpdiffK\")\n        diffMeansByK$K <- as.factor(diffMeansByK$K)\n        diffMeansByK <- diffMeansByK[stats::complete.cases(diffMeansByK), ]\n        diffMeansByK$spline <- stats::smooth.spline(diffMeansByK$meanperpdiffK)$y\n        \n        plot <- ggplot2::ggplot(dt[!is.na(perpdiffK), ],\n            ggplot2::aes_string(x = \"K\",\n                y = \"perpdiffK\")) +\n            ggplot2::geom_jitter(height = 0, width = 0.1,\n                color = \"grey\", alpha = alpha) +\n            ggplot2::geom_path(data = diffMeansByK,\n                ggplot2::aes_string(x = \"K\", y = \"spline\", group = 1),\n                size = 1) +\n            ggplot2::ylab(\"Perplexity difference compared to previous K\") +\n            ggplot2::xlab(\"K\") +\n            ggplot2::scale_x_discrete(\n                breaks = seq(min(as.integer(levels(dt$K))),\n                max(as.integer(levels(dt$K))), sep)) +\n            ggplot2::theme_bw() +\n            ggplot2::theme(panel.grid.major = ggplot2::element_blank(),\n                panel.grid.minor = ggplot2::element_blank())\n    } else {\n        stop(\"Only one unique K value available! Unable to calculate\",\n            \" perplexity differences.\")\n    }\n    return(plot)\n}\n\n\n.plotRPCG <- function(celdaList, sep, alpha) {\n    L <- perpdiffL <- meanperpdiffL <- NULL # fix check note\n    if (!all(c(\"L\") %in% colnames(runParams(celdaList)))) {\n        stop(\"runParams(celdaList) needs the column L.\")\n    }\n    if (length(celdaPerplexity(celdaList)) == 0) {\n        stop(\n            \"No perplexity measurements available. First run\",\n            \" 'resamplePerplexity' with celdaList object.\"\n        )\n    }\n\n    ix1 <- rep(seq(nrow(celdaPerplexity(celdaList))),\n        each = ncol(celdaPerplexity(celdaList)))\n    ix2 <- rep(seq(ncol(celdaPerplexity(celdaList))),\n        nrow(celdaPerplexity(celdaList)))\n    dt <- data.table::data.table(runParams(celdaList)[ix1, ],\n        perplexity = celdaPerplexity(celdaList)[cbind(ix1, ix2)])\n    dt$L <- as.factor(dt$L)\n\n    if (nlevels(dt$L) > 1) {\n        for (i in seq(2, nlevels(dt$L))) {\n            p1 <- dt[L == levels(dt$L)[i - 1], perplexity]\n            p2 <- dt[L == levels(dt$L)[i], perplexity]\n            dt[L == levels(dt$L)[i], \"perpdiffL\"] <- p2 - p1\n        }\n\n        diffMeansByL <- data.table::data.table(stats::aggregate(dt$perpdiffL,\n            by = list(dt$L),\n            FUN = mean))\n        colnames(diffMeansByL) <- c(\"L\", \"meanperpdiffL\")\n        diffMeansByL$L <- as.factor(diffMeansByL$L)\n        diffMeansByL <- diffMeansByL[stats::complete.cases(diffMeansByL), ]\n        diffMeansByL$spline <- stats::smooth.spline(diffMeansByL$meanperpdiffL)$y\n        \n        plot <- ggplot2::ggplot(dt[!is.na(perpdiffL), ],\n            ggplot2::aes_string(x = \"L\",\n                y = \"perpdiffL\")) +\n            ggplot2::geom_jitter(height = 0, width = 0.1,\n                color = \"grey\", alpha = alpha) +\n            ggplot2::geom_path(data = diffMeansByL,\n                ggplot2::aes_string(x = \"L\", y = \"spline\", group = 1),\n                size = 1) +\n            ggplot2::ylab(\"Perplexity difference compared to previous L\") +\n            ggplot2::xlab(\"L\") +\n            ggplot2::scale_x_discrete(\n                breaks = seq(min(as.integer(levels(dt$L))),\n                max(as.integer(levels(dt$L))), sep)) +\n            ggplot2::theme_bw() +\n            ggplot2::theme(panel.grid.major = ggplot2::element_blank(),\n                panel.grid.minor = ggplot2::element_blank())\n    } else {\n        stop(\"Only one unique L value available! Unable to calculate\",\n            \" perplexity differences.\")\n    }\n    return(plot)\n}\n"
  },
  {
    "path": "R/plotHeatmap.R",
    "content": "#' @title Plots heatmap based on Celda model\n#' @description Renders a heatmap based on a matrix of counts where rows are\n#'  features and columns are cells.\n#' @param counts Numeric or sparse matrix. Normalized counts matrix where rows\n#' represent features and columns represent cells. .\n#' @param z Numeric vector. Denotes cell population labels.\n#' @param y Numeric vector. Denotes feature module labels.\n#' @param featureIx Integer vector. Select features for display in heatmap. If\n#'  NULL, no subsetting will be performed. Default NULL.\n#' @param cellIx Integer vector. Select cells for display in heatmap. If NULL,\n#'  no subsetting will be performed. Default NULL.\n#' @param scaleRow Function. A function to scale each individual row. Set to\n#'  NULL to disable. Occurs after normalization and log transformation. Defualt\n#'  is 'scale' and thus will Z-score transform each row.\n#' @param trim Numeric vector. Vector of length two that specifies the lower\n#'  and upper bounds for the data. This threshold is applied after row scaling.\n#'  Set to NULL to disable. Default c(-2,2).\n#' @param clusterFeature Logical. Determines whether rows should be clustered.\n#'  Default TRUE.\n#' @param clusterCell Logical. Determines whether columns should be clustered.\n#'  Default TRUE.\n#' @param annotationCell Data frame. Additional annotations for each cell will\n#'  be shown in the column color bars. The format of the data frame should be\n#'  one row for each cell and one column for each annotation. Numeric variables\n#'  will be displayed as continuous color bars and factors will be displayed as\n#'  discrete color bars. Default NULL.\n#' @param annotationFeature A data frame for the feature annotations (rows).\n#' @param annotationColor List. Contains color scheme for all annotations. See\n#'  `?pheatmap` for more details.\n#' @param colorScheme Character. One of \"divergent\" or \"sequential\". A\n#'  \"divergent\" scheme is best for highlighting relative data (denoted by\n#'  'colorSchemeCenter') such as gene expression data that has been normalized\n#'  and centered. A \"sequential\" scheme is best for highlighting data that\n#'  are ordered low to high such as raw counts or probabilities. Default\n#'  \"divergent\".\n#' @param colorSchemeSymmetric Logical. When the colorScheme is \"divergent\"\n#'  and the data contains both positive and negative numbers, TRUE indicates\n#'  that the color scheme should be symmetric from\n#'  \\code{[-max(abs(data)), max(abs(data))]}. For example, if the data ranges\n#'  goes from -1.5 to 2, then setting this to TRUE will force the color scheme\n#'  to range from -2 to 2. Default TRUE.\n#' @param colorSchemeCenter Numeric. Indicates the center of a \"divergent\"\n#'  colorScheme. Default 0.\n#' @param col Color for the heatmap.\n#' @param breaks Numeric vector. A sequence of numbers that covers the range\n#'  of values in the normalized `counts`. Values in the normalized `matrix` are\n#'  assigned to each bin in `breaks`. Each break is assigned to a unique color\n#'  from `col`. If NULL, then breaks are calculated automatically. Default NULL.\n#' @param legend Logical. Determines whether legend should be drawn. Default\n#'  TRUE.\n#' @param annotationLegend Logical. Whether legend for all annotations should\n#'  be drawn. Default TRUE.\n#' @param annotationNamesFeature Logical. Whether the names for features should\n#'  be shown. Default TRUE.\n#' @param annotationNamesCell Logical. Whether the names for cells should be\n#'  shown. Default TRUE.\n#' @param showNamesFeature Logical. Specifies if feature names should be shown.\n#'  Default TRUE.\n#' @param showNamesCell Logical. Specifies if cell names should be shown.\n#'  Default FALSE.\n#' @param rowGroupOrder Vector. Specifies the order of feature clusters when\n#'  semisupervised clustering is performed on the \\code{y} labels.\n#' @param colGroupOrder Vector. Specifies the order of cell clusters when\n#'  semisupervised clustering is performed on the \\code{z} labels.\n#' @param hclustMethod Character. Specifies the method to use for the 'hclust'\n#'  function. See `?hclust` for possible values. Default \"ward.D2\".\n#' @param treeheightFeature Numeric. Width of the feature dendrogram. Set to 0\n#'  to disable plotting of this dendrogram. Default: if clusterFeature == TRUE,\n#'  then treeheightFeature = 50, else treeheightFeature = 0.\n#' @param treeheightCell Numeric. Height of the cell dendrogram. Set to 0 to\n#'  disable plotting of this dendrogram. Default: if clusterCell == TRUE, then\n#'  treeheightCell = 50, else treeheightCell = 0.\n#' @param silent Logical. Whether to plot the heatmap.\n#' @param ... Other arguments to be passed to underlying pheatmap function.\n#' @examples\n#' data(celdaCGSim, celdaCGMod)\n#' plotHeatmap(celdaCGSim$counts,\n#'   z = celdaClusters(celdaCGMod)$z, y = celdaClusters(celdaCGMod)$y\n#' )\n#' @return list A list containing dendrogram information and the heatmap grob\n#' @import graphics\n#' @import grid\n#' @export\nplotHeatmap <- function(counts,\n    z = NULL,\n    y = NULL,\n    scaleRow = scale,\n    trim = c(-2, 2),\n    featureIx = NULL,\n    cellIx = NULL,\n    clusterFeature = TRUE,\n    clusterCell = TRUE,\n    colorScheme = c(\"divergent\", \"sequential\"),\n    colorSchemeSymmetric = TRUE,\n    colorSchemeCenter = 0,\n    col = NULL,\n    annotationCell = NULL,\n    annotationFeature = NULL,\n    annotationColor = NULL,\n    breaks = NULL,\n    legend = TRUE,\n    annotationLegend = TRUE,\n    annotationNamesFeature = TRUE,\n    annotationNamesCell = TRUE,\n    showNamesFeature = FALSE,\n    showNamesCell = FALSE,\n    rowGroupOrder = NULL,\n    colGroupOrder = NULL,\n    hclustMethod = \"ward.D2\",\n    treeheightFeature = ifelse(clusterFeature, 50, 0),\n    treeheightCell = ifelse(clusterCell, 50, 0),\n    silent = FALSE,\n    ...) {\n    # Check for same lengths for z and y group variables\n    if (!is.null(z) & length(z) != ncol(counts)) {\n        stop(\"Length of z must match number of columns in counts matrix\")\n    }\n\n    if (!is.null(y) & length(y) != nrow(counts)) {\n        stop(\"Length of y must match number of rows in counts matrix\")\n    }\n\n    colorScheme <- match.arg(colorScheme)\n\n    ## Create cell annotation\n    if (!is.null(annotationCell) & !is.null(z)) {\n        if (is.null(rownames(annotationCell))) {\n            rownames(annotationCell) <- colnames(counts)\n        } else {\n            if (any(rownames(annotationCell) != colnames(counts))) {\n                stop(\"Row names of 'annotationCell' are different than the\n             column names of 'counts'\")\n            }\n        }\n        annotationCell <-\n            data.frame(cell = as.factor(z), annotationCell)\n    } else if (is.null(annotationCell) & !is.null(z)) {\n        annotationCell <- data.frame(cell = as.factor(z))\n        rownames(annotationCell) <- colnames(counts)\n    } else {\n        annotationCell <- NA\n    }\n\n    # Set feature annotation\n    if (!is.null(annotationFeature) & !is.null(y)) {\n        if (is.null(rownames(annotationFeature))) {\n            rownames(annotationFeature) <- rownames(counts)\n        } else {\n            if (any(rownames(annotationFeature) != rownames(counts))) {\n                stop(\"Row names of 'annotationFeature' are different than the\n             row names of 'counts'\")\n            }\n        }\n        annotationFeature <- data.frame(\n            module = as.factor(y),\n            annotationFeature\n        )\n    } else if (is.null(annotationFeature) & !is.null(y)) {\n        annotationFeature <- data.frame(module = as.factor(y))\n        rownames(annotationFeature) <- rownames(counts)\n    } else {\n        annotationFeature <- NA\n    }\n\n    ## Select subsets of features/cells\n    if (!is.null(featureIx)) {\n        counts <- counts[featureIx, , drop = FALSE]\n        if (!is.null(annotationFeature) &&\n                !is.null(ncol(annotationFeature))) {\n            annotationFeature <- annotationFeature[featureIx, , drop = FALSE]\n        }\n        if (!is.null(y)) {\n            y <- y[featureIx]\n        }\n    }\n\n    if (!is.null(cellIx)) {\n        counts <- counts[, cellIx, drop = FALSE]\n        if (!is.null(annotationCell) &&\n                !is.null(ncol(annotationCell))) {\n            annotationCell <- annotationCell[cellIx, , drop = FALSE]\n        }\n        if (!is.null(z)) {\n            z <- z[cellIx]\n        }\n    }\n\n    ## Set annotation colors\n    if (!is.null(z)) {\n        if (is.factor(z)) {\n            K <- levels(z)\n        } else {\n            K <- unique(z)\n        }\n        K <- stringr::str_sort(K, numeric = TRUE)\n        kCol <- distinctColors(length(K))\n        names(kCol) <- K\n\n\n        if (!is.null(annotationColor)) {\n            if (!(\"cell\" %in% names(annotationColor))) {\n                annotationColor <- c(list(cell = kCol), annotationColor)\n            }\n        } else {\n            annotationColor <- list(cell = kCol)\n        }\n    }\n\n    if (!is.null(y)) {\n        if (is.factor(y)) {\n            L <- levels(y)\n        } else {\n            L <- unique(y)\n        }\n        L <- stringr::str_sort(L, numeric = TRUE)\n        lCol <- distinctColors(length(L))\n        names(lCol) <- L\n\n        if (!is.null(annotationColor)) {\n            if (!(\"module\" %in% names(annotationColor))) {\n                annotationColor <- c(list(module = lCol), annotationColor)\n            }\n        } else {\n            annotationColor <- list(module = lCol)\n        }\n    }\n\n    # scale indivisual rows by scaleRow\n    if (!is.null(scaleRow)) {\n        if (is.function(scaleRow)) {\n            cn <- colnames(counts)\n            counts <- t(base::apply(counts, 1, scaleRow))\n            colnames(counts) <- cn\n        } else {\n            stop(\"'scaleRow' needs to be of class 'function'\")\n        }\n    }\n\n    if (!is.null(trim)) {\n        if (length(trim) != 2) {\n            stop(\n                \"'trim' should be a 2 element vector specifying the lower\",\n                \" and upper boundaries\"\n            )\n        }\n        trim <- sort(trim)\n        counts[counts < trim[1]] <- trim[1]\n        counts[counts > trim[2]] <- trim[2]\n    }\n\n    ## Set color scheme and breaks\n    uBoundRange <- max(counts, na.rm = TRUE)\n    lboundRange <- min(counts, na.rm = TRUE)\n\n    if (colorScheme == \"divergent\") {\n        if (colorSchemeSymmetric == TRUE) {\n            uBoundRange <- max(abs(uBoundRange), abs(lboundRange))\n            lboundRange <- -uBoundRange\n        }\n        if (is.null(col)) {\n            col <- colorRampPalette(c(\"#1E90FF\", \"#FFFFFF\", \"#CD2626\"),\n                space = \"Lab\"\n            )(100)\n        }\n        colLen <- length(col)\n        if (is.null(breaks)) {\n            breaks <- c(\n                seq(\n                    lboundRange,\n                    colorSchemeCenter,\n                    length.out = round(colLen / 2) + 1\n                ),\n                seq(\n                    colorSchemeCenter + 1e-6,\n                    uBoundRange,\n                    length.out = colLen - round(colLen / 2)\n                )\n            )\n        }\n    } else {\n        # Sequential color scheme\n        if (is.null(col)) {\n            col <- colorRampPalette(c(\"#FFFFFF\", brewer.pal(\n                n = 9,\n                name = \"Blues\"\n            )))(100)\n        }\n        colLen <- length(col)\n        if (is.null(breaks)) {\n            breaks <- seq(lboundRange, uBoundRange, length.out = colLen)\n        }\n    }\n\n    sp <- semiPheatmap(\n        mat = counts,\n        color = col,\n        breaks = breaks,\n        clusterCols = clusterCell,\n        clusterRows = clusterFeature,\n        annotationRow = annotationFeature,\n        annotationCol = annotationCell,\n        annotationColors = annotationColor,\n        legend = legend,\n        annotationLegend = annotationLegend,\n        annotationNamesRow = annotationNamesFeature,\n        annotationNamesCol = annotationNamesCell,\n        showRownames = showNamesFeature,\n        showColnames = showNamesCell,\n        clusteringMethod = hclustMethod,\n        treeHeightRow = treeheightFeature,\n        treeHeightCol = treeheightCell,\n        rowLabel = y,\n        colLabel = z,\n        rowGroupOrder = rowGroupOrder,\n        colGroupOrder = colGroupOrder,\n        silent = TRUE,\n        ...\n    )\n    return(sp)\n}\n"
  },
  {
    "path": "R/plot_decontx.R",
    "content": "#' @title Plots contamination on UMAP coordinates\n#' @description A scatter plot of the UMAP dimensions generated by DecontX with\n#' cells colored by the estimated percentation of contamation.\n#' @param x Either a \\linkS4class{SingleCellExperiment} with \\code{decontX}\n#' results stored in \\code{metadata(x)$decontX} or the result from running\n#' decontX on a count matrix.\n#' @param batch Character. Batch of cells to plot. If \\code{NULL}, then\n#' the first batch in the list will be selected. Default \\code{NULL}.\n#' @param colorScale Character vector. Contains the color spectrum to be passed\n#' to \\code{scale_colour_gradientn} from package 'ggplot2'. Default\n#' c(\"blue\",\"green\",\"yellow\",\"orange\",\"red\").\n#' @param size Numeric. Size of points in the scatterplot. Default 1.\n#' @return Returns a \\code{ggplot} object.\n#' @author Shiyi Yang, Joshua Campbell\n#' @seealso See \\code{\\link{decontX}} for a full example of how to estimate\n#' and plot contamination.\n#' @export\nplotDecontXContamination <- function(x,\n                                     batch = NULL,\n                                     colorScale = c(\n                                       \"blue\",\n                                       \"green\",\n                                       \"yellow\",\n                                       \"orange\",\n                                       \"red\"\n                                     ),\n                                     size = 1) {\n  if (inherits(x, \"SingleCellExperiment\")) {\n    estimates <- S4Vectors::metadata(x)$decontX$estimates\n  } else {\n    estimates <- x$estimates\n  }\n  if (is.null(estimates)) {\n    stop(\"decontX estimates not found. Estimates will be found in\n          'metadata(x)$decontX$estimates' if 'x' is a\n          SingleCellExperiment or 'x$estimates' if decontX was run\n          on a count matrix. Are you sure 'x' is output from decontX?\")\n  }\n  batches <- names(estimates)\n\n  if (is.null(batch)) {\n    i <- batches[1]\n  } else {\n    if (!(batch %in% batches)) {\n      stop(\n        \"'\", batch, \"' is not one of the batches in 'x'. Batches available\",\n        \" for plotting: '\", paste(batches, collapse = \",\"), \"'\"\n      )\n    }\n    i <- batch\n  }\n\n  contamin <- estimates[[i]]$contamination\n  umap <- estimates[[i]]$UMAP\n\n  ## Create data.frame\n  df <- data.frame(umap, \"Contamination\" = contamin)\n  naIx <- is.na(umap[, 1]) | is.na(umap[, 2])\n  df <- df[!naIx, ]\n\n  ## Generate ggplot scatterplot\n  gg <- ggplot2::ggplot(\n    df,\n    ggplot2::aes_string(\n      x = colnames(umap)[1],\n      y = colnames(umap)[2]\n    )\n  ) +\n    ggplot2::geom_point(\n      stat = \"identity\",\n      size = size,\n      ggplot2::aes_string(color = \"Contamination\")\n    ) +\n    ggplot2::theme_bw() +\n    ggplot2::scale_colour_gradientn(\n      colors = colorScale,\n      name = \"Contamination\",\n      limits = c(0, 1)\n    ) +\n    ggplot2::theme(\n      panel.grid.major = ggplot2::element_blank(),\n      panel.grid.minor = ggplot2::element_blank(),\n      axis.text = ggplot2::element_text(size = 15),\n      axis.title = ggplot2::element_text(size = 15)\n    )\n  return(gg)\n}\n\n\n#' @title Plots percentage of cells cell types expressing markers\n#' @description Generates a barplot that shows the percentage of\n#' cells within clusters or cell types that have detectable levels\n#' of given marker genes. Can be used to view the expression of\n#' marker genes in different cell types before and after\n#' decontamination with \\code{\\link{decontX}}.\n#' @param x Either a \\linkS4class{SingleCellExperiment} or\n#' a matrix-like object of counts.\n#' @param markers List. A named list indicating the marker genes\n#' for each cell type of\n#' interest. Multiple markers can be supplied for each cell type. For example,\n#' \\code{list(Tcell_Markers=c(\"CD3E\", \"CD3D\"),\n#' Bcell_Markers=c(\"CD79A\", \"CD79B\", \"MS4A1\")}\n#' would specify markers for human T-cells and B-cells.\n#' A cell will be considered\n#' \"positive\" for a cell type if it has a count greater than \\code{threshold}\n#' for at least one of the marker genes in the list.\n#' @param groupClusters List. A named list that allows\n#' cell clusters labels coded in\n#' \\code{z} to be regrouped and renamed on the fly. For example,\n#' \\code{list(Tcells=c(1, 2), Bcells=7)} would recode\n#' clusters 1 and 2 to \"Tcells\"\n#' and cluster 7 to \"Bcells\". Note that if this is\n#' used, clusters in \\code{z} not found\n#' in \\code{groupClusters} will be excluded from the barplot.\n#' Default \\code{NULL}.\n#' @param assayName Character vector. Name(s) of the assay(s) to\n#' plot if \\code{x} is a\n#' \\linkS4class{SingleCellExperiment}. If more than one assay\n#' is listed, then side-by-side barplots will be generated.\n#' Default \\code{c(\"counts\", \"decontXcounts\")}.\n#' @param z Character, Integer, or Vector. Indicates the cluster labels\n#' for each cell.\n#' If \\code{x} is a \\linkS4class{SingleCellExperiment} and \\code{z = NULL},\n#' then the cluster labels from \\code{\\link{decontX}} will be retived from the\n#' \\code{colData} of \\code{x} (i.e. \\code{colData(x)$decontX_clusters}).\n#' If \\code{z} is a single character or integer,\n#' then that column will be retrived\n#' from \\code{colData} of \\code{x}. (i.e. \\code{colData(x)[,z]}). If \\code{x}\n#' is a counts matrix, then \\code{z} will need\n#' to be a vector the same length as\n#' the number of columns in \\code{x} that indicate\n#' the cluster to which each cell\n#' belongs. Default \\code{NULL}.\n#' @param threshold Numeric. Markers greater than or equal to this value will\n#' be considered detected in a cell. Default 1.\n#' @param exactMatch Boolean. Whether to only identify exact matches\n#' for the markers or to identify partial matches using \\code{\\link{grep}}. See\n#' \\code{\\link{retrieveFeatureIndex}} for more details. Default \\code{TRUE}.\n#' @param by Character. Where to search for the markers if \\code{x} is a\n#' \\linkS4class{SingleCellExperiment}. See \\code{\\link{retrieveFeatureIndex}}\n#' for more details. If \\code{x} is a matrix,\n#' then this must be set to \\code{\"rownames\"}.Default \\code{\"rownames\"}.\n#' @param ncol Integer. Number of columns to make in the plot.\n#' Default \\code{round(sqrt(length(markers))}.\n#' @param labelBars Boolean. Whether to display percentages above each bar\n#' Default \\code{TRUE}.\n#' @param labelSize Numeric. Size of the percentage labels in the barplot.\n#' Default 3.\n#' @return Returns a \\code{ggplot} object.\n#' @author Shiyi Yang, Joshua Campbell\n#' @seealso See \\code{\\link{decontX}} for a full example of how to estimate\n#' and plot contamination.\n#' @export\nplotDecontXMarkerPercentage <- function(x, markers, groupClusters = NULL,\n                                        assayName = c(\n                                          \"counts\",\n                                          \"decontXcounts\"\n                                        ),\n                                        z = NULL, threshold = 1,\n                                        exactMatch = TRUE, by = \"rownames\",\n                                        ncol = round(sqrt(length(markers))),\n                                        labelBars = TRUE, labelSize = 3) {\n  cellTypeLabels <- percent <- NULL # fix check note\n\n  legend <- \"none\"\n  # Check that list arguments are named\n  if (!is(markers, \"list\") || is.null(names(markers))) {\n    stop(\"'markers' needs to be a named list.\")\n  }\n\n  temp <- .processPlotDecontXMarkerInupt(\n    x = x,\n    z = z,\n    markers = markers,\n    groupClusters = groupClusters,\n    by = by,\n    exactMatch = exactMatch\n  )\n  x <- temp$x\n  z <- temp$z\n  geneMarkerIndex <- temp$geneMarkerIndex\n  geneMarkerCellTypeIndex <- temp$geneMarkerCellTypeIndex\n  groupClusters <- temp$groupClusters\n  xlab <- temp$xlab\n\n  if (inherits(x, \"SingleCellExperiment\")) {\n    # If 'x' is SingleCellExperiment, then get percentage\n    # for each matrix in 'assayName'\n    df.list <- list()\n    for (i in seq_along(assayName)) {\n      counts <- SummarizedExperiment::assay(\n        x[geneMarkerIndex, ],\n        assayName[i]\n      )\n      df <- .calculateDecontXBarplotPercent(\n        counts,\n        z,\n        geneMarkerCellTypeIndex,\n        threshold\n      )\n      df.list[[i]] <- cbind(df, assay = assayName[i])\n    }\n    df <- do.call(rbind, df.list)\n    assay <- as.factor(df$assay)\n    if (length(assayName) > 1) {\n      legend <- \"right\"\n    }\n  } else {\n    ## If 'x' is matrix, then calculate percentages directly\n    counts <- x[geneMarkerIndex, ]\n    df <- .calculateDecontXBarplotPercent(\n      counts,\n      z,\n      geneMarkerCellTypeIndex,\n      threshold\n    )\n    assay <- \"red3\"\n    legend <- \"none\"\n  }\n\n  # Build data.frame for ggplots\n  df <- cbind(df, cellTypeLabels = names(groupClusters)[df$cellType])\n  df$cellTypeLabels <- factor(df$cellTypeLabels,\n    levels = names(groupClusters)\n  )\n  df <- cbind(df, markerLabels = names(markers)[df$markers])\n  df$markerLabels <- factor(df$markerLabels, levels = names(markers))\n\n  plt <- ggplot2::ggplot(df, ggplot2::aes_string(\n    x = \"cellTypeLabels\",\n    y = \"percent\", fill = \"assay\"\n  )) +\n    ggplot2::geom_bar(\n      stat = \"identity\",\n      position = ggplot2::position_dodge2(width = 0.9, preserve = \"single\")\n    ) +\n    ggplot2::xlab(xlab) +\n    ggplot2::ylab(paste0(\"Percentage of cells expressing markers\")) +\n    ggplot2::facet_wrap(. ~ df$markerLabels, ncol = ncol) +\n    ggplot2::theme(\n      panel.background = ggplot2::element_rect(\n        fill = \"white\",\n        color = \"grey\"\n      ),\n      panel.grid = ggplot2::element_line(\"grey\"),\n      legend.position = legend,\n      legend.key = ggplot2::element_rect(\n        fill = \"white\",\n        color = \"white\"\n      ),\n      panel.grid.minor = ggplot2::element_blank(),\n      panel.grid.major = ggplot2::element_blank(),\n      text = ggplot2::element_text(size = 10),\n      axis.text.x = ggplot2::element_text(\n        size = 8, angle = 45,\n        hjust = 1\n      ),\n      axis.text.y = ggplot2::element_text(size = 9),\n      legend.key.size = grid::unit(8, \"mm\"),\n      legend.text = ggplot2::element_text(size = 10),\n      strip.text.x = ggplot2::element_text(size = 10)\n    )\n\n  if (isTRUE(labelBars)) {\n    plt <- plt + ggplot2::geom_text(ggplot2::aes(\n      x = cellTypeLabels,\n      y = percent + 2.5,\n      label = percent\n    ),\n    position = ggplot2::position_dodge2(width = 0.9, preserve = \"single\"),\n    size = labelSize\n    )\n  }\n  return(plt)\n}\n\n\n#' @title Plots expression of marker genes before and after decontamination\n#' @description Generates a violin plot that shows the counts of marker\n#' genes in cells across specific clusters or cell types. Can be used to view\n#' the expression of marker genes in different cell types before and after\n#' decontamination with \\code{\\link{decontX}}.\n#' @param x Either a \\linkS4class{SingleCellExperiment}\n#' or a matrix-like object of counts.\n#' @param markers Character Vector or List. A character vector\n#' or list of character vectors\n#' with the names of the marker genes of interest.\n#' @param groupClusters List. A named list that allows\n#' cell clusters labels coded in\n#' \\code{z} to be regrouped and renamed on the fly. For example,\n#' \\code{list(Tcells=c(1, 2), Bcells=7)} would recode clusters\n#' 1 and 2 to \"Tcells\"\n#' and cluster 7 to \"Bcells\". Note that if this is used, clusters\n#' in \\code{z} not found\n#' in \\code{groupClusters} will be excluded. Default \\code{NULL}.\n#' @param assayName Character vector. Name(s) of the assay(s) to\n#' plot if \\code{x} is a\n#' \\linkS4class{SingleCellExperiment}. If more than one assay is listed, then\n#' side-by-side violin plots will be generated.\n#' Default \\code{c(\"counts\", \"decontXcounts\")}.\n#' @param z Character, Integer, or Vector.\n#' Indicates the cluster labels for each cell.\n#' If \\code{x} is a \\linkS4class{SingleCellExperiment} and \\code{z = NULL},\n#' then the cluster labels from \\code{\\link{decontX}} will be retreived from the\n#' \\code{colData} of \\code{x} (i.e. \\code{colData(x)$decontX_clusters}).\n#' If \\code{z} is a single character or integer, then that column will be\n#' retrived from \\code{colData} of \\code{x}. (i.e. \\code{colData(x)[,z]}).\n#' If \\code{x} is a counts matrix, then \\code{z} will need to be a vector\n#' the same length as the number of columns in \\code{x} that indicate\n#' the cluster to which each cell belongs. Default \\code{NULL}.\n#' @param exactMatch Boolean. Whether to only identify exact matches\n#' for the markers or to identify partial matches using \\code{\\link{grep}}.\n#' See \\code{\\link{retrieveFeatureIndex}} for more details.\n#' Default \\code{TRUE}.\n#' @param by Character. Where to search for the markers if \\code{x} is a\n#' \\linkS4class{SingleCellExperiment}. See \\code{\\link{retrieveFeatureIndex}}\n#' for more details. If \\code{x} is a matrix, then this must be set to\n#' \\code{\"rownames\"}. Default \\code{\"rownames\"}.\n#' @param log1p Boolean. Whether to apply the function \\code{log1p} to the data\n#' before plotting. This function will add a pseudocount of 1 and then log\n#' transform the expression values. Default \\code{FALSE}.\n#' @param ncol Integer. Number of columns to make in the plot.\n#' Default \\code{NULL}.\n#' @param plotDots Boolean. If \\code{TRUE}, the\n#'  expression of features will be plotted as points in addition to the violin\n#'  curve. Default \\code{FALSE}.\n#' @param dotSize Numeric. Size of points if \\code{plotDots = TRUE}.\n#' Default \\code{0.1}.\n#' @return Returns a \\code{ggplot} object.\n#' @author Shiyi Yang, Joshua Campbell\n#' @seealso See \\code{\\link{decontX}} for a full example of how to estimate\n#' and plot contamination.\n#' @export\nplotDecontXMarkerExpression <- function(x, markers, groupClusters = NULL,\n                                        assayName = c(\n                                          \"counts\",\n                                          \"decontXcounts\"\n                                        ),\n                                        z = NULL, exactMatch = TRUE,\n                                        by = \"rownames\", log1p = FALSE,\n                                        ncol = NULL,\n                                        plotDots = FALSE, dotSize = 0.1) {\n  legend <- \"none\"\n  temp <- .processPlotDecontXMarkerInupt(\n    x = x,\n    z = z,\n    markers = markers,\n    groupClusters = groupClusters,\n    by = by,\n    exactMatch = exactMatch\n  )\n  x <- temp$x\n  z <- temp$z\n  geneMarkerIndex <- temp$geneMarkerIndex\n  groupClusters <- temp$groupClusters\n  xlab <- temp$xlab\n\n  if (inherits(x, \"SingleCellExperiment\")) {\n    # If 'x' is SingleCellExperiment, then get percentage\n    # for each matrix in 'assayName'\n    df.list <- list()\n    for (i in seq_along(assayName)) {\n      counts <- SummarizedExperiment::assay(\n        x[geneMarkerIndex, ],\n        assayName[i]\n      )\n      df <- reshape2::melt(as.matrix(counts),\n        varnames = c(\"Marker\", \"Cell\"),\n        value.name = \"Expression\"\n      )\n      df.list[[i]] <- cbind(df, assay = assayName[i])\n    }\n    df <- do.call(rbind, df.list)\n    assay <- factor(df$assay, levels = assayName)\n    if (length(assayName) > 1) {\n      legend <- \"right\"\n    }\n  } else {\n    ## If 'x' is matrix, then calculate percentages directly\n    counts <- x[geneMarkerIndex, ]\n    df <- reshape2::melt(counts,\n      varnames = c(\"Marker\", \"Cell\"),\n      value.name = \"Expression\"\n    )\n    assay <- \"red3\"\n    legend <- \"none\"\n  }\n\n  # Create data.frame and add cell type groups back in\n  names(z) <- colnames(x)\n  df <- cbind(df, Cluster = z[df$Cell])\n\n  ylab <- \"Expression\"\n  if (isTRUE(log1p)) {\n    df$Expression <- log1p(df$Expression)\n    ylab <- \"Expression (log1p)\"\n  }\n  Expression <- df$Expression\n  Marker <- df$Marker\n  Assay <- factor(df$assay, levels = assayName)\n  Cluster <- df$Cluster\n  if (!is.null(groupClusters)) {\n    df <- cbind(df, Cell_Type = names(groupClusters)[Cluster])\n    Cell_Type <- factor(df$Cell_Type, levels = names(groupClusters))\n    plt <- ggplot2::ggplot(df, ggplot2::aes(\n      x = Cell_Type,\n      y = Expression,\n      fill = Assay\n    )) +\n      ggplot2::facet_wrap(~ Cell_Type + Marker,\n        scales = \"free\",\n        labeller = ggplot2::label_context,\n        ncol = ncol\n      )\n  } else {\n    plt <- ggplot2::ggplot(df, ggplot2::aes(\n      x = Cluster,\n      y = Expression,\n      fill = Assay\n    )) +\n      ggplot2::facet_wrap(~ Cluster + Marker,\n        scales = \"free\",\n        labeller = ggplot2::label_context,\n        ncol = ncol\n      )\n  }\n  plt <- plt + ggplot2::geom_violin(\n    trim = TRUE,\n    scale = \"width\"\n  ) +\n    ggplot2::theme_bw() + ggplot2::theme(\n      axis.text.x = ggplot2::element_blank(),\n      axis.ticks.x = ggplot2::element_blank(),\n      axis.title.x = ggplot2::element_blank(),\n      strip.text = ggplot2::element_text(size = 8),\n      panel.grid = ggplot2::element_blank(),\n      legend.position = legend\n    ) + ggplot2::ylab(ylab)\n\n\n  if (isTRUE(plotDots)) {\n    plt <- plt + ggplot2::geom_jitter(height = 0, size = dotSize)\n  }\n\n  return(plt)\n}\n\n\n\n.processPlotDecontXMarkerInupt <- function(x, z, markers, groupClusters,\n                                           by, exactMatch) {\n\n  # Process z and convert to a factor\n  if (is.null(z) & inherits(x, \"SingleCellExperiment\")) {\n    cn <- colnames(SummarizedExperiment::colData(x))\n    if (!(\"decontX_clusters\" %in% cn)) {\n      stop(\"'decontX_clusters' not found in 'colData(x)'. Make sure you have\n           run 'decontX' or supply 'z' directly.\")\n    }\n    z <- SummarizedExperiment::colData(x)$decontX_clusters\n  } else if (length(z) == 1 & inherits(x, \"SingleCellExperiment\")) {\n    if (!(z %in% colnames(SummarizedExperiment::colData(x)))) {\n      stop(\"'\", z, \"' not found in 'colData(x)'.\")\n    }\n    z <- SummarizedExperiment::colData(x)[, z]\n  } else if (length(z) != ncol(x)) {\n    stop(\"If 'x' is a SingleCellExperiment, then 'z' needs to be\",\n          \" a single character or integer specifying the column in\",\n          \" 'colData(x)'. Alternatively to specify the cell cluster\",\n          \" labels directly as a vector, the length of 'z' needs to\",\n          \" be the same as the number of columns in 'x'. This is\",\n          \" required if 'x' is a matrix.\")\n  }\n  if (!is.factor(z)) {\n    z <- as.factor(z)\n  }\n\n  if (!is.null(groupClusters)) {\n    if (!is(groupClusters, \"list\") || is.null(names(groupClusters))) {\n      stop(\"'groupClusters' needs to be a named list.\")\n    }\n\n    # Check that groupClusters are found in 'z'\n    cellMappings <- unlist(groupClusters)\n    if (any(!(cellMappings %in% z))) {\n      missing <- cellMappings[!(cellMappings %in% z)]\n      stop(\n        \"'groupClusters' not found in 'z': \",\n        paste(missing, collapse = \",\")\n      )\n    }\n\n    # Check for duplicate groupClusters\n    ta <- table(unlist(groupClusters))\n    if (any(ta > 1)) {\n      dup <- names(ta)[ta > 1]\n      stop(\"'groupClusters' had duplicate values for the following clusters: \",\n           paste(dup, collapse = \",\"), \". Clusters need be assigned to a\",\n           \"single group.\")\n    }\n\n    labels <- rep(NA, ncol(x))\n    for (i in seq_along(groupClusters)) {\n      labels[z %in% groupClusters[[i]]] <- names(groupClusters)[i]\n    }\n    na.ix <- is.na(labels)\n    labels <- labels[!na.ix]\n    x <- x[, !na.ix]\n    z <- as.integer(factor(labels, levels = names(groupClusters)))\n    xlab <- \"Cell types\"\n  } else {\n    labels <- as.factor(z)\n    groupClusters <- levels(labels)\n    names(groupClusters) <- levels(labels)\n    xlab <- \"Clusters\"\n  }\n\n  # Find index of each feature in 'x'\n  geneMarkerCellTypeIndex <- rep(\n    seq(length(markers)),\n    lapply(markers, length)\n  )\n  geneMarkerIndex <- retrieveFeatureIndex(unlist(markers),\n    x,\n    by = by,\n    removeNA = FALSE,\n    exactMatch = exactMatch\n  )\n\n  # Remove genes that did not match\n  na.ix <- is.na(geneMarkerIndex)\n  geneMarkerCellTypeIndex <- geneMarkerCellTypeIndex[!na.ix]\n  geneMarkerIndex <- geneMarkerIndex[!na.ix]\n\n  return(list(\n    x = x,\n    z = z,\n    geneMarkerIndex = geneMarkerIndex,\n    geneMarkerCellTypeIndex = geneMarkerCellTypeIndex,\n    groupClusters = groupClusters,\n    xlab = xlab\n  ))\n}\n\n\n.calculateDecontXBarplotPercent <- function(counts,\n                                            z,\n                                            geneMarkerCellTypeIndex,\n                                            threshold) {\n\n  # Get counts matrix and convert to DelayedMatrix\n  counts <- DelayedArray::DelayedArray(counts)\n\n  # Convert to boolean matrix and sum markers in same cell type\n  # The \"+ 0\" is to convert boolean to numeric\n  counts <- counts >= threshold\n  countsByMarker <- DelayedArray::rowsum(counts + 0, geneMarkerCellTypeIndex)\n  countsByCellType <- DelayedArray::colsum((countsByMarker > 0) + 0, z)\n\n  # Calculate percentages within each cell cluster\n  zTotals <- tabulate(z)\n  percentByCellType <- round(sweep(countsByCellType, 2, zTotals, \"/\") * 100)\n  df <- reshape2::melt(percentByCellType,\n    varnames = c(\"markers\", \"cellType\"),\n    value.name = \"percent\"\n  )\n\n  return(df)\n}\n"
  },
  {
    "path": "R/plot_dr.R",
    "content": "#' @title Mapping the dimension reduction plot\n#' @description Creates a scatterplot given two dimensions from a data\n#'  dimension reduction tool (e.g tSNE) output.\n#' @param x Numeric matrix or a \\linkS4class{SingleCellExperiment} object\n#'  with the matrix located in the assay slot under \\code{useAssay}. Each\n#'  row of the matrix will be plotted as a separate facet.\n#' @param reducedDimName The name of the dimension reduction slot in\n#'  \\code{reducedDimNames(x)} if \\code{x} is a\n#'  \\linkS4class{SingleCellExperiment} object. Ignored if both \\code{dim1} and\n#'  \\code{dim2} are set.\n#' @param dim1 Numeric vector. Second dimension from data dimension\n#'  reduction output.\n#' @param dim2 Numeric vector. Second dimension from data dimension\n#'  reduction output.\n#' @param useAssay A string specifying which \\link{assay}\n#'  slot to use if \\code{x} is a\n#'  \\linkS4class{SingleCellExperiment} object. Default \"counts\".\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @param size Numeric. Sets size of point on plot. Default 1.\n#' @param xlab Character vector. Label for the x-axis. Default 'Dimension_1'.\n#' @param ylab Character vector. Label for the y-axis. Default 'Dimension_2'.\n#' @param limits Passed to \\link{scale_colour_gradient2}. The range\n#'  of color scale.\n#' @param colorLow Character. A color available from `colors()`.\n#'  The color will be used to signify the lowest values on the scale.\n#'  Default \"blue4\".\n#' @param colorMid Character. A color available from `colors()`.\n#'  The color will be used to signify the midpoint on the scale. Default\n#'  \"grey90\".\n#' @param colorHigh Character. A color available from `colors()`.\n#'  The color will be used to signify the highest values on the scale.\n#'  Default \"firebrick1\".\n#' @param midpoint Numeric. The value indicating the midpoint of the\n#' diverging color scheme. If \\code{NULL}, defaults to the mean\n#' with 10 percent of values trimmed. Default \\code{0}.\n#' @param varLabel Character vector. Title for the color legend.\n#' @param ncol Integer. Passed to \\link[ggplot2]{facet_wrap}. Specify the\n#'  number of columns for facet wrap.\n#' @param headers Character vector. If `NULL`, the corresponding rownames are\n#'  used as labels. Otherwise, these headers are used to label the genes.\n#' @param decreasing logical. Specifies the order of plotting the points.\n#'  If \\code{FALSE}, the points will be plotted in increasing order where\n#'  the points with largest values will be on top. \\code{TRUE} otherwise.\n#'  If \\code{NULL}, no sorting is performed. Points will be plotted in their\n#'  current order in \\code{x}. Default \\code{FALSE}.\n#' @return The plot as a ggplot object\n#' @export\nsetGeneric(\"plotDimReduceGrid\",\n           function(x,\n                    reducedDimName,\n                    dim1 = NULL,\n                    dim2 = NULL,\n                    useAssay = \"counts\",\n                    altExpName = \"featureSubset\",\n                    size = 1,\n                    xlab = \"Dimension_1\",\n                    ylab = \"Dimension_2\",\n                    limits = c(-2, 2),\n                    colorLow = \"blue4\",\n                    colorMid = \"grey90\",\n                    colorHigh = \"firebrick1\",\n                    midpoint = 0,\n                    varLabel = NULL,\n                    ncol = NULL,\n                    headers = NULL,\n                    decreasing = FALSE) {\n             standardGeneric(\"plotDimReduceGrid\")\n           })\n\n\n#' @rdname plotDimReduceGrid\n#' @examples\n#' data(sceCeldaCG)\n#' sce <- celdaTsne(sceCeldaCG)\n#' plotDimReduceGrid(x = sce,\n#'   reducedDimName = \"celda_tSNE\",\n#'   xlab = \"Dimension1\",\n#'   ylab = \"Dimension2\",\n#'   varLabel = \"tSNE\")\n#' @export\nsetMethod(\"plotDimReduceGrid\",\n          signature(x = \"SingleCellExperiment\"),\n          function(x,\n                   reducedDimName,\n                   dim1 = NULL,\n                   dim2 = NULL,\n                   useAssay = \"counts\",\n                   altExpName = \"featureSubset\",\n                   size = 1,\n                   xlab = \"Dimension_1\",\n                   ylab = \"Dimension_2\",\n                   limits = c(-2, 2),\n                   colorLow = \"blue4\",\n                   colorMid = \"grey90\",\n                   colorHigh = \"firebrick1\",\n                   midpoint = 0,\n                   varLabel = NULL,\n                   ncol = NULL,\n                   headers = NULL,\n                   decreasing = FALSE) {\n            altExp <- SingleCellExperiment::altExp(x, altExpName)\n            matrix <- SummarizedExperiment::assay(x, i = useAssay)\n\n            if (is.null(dim1)) {\n              dim1 <- SingleCellExperiment::reducedDim(altExp,\n                                                       reducedDimName)[, 1]\n            }\n\n            if (is.null(dim2)) {\n              dim2 <- SingleCellExperiment::reducedDim(altExp,\n                                                       reducedDimName)[, 2]\n            }\n\n            g <- .plotDimReduceGrid(\n              dim1 = dim1,\n              dim2 = dim2,\n              matrix = matrix,\n              size = size,\n              xlab = xlab,\n              ylab = ylab,\n              limits = limits,\n              colorLow = colorLow,\n              colorMid = colorMid,\n              colorHigh = colorHigh,\n              midpoint = midpoint,\n              varLabel = varLabel,\n              ncol = ncol,\n              headers = headers,\n              decreasing = decreasing\n            )\n            return(g)\n          })\n\n\n#' @rdname plotDimReduceGrid\n#' @examples\n#' library(SingleCellExperiment)\n#' data(sceCeldaCG)\n#' sce <- celdaTsne(sceCeldaCG)\n#' plotDimReduceGrid(x = counts(sce),\n#'   dim1 = reducedDim(altExp(sce), \"celda_tSNE\")[, 1],\n#'   dim2 = reducedDim(altExp(sce), \"celda_tSNE\")[, 2],\n#'   xlab = \"Dimension1\",\n#'   ylab = \"Dimension2\",\n#'   varLabel = \"tSNE\")\n#' @export\nsetMethod(\"plotDimReduceGrid\",\n          signature(x = \"ANY\"),\n          function(x,\n                   dim1,\n                   dim2,\n                   size = 1,\n                   xlab = \"Dimension_1\",\n                   ylab = \"Dimension_2\",\n                   limits = c(-2, 2),\n                   colorLow = \"blue4\",\n                   colorMid = \"grey90\",\n                   colorHigh = \"firebrick1\",\n                   midpoint = 0,\n                   varLabel = NULL,\n                   ncol = NULL,\n                   headers = NULL,\n                   decreasing = FALSE) {\n            x <- as.matrix(x)\n            g <- .plotDimReduceGrid(\n              dim1 = dim1,\n              dim2 = dim2,\n              matrix = x,\n              size = size,\n              xlab = xlab,\n              ylab = ylab,\n              limits = limits,\n              colorLow = colorLow,\n              colorMid = colorMid,\n              colorHigh = colorHigh,\n              midpoint = midpoint,\n              varLabel = varLabel,\n              ncol = ncol,\n              headers = headers,\n              decreasing = decreasing\n            )\n            return(g)\n          })\n\n\n#' @importFrom reshape2 melt\n.plotDimReduceGrid <- function(dim1,\n                               dim2,\n                               matrix,\n                               size,\n                               xlab,\n                               ylab,\n                               limits,\n                               colorLow,\n                               colorMid,\n                               colorHigh,\n                               midpoint,\n                               varLabel,\n                               ncol,\n                               headers,\n                               decreasing) {\n  df <-\n    data.frame(dim1, dim2, t(as.data.frame(matrix)), check.names = FALSE)\n  naIx <- is.na(dim1) | is.na(dim2)\n  df <- df[!naIx, ]\n\n  m <- reshape2::melt(df, id.vars = c(\"dim1\", \"dim2\"))\n  colnames(m) <- c(xlab, ylab, \"facet\", \"Expression\")\n\n  if (!is.null(decreasing)) {\n    m <- m[order(m$facet, m$Expression, decreasing = decreasing), ]\n  }\n\n  if (is.null(midpoint)) {\n    midpoint <- mean(m[, 4], trim = 0.1)\n  }\n\n  varLabel <- gsub(\"_\", \" \", varLabel)\n\n  if (isFALSE(is.null(headers))) {\n    names(headers) <- levels(m$facet)\n    headers <- ggplot2::as_labeller(headers)\n\n    g <- ggplot2::ggplot(m,\n                         ggplot2::aes_string(x = xlab, y = ylab)) +\n      ggplot2::geom_point(stat = \"identity\",\n                          size = size,\n                          ggplot2::aes_string(color = m$Expression)) +\n      ggplot2::theme_bw() +\n      ggplot2::scale_colour_gradient2(\n        limits = limits,\n        low = colorLow,\n        high = colorHigh,\n        mid = colorMid,\n        midpoint = midpoint,\n        name = varLabel\n      ) +\n      ggplot2::theme(\n        strip.background = ggplot2::element_blank(),\n        panel.grid.major = ggplot2::element_blank(),\n        panel.grid.minor = ggplot2::element_blank(),\n        panel.spacing = unit(0, \"lines\"),\n        panel.background = ggplot2::element_blank(),\n        axis.line = ggplot2::element_line(colour = \"black\")\n      )\n    if (isFALSE(is.null(ncol))) {\n      g <- g + ggplot2::facet_wrap(~ facet,\n                                  labeller = headers,\n                                  ncol = ncol)\n    } else {\n      g <- g + ggplot2::facet_wrap(~ facet, labeller = headers)\n    }\n  } else {\n    g <- ggplot2::ggplot(m,\n                         ggplot2::aes_string(x = xlab, y = ylab)) +\n      ggplot2::geom_point(stat = \"identity\",\n                          size = size,\n                          ggplot2::aes_string(color = m$Expression)) +\n      ggplot2::facet_wrap(~ facet) +\n      ggplot2::theme_bw() +\n      ggplot2::scale_colour_gradient2(\n        limits = limits,\n        low = colorLow,\n        high = colorHigh,\n        mid = colorMid,\n        midpoint = midpoint,\n        name = varLabel\n      ) +\n      ggplot2::theme(\n        strip.background = ggplot2::element_blank(),\n        panel.grid.major = ggplot2::element_blank(),\n        panel.grid.minor = ggplot2::element_blank(),\n        panel.spacing = unit(0, \"lines\"),\n        panel.background = ggplot2::element_blank(),\n        axis.line = ggplot2::element_line(colour = \"black\")\n      )\n    if (isFALSE(is.null(ncol))) {\n      g <- g + ggplot2::facet_wrap(~ facet, ncol = ncol)\n    } else {\n      g <- g + ggplot2::facet_wrap(~ facet)\n    }\n  }\n  return(g)\n}\n\n\n#' @title Plotting feature expression on a dimension reduction plot\n#' @description Create a scatterplot for each row of a normalized gene\n#'  expression matrix where x and y axis are from a data dimension\n#'  reduction tool. The cells are colored by expression of\n#'  the specified feature.\n#' @param x Numeric matrix or a \\linkS4class{SingleCellExperiment} object\n#'  with the matrix located in the assay slot under \\code{useAssay}. Rows\n#'  represent features and columns represent cells.\n#' @param features Character vector. Features in the rownames of counts to plot.\n#' @param reducedDimName The name of the dimension reduction slot in\n#'  \\code{reducedDimNames(x)} if \\code{x} is a\n#'  \\linkS4class{SingleCellExperiment} object. If \\code{NULL}, then both\n#'  \\code{dim1} and \\code{dim2} need to be set. Default \\code{NULL}.\n#' @param displayName Character. The column name of\n#'  \\code{rowData(x)} that specifies the display names for\n#'  the features. Default \\code{NULL}, which displays the row names. Only works\n#'  if \\code{x} is a \\linkS4class{SingleCellExperiment} object. Overwrites\n#'  \\code{headers}.\n#' @param dim1 Integer or numeric vector. If \\code{reducedDimName} is supplied,\n#'  then, this will be used as an index to determine which dimension will be\n#'  plotted on the x-axis. If \\code{reducedDimName} is not supplied, then this\n#'  should be a vector which will be plotted on the x-axis. Default \\code{1}.\n#' @param dim2 Integer or numeric vector. If \\code{reducedDimName} is supplied,\n#'  then, this will be used as an index to determine which dimension will be\n#'  plotted on the y-axis. If \\code{reducedDimName} is not supplied, then this\n#'  should be a vector which will be plotted on the y-axis. Default \\code{2}.\n#' @param headers Character vector. If \\code{NULL}, the corresponding\n#'  rownames are used as labels. Otherwise, these headers are used to label\n#'  the features. Only works if \\code{displayName} is \\code{NULL} and\n#'  \\code{exactMatch} is \\code{FALSE}.\n#' @param useAssay A string specifying which \\link{assay}\n#'  slot to use if \\code{x} is a\n#'  \\linkS4class{SingleCellExperiment} object. Default \"counts\".\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @param normalize Logical. Whether to normalize the columns of `counts`.\n#'  Default \\code{FALSE}.\n#' @param zscore Logical. Whether to scale each feature to have a mean 0\n#' and standard deviation of 1. Default \\code{TRUE}.\n#' @param exactMatch Logical. Whether an exact match or a partial match using\n#'  \\code{grep()} is used to look up the feature in the rownames of the counts\n#'   matrix. Default TRUE.\n#' @param trim Numeric vector. Vector of length two that specifies the lower\n#'  and upper bounds for the data. This threshold is applied after row scaling.\n#'  Set to NULL to disable. Default \\code{c(-1,1)}.\n#' @param limits Passed to \\link{scale_colour_gradient2}. The range\n#'  of color scale.\n#' @param size Numeric. Sets size of point on plot. Default 1.\n#' @param xlab Character vector. Label for the x-axis. If \\code{reducedDimName}\n#' is used, then this will be set to the column name of the first dimension of\n#' that object. Default \"Dimension_1\".\n#' @param ylab Character vector. Label for the y-axis. If \\code{reducedDimName}\n#' is used, then this will be set to the column name of the second dimension of\n#' that object. Default \"Dimension_2\".\n#' @param colorLow Character. A color available from `colors()`. The color\n#'  will be used to signify the lowest values on the scale.\n#' @param colorMid Character. A color available from `colors()`. The color\n#'  will be used to signify the midpoint on the scale.\n#' @param colorHigh Character. A color available from `colors()`. The color\n#'  will be used to signify the highest values on the scale.\n#' @param midpoint Numeric. The value indicating the midpoint of the\n#' diverging color scheme. If \\code{NULL}, defaults to the mean\n#' with 10 percent of values trimmed. Default \\code{0}.\n#' @param ncol Integer. Passed to \\link[ggplot2]{facet_wrap}. Specify the\n#'  number of columns for facet wrap.\n#' @param decreasing logical. Specifies the order of plotting the points.\n#'  If \\code{FALSE}, the points will be plotted in increasing order where\n#'  the points with largest values will be on top. \\code{TRUE} otherwise.\n#'  If \\code{NULL}, no sorting is performed. Points will be plotted in their\n#'  current order in \\code{x}. Default \\code{FALSE}.\n#' @return The plot as a ggplot object\n#' @export\nsetGeneric(\"plotDimReduceFeature\", function(x,\n                                            features,\n                                            reducedDimName = NULL,\n                                            displayName = NULL,\n                                            dim1 = NULL,\n                                            dim2 = NULL,\n                                            headers = NULL,\n                                            useAssay = \"counts\",\n                                            altExpName = \"featureSubset\",\n                                            normalize = FALSE,\n                                            zscore = TRUE,\n                                            exactMatch = TRUE,\n                                            trim = c(-2, 2),\n                                            limits = c(-2, 2),\n                                            size = 0.5,\n                                            xlab = NULL,\n                                            ylab = NULL,\n                                            colorLow = \"blue4\",\n                                            colorMid = \"grey90\",\n                                            colorHigh = \"firebrick1\",\n                                            midpoint = 0,\n                                            ncol = NULL,\n                                            decreasing = FALSE) {\n  standardGeneric(\"plotDimReduceFeature\")\n})\n\n\n#' @rdname plotDimReduceFeature\n#' @examples\n#' data(sceCeldaCG)\n#' sce <- celdaTsne(sceCeldaCG)\n#' plotDimReduceFeature(x = sce,\n#'   reducedDimName = \"celda_tSNE\",\n#'   normalize = TRUE,\n#'   features = c(\"Gene_98\", \"Gene_99\"),\n#'   exactMatch = TRUE)\n#' @export\nsetMethod(\"plotDimReduceFeature\",\n          signature(x = \"SingleCellExperiment\"),\n          function(x,\n                   features,\n                   reducedDimName,\n                   displayName = NULL,\n                   dim1 = 1,\n                   dim2 = 2,\n                   headers = NULL,\n                   useAssay = \"counts\",\n                   altExpName = \"featureSubset\",\n                   normalize = FALSE,\n                   zscore = TRUE,\n                   exactMatch = TRUE,\n                   trim = c(-2, 2),\n                   limits = c(-2, 2),\n                   size = 0.5,\n                   xlab = NULL,\n                   ylab = NULL,\n                   colorLow = \"blue4\",\n                   colorMid = \"grey90\",\n                   colorHigh = \"firebrick1\",\n                   midpoint = 0,\n                   ncol = NULL,\n                   decreasing = FALSE) {\n            altExp <- SingleCellExperiment::altExp(x, altExpName)\n            counts <- SummarizedExperiment::assay(x, i = useAssay)\n            reddim <- .processReducedDim(\n              x = altExp,\n              reducedDimName = reducedDimName,\n              dim1 = dim1,\n              dim2 = dim2,\n              xlab = xlab,\n              ylab = ylab\n            )\n\n            if (isFALSE(is.null(displayName))) {\n              featuresIx <- retrieveFeatureIndex(features,\n                                                 x,\n                                                 by = displayName,\n                                                 exactMatch = exactMatch)\n        headers <- SummarizedExperiment::rowData(x)[[displayName]][featuresIx]\n            } else {\n              featuresIx <- retrieveFeatureIndex(features,\n                                                 counts,\n                                                 by = \"rownames\",\n                                                 exactMatch = exactMatch)\n\n              if (isFALSE(is.null(headers))) {\n                if (length(headers) != length(features)) {\n                  stop(\"Headers \",\n                       headers,\n                       \" should be the same length as features \",\n                       features)\n                }\n\n                if (isFALSE(exactMatch)) {\n                  warning(\"exactMatch is FALSE. headers will not be used!\")\n                  headers <- NULL\n                }\n              }\n            }\n\n            g <- .plotDimReduceFeature(\n              dim1 = reddim$dim1,\n              dim2 = reddim$dim2,\n              counts = counts,\n              features = features,\n              headers = headers,\n              normalize = normalize,\n              zscore = zscore,\n              featuresIx = featuresIx,\n              trim = trim,\n              limits = limits,\n              size = size,\n              xlab = reddim$xlab,\n              ylab = reddim$ylab,\n              colorLow = colorLow,\n              colorMid = colorMid,\n              colorHigh = colorHigh,\n              midpoint = midpoint,\n              ncol = ncol,\n              decreasing = decreasing\n            )\n            return(g)\n          })\n\n\n#' @rdname plotDimReduceFeature\n#' @examples\n#' library(SingleCellExperiment)\n#' data(sceCeldaCG)\n#' sce <- celdaTsne(sceCeldaCG)\n#' plotDimReduceFeature(x = counts(sce),\n#'   dim1 = reducedDim(altExp(sce), \"celda_tSNE\")[, 1],\n#'   dim2 = reducedDim(altExp(sce), \"celda_tSNE\")[, 2],\n#'   normalize = TRUE,\n#'   features = c(\"Gene_98\", \"Gene_99\"),\n#'   exactMatch = TRUE)\n#' @export\nsetMethod(\"plotDimReduceFeature\",\n          signature(x = \"ANY\"),\n          function(x,\n                   features,\n                   dim1,\n                   dim2,\n                   headers = NULL,\n                   normalize = FALSE,\n                   zscore = TRUE,\n                   exactMatch = TRUE,\n                   trim = c(-2, 2),\n                   limits = c(-2, 2),\n                   size = 0.5,\n                   xlab = \"Dimension_1\",\n                   ylab = \"Dimension_2\",\n                   colorLow = \"blue4\",\n                   colorMid = \"grey90\",\n                   colorHigh = \"firebrick1\",\n                   midpoint = 0,\n                   ncol = NULL,\n                   decreasing = FALSE) {\n            x <- as.matrix(x)\n            if (isFALSE(is.null(headers))) {\n              if (length(headers) != length(features)) {\n                stop(\"Headers \",\n                     headers,\n                     \" should be the same length as features \",\n                     features)\n              }\n\n              if (isFALSE(exactMatch)) {\n                warning(\"exactMatch is FALSE. headers will not be used!\")\n                headers <- NULL\n              }\n            }\n\n            featuresIx <- retrieveFeatureIndex(features,\n                                               x,\n                                               by = \"rownames\",\n                                               exactMatch = exactMatch)\n\n            g <- .plotDimReduceFeature(\n              dim1 = dim1,\n              dim2 = dim2,\n              counts = x,\n              features = features,\n              headers = headers,\n              normalize = normalize,\n              zscore = zscore,\n              featuresIx = featuresIx,\n              trim = trim,\n              limits = limits,\n              size = size,\n              xlab = xlab,\n              ylab = ylab,\n              colorLow = colorLow,\n              colorMid = colorMid,\n              colorHigh = colorHigh,\n              midpoint = midpoint,\n              ncol = ncol,\n              decreasing = decreasing\n            )\n            return(g)\n          })\n\n\n.plotDimReduceFeature <- function(dim1,\n                                  dim2,\n                                  counts,\n                                  features,\n                                  headers,\n                                  normalize,\n                                  zscore,\n                                  featuresIx,\n                                  trim,\n                                  limits,\n                                  size,\n                                  xlab,\n                                  ylab,\n                                  colorLow,\n                                  colorMid,\n                                  colorHigh,\n                                  midpoint,\n                                  ncol,\n                                  decreasing) {\n  # Perform checks\n  if (is.null(features)) {\n    stop(\"at least one feature is required to create a plot\")\n  }\n\n  ## Normalize data if needed\n  if (isTRUE(normalize)) {\n    counts <- normalizeCounts(counts, transformationFun = sqrt)\n  }\n\n  # After normalization, features can be selected\n  featuresIx <- featuresIx[stats::complete.cases(featuresIx)]\n  counts <- as.matrix(counts[featuresIx, , drop = FALSE])\n\n  # Scale/zscore data if needed\n  varLabel <- \"Expression\"\n  if (isTRUE(zscore)) {\n    counts <- t(scale(t(counts)))\n    varLabel <- \"Scaled\\nExpression\"\n  }\n\n  if (!is.null(trim)) {\n    if (length(trim) != 2) {\n      stop(\"'trim' should be a 2 element vector\",\n           \"specifying the lower and upper boundaries\")\n    }\n    trim <- sort(trim)\n    counts[counts < trim[1]] <- trim[1]\n    counts[counts > trim[2]] <- trim[2]\n  }\n\n  .plotDimReduceGrid(\n    dim1 = dim1,\n    dim2 = dim2,\n    matrix = counts,\n    size = size,\n    xlab = xlab,\n    ylab = ylab,\n    limits = limits,\n    colorLow = colorLow,\n    colorMid = colorMid,\n    colorHigh = colorHigh,\n    varLabel = varLabel,\n    midpoint = midpoint,\n    ncol = ncol,\n    headers = headers,\n    decreasing = decreasing\n  )\n}\n\n\n#' @title Plotting Celda module probability on a\n#'  dimension reduction plot\n#' @description Create a scatterplot for each row of a normalized\n#'  gene expression matrix where x and y axis are from a data\n#'  dimension reduction tool.\n#'  The cells are colored by the module probability.\n#' @param x Numeric matrix or a \\linkS4class{SingleCellExperiment} object\n#'  with the matrix located in the assay slot under \\code{useAssay}. Rows\n#'  represent features and columns represent cells.\n#' @param reducedDimName The name of the dimension reduction slot in\n#'  \\code{reducedDimNames(x)} if \\code{x} is a\n#'  \\linkS4class{SingleCellExperiment} object. Ignored if both \\code{dim1} and\n#'  \\code{dim2} are set.\n#' @param dim1 Integer or numeric vector. If \\code{reducedDimName} is supplied,\n#'  then, this will be used as an index to determine which dimension will be\n#'  plotted on the x-axis. If \\code{reducedDimName} is not supplied, then this\n#'  should be a vector which will be plotted on the x-axis. Default \\code{1}.\n#' @param dim2 Integer or numeric vector. If \\code{reducedDimName} is supplied,\n#'  then, this will be used as an index to determine which dimension will be\n#'  plotted on the y-axis. If \\code{reducedDimName} is not supplied, then this\n#'  should be a vector which will be plotted on the y-axis. Default \\code{2}.\n#' @param useAssay A string specifying which \\link{assay}\n#'  slot to use if \\code{x} is a\n#'  \\linkS4class{SingleCellExperiment} object. Default \"counts\".\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @param celdaMod Celda object of class \"celda_G\" or \"celda_CG\". Used only if\n#'  \\code{x} is a matrix object.\n#' @param modules Character vector. Module(s) from celda model to be plotted.\n#'  e.g. c(\"1\", \"2\").\n#' @param size Numeric. Sets size of point on plot. Default 0.5.\n#' @param xlab Character vector. Label for the x-axis. Default \"Dimension_1\".\n#' @param ylab Character vector. Label for the y-axis. Default \"Dimension_2\".\n#' @param colorLow Character. A color available from `colors()`.\n#'  The color will be used to signify the lowest values on the scale.\n#' @param rescale Logical.\n#'  Whether rows of the matrix should be rescaled to [0, 1]. Default TRUE.\n#' @param limits Passed to \\link{scale_colour_gradient}. The range\n#'  of color scale.\n#' @param colorHigh Character. A color available from `colors()`.\n#'  The color will be used to signify the highest values on the scale.\n#' @param ncol Integer. Passed to \\link[ggplot2]{facet_wrap}. Specify the\n#'  number of columns for facet wrap.\n#' @param decreasing logical. Specifies the order of plotting the points.\n#'  If \\code{FALSE}, the points will be plotted in increasing order where\n#'  the points with largest values will be on top. \\code{TRUE} otherwise.\n#'  If \\code{NULL}, no sorting is performed. Points will be plotted in their\n#'  current order in \\code{x}. Default \\code{FALSE}.\n#' @return The plot as a ggplot object\n#' @export\nsetGeneric(\"plotDimReduceModule\",\n           function(x,\n                    reducedDimName,\n                    useAssay = \"counts\",\n                    altExpName = \"featureSubset\",\n                    celdaMod,\n                    modules = NULL,\n                    dim1 = NULL,\n                    dim2 = NULL,\n                    size = 0.5,\n                    xlab = NULL,\n                    ylab = NULL,\n                    rescale = TRUE,\n                    limits = c(0, 1),\n                    colorLow = \"grey90\",\n                    colorHigh = \"firebrick1\",\n                    ncol = NULL,\n                    decreasing = FALSE) {\n             standardGeneric(\"plotDimReduceModule\")\n           })\n\n\n#' @rdname plotDimReduceModule\n#' @examples\n#' data(sceCeldaCG)\n#' sce <- celdaTsne(sceCeldaCG)\n#' plotDimReduceModule(x = sce,\n#'   reducedDimName = \"celda_tSNE\",\n#'   modules = c(\"1\", \"2\"))\n#' @export\nsetMethod(\"plotDimReduceModule\",\n          signature(x = \"SingleCellExperiment\"),\n          function(x,\n                   reducedDimName,\n                   useAssay = \"counts\",\n                   altExpName = \"featureSubset\",\n                   modules = NULL,\n                   dim1 = 1,\n                   dim2 = 2,\n                   size = 0.5,\n                   xlab = NULL,\n                   ylab = NULL,\n                   rescale = TRUE,\n                   limits = c(0, 1),\n                   colorLow = \"grey90\",\n                   colorHigh = \"firebrick1\",\n                   ncol = NULL,\n                   decreasing = FALSE) {\n            # Get reduced dim object\n            altExp <- SingleCellExperiment::altExp(x, altExpName)\n            reddim <- .processReducedDim(\n              x = altExp,\n              reducedDimName = reducedDimName,\n              dim1 = dim1,\n              dim2 = dim2,\n              xlab = xlab,\n              ylab = ylab\n            )\n\n            factorized <- factorizeMatrix(x,\n                                          useAssay = useAssay,\n                                          altExpName = altExpName,\n                                          type = \"proportion\")\n\n            g <- .plotDimReduceModule(\n              dim1 = reddim$dim1,\n              dim2 = reddim$dim2,\n              factorized = factorized,\n              modules = modules,\n              rescale = rescale,\n              limits = limits,\n              size = size,\n              xlab = reddim$xlab,\n              ylab = reddim$ylab,\n              colorLow = colorLow,\n              colorHigh = colorHigh,\n              ncol = ncol,\n              decreasing = decreasing\n            )\n            return(g)\n          })\n\n\n#' @rdname plotDimReduceModule\n#' @examples\n#' library(SingleCellExperiment)\n#' data(sceCeldaCG, celdaCGMod)\n#' sce <- celdaTsne(sceCeldaCG)\n#' plotDimReduceModule(x = counts(sce),\n#'   dim1 = reducedDim(altExp(sce), \"celda_tSNE\")[, 1],\n#'   dim2 = reducedDim(altExp(sce), \"celda_tSNE\")[, 2],\n#'   celdaMod = celdaCGMod,\n#'   modules = c(\"1\", \"2\"))\n#' @export\nsetMethod(\"plotDimReduceModule\",\n          signature(x = \"ANY\"),\n          function(x,\n                   celdaMod,\n                   modules = NULL,\n                   dim1,\n                   dim2,\n                   size = 0.5,\n                   xlab = \"Dimension_1\",\n                   ylab = \"Dimension_2\",\n                   rescale = TRUE,\n                   limits = c(0, 1),\n                   colorLow = \"grey90\",\n                   colorHigh = \"firebrick1\",\n                   ncol = NULL,\n                   decreasing = FALSE) {\n            factorized <- factorizeMatrix(x = x, celdaMod = celdaMod)\n            reddim <- .processReducedDim(\n              x = x,\n              dim1 = dim1,\n              dim2 = dim2,\n              xlab = xlab,\n              ylab = ylab\n            )\n\n            g <- .plotDimReduceModule(\n              dim1 = reddim$dim1,\n              dim2 = reddim$dim2,\n              factorized = factorized,\n              modules = modules,\n              rescale = rescale,\n              limits = limits,\n              size = size,\n              xlab = reddim$xlab,\n              ylab = reddim$ylab,\n              colorLow = colorLow,\n              colorHigh = colorHigh,\n              ncol = ncol,\n              decreasing = decreasing\n            )\n            return(g)\n          })\n\n\n.plotDimReduceModule <- function(dim1,\n                                 dim2,\n                                 factorized,\n                                 modules,\n                                 rescale,\n                                 limits,\n                                 size,\n                                 xlab,\n                                 ylab,\n                                 colorLow,\n                                 colorHigh,\n                                 ncol,\n                                 decreasing) {\n  matrix <- factorized$proportions$cell\n\n  if (rescale == TRUE) {\n    for (x in seq(nrow(matrix))) {\n      matrix[x, ] <- matrix[x, ] - min(matrix[x, ])\n      matrix[x, ] <- matrix[x, ] / max(matrix[x, ])\n      varLabel <- \"Scaled Probability\"\n    }\n  } else {\n    varLabel <- \"Probability\"\n  }\n\n  rownames(matrix) <- gsub(\"L\", \"\", rownames(matrix))\n  if (!is.null(modules)) {\n    if (length(rownames(matrix)[rownames(matrix) %in% modules]) < 1) {\n      stop(\"All modules selected do not exist in the model.\")\n    }\n    matrix <-\n      matrix[which(rownames(matrix) %in% modules), , drop = FALSE]\n    matrix <-\n      matrix[match(rownames(matrix), modules), , drop = FALSE]\n  }\n\n  rownames(matrix) <- paste0(\"L\", rownames(matrix))\n\n  df <-\n    data.frame(dim1, dim2, t(as.data.frame(matrix)), check.names = FALSE)\n  naIx <- is.na(dim1) | is.na(dim2)\n  df <- df[!naIx, ]\n\n  m <- reshape2::melt(df, id.vars = c(\"dim1\", \"dim2\"))\n  colnames(m) <- c(xlab, ylab, \"facet\", \"Expression\")\n\n  if (!is.null(decreasing)) {\n    m <- m[order(m$facet, m$Expression, decreasing = decreasing), ]\n  }\n\n  g <-\n    ggplot2::ggplot(m, ggplot2::aes_string(x = xlab, y = ylab)) +\n    ggplot2::geom_point(stat = \"identity\",\n                        size = size,\n                        ggplot2::aes_string(color = m$Expression)) +\n    ggplot2::facet_wrap(~ facet) +\n    ggplot2::theme_bw() +\n    ggplot2::scale_colour_gradient(\n      limits = limits,\n      low = colorLow,\n      high = colorHigh,\n      name = varLabel\n    ) +\n    ggplot2::theme(\n      strip.background = ggplot2::element_blank(),\n      panel.grid.major = ggplot2::element_blank(),\n      panel.grid.minor = ggplot2::element_blank(),\n      panel.spacing = unit(0, \"lines\"),\n      panel.background = ggplot2::element_blank(),\n      axis.line = ggplot2::element_line(colour = \"black\")\n    )\n  if (isFALSE(is.null(ncol))) {\n    g <- g + ggplot2::facet_wrap(~ facet, ncol = ncol)\n  } else {\n    g <- g + ggplot2::facet_wrap(~ facet)\n  }\n\n  return(g)\n}\n\n\n# Labeling code adapted from Seurat (https://github.com/satijalab/seurat)\n#' @title Plotting the cell labels on a dimension reduction plot\n#' @description Create a scatterplot for each row of a normalized\n#'  gene expression matrix where x and y axis are from a\n#'  data dimension reduction tool.\n#'  The cells are colored by \"celda_cell_cluster\" column in\n#'   \\code{colData(altExp(x, altExpName))} if \\code{x} is a\n#'   \\linkS4class{SingleCellExperiment} object, or \\code{x} if \\code{x} is\n#'   a integer vector of cell cluster labels.\n#' @param x Integer vector of cell cluster labels or a\n#'  \\linkS4class{SingleCellExperiment} object\n#'  containing cluster labels for each cell in \\code{\"celda_cell_cluster\"}\n#'  column in \\code{colData(x)}.\n#' @param reducedDimName The name of the dimension reduction slot in\n#'  \\code{reducedDimNames(x)} if \\code{x} is a\n#'  \\linkS4class{SingleCellExperiment} object. Ignored if both \\code{dim1} and\n#'  \\code{dim2} are set.\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @param dim1 Integer or numeric vector. If \\code{reducedDimName} is supplied,\n#'  then, this will be used as an index to determine which dimension will be\n#'  plotted on the x-axis. If \\code{reducedDimName} is not supplied, then this\n#'  should be a vector which will be plotted on the x-axis. Default \\code{1}.\n#' @param dim2 Integer or numeric vector. If \\code{reducedDimName} is supplied,\n#'  then, this will be used as an index to determine which dimension will be\n#'  plotted on the y-axis. If \\code{reducedDimName} is not supplied, then this\n#'  should be a vector which will be plotted on the y-axis. Default \\code{2}.\n#' @param size Numeric. Sets size of point on plot. Default \\code{0.5}.\n#' @param xlab Character vector. Label for the x-axis. Default \\code{NULL}.\n#' @param ylab Character vector. Label for the y-axis. Default \\code{NULL}.\n#' @param specificClusters Numeric vector.\n#'  Only color cells in the specified clusters.\n#'  All other cells will be grey.\n#'  If NULL, all clusters will be colored. Default \\code{NULL}.\n#' @param labelClusters Logical. Whether the cluster labels are plotted.\n#'  Default FALSE.\n#' @param groupBy Character vector. Contains sample labels for each cell.\n#'  If NULL, all samples will be plotted together. Default NULL.\n#' @param labelSize Numeric. Sets size of label if labelClusters is TRUE.\n#'  Default 3.5.\n#' @return The plot as a ggplot object\n#' @importFrom ggrepel geom_text_repel\n#' @export\nsetGeneric(\"plotDimReduceCluster\",\n           function(x,\n                    reducedDimName,\n                    altExpName = \"featureSubset\",\n                    dim1 = NULL,\n                    dim2 = NULL,\n                    size = 0.5,\n                    xlab = NULL,\n                    ylab = NULL,\n                    specificClusters = NULL,\n                    labelClusters = FALSE,\n                    groupBy = NULL,\n                    labelSize = 3.5) {\n             standardGeneric(\"plotDimReduceCluster\")\n           })\n\n\n#' @rdname plotDimReduceCluster\n#' @examples\n#' data(sceCeldaCG)\n#' sce <- celdaTsne(sceCeldaCG)\n#' plotDimReduceCluster(x = sce,\n#'   reducedDimName = \"celda_tSNE\",\n#'   specificClusters = c(1, 2, 3))\n#' @export\nsetMethod(\"plotDimReduceCluster\",\n          signature(x = \"SingleCellExperiment\"),\n          function(x,\n                   reducedDimName,\n                   altExpName = \"featureSubset\",\n                   dim1 = 1,\n                   dim2 = 2,\n                   size = 0.5,\n                   xlab = NULL,\n                   ylab = NULL,\n                   specificClusters = NULL,\n                   labelClusters = FALSE,\n                   groupBy = NULL,\n                   labelSize = 3.5) {\n            altExp <- SingleCellExperiment::altExp(x, altExpName)\n\n            if (!(\"celda_cell_cluster\" %in%\n                  colnames(SummarizedExperiment::colData(altExp)))) {\n              stop(\"Must have column 'celda_cell_cluster' in\",\n                   \" colData(altExp(x, altExpName))!\")\n            }\n            cluster <-\n              SummarizedExperiment::colData(altExp)[[\"celda_cell_cluster\"]]\n\n            reddim <- .processReducedDim(\n              x = altExp,\n              reducedDimName = reducedDimName,\n              dim1 = dim1,\n              dim2 = dim2,\n              xlab = xlab,\n              ylab = ylab\n            )\n\n            g <- .plotDimReduceCluster(\n              dim1 = reddim$dim1,\n              dim2 = reddim$dim2,\n              cluster = cluster,\n              size = size,\n              xlab = reddim$xlab,\n              ylab = reddim$ylab,\n              specificClusters = specificClusters,\n              labelClusters = labelClusters,\n              groupBy = groupBy,\n              labelSize = labelSize\n            )\n            return(g)\n          })\n\n\n#' @rdname plotDimReduceCluster\n#' @examples\n#' library(SingleCellExperiment)\n#' data(sceCeldaCG, celdaCGMod)\n#' sce <- celdaTsne(sceCeldaCG)\n#' plotDimReduceCluster(x = celdaClusters(celdaCGMod)$z,\n#'   dim1 = reducedDim(altExp(sce), \"celda_tSNE\")[, 1],\n#'   dim2 = reducedDim(altExp(sce), \"celda_tSNE\")[, 2],\n#'   specificClusters = c(1, 2, 3))\n#' @export\nsetMethod(\"plotDimReduceCluster\",\n          signature(x = \"vector\"),\n          function(x,\n                   dim1,\n                   dim2,\n                   size = 0.5,\n                   xlab = \"Dimension_1\",\n                   ylab = \"Dimension_2\",\n                   specificClusters = NULL,\n                   labelClusters = FALSE,\n                   groupBy = NULL,\n                   labelSize = 3.5) {\n            reddim <- .processReducedDim(\n              x = x,\n              dim1 = dim1,\n              dim2 = dim2,\n              xlab = xlab,\n              ylab = ylab\n            )\n            g <- .plotDimReduceCluster(\n              dim1 = reddim$dim1,\n              dim2 = reddim$dim2,\n              cluster = x,\n              size = size,\n              xlab = reddim$xlab,\n              ylab = reddim$ylab,\n              specificClusters = specificClusters,\n              labelClusters = labelClusters,\n              groupBy = groupBy,\n              labelSize = labelSize\n            )\n            return(g)\n          })\n\n\n.plotDimReduceCluster <- function(dim1,\n                                  dim2,\n                                  cluster,\n                                  size,\n                                  xlab,\n                                  ylab,\n                                  specificClusters,\n                                  labelClusters,\n                                  groupBy,\n                                  labelSize) {\n  if (!is.null(groupBy)) {\n    df <- data.frame(dim1, dim2, cluster, groupBy)\n    colnames(df) <- c(xlab, ylab, \"Cluster\", \"Sample\")\n  } else {\n    df <- data.frame(dim1, dim2, cluster)\n    colnames(df) <- c(xlab, ylab, \"Cluster\")\n  }\n\n  naIx <- is.na(dim1) | is.na(dim2)\n  df <- df[!naIx, ]\n  df[3] <- as.factor(df[[3]])\n  clusterColors <- distinctColors(nlevels(as.factor(cluster)))\n\n  if (!is.null(specificClusters)) {\n    clusterColors[!levels(df[[3]]) %in% specificClusters] <- \"gray92\"\n  }\n\n  g <-\n    ggplot2::ggplot(df, ggplot2::aes_string(x = xlab, y = ylab)) +\n    ggplot2::geom_point(stat = \"identity\",\n                        size = size,\n                        ggplot2::aes_string(color = \"Cluster\")) +\n    ggplot2::theme(\n      panel.grid.major = ggplot2::element_blank(),\n      panel.grid.minor = ggplot2::element_blank(),\n      panel.background = ggplot2::element_blank(),\n      axis.line = ggplot2::element_line(color = \"black\")\n    ) +\n    ggplot2::scale_color_manual(values = clusterColors) +\n    ggplot2::guides(color =\n                      ggplot2::guide_legend(override.aes = list(size = 1)))\n\n  if (isTRUE(labelClusters)) {\n    # centroidList <- lapply(seq(length(unique(cluster))), function(x) {\n    centroidList <- lapply(unique(cluster), function(x) {\n      df.sub <- df[df$Cluster == x, ]\n      median1 <- stats::median(df.sub[, xlab])\n      median2 <- stats::median(df.sub[, ylab])\n      data.frame(median1 = median1,\n                 median2 = median2,\n                 x = x)\n    })\n    centroid <- do.call(rbind, centroidList)\n    centroid <- data.frame(\n      Dimension_1 = as.numeric(centroid[, 1]),\n      Dimension_2 = as.numeric(centroid[, 2]),\n      Cluster = centroid[, 3]\n    )\n\n    colnames(centroid)[seq(2)] <- c(xlab, ylab)\n    g <- g + ggplot2::geom_point(\n      data = centroid,\n      mapping = ggplot2::aes_string(x = xlab,\n                                    y = ylab),\n      size = 0,\n      alpha = 0\n    ) +\n      ggrepel::geom_text_repel(\n        data = centroid,\n        mapping = ggplot2::aes_string(label = \"Cluster\"),\n        size = labelSize,\n        max.overlaps = Inf\n      )\n  }\n  if (!is.null(x = groupBy)) {\n    g <- g + ggplot2::facet_wrap(facets =\n                                   ggplot2::vars(!!ggplot2::sym(x =\n                                                                  \"Sample\"))) +\n      ggplot2::theme(strip.background = ggplot2::element_blank())\n  }\n  return(g)\n}\n\n\n#' @title Feature Expression Violin Plot\n#' @description Outputs a violin plot for feature expression data.\n#' @param x Numeric matrix or a \\linkS4class{SingleCellExperiment} object\n#'  with the matrix located in the assay slot under \\code{useAssay}. Rows\n#'  represent features and columns represent cells.\n#' @param features Character vector. Uses these genes for plotting.\n#' @param displayName Character. The column name of\n#'  \\code{rowData(x)} that specifies the display names for\n#'  the features. Default \\code{NULL}, which displays the row names. Only works\n#'  if \\code{x} is a \\linkS4class{SingleCellExperiment} object.\n#' @param useAssay A string specifying which \\link{assay}\n#'  slot to use if \\code{x} is a\n#'  \\linkS4class{SingleCellExperiment} object. Default \"counts\".\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @param celdaMod Celda object of class \"celda_G\" or \"celda_CG\". Used only if\n#'  \\code{x} is a matrix object.\n#' @param exactMatch Logical. Whether an exact match or a partial match using\n#'  \\code{grep()} is used to look up the feature in the rownames of the counts\n#'   matrix. Default \\code{TRUE}.\n#' @param plotDots Boolean. If \\code{TRUE}, the\n#'  expression of features will be plotted as points in addition to the violin\n#'  curve. Default \\code{TRUE}.\n#' @param dotSize Numeric. Size of points if \\code{plotDots = TRUE}.\n#' Default \\code{0.1}.\n#' @return Violin plot for each feature, grouped by celda cluster\n#' @export\nsetGeneric(\"plotCeldaViolin\",\n           function(x,\n                    celdaMod,\n                    features,\n                    displayName = NULL,\n                    useAssay = \"counts\",\n                    altExpName = \"featureSubset\",\n                    exactMatch = TRUE,\n                    plotDots = TRUE,\n                    dotSize = 0.1) {\n             standardGeneric(\"plotCeldaViolin\")\n           })\n\n\n#' @rdname plotCeldaViolin\n#' @examples\n#' data(sceCeldaCG)\n#' plotCeldaViolin(x = sceCeldaCG, features = \"Gene_1\")\n#' @export\nsetMethod(\"plotCeldaViolin\",\n          signature(x = \"SingleCellExperiment\"),\n          function(x,\n                   features,\n                   displayName = NULL,\n                   useAssay = \"counts\",\n                   altExpName = \"featureSubset\",\n                   exactMatch = TRUE,\n                   plotDots = TRUE,\n                   dotSize = 0.1) {\n            counts <- SummarizedExperiment::assay(x, i = useAssay)\n            cluster <-\n              as.integer(celdaClusters(x, altExpName = altExpName))\n\n            if (is.null(displayName)) {\n              featuresIx <- retrieveFeatureIndex(features,\n                                                 counts,\n                                                 by = \"rownames\",\n                                                 exactMatch = exactMatch)\n              rnames <- rownames(x)[featuresIx]\n            } else {\n              featuresIx <- retrieveFeatureIndex(features,\n                                                 x,\n                                                 by = displayName,\n                                                 exactMatch = exactMatch)\n              rnames <-\n                SummarizedExperiment::rowData(x)[featuresIx, displayName]\n            }\n\n            g <- .plotCeldaViolin(\n              counts = counts,\n              cluster = cluster,\n              features = features,\n              featuresIx = featuresIx,\n              rnames = rnames,\n              exactMatch = exactMatch,\n              plotDots = plotDots,\n              dotSize = dotSize\n            )\n            return(g)\n          })\n\n\n#' @rdname plotCeldaViolin\n#' @examples\n#' data(celdaCGSim, celdaCGMod)\n#' plotCeldaViolin(x = celdaCGSim$counts,\n#'    celdaMod = celdaCGMod,\n#'    features = \"Gene_1\")\n#' @export\nsetMethod(\"plotCeldaViolin\",\n          signature(x = \"ANY\"),\n          function(x,\n                   celdaMod,\n                   features,\n                   exactMatch = TRUE,\n                   plotDots = TRUE,\n                   dotSize = 0.1) {\n            x <- as.matrix(x)\n            cluster <- celdaClusters(celdaMod)$z\n\n            featuresIx <- retrieveFeatureIndex(features,\n                                               x,\n                                               by = \"rownames\",\n                                               exactMatch = exactMatch)\n            rnames <- rownames(x)[featuresIx]\n\n            g <- .plotCeldaViolin(\n              counts = x,\n              cluster = cluster,\n              features = features,\n              featuresIx = featuresIx,\n              rnames = rnames,\n              exactMatch = exactMatch,\n              plotDots = plotDots,\n              dotSize = dotSize\n            )\n            return(g)\n          })\n\n\n.plotCeldaViolin <- function(counts,\n                             cluster,\n                             features,\n                             featuresIx,\n                             rnames,\n                             exactMatch = TRUE,\n                             plotDots = TRUE,\n                             dotSize = 0.1) {\n  dataFeature <- as.matrix(counts[featuresIx, , drop = FALSE])\n  rownames(dataFeature) <- rnames\n  dataFeature <- as.data.frame(t(dataFeature))\n  df <- cbind(cluster, dataFeature)\n  df$cluster <- as.factor(df$cluster)\n  m <- reshape2::melt(df, id.vars = c(\"cluster\"))\n  colnames(m) <- c(\"Cluster\", \"Feature\", \"Expression\")\n  colorPal <- distinctColors(length(unique(cluster)))\n\n  p <- ggplot2::ggplot(m,\n                       ggplot2::aes_string(x = \"Cluster\",\n                                           y = \"Expression\",\n                                           fill = \"Cluster\")) +\n    ggplot2::facet_wrap(~ Feature) +\n    ggplot2::geom_violin(trim = TRUE, scale = \"width\") +\n    ggplot2::scale_fill_manual(values = colorPal) +\n    ggplot2::theme(\n      strip.background = ggplot2::element_blank(),\n      panel.grid.major = ggplot2::element_blank(),\n      panel.grid.minor = ggplot2::element_blank(),\n      panel.spacing = grid::unit(0, \"lines\"),\n      panel.background = ggplot2::element_blank(),\n      axis.line = ggplot2::element_line(colour = \"black\")\n    )\n\n  if (isTRUE(plotDots)) {\n    p <- p + ggplot2::geom_jitter(height = 0, size = dotSize)\n  }\n\n  return(p)\n}\n\n\n\n\n.processReducedDim <- function(x,\n                               reducedDimName = NULL,\n                               dim1 = NULL,\n                               dim2 = NULL,\n                               xlab = NULL,\n                               ylab = NULL) {\n  if (inherits(x, \"SingleCellExperiment\") &\n      !is.null(reducedDimName)) {\n    reddim <- SingleCellExperiment::reducedDim(x, reducedDimName)\n\n    # Get dims to retrieve from redDim object\n    if (is.null(dim1))\n      dim1 <- 1\n    if (is.null(dim2))\n      dim2 <- 2\n\n    # Get labels\n    xlab <- colnames(reddim)[dim1]\n    ylab <- colnames(reddim)[dim2]\n\n    # Set up return object\n    res <-\n      list(\n        dim1 = reddim[, dim1],\n        dim2 = reddim[, dim2],\n        xlab = xlab,\n        ylab = ylab\n      )\n\n  } else if (!is.null(dim1) & !is.null(dim2)) {\n    if (inherits(x, c(\"matrix\", \"Matrix\"))) {\n      if (length(dim1) != ncol(x)) {\n        stop(\"'dim1' needs to be the same length as 'x'.\")\n      }\n      if (length(dim2) != ncol(x)) {\n        stop(\"'dim2' needs to be the same length as 'x'.\")\n      }\n    } else {\n      if (length(dim1) != length(x)) {\n        stop(\"'dim1' needs to be the same length as 'x'.\")\n      }\n      if (length(dim2) != length(x)) {\n        stop(\"'dim2' needs to be the same length as 'x'.\")\n      }\n    }\n    if (is.null(xlab))\n      xlab <- \"Dimension 1\"\n    if (is.null(ylab))\n      ylab <- \"Dimension 2\"\n\n    res <- list(\n      dim1 = dim1,\n      dim2 = dim2,\n      xlab = xlab,\n      ylab = ylab\n    )\n\n  } else {\n    stop(\n    \"'x' can be supplied as a SingleCelExperiment along with \",\n    \"'reducedDimName' and 'dim1' and 'dim2' can be used to specify which \",\n    \"dimensions to plot on the x- and y-axis, respectively. Alternatively, \",\n    \"'x', 'dim1' and 'dim2' can be supplied as vectors of the same length \",\n    \"where 'dim1' is the x-axis, 'dim2', is the y-axis, and 'x' will be used \",\n    \"to color the points.\"\n    )\n  }\n\n  return(res)\n}\n"
  },
  {
    "path": "R/recursiveSplit.R",
    "content": ".singleSplitZ <- function(counts,\n                          z,\n                          s,\n                          K,\n                          minCell = 3,\n                          alpha = 1,\n                          beta = 1) {\n  zTa <- tabulate(z, K)\n  zToSplit <- which(zTa > minCell)\n  bestZ <- z\n  bestLl <- -Inf\n  for (i in zToSplit) {\n    clustLabel <- .celda_C(\n      counts[, z == i, drop = FALSE],\n      K = 2,\n      zInitialize = \"random\",\n      splitOnIter = -1,\n      splitOnLast = FALSE,\n      verbose = FALSE\n    )\n\n    if (length(unique(celdaClusters(clustLabel)$z)) == 2) {\n      ix <- z == i\n      newZ <- z\n      newZ[ix] <- ifelse(celdaClusters(clustLabel)$z == 2, i, K)\n      ll <- .logLikelihoodcelda_C(counts, s, newZ, K, alpha, beta)\n\n      if (ll > bestLl) {\n        bestZ <- newZ\n        bestLl <- ll\n      }\n    }\n  }\n  return(list(ll = bestLl, z = bestZ))\n}\n\n\n.singleSplitY <- function(counts,\n                          y,\n                          L,\n                          minFeature = 3,\n                          beta = 1,\n                          delta = 1,\n                          gamma = 1) {\n  yTa <- tabulate(y, L)\n  yToSplit <- which(yTa > minFeature)\n\n  bestY <- y\n  bestLl <- -Inf\n  # previousY <- y\n  for (i in yToSplit) {\n    clustLabel <- .celda_G(counts[y == i, , drop = FALSE],\n      L = 2,\n      yInitialize = \"random\",\n      splitOnIter = -1,\n      splitOnLast = FALSE,\n      nchains = 1,\n      verbose = FALSE\n    )\n\n    if (length(unique(celdaClusters(clustLabel)$y)) == 2) {\n      ix <- y == i\n      newY <- y\n      newY[ix] <- ifelse(celdaClusters(clustLabel)$y == 2, i, L)\n      ll <- .logLikelihoodcelda_G(counts, newY, L, beta, delta, gamma)\n\n      if (ll > bestLl) {\n        bestY <- newY\n        bestLl <- ll\n      }\n    }\n  }\n  return(list(ll = bestLl, y = bestY))\n}\n\n\n#' @title Recursive cell splitting\n#' @description Uses the \\link{celda_C} model to cluster cells into\n#'  population for range of possible K's. The cell population labels of the\n#'  previous \"K-1\" model are used as the initial values in the current model\n#'  with K cell populations. The best split of an existing cell population is\n#'  found to create the K-th cluster. This procedure is much faster than\n#'  randomly initializing each model with a different K. If module labels for\n#'  each feature are given in 'yInit', the \\link{celda_CG} model will be used to\n#'  split cell populations based on those modules instead of individual\n#'  features. Module labels will also be updated during sampling and thus\n#'  may end up slightly different than \\code{yInit}.\n#' @param x A numeric \\link{matrix} of counts or a\n#'  \\linkS4class{SingleCellExperiment}\n#'  with the matrix located in the assay slot under \\code{useAssay}.\n#'  Rows represent features and columns represent cells.\n#' @param useAssay A string specifying the name of the\n#'  \\link{assay}\n#'  slot to use. Default \"counts\".\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @param sampleLabel Vector or factor. Denotes the sample label for each cell\n#'  (column) in the count matrix.\n#' @param initialK Integer. Initial number of cell populations to try.\n#' Default \\code{5}.\n#' @param maxK Integer. Maximum number of cell populations to try.\n#' Default \\code{25}.\n#' @param tempL Integer. Number of temporary modules to identify and use in cell\n#'  splitting. Only used if \\code{yInit = NULL}. Collapsing features to a\n#'  relatively smaller number of modules will increase the speed of clustering\n#'  and tend to produce better cell populations. This number should be larger\n#'  than the number of true modules expected in the dataset. Default\n#'  \\code{NULL.}\n#' @param yInit Integer vector. Module labels for features. Cells will be\n#'  clustered using the \\link{celda_CG} model based on the modules specified in\n#'  \\code{yInit} rather than the counts of individual features. While the\n#'  features will be initialized to the module labels in \\code{yInit}, the\n#'  labels will be allowed to move within each new model with a different K.\n#' @param alpha Numeric. Concentration parameter for Theta. Adds a pseudocount\n#'  to each cell population in each sample. Default \\code{1}.\n#' @param beta Numeric. Concentration parameter for Phi. Adds a pseudocount to\n#'  each feature in each cell (if \\code{yInit} is NULL) or to each module in\n#'  each cell population (if \\code{yInit} is set). Default \\code{1}.\n#' @param delta Numeric. Concentration parameter for Psi. Adds a pseudocount\n#'  to each feature in each module. Only used if \\code{yInit} is set. Default 1.\n#' @param gamma Numeric. Concentration parameter for Eta. Adds a pseudocount\n#'  to the number of features in each module. Only used if \\code{yInit} is set.\n#'  Default 1.\n#' @param minCell Integer. Only attempt to split cell populations with at\n#'  least this many cells.\n#' @param reorder Logical. Whether to reorder cell populations using\n#'  hierarchical clustering after each model has been created. If FALSE, cell\n#'  populations numbers will correspond to the split which created the cell\n#'  populations (i.e. 'K15' was created at split 15, 'K16' was created at split\n#'  16, etc.). Default TRUE.\n#' @param seed Integer. Passed to \\link[withr]{with_seed}. For reproducibility,\n#'  a default value of 12345 is used. If NULL, no calls to\n#'  \\link[withr]{with_seed} are made.\n#' @param perplexity Logical. Whether to calculate perplexity for each model.\n#'  If FALSE, then perplexity can be calculated later with\n#'  \\link{resamplePerplexity}. Default TRUE.\n#' @param doResampling Boolean. If \\code{TRUE}, then each cell in the counts\n#' matrix will be resampled according to a multinomial distribution to introduce\n#' noise before calculating perplexity. Default \\code{FALSE}.\n#' @param numResample Integer. The number of times to resample the counts matrix\n#' for evaluating perplexity if \\code{doResampling} is set to \\code{TRUE}.\n#' Default \\code{5}.\n#' @param verbose Logical. Whether to print log messages. Default TRUE.\n#' @param logfile Character. Messages will be redirected to a file named\n#'  \"logfile\". If NULL, messages will be printed to stdout.  Default NULL.\n#' @return A \\linkS4class{SingleCellExperiment} object. Function\n#'  parameter settings and celda model results are stored in the\n#'  \\link{metadata} \\code{\"celda_grid_search\"} slot. The models in\n#'  the list will be of class \\code{celda_C} if \\code{yInit = NULL} or\n#'  \\code{celda_CG} if \\code{zInit} is set.\n#' @seealso \\link{recursiveSplitModule} for recursive splitting of feature\n#'  modules.\n#' @export\nsetGeneric(\"recursiveSplitCell\",\n    function(x,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        sampleLabel = NULL,\n        initialK = 5,\n        maxK = 25,\n        tempL = NULL,\n        yInit = NULL,\n        alpha = 1,\n        beta = 1,\n        delta = 1,\n        gamma = 1,\n        minCell = 3,\n        reorder = TRUE,\n        seed = 12345,\n        perplexity = TRUE,\n        doResampling = FALSE,\n        numResample = 5,\n        logfile = NULL,\n        verbose = TRUE) {\n    standardGeneric(\"recursiveSplitCell\")})\n\n\n#' @rdname recursiveSplitCell\n#' @examples\n#' data(sceCeldaCG)\n#' ## Create models that range from K = 3 to K = 7 by recursively splitting\n#' ## cell populations into two to produce \\link{celda_C} cell clustering models\n#' sce <- recursiveSplitCell(sceCeldaCG, initialK = 3, maxK = 7)\n#'\n#' ## Alternatively, first identify features modules using\n#' ## \\link{recursiveSplitModule}\n#' moduleSplit <- recursiveSplitModule(sceCeldaCG, initialL = 3, maxL = 15)\n#' plotGridSearchPerplexity(moduleSplit)\n#' moduleSplitSelect <- subsetCeldaList(moduleSplit, list(L = 10))\n#'\n#' ## Then use module labels for initialization in \\link{recursiveSplitCell} to\n#' ## produce \\link{celda_CG} bi-clustering models\n#' cellSplit <- recursiveSplitCell(sceCeldaCG,\n#'   initialK = 3, maxK = 7, yInit = celdaModules(moduleSplitSelect))\n#' plotGridSearchPerplexity(cellSplit)\n#' sce <- subsetCeldaList(cellSplit, list(K = 5, L = 10))\n#' @export\nsetMethod(\"recursiveSplitCell\",\n    signature(x = \"SingleCellExperiment\"),\n    function(x,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        sampleLabel = NULL,\n        initialK = 5,\n        maxK = 25,\n        tempL = NULL,\n        yInit = NULL,\n        alpha = 1,\n        beta = 1,\n        delta = 1,\n        gamma = 1,\n        minCell = 3,\n        reorder = TRUE,\n        seed = 12345,\n        perplexity = TRUE,\n        doResampling = FALSE,\n        numResample = 5,\n        logfile = NULL,\n        verbose = TRUE) {\n\n        xClass <- \"SingleCellExperiment\"\n\n        if (!altExpName %in% SingleCellExperiment::altExpNames(x)) {\n            stop(altExpName, \" not in 'altExpNames(x)'. Run \",\n                \"selectFeatures(x) first!\")\n        }\n\n        altExp <- SingleCellExperiment::altExp(x, altExpName)\n\n        if (!useAssay %in% SummarizedExperiment::assayNames(altExp)) {\n            stop(useAssay, \" not in assayNames(altExp(x, altExpName))\")\n        }\n\n        counts <- SummarizedExperiment::assay(altExp, i = useAssay)\n\n        if (!is.null(yInit)) {\n            model <- \"celda_CG\"\n        } else {\n            model <- \"celda_C\"\n        }\n\n        celdaList <- .recursiveSplitCellWithSeed(counts = counts,\n            sampleLabel = sampleLabel,\n            initialK = initialK,\n            maxK = maxK,\n            tempL = tempL,\n            yInit = yInit,\n            alpha = alpha,\n            beta = beta,\n            delta = delta,\n            gamma = gamma,\n            minCell = minCell,\n            reorder = reorder,\n            seed = seed,\n            perplexity = perplexity,\n            doResampling = doResampling,\n            numResample = numResample,\n            logfile = logfile,\n            verbose = verbose)\n\n        altExp <- .createSCERecursiveSplitCell(celdaList = celdaList,\n            sce = altExp,\n            xClass = xClass,\n            useAssay = useAssay,\n            model = model,\n            sampleLabel = sampleLabel,\n            initialK = initialK,\n            maxK = maxK,\n            tempL = tempL,\n            yInit = yInit,\n            alpha = alpha,\n            beta = beta,\n            delta = delta,\n            gamma = gamma,\n            minCell = minCell,\n            reorder = reorder,\n            seed = seed,\n            perplexity = perplexity,\n            logfile = logfile,\n            verbose = verbose)\n        SingleCellExperiment::altExp(x, altExpName) <- altExp\n        return(x)\n    }\n)\n\n\n#' @rdname recursiveSplitCell\n#' @examples\n#' data(celdaCGSim, celdaCSim)\n#' ## Create models that range from K = 3 to K = 7 by recursively splitting\n#' ## cell populations into two to produce \\link{celda_C} cell clustering models\n#' sce <- recursiveSplitCell(celdaCSim$counts, initialK = 3, maxK = 7)\n#'\n#' ## Alternatively, first identify features modules using\n#' ## \\link{recursiveSplitModule}\n#' moduleSplit <- recursiveSplitModule(celdaCGSim$counts,\n#'   initialL = 3, maxL = 15)\n#' plotGridSearchPerplexity(moduleSplit)\n#' moduleSplitSelect <- subsetCeldaList(moduleSplit, list(L = 10))\n#'\n#' ## Then use module labels for initialization in \\link{recursiveSplitCell} to\n#' ## produce \\link{celda_CG} bi-clustering models\n#' cellSplit <- recursiveSplitCell(celdaCGSim$counts,\n#'   initialK = 3, maxK = 7, yInit = celdaModules(moduleSplitSelect))\n#' plotGridSearchPerplexity(cellSplit)\n#' sce <- subsetCeldaList(cellSplit, list(K = 5, L = 10))\n#' @export\nsetMethod(\"recursiveSplitCell\",\n    signature(x = \"matrix\"),\n    function(x,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        sampleLabel = NULL,\n        initialK = 5,\n        maxK = 25,\n        tempL = NULL,\n        yInit = NULL,\n        alpha = 1,\n        beta = 1,\n        delta = 1,\n        gamma = 1,\n        minCell = 3,\n        reorder = TRUE,\n        seed = 12345,\n        perplexity = TRUE,\n        doResampling = FALSE,\n        numResample = 5,\n        logfile = NULL,\n        verbose = TRUE) {\n\n        ls <- list()\n        ls[[useAssay]] <- x\n        sce <- SingleCellExperiment::SingleCellExperiment(assays = ls)\n        SingleCellExperiment::altExp(sce, altExpName) <- sce\n        xClass <- \"matrix\"\n\n        if (!is.null(yInit)) {\n            model <- \"celda_CG\"\n        } else {\n            model <- \"celda_C\"\n        }\n\n        celdaList <- .recursiveSplitCellWithSeed(counts = x,\n            sampleLabel = sampleLabel,\n            initialK = initialK,\n            maxK = maxK,\n            tempL = tempL,\n            yInit = yInit,\n            alpha = alpha,\n            beta = beta,\n            delta = delta,\n            gamma = gamma,\n            minCell = minCell,\n            reorder = reorder,\n            seed = seed,\n            perplexity = perplexity,\n            doResampling = doResampling,\n            numResample = numResample,\n            logfile = logfile,\n            verbose = verbose)\n\n        altExp <- .createSCERecursiveSplitCell(celdaList = celdaList,\n            sce = SingleCellExperiment::altExp(sce, altExpName),\n            xClass = xClass,\n            useAssay = useAssay,\n            model = model,\n            sampleLabel = sampleLabel,\n            initialK = initialK,\n            maxK = maxK,\n            tempL = tempL,\n            yInit = yInit,\n            alpha = alpha,\n            beta = beta,\n            delta = delta,\n            gamma = gamma,\n            minCell = minCell,\n            reorder = reorder,\n            seed = seed,\n            perplexity = perplexity,\n            logfile = logfile,\n            verbose = verbose)\n        SingleCellExperiment::altExp(sce, altExpName) <- altExp\n        return(sce)\n    }\n)\n\n\n.recursiveSplitCellWithSeed <- function(counts,\n    sampleLabel,\n    initialK,\n    maxK,\n    tempL,\n    yInit,\n    alpha,\n    beta,\n    delta,\n    gamma,\n    minCell,\n    reorder,\n    seed,\n    perplexity,\n    doResampling,\n    numResample,\n    logfile,\n    verbose) {\n\n    if (is.null(seed)) {\n        celdaList <- .recursiveSplitCell(counts = counts,\n            sampleLabel = sampleLabel,\n            initialK = initialK,\n            maxK = maxK,\n            tempL = tempL,\n            yInit = yInit,\n            alpha = alpha,\n            beta = beta,\n            delta = delta,\n            gamma = gamma,\n            minCell = minCell,\n            reorder = reorder,\n            perplexity = perplexity,\n            doResampling = doResampling,\n            numResample = numResample,\n            logfile = logfile,\n            verbose = verbose)\n    } else {\n        with_seed(\n            seed,\n            celdaList <- .recursiveSplitCell(counts = counts,\n                sampleLabel = sampleLabel,\n                initialK = initialK,\n                maxK = maxK,\n                tempL = tempL,\n                yInit = yInit,\n                alpha = alpha,\n                beta = beta,\n                delta = delta,\n                gamma = gamma,\n                minCell = minCell,\n                reorder = reorder,\n                perplexity = perplexity,\n                doResampling = doResampling,\n                numResample = numResample,\n                logfile = logfile,\n                verbose = verbose)\n        )\n    }\n\n    return(celdaList)\n}\n\n\n.recursiveSplitCell <- function(counts,\n                               sampleLabel,\n                               initialK,\n                               maxK,\n                               tempL,\n                               yInit,\n                               alpha,\n                               beta,\n                               delta,\n                               gamma,\n                               minCell,\n                               reorder,\n                               perplexity,\n                               doResampling,\n                               numResample,\n                               logfile,\n                               verbose) {\n\n  .logMessages(paste(rep(\"=\", 50), collapse = \"\"),\n    logfile = logfile,\n    append = FALSE,\n    verbose = verbose\n  )\n  .logMessages(\"Starting recursive cell population splitting.\",\n    logfile = logfile,\n    append = TRUE,\n    verbose = verbose\n  )\n  .logMessages(paste(rep(\"=\", 50), collapse = \"\"),\n    logfile = logfile,\n    append = TRUE,\n    verbose = verbose\n  )\n\n  .validateCounts(counts)\n\n  startTime <- Sys.time()\n  counts <- .processCounts(counts)\n  countChecksum <- .createCountChecksum(counts)\n\n  sampleLabel <- .processSampleLabels(sampleLabel, numCells = ncol(counts))\n  s <- as.integer(sampleLabel)\n  names <- list(\n    row = rownames(counts),\n    column = colnames(counts),\n    sample = levels(sampleLabel)\n  )\n\n  if (!is.null(yInit)) {\n    # Create collapsed module matrix\n    L <- length(unique(yInit))\n    .logMessages(date(),\n      \".. Collapsing to\",\n      L,\n      \"modules\",\n      append = TRUE,\n      verbose = verbose,\n      logfile = logfile\n    )\n    overallY <- .initializeCluster(L, nrow(counts), initial = yInit)\n    countsY <- .rowSumByGroup(counts, overallY, L)\n\n    # Create initial model with initialK and predifined y labels\n    .logMessages(date(),\n      \".. Initializing with\",\n      initialK,\n      \"populations\",\n      append = TRUE,\n      verbose = verbose,\n      logfile = logfile)\n    modelInitial <- .celda_CG(counts,\n      sampleLabel = sampleLabel,\n      K = as.integer(initialK),\n      L = as.integer(L),\n      zInitialize = \"split\",\n      yInitialize = \"predefined\",\n      nchains = 1,\n      yInit = overallY,\n      alpha = alpha,\n      beta = beta,\n      gamma = gamma,\n      delta = delta,\n      verbose = FALSE,\n      reorder = reorder)\n    currentK <- length(unique(celdaClusters(modelInitial)$z)) + 1\n    overallZ <- as.integer(celdaClusters(modelInitial)$z)\n    resList <- list(modelInitial)\n    while (currentK <= maxK) {\n      # previousY <- overallY\n      tempSplit <- .singleSplitZ(countsY,\n        overallZ,\n        s,\n        currentK,\n        minCell = 3,\n        alpha = alpha,\n        beta = beta\n      )\n      tempModel <- .celda_CG(counts,\n        sampleLabel = sampleLabel,\n        K = as.integer(currentK),\n        L = as.integer(L),\n        yInit = overallY,\n        zInit = tempSplit$z,\n        nchains = 1,\n        zInitialize = \"predefined\",\n        yInitialize = \"predefined\",\n        splitOnLast = FALSE,\n        stopIter = 5,\n        alpha = alpha,\n        beta = beta,\n        gamma = gamma,\n        delta = delta,\n        verbose = FALSE,\n        reorder = reorder\n      )\n\n      # Calculate new decomposed counts matrix with new module labels\n      # overallY = clusters(tempModel)$y\n      # p = .cGReDecomposeCounts(counts, overallY, previousY, countsY,\n      # nByG, L = as.integer(L))\n      # countsY = p$nTSByC\n\n      # If the number of clusters is still \"currentK\", then keep the\n      # reordering, otherwise keep the previous configuration\n      if (length(unique(celdaClusters(tempModel)$z)) == currentK) {\n        overallZ <- as.integer(celdaClusters(tempModel)$z)\n      } else {\n        overallZ <- tempSplit$z\n        ll <- .logLikelihoodcelda_CG(\n          counts,\n          s,\n          overallZ,\n          as.integer(celdaClusters(tempModel)$y),\n          currentK,\n          L,\n          alpha,\n          beta,\n          delta,\n          gamma\n        )\n        tempModel <- methods::new(\"celda_CG\",\n          clusters = list(z = overallZ, y = as.integer(celdaClusters(tempModel)$y)),\n          params = list(\n            K = as.integer(currentK),\n            L = as.integer(L),\n            alpha = alpha,\n            beta = beta,\n            delta = delta,\n            gamma = gamma,\n            countChecksum = countChecksum\n          ),\n          finalLogLik = ll,\n          sampleLabel = sampleLabel,\n          names = names\n        )\n      }\n\n      resList <- c(resList, list(tempModel))\n      .logMessages(date(),\n        \".. Current cell population\",\n        currentK,\n        \"| logLik:\",\n        bestLogLikelihood(tempModel),\n        append = TRUE,\n        verbose = verbose,\n        logfile = logfile\n      )\n      currentK <- length(unique(overallZ)) + 1\n    }\n\n    runK <- vapply(resList, function(mod) {\n      params(mod)$K\n    }, integer(1))\n    runL <- vapply(resList, function(mod) {\n      params(mod)$L\n    }, integer(1))\n    runParams <- data.frame(\n      index = seq.int(1, length(resList)),\n      L = as.integer(runL),\n      K = as.integer(runK),\n      stringsAsFactors = FALSE\n    )\n  } else if (!is.null(tempL)) {\n    L <- tempL\n    .logMessages(date(),\n      \".. Collapsing to\",\n      L,\n      \"temporary modules\",\n      append = TRUE,\n      verbose = verbose,\n      logfile = logfile\n    )\n    tempY <- .initializeSplitY(counts,\n      L = as.integer(L),\n      tempK = max(100, maxK),\n      minFeature = 3\n    )\n    tempY <- as.integer(as.factor(tempY))\n    L <- length(unique(tempY)) # Recalculate in case some modules are empty\n    countsY <- .rowSumByGroup(counts, tempY, L)\n\n    # Create initial model with initialK\n    .logMessages(date(),\n      \".. Initializing with\",\n      initialK,\n      \"populations\",\n      append = TRUE,\n      verbose = verbose,\n      logfile = logfile\n    )\n    modelInitial <- .celda_C(countsY,\n      sampleLabel = sampleLabel,\n      K = as.integer(initialK),\n      zInitialize = \"split\",\n      nchains = 1,\n      alpha = alpha,\n      beta = beta,\n      verbose = FALSE,\n      reorder = reorder\n    )\n    currentK <- length(unique(celdaClusters(modelInitial)$z)) + 1\n    overallZ <- as.integer(celdaClusters(modelInitial)$z)\n    ll <- .logLikelihoodcelda_C(\n      counts, s, overallZ, currentK,\n      alpha, beta\n    )\n    modelInitial@params$countChecksum <- countChecksum\n    modelInitial@completeLogLik <- ll\n    modelInitial@finalLogLik <- ll\n\n    resList <- list(modelInitial)\n    while (currentK <= maxK) {\n      # Find next best split, then do a new celda_C run with that split\n      tempSplit <- .singleSplitZ(countsY,\n        overallZ,\n        s,\n        currentK,\n        minCell = 3,\n        alpha = alpha,\n        beta = beta\n      )\n      tempModel <- .celda_C(countsY,\n        sampleLabel = sampleLabel,\n        K = as.integer(currentK),\n        nchains = 1,\n        zInitialize = \"random\",\n        alpha = alpha,\n        beta = beta,\n        stopIter = 5,\n        splitOnLast = FALSE,\n        verbose = FALSE,\n        zInit = tempSplit$z,\n        reorder = reorder\n      )\n\n      # Handle rare cases where a population has no cells after running\n      # the model\n      if (length(unique(celdaClusters(tempModel)$z)) == currentK) {\n        overallZ <- as.integer(celdaClusters(tempModel)$z)\n      } else {\n        overallZ <- tempSplit$z\n      }\n\n      # Need to change below line to use decompose counts to save time\n      ll <- .logLikelihoodcelda_C(\n        counts, s, overallZ, currentK,\n        alpha, beta\n      )\n      tempModel <- methods::new(\"celda_C\",\n        clusters = list(z = overallZ),\n        params = list(\n          K = as.integer(currentK),\n          alpha = alpha,\n          beta = beta,\n          countChecksum = countChecksum\n        ),\n        finalLogLik = ll,\n        sampleLabel = sampleLabel,\n        names = names\n      )\n\n      resList <- c(resList, list(tempModel))\n      .logMessages(date(),\n        \".. Current cell population\",\n        currentK,\n        \"| logLik:\",\n        bestLogLikelihood(tempModel),\n        append = TRUE,\n        verbose = verbose,\n        logfile = logfile\n      )\n      currentK <- length(unique(overallZ)) + 1\n    }\n\n    runK <- vapply(resList, function(mod) {\n      params(mod)$K\n    }, integer(1))\n    runParams <- data.frame(\n      index = seq.int(1, length(resList)),\n      K = as.integer(runK),\n      stringsAsFactors = FALSE\n    )\n  } else {\n    # Create initial model with initialK\n    .logMessages(date(),\n      \".. Initializing with\",\n      initialK,\n      \"populations\",\n      append = TRUE,\n      verbose = verbose,\n      logfile = logfile\n    )\n    modelInitial <- .celda_C(counts,\n      sampleLabel = sampleLabel,\n      K = as.integer(initialK),\n      zInitialize = \"split\",\n      nchains = 1,\n      alpha = alpha,\n      beta = beta,\n      verbose = FALSE,\n      reorder = reorder\n    )\n    currentK <- length(unique(celdaClusters(modelInitial)$z)) + 1\n    overallZ <- as.integer(celdaClusters(modelInitial)$z)\n    resList <- list(modelInitial)\n    while (currentK <= maxK) {\n      tempSplit <- .singleSplitZ(counts,\n        overallZ,\n        s,\n        currentK,\n        minCell = 3,\n        alpha = alpha,\n        beta = beta\n      )\n      tempModel <- .celda_C(counts,\n        sampleLabel = sampleLabel,\n        K = as.integer(currentK),\n        nchains = 1,\n        zInitialize = \"random\",\n        alpha = alpha,\n        beta = beta,\n        stopIter = 5,\n        splitOnLast = FALSE,\n        verbose = FALSE,\n        zInit = tempSplit$z,\n        reorder = reorder\n      )\n\n      if (length(unique(celdaClusters(tempModel)$z)) == currentK) {\n        overallZ <- as.integer(celdaClusters(tempModel)$z)\n      } else {\n        overallZ <- tempSplit$z\n        ll <-\n          .logLikelihoodcelda_C(\n            counts, s, overallZ,\n            currentK, alpha, beta\n          )\n        tempModel <- methods::new(\"celda_C\",\n          clusters = list(z = overallZ),\n          params = list(\n            K = as.integer(currentK),\n            alpha = alpha,\n            beta = beta,\n            countChecksum = countChecksum\n          ),\n          finalLogLik = ll,\n          sampleLabel = sampleLabel,\n          names = names\n        )\n      }\n\n      resList <- c(resList, list(tempModel))\n      .logMessages(date(),\n        \".. Current cell population\",\n        currentK,\n        \"| logLik:\",\n        bestLogLikelihood(tempModel),\n        append = TRUE,\n        verbose = verbose,\n        logfile = logfile\n      )\n      currentK <- length(unique(overallZ)) + 1\n    }\n\n    runK <- vapply(resList, function(mod) {\n      params(mod)$K\n    }, integer(1))\n    runParams <- data.frame(\n      index = seq.int(1, length(resList)),\n      K = as.integer(runK),\n      stringsAsFactors = FALSE\n    )\n  }\n\n  # Summarize paramters of different models\n  logliks <- vapply(resList, function(mod) {\n    bestLogLikelihood(mod)\n  }, double(1))\n  runParams <- data.frame(runParams,\n    log_likelihood = logliks,\n    stringsAsFactors = FALSE\n  )\n\n  celdaRes <- methods::new(\"celdaList\",\n    runParams = runParams,\n    resList = resList,\n    countChecksum = countChecksum\n  )\n\n  if (isTRUE(perplexity)) {\n    .logMessages(date(),\n      \".. Calculating perplexity\",\n      append = TRUE,\n      verbose = verbose,\n      logfile = NULL\n    )\n    celdaRes <- resamplePerplexity(counts, celdaRes,\n                                   doResampling = doResampling,\n                                   numResample = numResample)\n  }\n  endTime <- Sys.time()\n  .logMessages(\n    paste(rep(\"=\", 50), collapse = \"\"),\n    logfile = logfile,\n    append = TRUE,\n    verbose = verbose\n  )\n  .logMessages(\n    \"Completed recursive cell population splitting. Total time:\",\n    format(difftime(endTime, startTime)),\n    logfile = logfile,\n    append = TRUE,\n    verbose = verbose\n  )\n  .logMessages(\n    paste(rep(\"=\", 50), collapse = \"\"),\n    logfile = logfile,\n    append = TRUE,\n    verbose = verbose\n  )\n\n  return(celdaRes)\n}\n\n\n#' @title Recursive module splitting\n#' @description Uses the \\link{celda_G} model to cluster features into modules\n#'  for a range of possible L's. The module labels of the previous \"L-1\" model\n#'  are used as the initial values in the current model with L modules. The best\n#'  split of an existing module is found to create the L-th module. This\n#'  procedure is much faster than randomly initializing each model with a\n#'  different L.\n#' @param x A numeric \\link{matrix} of counts or a\n#'  \\linkS4class{SingleCellExperiment}\n#'  with the matrix located in the assay slot under \\code{useAssay}.\n#'  Rows represent features and columns represent cells.\n#' @param useAssay A string specifying which \\link{assay}\n#'  slot to use if \\code{x} is a\n#'  \\link[SingleCellExperiment]{SingleCellExperiment} object. Default \"counts\".\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @param initialL Integer. Initial number of modules.\n#' @param maxL Integer. Maximum number of modules.\n#' @param tempK Integer. Number of temporary cell populations to identify and\n#'  use in module splitting. Only used if \\code{zInit = NULL} Collapsing cells\n#'  to a relatively smaller number of cell popluations will increase the\n#'  speed of module clustering and tend to produce better modules. This number\n#'  should be larger than the number of true cell populations expected in the\n#'  dataset. Default \\code{100}.\n#' @param zInit Integer vector. Collapse cells to cell populations based on\n#'  labels in \\code{zInit} and then perform module splitting. If NULL, no\n#'  collapsing will be performed unless \\code{tempK} is specified.\n#'  Default \\code{NULL}.\n#' @param sampleLabel Vector or factor. Denotes the sample label for each cell\n#'  (column) in the count matrix. Default \\code{NULL}.\n#' @param alpha Numeric. Concentration parameter for Theta. Adds a pseudocount\n#'  to each cell population in each sample. Only used if \\code{zInit} is set.\n#'  Default \\code{1}.\n#' @param beta Numeric. Concentration parameter for Phi. Adds a pseudocount\n#'  to each feature module in each cell. Default 1.\n#' @param delta Numeric. Concentration parameter for Psi. Adds a pseudocount\n#'  to each feature in each module. Default 1.\n#' @param gamma Numeric. Concentration parameter for Eta. Adds a pseudocount\n#'  to the number of features in each module. Default 1.\n#' @param minFeature Integer. Only attempt to split modules with at least this\n#'  many features.\n#' @param reorder Logical. Whether to reorder modules using hierarchical\n#'  clustering after each model has been created. If FALSE, module numbers will\n#'  correspond to the split which created the module (i.e. 'L15' was created at\n#'  split 15, 'L16' was created at split 16, etc.). Default TRUE.\n#' @param seed Integer. Passed to \\link[withr]{with_seed}. For reproducibility,\n#'  a default value of 12345 is used. If NULL, no calls to\n#'  \\link[withr]{with_seed} are made.\n#' @param perplexity Logical. Whether to calculate perplexity for each model.\n#'  If FALSE, then perplexity can be calculated later with\n#'  \\link{resamplePerplexity}. Default \\code{TRUE}.\n#' @param doResampling Boolean. If \\code{TRUE}, then each cell in the counts\n#' matrix will be resampled according to a multinomial distribution to introduce\n#' noise before calculating perplexity. Default \\code{FALSE}.\n#' @param numResample Integer. The number of times to resample the counts matrix\n#' for evaluating perplexity if \\code{doResampling} is set to \\code{TRUE}.\n#' Default \\code{5}.\n#' @param verbose Logical. Whether to print log messages. Default TRUE.\n#' @param logfile Character. Messages will be redirected to a file named\n#'  \"logfile\". If NULL, messages will be printed to stdout.  Default NULL.\n#' @return A \\linkS4class{SingleCellExperiment} object. Function\n#'  parameter settings and celda model results are stored in the\n#'  \\link{metadata} \\code{\"celda_grid_search\"} slot. The models in\n#'  the list will be of class \\link{celda_G} if \\code{zInit = NULL} or\n#'  \\link{celda_CG} if \\code{zInit} is set.\n#' @seealso \\code{recursiveSplitCell} for recursive splitting of cell\n#'  populations.\n#' @export\nsetGeneric(\"recursiveSplitModule\",\n    function(x,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        initialL = 10,\n        maxL = 100,\n        tempK = 100,\n        zInit = NULL,\n        sampleLabel = NULL,\n        alpha = 1,\n        beta = 1,\n        delta = 1,\n        gamma = 1,\n        minFeature = 3,\n        reorder = TRUE,\n        seed = 12345,\n        perplexity = TRUE,\n        doResampling = FALSE,\n        numResample = 5,\n        verbose = TRUE,\n        logfile = NULL) {\n    standardGeneric(\"recursiveSplitModule\")})\n\n\n#' @rdname recursiveSplitModule\n#' @examples\n#' data(sceCeldaCG)\n#' ## Create models that range from L=3 to L=20 by recursively splitting modules\n#' ## into two\n#' moduleSplit <- recursiveSplitModule(sceCeldaCG, initialL = 3, maxL = 20)\n#'\n#' ## Example results with perplexity\n#' plotGridSearchPerplexity(moduleSplit)\n#'\n#' ## Select model for downstream analysis\n#' celdaMod <- subsetCeldaList(moduleSplit, list(L = 10))\n#' @export\nsetMethod(\"recursiveSplitModule\",\n    signature(x = \"SingleCellExperiment\"),\n    function(x,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        initialL = 10,\n        maxL = 100,\n        tempK = 100,\n        zInit = NULL,\n        sampleLabel = NULL,\n        alpha = 1,\n        beta = 1,\n        delta = 1,\n        gamma = 1,\n        minFeature = 3,\n        reorder = TRUE,\n        seed = 12345,\n        perplexity = TRUE,\n        doResampling = FALSE,\n        numResample = 5,\n        verbose = TRUE,\n        logfile = NULL) {\n\n        xClass <- \"SingleCellExperiment\"\n\n        if (!altExpName %in% SingleCellExperiment::altExpNames(x)) {\n            stop(altExpName, \" not in 'altExpNames(x)'. Run \",\n                \"selectFeatures(x) first!\")\n        }\n\n        altExp <- SingleCellExperiment::altExp(x, altExpName)\n\n        if (!useAssay %in% SummarizedExperiment::assayNames(altExp)) {\n            stop(useAssay, \" not in assayNames(altExp(x, altExpName))\")\n        }\n\n        counts <- SummarizedExperiment::assay(altExp, i = useAssay)\n\n        if (!is.null(zInit)) {\n            model <- \"celda_CG\"\n        } else {\n            model <- \"celda_G\"\n        }\n\n        celdaList <- .recursiveSplitModuleWithSeed(counts = counts,\n            initialL = initialL,\n            maxL = maxL,\n            tempK = tempK,\n            zInit = zInit,\n            sampleLabel = sampleLabel,\n            alpha = alpha,\n            beta = beta,\n            delta = delta,\n            gamma = gamma,\n            minFeature = minFeature,\n            reorder = reorder,\n            seed = seed,\n            perplexity = perplexity,\n            doResampling = doResampling,\n            numResample = numResample,\n            verbose = verbose,\n            logfile = logfile)\n\n        altExp <- .createSCERecursiveSplitModule(celdaList = celdaList,\n            sce = altExp,\n            xClass = xClass,\n            useAssay = useAssay,\n            model = model,\n            initialL = initialL,\n            maxL = maxL,\n            tempK = tempK,\n            zInit = zInit,\n            sampleLabel = sampleLabel,\n            alpha = alpha,\n            beta = beta,\n            delta = delta,\n            gamma = gamma,\n            minFeature = minFeature,\n            reorder = reorder,\n            seed = seed,\n            perplexity = perplexity,\n            verbose = verbose,\n            logfile = logfile)\n        SingleCellExperiment::altExp(x, altExpName) <- altExp\n        return(x)\n    }\n)\n\n\n#' @rdname recursiveSplitModule\n#' @examples\n#' data(celdaCGSim)\n#' ## Create models that range from L=3 to L=20 by recursively splitting modules\n#' ## into two\n#' moduleSplit <- recursiveSplitModule(celdaCGSim$counts,\n#'   initialL = 3, maxL = 20)\n#'\n#' ## Example results with perplexity\n#' plotGridSearchPerplexity(moduleSplit)\n#'\n#' ## Select model for downstream analysis\n#' celdaMod <- subsetCeldaList(moduleSplit, list(L = 10))\n#' @export\nsetMethod(\"recursiveSplitModule\",\n    signature(x = \"matrix\"),\n    function(x,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        initialL = 10,\n        maxL = 100,\n        tempK = 100,\n        zInit = NULL,\n        sampleLabel = NULL,\n        alpha = 1,\n        beta = 1,\n        delta = 1,\n        gamma = 1,\n        minFeature = 3,\n        reorder = TRUE,\n        seed = 12345,\n        perplexity = TRUE,\n        doResampling = FALSE,\n        numResample = 5,\n        verbose = TRUE,\n        logfile = NULL) {\n\n        ls <- list()\n        ls[[useAssay]] <- x\n        sce <- SingleCellExperiment::SingleCellExperiment(assays = ls)\n        SingleCellExperiment::altExp(sce, altExpName) <- sce\n        xClass <- \"matrix\"\n\n        if (!is.null(zInit)) {\n            model <- \"celda_CG\"\n        } else {\n            model <- \"celda_G\"\n        }\n\n        celdaList <- .recursiveSplitModuleWithSeed(counts = x,\n            initialL = initialL,\n            maxL = maxL,\n            tempK = tempK,\n            zInit = zInit,\n            sampleLabel = sampleLabel,\n            alpha = alpha,\n            beta = beta,\n            delta = delta,\n            gamma = gamma,\n            minFeature = minFeature,\n            reorder = reorder,\n            seed = seed,\n            perplexity = perplexity,\n            doResampling = doResampling,\n            numResample = numResample,\n            verbose = verbose,\n            logfile = logfile)\n\n        altExp <- .createSCERecursiveSplitModule(celdaList = celdaList,\n            sce = SingleCellExperiment::altExp(sce, altExpName),\n            xClass = xClass,\n            useAssay = useAssay,\n            model = model,\n            initialL = initialL,\n            maxL = maxL,\n            tempK = tempK,\n            zInit = zInit,\n            sampleLabel = sampleLabel,\n            alpha = alpha,\n            beta = beta,\n            delta = delta,\n            gamma = gamma,\n            minFeature = minFeature,\n            reorder = reorder,\n            seed = seed,\n            perplexity = perplexity,\n            verbose = verbose,\n            logfile = logfile)\n        SingleCellExperiment::altExp(sce, altExpName) <- altExp\n        return(sce)\n    }\n)\n\n\n.recursiveSplitModuleWithSeed <- function(counts,\n    initialL,\n    maxL,\n    tempK,\n    zInit,\n    sampleLabel,\n    alpha,\n    beta,\n    delta,\n    gamma,\n    minFeature,\n    reorder,\n    seed,\n    perplexity,\n    doResampling,\n    numResample,\n    verbose,\n    logfile) {\n\n    if (is.null(seed)) {\n        celdaList <- .recursiveSplitModule(\n            counts = counts,\n            initialL = initialL,\n            maxL = maxL,\n            tempK = tempK,\n            zInit = zInit,\n            sampleLabel = sampleLabel,\n            alpha = alpha,\n            beta = beta,\n            delta = delta,\n            gamma = gamma,\n            minFeature = minFeature,\n            reorder = reorder,\n            perplexity = perplexity,\n            verbose = verbose,\n            logfile = logfile,\n            doResampling = doResampling,\n            numResample = numResample)\n    } else {\n        with_seed(seed,\n            celdaList <- .recursiveSplitModule(\n                counts = counts,\n                initialL = initialL,\n                maxL = maxL,\n                tempK = tempK,\n                zInit = zInit,\n                sampleLabel = sampleLabel,\n                alpha = alpha,\n                beta = beta,\n                delta = delta,\n                gamma = gamma,\n                minFeature = minFeature,\n                reorder = reorder,\n                perplexity = perplexity,\n                verbose = verbose,\n                logfile = logfile,\n                doResampling = doResampling,\n                numResample = numResample)\n        )\n    }\n\n    return(celdaList)\n}\n\n\n.recursiveSplitModule <- function(counts,\n                                 initialL = 10,\n                                 maxL = 100,\n                                 tempK = 100,\n                                 zInit = NULL,\n                                 sampleLabel = NULL,\n                                 alpha = 1,\n                                 beta = 1,\n                                 delta = 1,\n                                 gamma = 1,\n                                 minFeature = 3,\n                                 reorder = TRUE,\n                                 perplexity = TRUE,\n                                 verbose = TRUE,\n                                 logfile = NULL,\n                                 doResampling = FALSE,\n                                 numResample = 5) {\n\n  .logMessages(paste(rep(\"=\", 50), collapse = \"\"),\n    logfile = logfile,\n    append = FALSE,\n    verbose = verbose\n  )\n  .logMessages(\"Starting recursive module splitting.\",\n    logfile = logfile,\n    append = TRUE,\n    verbose = verbose\n  )\n  .logMessages(paste(rep(\"=\", 50), collapse = \"\"),\n    logfile = logfile,\n    append = TRUE,\n    verbose = verbose\n  )\n  startTime <- Sys.time()\n\n  .validateCounts(counts)\n\n  counts <- .processCounts(counts)\n  countChecksum <- .createCountChecksum(counts)\n  names <-\n    list(row = rownames(counts), column = colnames(counts))\n  sampleLabel <- .processSampleLabels(sampleLabel,\n    numCells = ncol(counts)\n  )\n  s <- as.integer(sampleLabel)\n\n  if (!is.null(zInit)) {\n    # Create collapsed module matrix\n    K <- length(unique(zInit))\n    .logMessages(\n      date(),\n      \".. Collapsing to\",\n      K,\n      \"cell populations\",\n      append = TRUE,\n      verbose = verbose,\n      logfile = logfile\n    )\n    overallZ <- .initializeCluster(\n      N = K,\n      len = ncol(counts),\n      initial = zInit\n    )\n    countsZ <- .colSumByGroup(counts, overallZ, K)\n\n    # Create initial model with initialL and predifined z labels\n    .logMessages(date(),\n      \".. Initializing with\",\n      initialL,\n      \"modules\",\n      append = TRUE,\n      verbose = verbose,\n      logfile = logfile\n    )\n    modelInitial <- .celda_CG(counts,\n      sampleLabel = sampleLabel,\n      L = initialL,\n      K = K,\n      zInitialize = \"predefined\",\n      yInitialize = \"split\",\n      nchains = 1,\n      zInit = overallZ,\n      alpha = alpha,\n      beta = beta,\n      gamma = gamma,\n      delta = delta,\n      verbose = FALSE,\n      reorder = reorder)\n    currentL <- length(unique(celdaClusters(modelInitial)$y)) + 1\n    overallY <- as.integer(celdaClusters(modelInitial)$y)\n\n    resList <- list(modelInitial)\n    while (currentL <= maxL) {\n      # Allow features to cluster further with celda_CG\n      tempSplit <- .singleSplitY(\n        countsZ,\n        overallY,\n        currentL,\n        minFeature = 3,\n        beta = beta,\n        delta = delta,\n        gamma = gamma\n      )\n      tempModel <- .celda_CG(\n        counts,\n        L = currentL,\n        K = K,\n        stopIter = 5,\n        splitOnIter = -1,\n        splitOnLast = FALSE,\n        nchains = 1,\n        verbose = FALSE,\n        yInitialize = \"predefined\",\n        zInitialize = \"predefined\",\n        yInit = tempSplit$y,\n        zInit = overallZ,\n        reorder = reorder\n      )\n      overallY <- as.integer(celdaClusters(tempModel)$y)\n\n      ## Add new model to results list and increment L\n      .logMessages(\n        date(),\n        \".. Created module\",\n        currentL,\n        \"| logLik:\",\n        bestLogLikelihood(tempModel),\n        append = TRUE,\n        verbose = verbose,\n        logfile = NULL\n      )\n      resList <- c(resList, list(tempModel))\n      currentL <- currentL + 1\n    }\n\n    runK <- vapply(resList, function(mod) {\n      params(mod)$K\n    }, integer(1))\n    runL <- vapply(resList, function(mod) {\n      params(mod)$L\n    }, integer(1))\n    runParams <- data.frame(\n      index = seq.int(1, length(resList)),\n      L = runL,\n      K = runK,\n      stringsAsFactors = FALSE\n    )\n  } else if (!is.null(tempK)) {\n    K <- tempK\n    .logMessages(\n      date(),\n      \".. Collapsing to\",\n      K,\n      \"temporary cell populations\",\n      append = TRUE,\n      verbose = verbose,\n      logfile = logfile\n    )\n    z <- .initializeSplitZ(counts,\n      K = K,\n      minCell = 3\n    )\n    countsZ <- .colSumByGroup(counts, z, length(unique(z)))\n\n    .logMessages(\n      date(),\n      \".. Initializing with\",\n      initialL,\n      \"modules\",\n      append = TRUE,\n      verbose = verbose,\n      logfile = logfile\n    )\n    modelInitial <- .celda_G(\n      countsZ,\n      L = initialL,\n      nchains = 1,\n      verbose = FALSE\n    )\n    modelInitial@params$countChecksum <- countChecksum\n\n    currentL <- length(unique(as.integer(celdaClusters(modelInitial)$y))) + 1\n    overallY <- as.integer(celdaClusters(modelInitial)$y)\n\n    ## Decomposed counts for full count matrix\n    p <- .cGDecomposeCounts(counts, overallY, currentL)\n    nTSByC <- p$nTSByC\n    nByTS <- p$nByTS\n    nGByTS <- p$nGByTS\n    nByG <- p$nByG\n    nG <- p$nG\n    nM <- p$nM\n\n    resList <- list(modelInitial)\n    while (currentL <= maxL) {\n      # Allow features to cluster further\n      previousY <- overallY\n      tempSplit <- .singleSplitY(\n        countsZ,\n        overallY,\n        currentL,\n        minFeature = 3,\n        beta = beta,\n        delta = delta,\n        gamma = gamma\n      )\n      tempModel <- .celda_G(\n        countsZ,\n        L = currentL,\n        stopIter = 5,\n        splitOnIter = -1,\n        splitOnLast = FALSE,\n        nchains = 1,\n        verbose = FALSE,\n        yInitialize = \"predefined\",\n        yInit = tempSplit$y,\n        reorder = reorder\n      )\n      overallY <- as.integer(celdaClusters(tempModel)$y)\n\n      # Adjust decomposed count matrices\n      p <- .cGReDecomposeCounts(counts,\n        overallY,\n        previousY,\n        nTSByC,\n        nByG,\n        L = currentL\n      )\n      nTSByC <- p$nTSByC\n      nByTS <- p$nByTS\n      nGByTS <- p$nGByTS\n      previousY <- overallY\n\n      ## Create the final model object with correct info on full counts\n      ## matrix\n      tempModel@finalLogLik <- .cGCalcLL(\n        nTSByC = nTSByC,\n        nByTS = nByTS,\n        nByG = nByG,\n        nGByTS = nGByTS,\n        nM = nM,\n        nG = nG,\n        L = currentL,\n        beta = beta,\n        delta = delta,\n        gamma = gamma\n      )\n      tempModel@completeLogLik <- bestLogLikelihood(tempModel)\n      tempModel@params$countChecksum <- countChecksum\n      tempModel@names <- names\n\n      ## Add extra row/column for next round of L\n      nTSByC <- rbind(nTSByC, rep(0L, ncol(nTSByC)))\n      nByTS <- c(nByTS, 0L)\n      nGByTS <- c(nGByTS, 0L)\n\n      ## Add new model to results list and increment L\n      .logMessages(\n        date(),\n        \".. Created module\",\n        currentL,\n        \"| logLik:\",\n        bestLogLikelihood(tempModel),\n        append = TRUE,\n        verbose = verbose,\n        logfile = NULL\n      )\n      resList <- c(resList, list(tempModel))\n      currentL <- currentL + 1\n    }\n\n    runL <- vapply(resList, function(mod) {\n      params(mod)$L\n    }, integer(1))\n    runParams <- data.frame(\n      index = seq.int(1, length(resList)),\n      L = runL,\n      stringsAsFactors = FALSE\n    )\n  } else {\n    .logMessages(\n      date(),\n      \".. Initializing with\",\n      initialL,\n      \"modules\",\n      append = TRUE,\n      verbose = verbose,\n      logfile = logfile\n    )\n    modelInitial <- .celda_G(\n      counts,\n      L = initialL,\n      maxIter = 20,\n      nchains = 1,\n      verbose = FALSE\n    )\n    overallY <- as.integer(celdaClusters(modelInitial)$y)\n    currentL <- length(unique(overallY)) + 1\n\n    ## Perform splitting for y labels\n    resList <- list(modelInitial)\n    while (currentL <= maxL) {\n      # Allow features to cluster further\n      previousY <- overallY\n      tempSplit <- .singleSplitY(\n        counts,\n        overallY,\n        currentL,\n        minFeature = 3,\n        beta = beta,\n        delta = delta,\n        gamma = gamma\n      )\n      tempModel <- .celda_G(\n        counts,\n        L = currentL,\n        stopIter = 5,\n        splitOnIter = -1,\n        splitOnLast = FALSE,\n        nchains = 1,\n        verbose = FALSE,\n        yInitialize = \"predefined\",\n        yInit = tempSplit$y,\n        reorder = reorder\n      )\n      overallY <- as.integer(celdaClusters(tempModel)$y)\n\n      ## Add new model to results list and increment L\n      .logMessages(\n        date(),\n        \".. Created module\",\n        currentL,\n        \"| logLik:\",\n        bestLogLikelihood(tempModel),\n        append = TRUE,\n        verbose = verbose,\n        logfile = NULL\n      )\n      resList <- c(resList, list(tempModel))\n      currentL <- currentL + 1\n    }\n\n    runL <- vapply(resList, function(mod) {\n      params(mod)$L\n    }, integer(1))\n    runParams <- data.frame(\n      index = seq.int(1, length(resList)),\n      L = runL,\n      stringsAsFactors = FALSE\n    )\n  }\n\n  ## Summarize parameters of different models\n  logliks <- vapply(resList, function(mod) {\n    bestLogLikelihood(mod)\n  }, double(1))\n  runParams <- data.frame(runParams,\n    log_likelihood = logliks,\n    stringsAsFactors = FALSE\n  )\n\n  celdaRes <- methods::new(\n    \"celdaList\",\n    runParams = runParams,\n    resList = resList,\n    countChecksum = countChecksum\n  )\n\n  if (isTRUE(perplexity)) {\n    .logMessages(\n      date(),\n      \".. Calculating perplexity\",\n      append = TRUE,\n      verbose = verbose,\n      logfile = NULL\n    )\n    celdaRes <- resamplePerplexity(counts, celdaRes,\n                                   doResampling = doResampling,\n                                   numResample = numResample)\n  }\n\n  endTime <- Sys.time()\n  .logMessages(paste(rep(\"=\", 50), collapse = \"\"),\n    logfile = logfile,\n    append = TRUE,\n    verbose = verbose\n  )\n  .logMessages(\"Completed recursive module splitting. Total time:\",\n    format(difftime(endTime, startTime)),\n    logfile = logfile,\n    append = TRUE,\n    verbose = verbose\n  )\n  .logMessages(paste(rep(\"=\", 50), collapse = \"\"),\n    logfile = logfile,\n    append = TRUE,\n    verbose = verbose\n  )\n\n  return(celdaRes)\n}\n\n\n.createSCERecursiveSplitCell <- function(celdaList,\n    sce,\n    xClass,\n    useAssay,\n    model,\n    sampleLabel,\n    initialK,\n    maxK,\n    tempL,\n    yInit,\n    alpha,\n    beta,\n    delta,\n    gamma,\n    minCell,\n    reorder,\n    seed,\n    perplexity,\n    logfile,\n    verbose) {\n\n    S4Vectors::metadata(sce)[[\"celda_grid_search\"]] <- celdaList\n\n    S4Vectors::metadata(sce)$celda_grid_search@celdaGridSearchParameters <-\n        list(xClass = xClass,\n            useAssay = useAssay,\n            model = model,\n            sampleLabel = sampleLabel,\n            initialK = initialK,\n            maxK = maxK,\n            tempL = tempL,\n            yInit = yInit,\n            alpha = alpha,\n            beta = beta,\n            delta = delta,\n            gamma = gamma,\n            minCell = minCell,\n            reorder = reorder,\n            seed = seed,\n            perplexity = perplexity,\n            logfile = logfile,\n            verbose = verbose)\n    SummarizedExperiment::colData(sce)$\"celda_sample_label\" <- sampleLabel\n    return(sce)\n\n}\n\n\n.createSCERecursiveSplitModule <- function(celdaList,\n    sce,\n    xClass,\n    useAssay,\n    model,\n    initialL,\n    maxL,\n    tempK,\n    zInit,\n    sampleLabel,\n    alpha,\n    beta,\n    delta,\n    gamma,\n    minFeature,\n    reorder,\n    seed,\n    perplexity,\n    verbose,\n    logfile) {\n\n    S4Vectors::metadata(sce)[[\"celda_grid_search\"]] <- celdaList\n\n    S4Vectors::metadata(sce)$celda_grid_search@celdaGridSearchParameters <-\n        list(xClass = xClass,\n            useAssay = useAssay,\n            model = model,\n            sampleLabel = sampleLabel,\n            initialL = initialL,\n            maxL = maxL,\n            tempK = tempK,\n            zInit = zInit,\n            alpha = alpha,\n            beta = beta,\n            delta = delta,\n            gamma = gamma,\n            minFeature = minFeature,\n            reorder = reorder,\n            seed = seed,\n            perplexity = perplexity,\n            logfile = logfile,\n            verbose = verbose)\n    SummarizedExperiment::colData(sce)$\"celda_sample_label\" <- sampleLabel\n    return(sce)\n}\n"
  },
  {
    "path": "R/reorderCelda.R",
    "content": "#' @title Reorder cells populations and/or features modules using\n#'  hierarchical clustering\n#' @description Apply hierarchical clustering to reorder the cell populations\n#'  and/or feature modules and group similar ones together based\n#'  on the cosine distance of the factorized matrix\n#'  from \\link{factorizeMatrix}.\n#' @param x Can be one of\n#'  \\itemize{\n#'  \\item A \\linkS4class{SingleCellExperiment} object returned by\n#'  \\link{celda_C}, \\link{celda_G} or \\link{celda_CG}, with the matrix\n#'  located in the \\code{useAssay} assay slot in \\code{altExp(x, altExpName)}.\n#'  Rows represent features and columns represent cells.\n#'  \\item Integer count matrix. Rows represent features and columns represent\n#'  cells. This matrix should be the same as the one used to generate\n#'  \\code{celdaMod}.}\n#' @param useAssay A string specifying which \\link{assay}\n#'  slot to use if \\code{x} is a \\linkS4class{SingleCellExperiment} object.\n#'  Default \"counts\".\n#' @param altExpName The name for the \\link{altExp} slot.\n#'  Default \"featureSubset\".\n#' @param method Passed to \\link{hclust}. The agglomeration method\n#'  to be used to be used. Default \"complete\".\n#' @param celdaMod Celda model object. Only works if \\code{x} is an integer\n#'  counts matrix. Ignored if \\code{x} is a\n#'  \\linkS4class{SingleCellExperiment} object.\n#' @return A \\linkS4class{SingleCellExperiment} object (or Celda model object)\n#'  with updated cell cluster and/or feature module labels.\n#' @export\nsetGeneric(\"reorderCelda\",\n    function(x,\n        celdaMod,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        method = \"complete\") {\n\n        standardGeneric(\"reorderCelda\")})\n\n\n#' @examples\n#' data(sceCeldaCG)\n#' reordersce <- reorderCelda(sceCeldaCG)\n#' @rdname reorderCelda\n#' @export\nsetMethod(\"reorderCelda\", signature(x = \"SingleCellExperiment\"),\n    function(x,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        method = \"complete\") {\n\n        altExp <- SingleCellExperiment::altExp(x, e = altExpName)\n\n        if (!useAssay %in% SummarizedExperiment::assayNames(altExp)) {\n            stop(useAssay, \" not in assayNames(altExp(x, altExpName))\")\n        }\n\n        if (celdaModel(x, altExpName = altExpName) == \"celda_C\") {\n            sce <- .reorderCeldaCsce(sce = x,\n                useAssay = useAssay,\n                altExpName = altExpName,\n                method = method)\n        } else if (celdaModel(x, altExpName = altExpName) == \"celda_CG\") {\n            sce <- .reorderCeldaCGsce(sce = x,\n                useAssay = useAssay,\n                altExpName = altExpName,\n                method = method)\n        } else if (celdaModel(x, altExpName = altExpName) == \"celda_G\") {\n            sce <- .reorderCeldaGsce(sce = x,\n                useAssay = useAssay,\n                altExpName = altExpName,\n                method = method)\n        } else {\n            stop(\"S4Vectors::metadata(altExp(x, altExpName))$\",\n                \"celda_parameters$model must be\",\n                \" one of 'celda_C', 'celda_G', or 'celda_CG'\")\n        }\n        return(sce)\n    })\n\n\n#' @examples\n#' data(celdaCGSim, celdaCGMod)\n#' reorderCeldaCG <- reorderCelda(celdaCGSim$counts, celdaCGMod)\n#' @rdname reorderCelda\n#' @export\nsetMethod(\"reorderCelda\", signature(x = \"matrix\", celdaMod = \"celda_CG\"),\n    function(x, celdaMod, method = \"complete\") {\n        res <- .reorderCeldaCG(x, celdaMod, method = method)\n        return(res)\n    })\n\n\n#' @examples\n#' data(celdaCSim, celdaCMod)\n#' reorderCeldaC <- reorderCelda(celdaCSim$counts, celdaCMod)\n#' @rdname reorderCelda\n#' @export\nsetMethod(\"reorderCelda\", signature(x = \"matrix\", celdaMod = \"celda_C\"),\n    function(x, celdaMod, method = \"complete\") {\n        res <- .reorderCeldaC(x, celdaMod, method = method)\n        return(res)\n    })\n\n\n#' @examples\n#' data(celdaGSim, celdaGMod)\n#' reorderCeldaG <- reorderCelda(celdaGSim$counts, celdaGMod)\n#' @rdname reorderCelda\n#' @export\nsetMethod(\"reorderCelda\", signature(x = \"matrix\", celdaMod = \"celda_G\"),\n    function(x, celdaMod, method = \"complete\") {\n        res <- .reorderCeldaG(x, celdaMod, method = method)\n        return(res)\n    })\n\n\n.reorderCeldaC <- function(counts, res, method = \"complete\") {\n    if (params(res)$K > 2 & isTRUE(length(unique(celdaClusters(res)$z)) > 1)) {\n        res@clusters$z <- as.integer(as.factor(celdaClusters(res)$z))\n        fm <- factorizeMatrix(counts, res, type = \"posterior\")\n        uniqueZ <- sort(unique(celdaClusters(res)$z))\n        d <- .cosineDist(fm$posterior$module[, uniqueZ])\n        h <- stats::hclust(d, method = method)\n        res <- .recodeClusterZ(res,\n            from = h$order,\n            to = seq(length(h$order))\n        )\n    }\n    return(res)\n}\n\n\n.reorderCeldaCsce <- function(sce, useAssay, altExpName, method = \"complete\") {\n    if (S4Vectors::metadata(SingleCellExperiment::altExp(sce,\n        altExpName))$celda_parameters$K > 2 &\n            isTRUE(length(unique(celdaClusters(sce, altExpName))) > 1)) {\n        celdaClusters(sce, altExpName) <-\n            as.integer(as.factor(celdaClusters(sce, altExpName)))\n        fm <- factorizeMatrix(sce,\n            useAssay = useAssay,\n            altExpName = altExpName,\n            type = \"posterior\")\n        uniqueZ <- sort(unique(celdaClusters(sce)))\n        d <- .cosineDist(fm$posterior$module[, uniqueZ])\n        h <- stats::hclust(d, method = method)\n        sce <- recodeClusterZ(sce,\n            from = h$order,\n            to = seq(length(h$order)),\n            altExpName = altExpName)\n    }\n    return(sce)\n}\n\n\n.reorderCeldaG <- function(counts, res, method = \"complete\") {\n    if (params(res)$L > 2 & isTRUE(length(unique(celdaClusters(res)$y)) > 1)) {\n        res@clusters$y <- as.integer(as.factor(celdaClusters(res)$y))\n        fm <- factorizeMatrix(counts, res, type = \"posterior\")\n        uniqueY <- sort(unique(celdaClusters(res)$y))\n        cs <- prop.table(t(fm$posterior$cell[uniqueY, ]), 2)\n        d <- .cosineDist(cs)\n        h <- stats::hclust(d, method = method)\n        res <- .recodeClusterY(res, from = h$order, to = seq(length(h$order)))\n    }\n    return(res)\n}\n\n\n.reorderCeldaGsce <- function(sce, useAssay, altExpName, method = \"complete\") {\n    if (S4Vectors::metadata(SingleCellExperiment::altExp(sce,\n        altExpName))$celda_parameters$L > 2 &\n            isTRUE(length(unique(celdaModules(sce, altExpName))) > 1)) {\n        celdaModules(sce, altExpName) <-\n            as.integer(as.factor(celdaModules(sce, altExpName)))\n        fm <- factorizeMatrix(sce,\n            useAssay = useAssay,\n            altExpName = altExpName,\n            type = \"posterior\")\n        uniqueY <- sort(unique(celdaModules(sce)))\n        cs <- prop.table(t(fm$posterior$cell[uniqueY, ]), 2)\n        d <- .cosineDist(cs)\n        h <- stats::hclust(d, method = method)\n        sce <- recodeClusterY(sce,\n            from = h$order,\n            to = seq(length(h$order)),\n            altExpName = altExpName)\n    }\n    return(sce)\n}\n\n\n.reorderCeldaCG <- function(counts, res, method = \"complete\") {\n    # Reorder K\n    if (params(res)$K > 2 & isTRUE(length(unique(celdaClusters(res)$z)) > 1)) {\n        res@clusters$z <- as.integer(as.factor(celdaClusters(res)$z))\n        fm <- factorizeMatrix(counts, res, type = \"posterior\")\n        uniqueZ <- sort(unique(celdaClusters(res)$z))\n        d <- .cosineDist(fm$posterior$cellPopulation[, uniqueZ])\n        h <- stats::hclust(d, method = method)\n\n        res <- .recodeClusterZ(res, from = h$order, to = seq(length(h$order)))\n    }\n\n    # Reorder L\n    if (params(res)$L > 2 & isTRUE(length(unique(celdaClusters(res)$y)) > 1)) {\n        res@clusters$y <- as.integer(as.factor(celdaClusters(res)$y))\n        fm <- factorizeMatrix(counts, res, type = \"posterior\")\n        uniqueY <- sort(unique(celdaClusters(res)$y))\n        cs <- prop.table(t(fm$posterior$cellPopulation[uniqueY, ]), 2)\n        d <- .cosineDist(cs)\n        h <- stats::hclust(d, method = method)\n\n        res <- .recodeClusterY(res, from = h$order, to = seq(length(h$order)))\n    }\n    return(res)\n}\n\n\n.reorderCeldaCGsce <- function(sce, useAssay, altExpName, method = \"complete\") {\n    # Reorder K\n    if (S4Vectors::metadata(SingleCellExperiment::altExp(sce,\n        altExpName))$celda_parameters$K > 2 &\n            isTRUE(length(unique(celdaClusters(sce, altExpName))) > 1)) {\n        celdaClusters(sce, altExpName) <-\n            as.integer(as.factor(celdaClusters(sce, altExpName)))\n        fm <- factorizeMatrix(sce,\n            useAssay = useAssay,\n            altExpName = altExpName,\n            type = \"posterior\")\n        uniqueZ <- sort(unique(celdaClusters(sce)))\n        d <- .cosineDist(fm$posterior$cellPopulation[, uniqueZ])\n        h <- stats::hclust(d, method = method)\n        sce <- recodeClusterZ(sce,\n            from = h$order,\n            to = seq(length(h$order)),\n            altExpName = altExpName)\n    }\n\n    # Reorder L\n    if (S4Vectors::metadata(SingleCellExperiment::altExp(sce,\n        altExpName))$celda_parameters$L > 2 &\n            isTRUE(length(unique(celdaModules(sce, altExpName))) > 1)) {\n        celdaModules(sce, altExpName) <-\n            as.integer(as.factor(celdaModules(sce, altExpName)))\n        fm <- factorizeMatrix(sce,\n            useAssay = useAssay,\n            altExpName = altExpName,\n            type = \"posterior\")\n        uniqueY <- sort(unique(celdaModules(sce)))\n        cs <- prop.table(t(fm$posterior$cellPopulation[uniqueY, ]), 2)\n        d <- .cosineDist(cs)\n        h <- stats::hclust(d, method = method)\n        sce <- recodeClusterY(sce,\n            from = h$order,\n            to = seq(length(h$order)),\n            altExpName = altExpName)\n    }\n    return(sce)\n}\n"
  },
  {
    "path": "R/reports.R",
    "content": "#' @title Generate an HTML report for celda_CG\n#' @name reportceldaCG\n#' @description \\code{reportCeldaCGRun} will run \\link{recursiveSplitModule} and\n#'   \\link{recursiveSplitCell} to find the number of modules (\\code{L}) and the\n#'   number of cell populations (\\code{K}). A final \\link{celda_CG} model will\n#'   be selected from \\link{recursiveSplitCell}. After a \\link{celda_CG} model\n#'   has been fit, \\code{reportCeldaCGPlotResults} can be used to create an HTML\n#'   report for visualization and exploration of the \\link{celda_CG} model\n#'   results. Some of the plotting and feature selection functions require the\n#'   installation of the Bioconductor package \\code{singleCellTK}.\n#' @param sce A \\linkS4class{SingleCellExperiment} with the matrix located in\n#'   the assay slot under \\code{useAssay}. Rows represent features and columns\n#'   represent cells.\n#' @param L Integer. Final number of feature modules. See \\code{celda_CG} for\n#'   more information.\n#' @param K Integer. Final number of cell populations. See \\code{celda_CG} for\n#'   more information.\n#' @param sampleLabel Vector or factor. Denotes the sample label for each cell\n#'   (column) in the count matrix.\n#' @param altExpName The name for the \\link{altExp} slot to use. Default\n#'   \\code{\"featureSubset\"}.\n#' @param useAssay A string specifying which \\link{assay} slot to use. Default\n#'   \\code{\"counts\"}.\n#' @param initialL Integer. Minimum number of modules to try. See\n#'   \\link{recursiveSplitModule} for more information. Defailt \\code{10}.\n#' @param maxL Integer. Maximum number of modules to try. See\n#'   \\link{recursiveSplitModule} for more information. Default \\code{150}.\n#' @param initialK Integer. Initial number of cell populations to try.\n#' @param maxK Integer. Maximum number of cell populations to try.\n#' @param minCell Integer. Minimum number of cells required for feature\n#'   selection. See \\link{selectFeatures} for more information. Default\n#'   \\code{3}.\n#' @param minCount Integer. Minimum number of counts required for feature\n#'   selection. See \\link{selectFeatures} for more information. Default\n#'   \\code{3}.\n#' @param maxFeatures Integer. Maximum number of features to include. If the\n#'   number of features after filtering for \\code{minCell} and \\code{minCount}\n#'   are greater than \\code{maxFeature}, then Seurat's VST function is used to\n#'   select the top variable features. Default \\code{5000}.\n#' @param reducedDimName Character. Name of the reduced dimensional object to be\n#'   used in 2-D scatter plots throughout the report. Default \\code{celda_UMAP}.\n#' @param features Character vector.  Expression of these features will be\n#'   displayed on a reduced dimensional plot defined by \\code{reducedDimName}.\n#'   If \\code{NULL}, then no plotting of features on a reduced dimensinoal plot\n#'   will be performed. Default \\code{NULL}.\n#' @param displayName Character. The name to use for display in scatter plots\n#'   and heatmaps. If \\code{NULL}, then the rownames of the \\code{sce} object\n#'   will be used. This can also be set to the name of a column in the row data\n#'   of \\code{sce} or \\code{altExp(sce, altExpName)}. Default \\code{NULL}.\n#' @param cellAnnot Character vector. The cell-level annotations to display on\n#'   the reduced dimensional plot. These variables should be present in the\n#'   column data of the \\code{sce} object. Default \\code{NULL}.\n#' @param cellAnnotLabel Character vector. Additional cell-level annotations\n#'   to display on the reduced dimensional plot. Variables will be treated\n#'   as categorial and labels for each group will be placed on the plot.\n#'   These variables should be present in the column data of the \\code{sce}\n#'   object. Default \\code{NULL}.\n#' @param exactMatch Boolean. Whether to only identify exact matches or to\n#'   identify partial matches using \\code{\\link{grep}}. Default \\code{FALSE}.\n#' @param moduleFilePrefix Character. The features in each module will be\n#' written to a a csv file starting with this name. If \\code{NULL}, then no\n#' file will be written. Default \\code{\"module_features\"}.\n#' @param output_file Character. Prefix of the html file. Default\n#'   \\code{\"CeldaCG_ResultReport\"}.\n#' @param output_sce_prefix Character. The \\code{sce} object with\n#'   \\code{celda_CG} results will be saved to an \\code{.rds} file starting with\n#'   this prefix. Default \\code{celda_cg}.\n#' @param output_dir Character. Path to save the html file. Default \\code{.}.\n#' @param pdf Boolean. Whether to create PDF versions of each plot in addition\n#'   to PNGs. Default \\code{FALSE}.\n#' @param showSetup Boolean. Whether to show the setup code at the beginning.\n#'   Default \\code{TRUE}.\n#' @param showSession Boolean. Whether to show the session information at the\n#'   end. Default \\code{TRUE}.\n#' @return .html file\n#' @rdname reportceldaCG\n#' @examples\n#' data(sceCeldaCG)\n#' \\dontrun{\n#' library(SingleCellExperiment)\n#' sceCeldaCG$sum <- colSums(counts(sceCeldaCG))\n#' rowData(sceCeldaCG)$rownames <- rownames(sceCeldaCG)\n#' sceCeldaCG <- reportCeldaCGRun(sceCeldaCG,\n#'     initialL = 5, maxL = 20, initialK = 5,\n#'     maxK = 20, L = 10, K = 5)\n#' reportCeldaCGPlotResults(sce = sceCeldaCG,\n#'     reducedDimName = \"celda_UMAP\",\n#'     features = c(\"Gene_1\", \"Gene_100\"),\n#'     displayName = \"rownames\",\n#'     cellAnnot=\"sum\")\n#' }\nNULL\n\n#' @rdname reportceldaCG\n#' @export\nreportCeldaCGRun <-\n  function(sce,\n           L,\n           K,\n           sampleLabel = NULL,\n           altExpName = \"featureSubset\",\n           useAssay = \"counts\",\n           initialL = 10,\n           maxL = 150,\n           initialK = 5,\n           maxK = 50,\n           minCell = 3,\n           minCount = 3,\n           maxFeatures = 5000,\n           output_file = \"CeldaCG_RunReport\",\n           output_sce_prefix = \"celda_cg\",\n           output_dir = \".\",\n           pdf = FALSE,\n           showSession = TRUE) {\n    sceFile <-\n      file.path(normalizePath(output_dir),\n                paste0(output_sce_prefix, \".rds\"))\n\n    rmarkdown::render(\n      system.file(\"rmarkdown/CeldaCG_Run.Rmd\", package = \"celda\"),\n      params = list(\n        sce = sce,\n        L = L,\n        K = K,\n        sampleLabel = sampleLabel,\n        altExpName = altExpName,\n        useAssay = useAssay,\n        initialL = initialL,\n        maxL = maxL,\n        initialK = initialK,\n        maxK = maxK,\n        minCell = minCell,\n        minCount = minCount,\n        maxFeatures = maxFeatures,\n        sceFile = sceFile,\n        pdf = isTRUE(pdf),\n        showSession = isTRUE(showSession)\n      ),\n      output_file = output_file,\n      output_dir = output_dir,\n      intermediates_dir = output_dir,\n      knit_root_dir = output_dir\n    )\n\n    if (!is.null(output_sce_prefix)) {\n      if (file.exists(sceFile)) {\n        sce <- readRDS(sceFile)\n        invisible(sce)\n      } else {\n        warning(\n          \"The file '\",\n          sceFile,\n        \"' could not be found. The SCE with celda_CG results was not reloaded.\"\n        )\n      }\n    }\n  }\n\n\n\n\n#' @rdname reportceldaCG\n#' @export\nreportCeldaCGPlotResults <-\n  function(sce,\n           reducedDimName,\n           features = NULL,\n           displayName = NULL,\n           altExpName = \"featureSubset\",\n           useAssay = \"counts\",\n           cellAnnot = NULL,\n           cellAnnotLabel = NULL,\n           exactMatch = TRUE,\n           moduleFilePrefix = \"module_features\",\n           output_file = \"CeldaCG_ResultReport\",\n           output_dir = \".\",\n           pdf = FALSE,\n           showSetup = TRUE,\n           showSession = TRUE) {\n\n    moduleFileName <- NULL\n    if (!is.null(moduleFilePrefix)) {\n      moduleFileName <-\n        file.path(normalizePath(output_dir),\n                  paste0(moduleFilePrefix, \".csv\"))\n    }\n\n    rmarkdown::render(\n      system.file(\"rmarkdown/CeldaCG_PlotResults.Rmd\", package = \"celda\"),\n      params = list(\n        sce = sce,\n        altExpName = altExpName,\n        useAssay = useAssay,\n        reducedDimName = reducedDimName,\n        features = features,\n        displayName = displayName,\n        cellAnnot = cellAnnot,\n        cellAnnotLabel = cellAnnotLabel,\n        exactMatch = isTRUE(exactMatch),\n        moduleFileName = moduleFileName,\n        pdf = isTRUE(pdf),\n        showSetup = isTRUE(showSetup),\n        showSession = isTRUE(showSession)\n      ),\n      output_file = output_file,\n      output_dir = output_dir,\n      intermediates_dir = output_dir,\n      knit_root_dir = output_dir\n    )\n  }\n"
  },
  {
    "path": "R/selectFeatures.R",
    "content": "#' @title Simple feature selection by feature counts\n#' @description A simple heuristic feature selection procedure.\n#'  Select features with at least \\code{minCount} counts\n#'  in at least \\code{minCell} cells. A \\linkS4class{SingleCellExperiment}\n#'  object with subset features will be stored in the\n#'  \\link{altExp} slot with name \\code{altExpName}.\n#'  The name of the \\code{assay} slot in \\link{altExp}\n#'  will be the same as \\code{useAssay}.\n#' @param x A numeric \\link{matrix} of counts or a\n#'  \\linkS4class{SingleCellExperiment}\n#'  with the matrix located in the assay slot under \\code{useAssay}.\n#'  Rows represent features and columns represent cells.\n#' @param minCount Minimum number of counts required for feature selection.\n#' @param minCell Minimum number of cells required for feature selection.\n#' @param useAssay A string specifying the name of the\n#'  \\link{assay} slot to use. Default \"counts\".\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \"featureSubset\".\n#' @return A \\linkS4class{SingleCellExperiment} object with a\n#'  \\code{altExpName} \\link{altExp} slot. Function\n#'  parameter settings are stored in the \\link{metadata}\n#'  \\code{\"select_features\"} slot.\n#' @export\nsetGeneric(\"selectFeatures\",\n    function(x,\n        minCount = 3,\n        minCell = 3,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\") {\n    standardGeneric(\"selectFeatures\")})\n\n\n#' @rdname selectFeatures\n#' @examples\n#' data(sceCeldaCG)\n#' sce <- selectFeatures(sceCeldaCG)\n#' @export\nsetMethod(\"selectFeatures\",\n    signature(x = \"SingleCellExperiment\"),\n    function(x,\n        minCount = 3,\n        minCell = 3,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\") {\n\n        assay <- SummarizedExperiment::assay(x, i = useAssay)\n        sceSubset <- x[Matrix::rowSums(assay >= minCount) >= minCell, ]\n        SingleCellExperiment::altExp(x, altExpName) <- sceSubset\n\n        S4Vectors::metadata(x)[[\"select_features\"]] <- list(\n            xClass = \"SingleCellExperiment\",\n            minCount = minCount,\n            minCell = minCell,\n            useAssay = useAssay,\n            altExpName = altExpName)\n        return(x)\n    }\n)\n\n\n#' @rdname selectFeatures\n#' @examples\n#' data(celdaCGSim)\n#' sce <- selectFeatures(celdaCGSim$counts)\n#' @export\nsetMethod(\"selectFeatures\",\n    signature(x = \"matrix\"),\n    function(x,\n        minCount = 3,\n        minCell = 3,\n        useAssay = \"counts\",\n        altExpName = \"featureSubset\") {\n\n        ls <- list()\n        ls[[useAssay]] <- x\n        sce <- SingleCellExperiment::SingleCellExperiment(assays = ls)\n        sceSubset <- sce[rowSums(x >= minCount) >= minCell, ]\n        SingleCellExperiment::altExp(sce, altExpName) <- sceSubset\n        S4Vectors::metadata(sce)[[\"select_features\"]] <- list(\n            xClass = \"matrix\",\n            minCount = minCount,\n            minCell = minCell,\n            useAssay = useAssay,\n            altExpName = altExpName)\n        return(sce)\n    }\n)\n"
  },
  {
    "path": "R/semi_pheatmap.R",
    "content": "# Adapted originally from the very excellent pheatmap package\n# (https://cran.r-project.org/web/packages/pheatmap/index.html)\n\n#' @importFrom gtable gtable\n.lo <- function(rown,\n                coln,\n                nrow,\n                ncol,\n                cellHeight = NA,\n                cellWidth = NA,\n                treeHeightCol,\n                treeHeightRow,\n                legend,\n                annotationRow,\n                annotationCol,\n                annotationColors,\n                annotationLegend,\n                annotationNamesRow,\n                annotationNamesCol,\n                main,\n                fontSize,\n                fontSizeRow,\n                fontSizeCol,\n                gapsRow,\n                gapsCol,\n                ...) {\n  # Get height of colnames and length of rownames\n  if (!is.null(coln[1]) |\n    (!.is.na2(annotationRow) & annotationNamesRow)) {\n    if (!is.null(coln[1])) {\n      t <- coln\n    } else {\n      t <- \"\"\n    }\n    tw <- strwidth(t, units = \"in\", cex = fontSizeCol / fontSize)\n    if (annotationNamesRow) {\n      t <- c(t, colnames(annotationRow))\n      tw <- c(tw, strwidth(colnames(annotationRow), units = \"in\"))\n    }\n    longestColn <- which.max(tw)\n    gp <- list(fontSize = ifelse(longestColn <= length(coln),\n      fontSizeCol,\n      fontSize\n    ), ...)\n    colnHeight <- unit(\n      1,\n      \"grobheight\",\n      textGrob(t[longestColn],\n        rot = 90,\n        gp = do.call(gpar, gp)\n      )\n    ) +\n      unit(10, \"bigpts\")\n  } else {\n    colnHeight <- unit(5, \"bigpts\")\n  }\n\n  if (!is.null(rown[1])) {\n    t <- rown\n    tw <- strwidth(t, units = \"in\", cex = fontSizeRow / fontSize)\n    if (annotationNamesCol) {\n      t <- c(t, colnames(annotationCol))\n      tw <- c(tw, strwidth(colnames(annotationCol), units = \"in\"))\n    }\n    longestRown <- which.max(tw)\n    gp <- list(fontSize = ifelse(longestRown <= length(rown),\n      fontSizeRow,\n      fontSize\n    ), ...)\n    rownWidth <- unit(\n      1,\n      \"grobwidth\",\n      textGrob(t[longestRown],\n        gp = do.call(gpar, gp)\n      )\n    ) +\n      unit(10, \"bigpts\")\n  } else {\n    rownWidth <- unit(5, \"bigpts\")\n  }\n\n  gp <- list(fontSize = fontSize, ...)\n  # Legend position\n  if (!.is.na2(legend)) {\n    longestBreak <- which.max(nchar(names(legend)))\n    longestBreak <- unit(\n      1.1,\n      \"grobwidth\",\n      textGrob(as.character(names(legend))[longestBreak],\n        gp = do.call(gpar, gp)\n      )\n    )\n    titleLength <- unit(\n      1.1,\n      \"grobwidth\",\n      textGrob(\"Scale\",\n        gp = gpar(\n          fontface = \"bold\",\n          ...\n        )\n      )\n    )\n    legendWidth <- unit(12, \"bigpts\") + longestBreak * 1.2\n    legendWidth <- max(titleLength, legendWidth)\n  } else {\n    legendWidth <- unit(0, \"bigpts\")\n  }\n\n  # Set main title height\n  if (is.na(main)) {\n    mainHeight <- unit(0, \"npc\")\n  } else {\n    mainHeight <- unit(\n      1.5,\n      \"grobheight\",\n      textGrob(main,\n        gp = gpar(\n          fontSize = 1.3 * fontSize,\n          ...\n        )\n      )\n    )\n  }\n\n  # Column annotations\n  textheight <- unit(fontSize, \"bigpts\")\n\n  if (!.is.na2(annotationCol)) {\n    # Column annotation height\n    annotColHeight <-\n      ncol(annotationCol) *\n      (textheight + unit(2, \"bigpts\")) +\n      unit(2, \"bigpts\")\n\n    # Width of the correponding legend\n    t <- c(as.vector(as.matrix(annotationCol)), colnames(annotationCol))\n    annotColLegendWidth <- unit(\n      1.2,\n      \"grobwidth\",\n      textGrob(t[which.max(nchar(t))],\n        gp = gpar(...)\n      )\n    ) +\n      unit(12, \"bigpts\")\n    if (!annotationLegend) {\n      annotColLegendWidth <- unit(0, \"npc\")\n    }\n  } else {\n    annotColHeight <- unit(0, \"bigpts\")\n    annotColLegendWidth <- unit(0, \"bigpts\")\n  }\n\n  # Row annotations\n  if (!.is.na2(annotationRow)) {\n    # Row annotation width\n    annotRowWidth <- ncol(annotationRow) *\n      (textheight + unit(2, \"bigpts\")) +\n      unit(2, \"bigpts\")\n\n    # Width of the correponding legend\n    t <- c(\n      as.vector(as.matrix(annotationRow)),\n      colnames(annotationRow)\n    )\n    annotRowLegendWidth <- unit(\n      1.2,\n      \"grobwidth\",\n      textGrob(t[which.max(nchar(t))],\n        gp = gpar(...)\n      )\n    ) +\n      unit(\n        12,\n        \"bigpts\"\n      )\n\n    if (!annotationLegend) {\n      annotRowLegendWidth <- unit(0, \"npc\")\n    }\n  } else {\n    annotRowWidth <- unit(0, \"bigpts\")\n    annotRowLegendWidth <- unit(0, \"bigpts\")\n  }\n\n  annotLegendWidth <- max(annotRowLegendWidth, annotColLegendWidth)\n\n  # Tree height\n  treeHeightCol <- unit(treeHeightCol, \"bigpts\") + unit(5, \"bigpts\")\n  treeHeightRow <- unit(treeHeightRow, \"bigpts\") + unit(5, \"bigpts\")\n\n  # Set cell sizes\n  if (is.na(cellWidth)) {\n    matWidth <- unit(1, \"npc\") -\n      rownWidth -\n      legendWidth -\n      treeHeightRow -\n      annotRowWidth -\n      annotLegendWidth\n  } else {\n    matWidth <- unit(cellWidth * ncol, \"bigpts\") +\n      length(gapsCol) *\n        unit(0, \"bigpts\")\n  }\n\n  if (is.na(cellHeight)) {\n    matHeight <- unit(1, \"npc\") -\n      mainHeight -\n      colnHeight -\n      treeHeightCol -\n      annotColHeight\n  } else {\n    matHeight <- unit(cellHeight * nrow, \"bigpts\") +\n      length(gapsRow) *\n        unit(0, \"bigpts\")\n  }\n\n  # Produce gtable\n  gt <- gtable::gtable(\n    widths = unit.c(\n      treeHeightRow,\n      annotRowWidth,\n      matWidth,\n      rownWidth,\n      legendWidth,\n      annotLegendWidth\n    ),\n    heights = unit.c(\n      mainHeight,\n      treeHeightCol,\n      annotColHeight,\n      matHeight,\n      colnHeight\n    ),\n    vp = viewport(gp = do.call(gpar, gp))\n  )\n\n  cw <- convertWidth(matWidth -\n    (length(gapsCol) * unit(0, \"bigpts\")),\n  \"bigpts\",\n  valueOnly = TRUE\n  ) / ncol\n  ch <- convertHeight(matHeight -\n    (length(gapsRow) * unit(0, \"bigpts\")),\n  \"bigpts\",\n  valueOnly = TRUE\n  ) / nrow\n\n  # Return minimal cell dimension in bigpts to decide if borders are drawn\n  mindim <- min(cw, ch)\n\n  res <- list(gt = gt, mindim = mindim)\n\n  return(res)\n}\n\n.findCoordinates <- function(n, gaps, m = seq(1, n)) {\n  if (length(gaps) == 0) {\n    return(list(\n      coord = unit(m / n, \"npc\"),\n      size = unit(1 / n, \"npc\")\n    ))\n  }\n\n  if (max(gaps) > n) {\n    stop(\"Gaps do not match with matrix size\")\n  }\n\n  size <- (1 / n) *\n    (unit(1, \"npc\") - length(gaps) * unit(\"0\", \"bigpts\"))\n\n  gaps2 <- base::apply(vapply(\n    gaps,\n    function(gap, x) {\n      x > gap\n    },\n    integer(n), m\n  ), 1, sum)\n  coord <- m * size + (gaps2 * unit(\"0\", \"bigpts\"))\n\n  return(list(coord = coord, size = size))\n}\n\n.drawDendrogram <- function(hc, gaps, horizontal = TRUE) {\n  h <- hc$height / max(hc$height) / 1.05\n  m <- hc$merge\n  o <- hc$order\n  n <- length(o)\n\n  m[m > 0] <- n + m[m > 0]\n  m[m < 0] <- abs(m[m < 0])\n\n  dist <- matrix(0,\n    nrow = 2 * n - 1,\n    ncol = 2,\n    dimnames = list(NULL, c(\"x\", \"y\"))\n  )\n  dist[seq(1, n), 1] <- 1 / n / 2 + (1 / n) *\n    (match(seq(1, n), o) - 1)\n\n  for (i in seq(1, nrow(m))) {\n    dist[n + i, 1] <- (dist[m[i, 1], 1] + dist[m[i, 2], 1]) / 2\n    dist[n + i, 2] <- h[i]\n  }\n\n  drawConnection <- function(x1, x2, y1, y2, y) {\n    res <- list(\n      x = c(x1, x1, x2, x2),\n      y = c(y1, y, y, y2)\n    )\n\n    return(res)\n  }\n\n  x <- rep(NA, nrow(m) * 4)\n  y <- rep(NA, nrow(m) * 4)\n  id <- rep(seq(nrow(m)), rep(4, nrow(m)))\n\n  for (i in seq(1, nrow(m))) {\n    c <- drawConnection(\n      dist[m[i, 1], 1],\n      dist[m[i, 2], 1],\n      dist[m[i, 1], 2],\n      dist[m[i, 2], 2],\n      h[i]\n    )\n    k <- (i - 1) * 4 + 1\n    x[seq(k, k + 3)] <- c$x\n    y[seq(k, k + 3)] <- c$y\n  }\n\n  x <- .findCoordinates(n, gaps, x * n)$coord\n  y <- unit(y, \"npc\")\n\n  if (!horizontal) {\n    a <- x\n    x <- unit(1, \"npc\") - y\n    y <- unit(1, \"npc\") - a\n  }\n  res <- polylineGrob(x = x, y = y, id = id)\n\n  return(res)\n}\n\n.drawMatrix <- function(matrix,\n                        borderColor,\n                        gapsRows,\n                        gapsCols,\n                        fmat,\n                        fontSizeNumber,\n                        numberColor) {\n  n <- nrow(matrix)\n  m <- ncol(matrix)\n\n  coordX <- .findCoordinates(m, gapsCols)\n  coordY <- .findCoordinates(n, gapsRows)\n\n  x <- coordX$coord -\n    0.5 * coordX$size\n  y <- unit(1, \"npc\") -\n    (coordY$coord - 0.5 * coordY$size)\n\n  coord <- expand.grid(y = y, x = x)\n\n  res <- gList()\n\n  res[[\"rect\"]] <- rectGrob(\n    x = coord$x,\n    y = coord$y,\n    width = coordX$size,\n    height = coordY$size,\n    gp = gpar(fill = matrix, col = borderColor)\n  )\n\n  if (attr(fmat, \"draw\")) {\n    res[[\"text\"]] <- textGrob(\n      x = coord$x,\n      y = coord$y,\n      label = fmat,\n      gp = gpar(col = numberColor, fontSize = fontSizeNumber)\n    )\n  }\n\n  res <- gTree(children = res)\n\n  return(res)\n}\n\n.drawColnames <- function(coln, gaps, ...) {\n  coord <- .findCoordinates(length(coln), gaps)\n  x <- coord$coord - 0.5 * coord$size\n\n  res <- textGrob(coln,\n    x = x,\n    y = unit(1, \"npc\") -\n      unit(3, \"bigpts\"),\n    vjust = 0.5,\n    hjust = 0,\n    rot = 270,\n    gp = gpar(...)\n  )\n\n  return(res)\n}\n\n.drawRownames <- function(rown, gaps, ...) {\n  coord <- .findCoordinates(length(rown), gaps)\n  y <- unit(1, \"npc\") - (coord$coord - 0.5 * coord$size)\n\n  res <- textGrob(rown,\n    x = unit(3, \"bigpts\"),\n    y = y,\n    vjust = 0.5,\n    hjust = 0,\n    gp = gpar(...)\n  )\n\n  return(res)\n}\n\n.drawLegend <- function(color, breaks, legend, ...) {\n  height <- min(unit(1, \"npc\"), unit(150, \"bigpts\"))\n\n  legendPos <- (legend - min(breaks)) / (max(breaks) - min(breaks))\n  legendPos <- height * legendPos + (unit(1, \"npc\") - height)\n\n  breaks <- (breaks - min(breaks)) / (max(breaks) - min(breaks))\n  breaks <- height * breaks + (unit(1, \"npc\") - height)\n\n  h <- breaks[-1] - breaks[-length(breaks)]\n\n  rect <- rectGrob(\n    x = 0,\n    y = breaks[-length(breaks)],\n    width = unit(10, \"bigpts\"),\n    height = h,\n    hjust = 0,\n    vjust = 0,\n    gp = gpar(fill = color, col = \"#FFFFFF00\")\n  )\n\n  text <- textGrob(names(legend),\n    x = unit(14, \"bigpts\"),\n    y = legendPos,\n    hjust = 0,\n    gp = gpar(...)\n  )\n\n  res <- grobTree(rect, text)\n\n  return(res)\n}\n\n.convertAnnotations <- function(annotation, annotationColors) {\n  new <- annotation\n  for (i in seq(ncol(annotation))) {\n    a <- annotation[, i]\n    b <- annotationColors[[colnames(annotation)[i]]]\n    if (is.character(a) | is.factor(a)) {\n      a <- as.character(a)\n\n      if (length(setdiff(setdiff(a, NA), names(b))) > 0) {\n        stop(sprintf(\n          \"Factor levels on variable %s do not match\n                        with annotationColors\",\n          colnames(annotation)[i]\n        ))\n      }\n      new[, i] <- b[a]\n    } else {\n      a <- cut(a, breaks = 100)\n      new[, i] <- colorRampPalette(b)(100)[a]\n    }\n  }\n  return(as.matrix(new))\n}\n\n.drawAnnotations <- function(convertedAnnotations,\n                             borderColor,\n                             gaps,\n                             fontSize,\n                             horizontal) {\n  n <- ncol(convertedAnnotations)\n  m <- nrow(convertedAnnotations)\n\n  coordX <- .findCoordinates(m, gaps)\n\n  x <- coordX$coord - 0.5 * coordX$size\n\n  # y = cumsum(rep(fontSize, n)) - 4 + cumsum(rep(2, n))\n  y <- cumsum(rep(fontSize, n)) +\n    cumsum(rep(2, n)) -\n    fontSize / 2 + 1\n  y <- unit(y, \"bigpts\")\n\n  if (horizontal) {\n    coord <- expand.grid(x = x, y = y)\n    res <- rectGrob(\n      x = coord$x,\n      y = coord$y,\n      width = coordX$size,\n      height = unit(fontSize, \"bigpts\"),\n      gp = gpar(fill = convertedAnnotations, col = borderColor)\n    )\n  } else {\n    a <- x\n    x <- unit(1, \"npc\") - y\n    y <- unit(1, \"npc\") - a\n\n    coord <- expand.grid(y = y, x = x)\n    res <- rectGrob(\n      x = coord$x,\n      y = coord$y,\n      width = unit(fontSize, \"bigpts\"),\n      height = coordX$size,\n      gp = gpar(fill = convertedAnnotations, col = borderColor)\n    )\n  }\n\n  return(res)\n}\n\n.drawAnnotationNames <- function(annotations, fontSize, horizontal) {\n  n <- ncol(annotations)\n\n  x <- unit(3, \"bigpts\")\n\n  y <- cumsum(rep(fontSize, n)) +\n    cumsum(rep(2, n)) -\n    fontSize / 2 + 1\n\n  y <- unit(y, \"bigpts\")\n\n  if (horizontal) {\n    res <- textGrob(colnames(annotations),\n      x = x,\n      y = y,\n      hjust = 0,\n      gp = gpar(fontSize = fontSize, fontface = 2)\n    )\n  } else {\n    a <- x\n    x <- unit(1, \"npc\") - y\n    y <- unit(1, \"npc\") - a\n\n    res <- textGrob(colnames(annotations),\n      x = x,\n      y = y,\n      vjust = 0.5,\n      hjust = 0,\n      rot = 270,\n      gp = gpar(fontSize = fontSize, fontface = 2)\n    )\n  }\n\n  return(res)\n}\n\n.drawAnnotationLegend <- function(annotation,\n                                  annotationColors,\n                                  borderColor,\n                                  ...) {\n  y <- unit(1, \"npc\")\n  textHeight <- unit(\n    1,\n    \"grobheight\",\n    textGrob(\"FGH\", gp = gpar(...))\n  )\n\n  res <- gList()\n  for (i in names(annotation)) {\n    res[[i]] <- textGrob(i,\n      x = 0,\n      y = y,\n      vjust = 1,\n      hjust = 0,\n      gp = gpar(fontface = \"bold\", ...)\n    )\n\n    y <- y - 1.5 * textHeight\n    if (is.character(annotation[[i]]) |\n      is.factor(annotation[[i]])) {\n      n <- length(annotationColors[[i]])\n      yy <- y - (seq(n) - 1) * 2 * textHeight\n\n      res[[paste(i, \"r\")]] <- rectGrob(\n        x = unit(0, \"npc\"),\n        y = yy,\n        hjust = 0,\n        vjust = 1,\n        height = 2 * textHeight,\n        width = 2 * textHeight,\n        gp = gpar(col = borderColor, fill = annotationColors[[i]])\n      )\n\n      res[[paste(i, \"t\")]] <- textGrob(names(annotationColors[[i]]),\n        x = textHeight * 2.4,\n        y = yy - textHeight,\n        hjust = 0,\n        vjust = 0.5,\n        gp = gpar(...)\n      )\n\n      y <- y - n * 2 * textHeight\n    } else {\n      yy <- y - 8 * textHeight + seq(0, 1, 0.25)[-1] * 8 * textHeight\n      h <- 8 * textHeight * 0.25\n\n      res[[paste(i, \"r\")]] <- rectGrob(\n        x = unit(0, \"npc\"),\n        y = yy,\n        hjust = 0,\n        vjust = 1,\n        height = h,\n        width = 2 * textHeight,\n        gp = gpar(\n          col = NA,\n          fill = colorRampPalette(annotationColors[[i]])(4)\n        )\n      )\n      res[[paste(i, \"r2\")]] <- rectGrob(\n        x = unit(0, \"npc\"),\n        y = y,\n        hjust = 0,\n        vjust = 1,\n        height = 8 * textHeight,\n        width = 2 * textHeight,\n        gp = gpar(col = borderColor, fill = NA)\n      )\n\n      txt <- rev(range(grid::grid.pretty(range(annotation[[i]],\n        na.rm = TRUE\n      ))))\n\n      yy <- y - c(1, 7) * textHeight\n      res[[paste(i, \"t\")]] <- textGrob(txt,\n        x = textHeight * 2.4,\n        y = yy,\n        hjust = 0,\n        vjust = 0.5,\n        gp = gpar(...)\n      )\n      y <- y - 8 * textHeight\n    }\n    y <- y - 1.5 * textHeight\n  }\n\n  res <- gTree(children = res)\n\n  return(res)\n}\n\n.drawMain <- function(text, ...) {\n  res <- textGrob(text, gp = gpar(fontface = \"bold\", ...))\n\n  return(res)\n}\n\nvplayout <- function(x, y) {\n  return(viewport(layout.pos.row = x, layout.pos.col = y))\n}\n\n#' @importFrom gtable gtable_height\n#' @importFrom gtable gtable_width\n#' @importFrom gtable gtable_add_grob\n#' @import grDevices\n.heatmapMotor <- function(matrix,\n                          borderColor,\n                          cellWidth,\n                          cellHeight,\n                          treeCol,\n                          treeRow,\n                          treeHeightCol,\n                          treeHeightRow,\n                          fileName,\n                          width,\n                          height,\n                          breaks,\n                          color,\n                          legend,\n                          annotationRow,\n                          annotationCol,\n                          annotationColors,\n                          annotationLegend,\n                          annotationNamesRow,\n                          annotationNamesCol,\n                          main,\n                          fontSize,\n                          fontSizeRow,\n                          fontSizeCol,\n                          fmat,\n                          fontSizeNumber,\n                          numberColor,\n                          gapsCol,\n                          gapsRow,\n                          labelsRow,\n                          labelsCol,\n                          ...) {\n  # Set layout\n  lo <- .lo(\n    coln = labelsCol,\n    rown = labelsRow,\n    nrow = nrow(matrix),\n    ncol = ncol(matrix),\n    cellWidth = cellWidth,\n    cellHeight = cellHeight,\n    treeHeightCol = treeHeightCol,\n    treeHeightRow = treeHeightRow,\n    legend = legend,\n    annotationCol = annotationCol,\n    annotationRow = annotationRow,\n    annotationColors = annotationColors,\n    annotationLegend = annotationLegend,\n    annotationNamesRow = annotationNamesRow,\n    annotationNamesCol = annotationNamesCol,\n    main = main,\n    fontSize = fontSize,\n    fontSizeRow = fontSizeRow,\n    fontSizeCol = fontSizeCol,\n    gapsRow = gapsRow,\n    gapsCol = gapsCol,\n    ...\n  )\n\n  res <- lo$gt\n  mindim <- lo$mindim\n\n  if (!is.na(fileName)) {\n    if (is.na(height)) {\n      height <- convertHeight(gtable::gtable_height(res),\n        \"inches\",\n        valueOnly = TRUE\n      )\n    }\n    if (is.na(width)) {\n      width <- convertWidth(gtable::gtable_width(res),\n        \"inches\",\n        valueOnly = TRUE\n      )\n    }\n\n    # Get file type\n    r <- regexpr(\"\\\\.[a-zA-Z]*$\", fileName)\n    if (r == -1) {\n      stop(\"Improper fileName\")\n    }\n    ending <- substr(\n      fileName,\n      r + 1,\n      r + attr(r, \"match.length\")\n    )\n\n    f <- switch(ending,\n      pdf = function(x, ...) {\n        pdf(x, ...)\n      },\n      png = function(x, ...) {\n        png(x,\n          units = \"in\",\n          res = 300, ...\n        )\n      },\n      jpeg = function(x, ...) {\n        jpeg(x,\n          units = \"in\",\n          res = 300, ...\n        )\n      },\n      jpg = function(x, ...) {\n        jpeg(x,\n          units = \"in\",\n          res = 300, ...\n        )\n      },\n      tiff = function(x, ...) {\n        tiff(x,\n          units = \"in\",\n          res = 300,\n          compression = \"lzw\",\n          ...\n        )\n      },\n      bmp = function(x, ...) {\n        bmp(x,\n          units = \"in\",\n          res = 300, ...\n        )\n      },\n      stop(\"File type should be: pdf, png, bmp, jpg, tiff\")\n    )\n\n    # print(sprintf(\"height:%f width:%f\", height, width))\n\n    # gt = .heatmapMotor(matrix,\n    #     cellWidth = cellWidth,\n    #     cellHeight = cellHeight,\n    #     borderColor = borderColor,\n    #     treeCol = treeCol,\n    #     treeRow = treeRow,\n    #     treeHeightCol = treeHeightCol,\n    #     treeHeightRow = treeHeightRow,\n    #     breaks = breaks,\n    #     color = color,\n    #     legend = legend,\n    #     annotationCol = annotationCol,\n    #     annotationRow = annotationRow,\n    #     annotationColors = annotationColors,\n    #     annotationLegend = annotationLegend,\n    #     fileName = NA, main = main,\n    #     fontSize = fontSize,\n    #     fontSizeRow = fontSizeRow,\n    #     fontSizeCol = fontSizeCol,\n    #     fmat = fmat,\n    #     fontSizeNumber =  fontSizeNumber,\n    #     numberColor = numberColor,\n    #     labelsRow = labelsRow,\n    #     labelsCol = labelsCol,\n    #     gapsCol = gapsCol,\n    #     gapsRow = gapsRow, ...)\n\n    f(fileName, height = height, width = width)\n    gt <- .heatmapMotor(matrix,\n      cellWidth = cellWidth,\n      cellHeight = cellHeight,\n      borderColor = borderColor,\n      treeCol = treeCol,\n      treeRow = treeRow,\n      treeHeightCol = treeHeightCol,\n      treeHeightRow = treeHeightRow,\n      breaks = breaks,\n      color = color,\n      legend = legend,\n      annotationCol = annotationCol,\n      annotationRow = annotationRow,\n      annotationColors = annotationColors,\n      annotationLegend = annotationLegend,\n      annotationNamesRow = annotationNamesRow,\n      annotationNamesCol = annotationNamesCol,\n      fileName = NA,\n      main = main,\n      fontSize = fontSize,\n      fontSizeRow = fontSizeRow,\n      fontSizeCol = fontSizeCol,\n      fmat = fmat,\n      fontSizeNumber = fontSizeNumber,\n      numberColor = numberColor,\n      labelsRow = labelsRow,\n      labelsCol = labelsCol,\n      gapsCol = gapsCol,\n      gapsRow = gapsRow,\n      ...\n    )\n    grid.draw(gt)\n    dev.off()\n\n    return(gt)\n  }\n\n  # Omit border color if cell size is too small\n  if (mindim < 3) {\n    borderColor <- NA\n  }\n\n  # Draw title\n  if (!is.na(main)) {\n    elem <- .drawMain(main, fontSize = 1.3 * fontSize, ...)\n    res <- gtable::gtable_add_grob(res,\n      elem,\n      t = 1,\n      l = 3,\n      name = \"main\",\n      clip = \"off\"\n    )\n  }\n\n  # Draw tree for the columns\n  if (!.is.na2(treeCol) & treeHeightCol != 0) {\n    elem <- .drawDendrogram(treeCol, gapsCol, horizontal = TRUE)\n    res <- gtable::gtable_add_grob(res,\n      elem,\n      t = 2,\n      l = 3,\n      name = \"col_tree\"\n    )\n  }\n\n  # Draw tree for the rows\n  if (!.is.na2(treeRow) & treeHeightRow != 0) {\n    elem <- .drawDendrogram(treeRow, gapsRow, horizontal = FALSE)\n    res <- gtable::gtable_add_grob(res,\n      elem,\n      t = 4,\n      l = 1,\n      name = \"row_tree\"\n    )\n  }\n\n  # Draw matrix\n  elem <- .drawMatrix(\n    matrix,\n    borderColor,\n    gapsRow,\n    gapsCol,\n    fmat,\n    fontSizeNumber,\n    numberColor\n  )\n\n  res <- gtable::gtable_add_grob(res,\n    elem,\n    t = 4,\n    l = 3,\n    clip = \"off\",\n    name = \"matrix\"\n  )\n\n  # Draw colnames\n  if (length(labelsCol) != 0) {\n    pars <- list(labelsCol,\n      gaps = gapsCol,\n      fontSize = fontSizeCol,\n      ...\n    )\n    elem <- do.call(.drawColnames, pars)\n    res <- gtable::gtable_add_grob(res,\n      elem,\n      t = 5,\n      l = 3,\n      clip = \"off\",\n      name = \"col_names\"\n    )\n  }\n\n  # Draw rownames\n  if (length(labelsRow) != 0) {\n    pars <- list(labelsRow,\n      gaps = gapsRow,\n      fontSize = fontSizeRow, ...\n    )\n    elem <- do.call(.drawRownames, pars)\n    res <- gtable::gtable_add_grob(res,\n      elem,\n      t = 4,\n      l = 4,\n      clip = \"off\",\n      name = \"row_names\"\n    )\n  }\n\n  # Draw annotation tracks on cols\n  if (!.is.na2(annotationCol)) {\n    # Draw tracks\n    convertedAnnotation <- .convertAnnotations(\n      annotationCol,\n      annotationColors\n    )\n    elem <- .drawAnnotations(convertedAnnotation,\n      borderColor,\n      gapsCol,\n      fontSize,\n      horizontal = TRUE\n    )\n    res <- gtable::gtable_add_grob(res,\n      elem,\n      t = 3,\n      l = 3,\n      clip = \"off\",\n      name = \"col_annotation\"\n    )\n\n    # Draw names\n    if (annotationNamesCol) {\n      elem <- .drawAnnotationNames(annotationCol,\n        fontSize,\n        horizontal = TRUE\n      )\n      res <- gtable::gtable_add_grob(res,\n        elem,\n        t = 3,\n        l = 4,\n        clip = \"off\",\n        name = \"col_annotation_names\"\n      )\n    }\n  }\n\n  # Draw annotation tracks on rows\n  if (!.is.na2(annotationRow)) {\n    # Draw tracks\n    convertedAnnotation <- .convertAnnotations(\n      annotationRow,\n      annotationColors\n    )\n    elem <- .drawAnnotations(convertedAnnotation,\n      borderColor,\n      gapsRow,\n      fontSize,\n      horizontal = FALSE\n    )\n    res <- gtable::gtable_add_grob(res,\n      elem,\n      t = 4,\n      l = 2,\n      clip = \"off\",\n      name = \"row_annotation\"\n    )\n\n    # Draw names\n    if (annotationNamesRow) {\n      elem <- .drawAnnotationNames(annotationRow,\n        fontSize,\n        horizontal = FALSE\n      )\n      res <- gtable::gtable_add_grob(res,\n        elem,\n        t = 5,\n        l = 2,\n        clip = \"off\",\n        name = \"row_annotation_names\"\n      )\n    }\n  }\n\n  # Draw annotation legend\n  annotation <- c(\n    annotationCol[seq(length(annotationCol), 1)],\n    annotationRow[seq(length(annotationRow), 1)]\n  )\n  annotation <- annotation[unlist(lapply(\n    annotation,\n    function(x) !.is.na2(x)\n  ))]\n\n  if (length(annotation) > 0 & annotationLegend) {\n    elem <- .drawAnnotationLegend(annotation,\n      annotationColors,\n      borderColor,\n      fontSize = fontSize,\n      ...\n    )\n\n    t <- ifelse(is.null(labelsRow), 4, 3)\n    res <- gtable::gtable_add_grob(res,\n      elem,\n      t = t,\n      l = 6,\n      b = 5,\n      clip = \"off\",\n      name = \"annotationLegend\"\n    )\n  }\n\n  # Draw legend\n  if (!.is.na2(legend)) {\n    elem <- .drawLegend(color, breaks, legend, fontSize = fontSize, ...)\n\n    t <- ifelse(is.null(labelsRow), 4, 3)\n    res <- gtable::gtable_add_grob(res,\n      elem,\n      t = t,\n      l = 5,\n      b = 5,\n      clip = \"off\",\n      name = \"legend\"\n    )\n  }\n\n  return(res)\n}\n\n.generateBreaks <- function(x, n, center = FALSE) {\n  if (center) {\n    m <- max(abs(c(\n      min(x, na.rm = TRUE),\n      max(x, na.rm = TRUE)\n    )))\n    res <- seq(-m, m, length.out = n + 1)\n  } else {\n    res <- seq(min(x, na.rm = TRUE),\n      max(x, na.rm = TRUE),\n      length.out = n + 1\n    )\n  }\n\n  return(res)\n}\n\n.scaleVecColours <- function(x, col = rainbow(10), breaks = NA) {\n  return(col[as.numeric(cut(x, breaks = breaks, include.lowest = TRUE))])\n}\n\n.scaleColours <- function(mat,\n                          col = rainbow(10),\n                          breaks = NA) {\n  mat <- as.matrix(mat)\n  return(matrix(\n    .scaleVecColours(as.vector(mat), col = col, breaks = breaks),\n    nrow(mat),\n    ncol(mat),\n    dimnames = list(rownames(mat), colnames(mat))\n  ))\n}\n\n## changed the original clusterMat() in the pheatmap.r\n#' @importFrom scales hue_pal\n.clusterMat <- function(mat, labels, distance, method) {\n  # this funciton is going to change the .clusterMat() in pheatmap\n\n  if (!(method %in% c(\n    \"ward.D\",\n    \"ward.D2\",\n    \"ward\",\n    \"single\",\n    \"complete\",\n    \"average\",\n    \"mcquitty\",\n    \"median\",\n    \"centroid\"\n  ))) {\n    stop(\"clustering method has to one form the list:\n            'ward',\n            'ward.D',\n            'ward.D2',\n            'single',\n            'complete',\n            'average',\n            'mcquitty',\n            'median'\n            or 'centroid'.\")\n  }\n\n  class.label <- unique(labels)\n\n  nGroup <- length(class.label) # [#group]\n  # get \"hclust\" object for each group then wrap them up as group.hclust\n\n  # distance function preparation\n  dis <- function(mat, distance) {\n    if (!(distance[1] %in% c(\n      \"correlation\",\n      \"euclidean\",\n      \"maximum\",\n      \"manhattan\",\n      \"canberra\",\n      \"binary\",\n      \"minkowski\"\n    )) &\n      !methods::is(distance, \"dist\")) {\n      stop(\n        \"distance has to be a dissimilarity structure as produced by\",\n        \" dist or one measure  form the list: 'correlation',\",\n        \" 'euclidean', 'maximum', 'manhattan', 'canberra', 'binary',\",\n        \" 'minkowski'\"\n      )\n    }\n\n    if (distance[1] == \"correlation\") {\n      # this part should be confirmed whether being wrong?\n      # ToDo: how is the correlation matrix converted to a dsit matrix\n      d <- stats::as.dist(1 - stats::cor(t(mat)))\n    } else {\n      d <- stats::dist(mat, method = distance)\n    }\n\n    return(d)\n  }\n\n  # initiate the final returning value: a \"hclust\" object\n  cum.hclust <- list()\n\n  if (nGroup == 1) {\n    # matrix has only 1 group\n    if (length(labels) == 1) {\n      stop(\"only one row/column for the matrix\")\n    }\n    group.hclust <- stats::hclust(dis(\n      mat = mat,\n      distance = distance\n    ),\n    method = method\n    )\n\n    cum.hclust <- group.hclust\n  } else {\n    #  matrix has more than 1 groups\n    group.hclust <- vapply(\n      class.label, function(x) {\n        # get the positions of class label\n        class.pos <- which(labels == x)\n\n        if (length(class.pos) == 1) {\n          # if only 1 row in the group return a manually made \"hclust\"\n          # object\n          sub.hclust <- as.list(seq(7))\n          names(sub.hclust) <- c(\n            \"merge\",\n            \"height\",\n            \"order\",\n            \"labels\",\n            \"method\",\n            \"call\",\n            \"dist.method\"\n          )\n\n          class(sub.hclust) <- \"hclust\"\n          sub.hclust$merge <- matrix(c(0, 0), nrow = 1)\n          sub.hclust$height <- 0\n          sub.hclust$order <- 1\n          return(sub.hclust)\n        } else if (length(class.pos) > 1) {\n          # if >1 rows return the \"hclust\" object\n          return(stats::hclust(dis(\n            mat = mat[class.pos, ],\n            distance = distance\n          ),\n          method = method\n          ))\n        }\n      },\n      list(\n        \"merge\" = 0,\n        \"height\" = 0,\n        \"order\" = 0,\n        \"labels\" = 0,\n        \"method\" = 0,\n        \"call\" = 0,\n        \"dist.method\" = 0\n      )\n    )\n    # the length(group.hclust) is the [#group] == nGroup   ,\n    # group.hclust[[i]] to get each \"hclust\"\n\n    # then modify the \"hclust\" object and get them merged into one\n    # \"hclust\" object\n\n    # initiate the final \"hclust\" object\n    cum.hclust <- group.hclust[, nGroup]\n\n    # merge function preparation\n    mergeHclust <- function(hclust1, hclust2) {\n      # \"hclust\" object modifying function preparation\n      if (hclust1$merge[1, 1] == 0 &\n        hclust2$merge[1, 1] == 0) {\n        # both groups have only 1 row\n        hclustCom <- as.list(seq(7))\n        names(hclustCom) <-\n          c(\n            \"merge\",\n            \"height\",\n            \"order\",\n            \"labels\",\n            \"method\",\n            \"call\",\n            \"dist.method\"\n          )\n\n        class(hclustCom) <- \"hclust\"\n        hclustCom$merge <- matrix(c(-1, -2), nrow = 1)\n        # check for different matrix whether 1 should be good\n        hclustCom$height <- 1\n        hclustCom$order <- c(1, 2)\n        return(hclustCom)\n      } else if (hclust1$merge[1, 1] != 0 &\n        hclust2$merge[1, 1] != 0) {\n        # both group have >1 rows\n\n        # nodes in the hclust1 group, so actually the #rows should\n        # be dim()[1]+1\n        row.1 <- dim(hclust1$merge)[1]\n        # nodes in the hclust2 group\n        row.2 <- dim(hclust2$merge)[1]\n        hclustCom <- list()\n        mer <- hclust2$merge\n        # modify the hclust2$merge matrix\n        hclustCom$merge <- (mer > 0) *\n          (mer + row.1) + (mer < 0) *\n            (mer - row.1 - 1)\n        # combine the merge matrix from the 2 groups\n        hclustCom$merge <- rbind(\n          hclust1$merge,\n          hclustCom$merge\n        )\n        hclustCom$merge <- rbind(\n          hclustCom$merge,\n          c(row.1, row.1 + row.2)\n        )\n        hclustCom$height <- c(hclust1$height, hclust2$height)\n        # check for different matrix whether 1 should be good\n        hclustCom$height <- c(\n          hclustCom$height,\n          max(hclustCom$height) + 1\n        )\n        hclustCom$order <- c(\n          hclust1$order,\n          hclust2$order + row.1 + 1\n        )\n        class(hclustCom) <- \"hclust\"\n      } else {\n        # one group has only 1 row, the other group has >1 rows\n        if (hclust1$merge[1, 1] == 0) {\n          # hclust1 has 1 row , hclust2 has >1 rows\n\n          # nodes in the hclust2 group\n          row.2 <- dim(hclust2$merge)[1]\n          hclustCom <- as.list(seq(7))\n          names(hclustCom) <- c(\n            \"merge\",\n            \"height\",\n            \"order\",\n            \"labels\",\n            \"method\",\n            \"call\",\n            \"dist.method\"\n          )\n          class(hclustCom) <- \"hclust\"\n          mer <- hclust2$merge\n          hclustCom$merge <- (mer > 0) *\n            (mer) +\n            (mer < 0) *\n              (mer - 1)\n          hclustCom$merge <- rbind(\n            hclustCom$merge,\n            c(-1, row.2)\n          )\n          # check for different matrix whether 1 should be good\n          hclustCom$height <- c(\n            hclust2$height,\n            max(hclust2$height) + 1\n          )\n          hclustCom$order <- c(1, hclust2$order + 1)\n        } else if (hclust2$merge[1, 1] == 0) {\n          # the hclust1 has >1 rows , and hclust2 has 1 row\n\n          # nodes in the hclust1 group\n          row.1 <- dim(hclust1$merge)[1]\n          hclustCom <- as.list(seq(1, 7))\n          names(hclustCom) <-\n            c(\n              \"merge\",\n              \"height\",\n              \"order\",\n              \"labels\",\n              \"method\",\n              \"call\",\n              \"dist.method\"\n            )\n          class(hclustCom) <- \"hclust\"\n          hclustCom$merge <- hclust1$merge\n          hclustCom$merge <- rbind(\n            hclustCom$merge,\n            c(row.1, - (row.1 + 2))\n          )\n          hclustCom$height <- c(\n            hclust1$height,\n            max(hclust1$height) + 1\n          )\n          hclustCom$order <- c(\n            hclust1$order,\n            max(hclust1$order) + 1\n          )\n        }\n      }\n\n      return(hclustCom)\n    }\n\n    # merge the \"hclust\" object into the final one \"hclust\" object\n    for (i in seq(nGroup - 1, 1, -1)) {\n      cum.hclust <- mergeHclust(group.hclust[, i], cum.hclust)\n    }\n  }\n\n  cum.hclust$labels <- NULL\n  cum.hclust$call <- NULL\n  cum.hclust$method <- NULL\n  cum.hclust$dist.method <- NULL\n\n  return(cum.hclust)\n}\n\n.scaleRows <- function(x) {\n  m <- base::apply(x, 1, mean, na.rm = TRUE)\n  s <- base::apply(x, 1, stats::sd, na.rm = TRUE)\n  return((x - m) / s)\n}\n\n.scaleMat <- function(mat, scale) {\n  if (!(scale %in% c(\"none\", \"row\", \"column\"))) {\n    stop(\"scale argument shoud take values: 'none', 'row' or 'column'\")\n  }\n  mat <- switch(scale,\n    none = mat,\n    row = .scaleRows(mat),\n    column = t(.scaleRows(t(mat)))\n  )\n  return(mat)\n}\n\n#' @importFrom scales dscale\n#' @importFrom scales brewer_pal\n.generateAnnotationColours <- function(annotation,\n                                       annotationColors,\n                                       drop) {\n  if (.is.na2(annotationColors)) {\n    annotationColors <- list()\n  }\n  count <- 0\n  for (i in seq(length(annotation))) {\n    annotation[[i]] <- annotation[[i]][!is.na(annotation[[i]])]\n    if (is.character(annotation[[i]]) |\n      is.factor(annotation[[i]])) {\n      if (is.factor(annotation[[i]]) & !drop) {\n        count <- count + length(levels(annotation[[i]]))\n      } else {\n        count <- count + length(unique(annotation[[i]]))\n      }\n    }\n  }\n\n  factorColors <- scales::dscale(\n    factor(seq(1, count)),\n    scales::hue_pal(l = 75)\n  )\n\n  contCounter <- 2\n  for (i in seq(length(annotation))) {\n    if (!(names(annotation)[i] %in% names(annotationColors))) {\n      if (is.character(annotation[[i]]) |\n        is.factor(annotation[[i]])) {\n        n <- length(unique(annotation[[i]]))\n\n        if (is.factor(annotation[[i]]) & !drop) {\n          n <- length(levels(annotation[[i]]))\n        }\n\n        ind <- sample(seq_along(factorColors), n)\n        annotationColors[[names(annotation)[i]]] <-\n          factorColors[ind]\n        l <- levels(as.factor(annotation[[i]]))\n        l <- l[l %in% unique(annotation[[i]])]\n        if (is.factor(annotation[[i]]) & !drop) {\n          l <- levels(annotation[[i]])\n        }\n\n        names(annotationColors[[names(annotation)[i]]]) <- l\n        factorColors <- factorColors[-ind]\n      } else {\n        annotationColors[[names(annotation)[i]]] <-\n          scales::brewer_pal(\"seq\", contCounter)(5)[seq(4)]\n        contCounter <- contCounter + 1\n      }\n    }\n  }\n  return(annotationColors)\n}\n\n\n.findGaps <- function(tree, cutreeN) {\n  v <- stats::cutree(tree, cutreeN)[tree$order]\n  gaps <- which((v[-1] - v[-length(v)]) != 0)\n  return(gaps)\n}\n\n.is.na2 <- function(x) {\n  if (is.list(x) | length(x) > 1) {\n    return(FALSE)\n  }\n  if (length(x) == 0) {\n    return(TRUE)\n  }\n\n  return(is.na(x))\n}\n\n.identity2 <- function(x, ...) {\n  return(x)\n}\n\n#' @title A function to draw clustered heatmaps.\n#' @description A function to draw clustered heatmaps where one has better\n#'  control over some graphical parameters such as cell size, etc.\n#'\n#' The function also allows to aggregate the rows using kmeans clustering.\n#'  This is advisable if number of rows is so big that R cannot handle their\n#'  hierarchical clustering anymore, roughly more than 1000. Instead of showing\n#'  all the rows separately one can cluster the rows in advance and show only\n#'  the cluster centers. The number of clusters can be tuned with parameter\n#'  kmeansK.\n#' @param mat numeric matrix of the values to be plotted.\n#' @param color vector of colors used in heatmap.\n#' @param kmeansK the number of kmeans clusters to make, if we want to\n#'  agggregate the rows before drawing heatmap. If NA then the rows are not\n#'  aggregated.\n#' @param breaks Numeric vector. A sequence of numbers that covers the range\n#'  of values in the normalized `counts`. Values in the normalized `matrix` are\n#'  assigned to each bin in `breaks`. Each break is assigned to a unique color\n#'  from `col`. If NULL, then breaks are calculated automatically. Default NULL.\n#' @param borderColor color of cell borders on heatmap, use NA if no border\n#'  should be drawn.\n#' @param cellWidth individual cell width in points. If left as NA, then the\n#'  values depend on the size of plotting window.\n#' @param cellHeight individual cell height in points. If left as NA, then the\n#'  values depend on the size of plotting window.\n#' @param scale character indicating if the values should be centered and\n#'  scaled in either the row direction or the column direction, or none.\n#'  Corresponding values are \\code{\"row\"}, \\code{\"column\"} and \\code{\"none\"}.\n#' @param clusterRows boolean values determining if rows should be clustered or\n#'  \\code{hclust} object,\n#' @param clusterCols boolean values determining if columns should be clustered\n#'  or \\code{hclust} object.\n#' @param clusteringDistanceRows distance measure used in clustering rows.\n#'  Possible values are \\code{\"correlation\"} for Pearson correlation and all\n#'  the distances supported by \\code{\\link{dist}}, such as \\code{\"euclidean\"},\n#'  etc. If the value is none of the above it is assumed that a distance matrix\n#'  is provided.\n#' @param clusteringDistanceCols distance measure used in clustering columns.\n#'  Possible values the same as for clusteringDistanceRows.\n#' @param clusteringMethod clustering method used. Accepts the same values as\n#'  \\code{\\link{hclust}}.\n#' @param clusteringCallback callback function to modify the clustering. Is\n#'  called with two parameters: original \\code{hclust} object and the matrix\n#'  used for clustering. Must return a \\code{hclust} object.\n#' @param cutreeRows number of clusters the rows are divided into, based on the\n#'  hierarchical clustering (using cutree), if rows are not clustered, the\n#'  argument is ignored\n#' @param cutreeCols similar to \\code{cutreeRows}, but for columns\n#' @param treeHeightRow the height of a tree for rows, if these are clustered.\n#'  Default value 50 points.\n#' @param treeHeightCol the height of a tree for columns, if these are\n#'  clustered. Default value 50 points.\n#' @param legend logical to determine if legend should be drawn or not.\n#' @param legendBreaks vector of breakpoints for the legend.\n#' @param legendLabels vector of labels for the \\code{legendBreaks}.\n#' @param annotationRow data frame that specifies the annotations shown on left\n#'  side of the heatmap. Each row defines the features for a specific row. The\n#'  rows in the data and in the annotation are matched using corresponding row\n#'  names. Note that color schemes takes into account if variable is continuous\n#'  or discrete.\n#' @param annotationCol similar to annotationRow, but for columns.\n#' @param annotation deprecated parameter that currently sets the annotationCol\n#'  if it is missing.\n#' @param annotationColors list for specifying annotationRow and\n#'  annotationCol track colors manually. It is  possible to define the colors\n#'  for only some of the features. Check examples for  details.\n#' @param annotationLegend boolean value showing if the legend for annotation\n#'  tracks should be drawn.\n#' @param annotationNamesRow boolean value showing if the names for row\n#'  annotation tracks should be drawn.\n#' @param annotationNamesCol boolean value showing if the names for column\n#'  annotation tracks should be drawn.\n#' @param dropLevels logical to determine if unused levels are also shown in\n#'  the legend.\n#' @param showRownames boolean specifying if column names are be shown.\n#' @param showColnames boolean specifying if column names are be shown.\n#' @param main the title of the plot\n#' @param fontSize base fontsize for the plot\n#' @param fontSizeRow fontsize for rownames (Default: fontsize)\n#' @param fontSizeCol fontsize for colnames (Default: fontsize)\n#' @param displayNumbers logical determining if the numeric values are also\n#'  printed to the cells. If this is a matrix (with same dimensions as original\n#'  matrix), the contents of the matrix are shown instead of original values.\n#' @param numberFormat format strings (C printf style) of the numbers shown in\n#'  cells. For example \"\\code{\\%.2f}\" shows 2 decimal places and \"\\code{\\%.1e}\"\n#'  shows exponential notation (see more in \\code{\\link{sprintf}}).\n#' @param numberColor color of the text\n#' @param fontSizeNumber fontsize of the numbers displayed in cells\n#' @param gapsRow vector of row indices that show shere to put gaps into\n#'  heatmap. Used only if the rows are not clustered. See \\code{cutreeRow}\n#'  to see how to introduce gaps to clustered rows.\n#' @param gapsCol similar to gapsRow, but for columns.\n#' @param labelsRow custom labels for rows that are used instead of rownames.\n#' @param labelsCol similar to labelsRow, but for columns.\n#' @param fileName file path where to save the picture. Filetype is decided by\n#'  the extension in the path. Currently following formats are supported: png,\n#'  pdf, tiff, bmp, jpeg. Even if the plot does not fit into the plotting\n#'  window, the file size is calculated so that the plot would fit there,\n#'  unless specified otherwise.\n#' @param width manual option for determining the output file width in inches.\n#' @param height manual option for determining the output file height in inches.\n#' @param silent do not draw the plot (useful when using the gtable output)\n#' @param rowLabel row cluster labels for semi-clustering\n#' @param colLabel column cluster labels for semi-clustering\n#' @param rowGroupOrder Vector. Specifies the order of feature clusters when\n#'  semisupervised clustering is performed on the \\code{y} labels.\n#' @param colGroupOrder Vector. Specifies the order of cell clusters when\n#'  semisupervised clustering is performed on the \\code{z} labels.\n#' @param \\dots graphical parameters for the text used in plot. Parameters\n#'  passed to \\code{\\link{grid.text}}, see \\code{\\link{gpar}}.\n#' @return\n#' Invisibly a list of components\n#' \\itemize{\n#'     \\item \\code{treeRow} the clustering of rows as \\code{\\link{hclust}}\n#'       object\n#'     \\item \\code{treeCol} the clustering of columns as \\code{\\link{hclust}}\n#'       object\n#'     \\item \\code{kmeans} the kmeans clustering of rows if parameter\n#'       \\code{kmeansK} was specified\n#' }\n#' @author  Raivo Kolde <rkolde@@gmail.com>\n#' #@examples\n#' # Create test matrix\n#' test = matrix(rnorm(200), 20, 10)\n#' test[seq(10), seq(1, 10, 2)] = test[seq(10), seq(1, 10, 2)] + 3\n#' test[seq(11, 20), seq(2, 10, 2)] = test[seq(11, 20), seq(2, 10, 2)] + 2\n#' test[seq(15, 20), seq(2, 10, 2)] = test[seq(15, 20), seq(2, 10, 2)] + 4\n#' colnames(test) = paste(\"Test\", seq(10), sep = \"\")\n#' rownames(test) = paste(\"Gene\", seq(20), sep = \"\")\n#'\n#' # Draw heatmaps\n#' pheatmap(test)\n#' pheatmap(test, kmeansK = 2)\n#' pheatmap(test, scale = \"row\", clusteringDistanceRows = \"correlation\")\n#' pheatmap(test, color = colorRampPalette(c(\"navy\",\n#'     \"white\", \"firebrick3\"))(50))\n#' pheatmap(test, cluster_row = FALSE)\n#' pheatmap(test, legend = FALSE)\n#'\n#' # Show text within cells\n#' pheatmap(test, displayNumbers = TRUE)\n#' pheatmap(test, displayNumbers = TRUE, numberFormat = \"\\%.1e\")\n#' pheatmap(test, displayNumbers = matrix(ifelse(test > 5,\n#'     \"*\", \"\"), nrow(test)))\n#' pheatmap(test, cluster_row = FALSE,\n#'     legendBreaks = seq(-1, 4), legendLabels = c(\"0\",\n#'     \"1e-4\", \"1e-3\", \"1e-2\", \"1e-1\", \"1\"))\n#'\n#' # Fix cell sizes and save to file with correct size\n#' pheatmap(test, cellWidth = 15, cellHeight = 12, main = \"Example heatmap\")\n#' pheatmap(test, cellWidth = 15, cellHeight = 12, fontSize = 8,\n#'     fileName = \"test.pdf\")\n#'\n#' # Generate annotations for rows and columns\n#' annotationCol = data.frame(CellType = factor(rep(c(\"CT1\", \"CT2\"), 5)),\n#'     Time = seq(5))\n#' rownames(annotationCol) = paste(\"Test\", seq(10), sep = \"\")\n#'\n#' annotationRow = data.frame(GeneClass = factor(rep(c(\"Path1\",\n#'    \"Path2\",\n#'    \"Path3\"),\n#'    c(10, 4, 6))))\n#' rownames(annotationRow) = paste(\"Gene\", seq(20), sep = \"\")\n#'\n#' # Display row and color annotations\n#' pheatmap(test, annotationCol = annotationCol)\n#' pheatmap(test, annotationCol = annotationCol, annotationLegend = FALSE)\n#' pheatmap(test, annotationCol = annotationCol, annotationRow = annotationRow)\n#'\n#' # Specify colors\n#' ann_colors = list(Time = c(\"white\", \"firebrick\"),\n#'     CellType = c(CT1 = \"#1B9E77\", CT2 = \"#D95F02\"),\n#'     GeneClass = c(Path1 = \"#7570B3\", Path2 = \"#E7298A\", Path3 = \"#66A61E\"))\n#'\n#' pheatmap(test, annotationCol = annotationCol, annotationColors = ann_colors,\n#'     main = \"Title\")\n#' pheatmap(test, annotationCol = annotationCol, annotationRow = annotationRow,\n#'     annotationColors = ann_colors)\n#' pheatmap(test, annotationCol = annotationCol,\n#'     annotationColors = ann_colors[2])\n#'\n#' # Gaps in heatmaps\n#' pheatmap(test, annotationCol = annotationCol, clusterRows = FALSE,\n#'     gapsRow = c(10, 14))\n#' pheatmap(test, annotationCol = annotationCol, clusterRows = FALSE,\n#'     gapsRow = c(10, 14), cutreeCol = 2)\n#'\n#' # Show custom strings as row/col names\n#' labelsRow = c(\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n#' \"\", \"\", \"Il10\", \"Il15\", \"Il1b\")\n#'\n#' pheatmap(test, annotationCol = annotationCol, labelsRow = labelsRow)\n#'\n#' # Specifying clustering from distance matrix\n#' drows = stats::dist(test, method = \"minkowski\")\n#' dcols = stats::dist(t(test), method = \"minkowski\")\n#' pheatmap(test,\n#'     clusteringDistanceRows = drows,\n#'     clusteringDistanceCols = dcols)\n#'\n#' # Modify ordering of the clusters using clustering callback option\n#' callback = function(hc, mat) {\n#'     sv = svd(t(mat))$v[, 1]\n#'     dend = reorder(as.dendrogram(hc), wts = sv)\n#'     as.hclust(dend)\n#' }\n#'\n#' pheatmap(test, clusteringCallback = callback)\n#' @importFrom grid grid.pretty\n#' @importFrom RColorBrewer brewer.pal\nsemiPheatmap <- function(mat,\n                         color = colorRampPalette(\n                                 rev(brewer.pal(n = 7,\n                                                name = \"RdYlBu\")))(100),\n                         kmeansK = NA,\n                         breaks = NA,\n                         borderColor = \"grey60\",\n                         cellWidth = NA,\n                         cellHeight = NA,\n                         scale = \"none\",\n                         clusterRows = TRUE,\n                         clusterCols = TRUE,\n                         clusteringDistanceRows = \"euclidean\",\n                         clusteringDistanceCols = \"euclidean\",\n                         clusteringMethod = \"complete\",\n                         clusteringCallback = .identity2,\n                         cutreeRows = NA,\n                         cutreeCols = NA,\n                         treeHeightRow = ifelse(clusterRows, 50, 0),\n                         treeHeightCol = ifelse(clusterCols, 50, 0),\n                         legend = TRUE,\n                         legendBreaks = NA,\n                         legendLabels = NA,\n                         annotationRow = NA,\n                         annotationCol = NA,\n                         annotation = NA,\n                         annotationColors = NA,\n                         annotationLegend = TRUE,\n                         annotationNamesRow = TRUE,\n                         annotationNamesCol = TRUE,\n                         dropLevels = TRUE,\n                         showRownames = TRUE,\n                         showColnames = TRUE,\n                         main = NA,\n                         fontSize = 10,\n                         fontSizeRow = fontSize,\n                         fontSizeCol = fontSize,\n                         displayNumbers = FALSE,\n                         numberFormat = \"%.2f\",\n                         numberColor = \"grey30\",\n                         fontSizeNumber = 0.8 * fontSize,\n                         gapsRow = NULL,\n                         gapsCol = NULL,\n                         labelsRow = NULL,\n                         labelsCol = NULL,\n                         fileName = NA,\n                         width = NA,\n                         height = NA,\n                         silent = FALSE,\n                         rowLabel,\n                         colLabel,\n                         rowGroupOrder = NULL,\n                         colGroupOrder = NULL,\n                         ...) {\n\n  # Set labels\n  if (is.null(labelsRow) & !is.null(rownames(mat))) {\n    labelsRow <- rownames(mat)\n  }\n  if (is.null(labelsRow) & is.null(rownames(mat))) {\n    labelsRow <- seq(nrow(mat))\n    rownames(mat) <- seq(nrow(mat))\n  }\n\n  if (is.null(labelsCol) & !is.null(colnames(mat))) {\n    labelsCol <- colnames(mat)\n  }\n  if (is.null(labelsCol) & is.null(colnames(mat))) {\n    labelsCol <- seq(ncol(mat))\n    colnames(mat) <- seq(ncol(mat))\n  }\n\n\n  if (.is.na2(breaks)) {\n    breaks <- .generateBreaks(mat, length(color), center = TRUE)\n  }\n\n\n  # Kmeans\n  if (!is.na(kmeansK)) {\n    # Cluster data\n    km <- stats::kmeans(mat, kmeansK, iter.max = 100)\n    mat <- km$centers\n\n    # Compose rownames\n    t <- table(km$cluster)\n    labelsRow <- sprintf(\"Cluster: %s Size: %d\", names(t), t)\n  } else {\n    km <- NA\n  }\n\n  # Format numbers to be displayed in cells\n  if (is.matrix(displayNumbers) | is.data.frame(displayNumbers)) {\n    if (nrow(displayNumbers) != nrow(mat) |\n      ncol(displayNumbers) != ncol(mat)) {\n      stop(\"If displayNumbers provided as matrix,\n                its dimensions have to match with mat\")\n    }\n\n    displayNumbers <- as.matrix(displayNumbers)\n    fmat <- matrix(as.character(displayNumbers),\n      nrow = nrow(displayNumbers),\n      ncol = ncol(displayNumbers)\n    )\n    fmatDraw <- TRUE\n  } else {\n    if (displayNumbers) {\n      fmat <- matrix(sprintf(numberFormat, mat),\n        nrow = nrow(mat),\n        ncol = ncol(mat)\n      )\n      fmatDraw <- TRUE\n    } else {\n      fmat <- matrix(NA, nrow = nrow(mat), ncol = ncol(mat))\n      fmatDraw <- FALSE\n    }\n  }\n\n  # Do clustering for rows\n  if (isTRUE(clusterRows)) {\n    if (is.null(rowLabel)) {\n      rowLabel <- rep(1, nrow(mat))\n    } else {\n      # o <- order(rowLabel)\n      o <- .Order(labels = rowLabel, groupOrder = rowGroupOrder)\n      mat <- mat[o, , drop = FALSE]\n      fmat <- fmat[o, , drop = FALSE]\n      rowLabel <- rowLabel[o]\n      if (!is.null(annotationRow) && !is.null(ncol(annotationRow))) {\n        annotationRow <- annotationRow[o, , drop = FALSE]\n      }\n    }\n\n    treeRow <- .clusterMat(mat,\n      rowLabel,\n      distance = clusteringDistanceRows,\n      method = clusteringMethod\n    )\n    treeRow <- clusteringCallback(treeRow, mat)\n    mat <- mat[treeRow$order, , drop = FALSE]\n    fmat <- fmat[treeRow$order, , drop = FALSE]\n    labelsRow <- labelsRow[treeRow$order]\n    if (!is.null(annotationRow) && !is.null(ncol(annotationRow))) {\n      annotationRow <- annotationRow[treeRow$order, , drop = FALSE]\n    }\n    if (!is.na(cutreeRows)) {\n      gapsRow <- .findGaps(treeRow, cutreeRows)\n    } else {\n      gapsRow <- NULL\n    }\n  } else {\n    treeRow <- NA\n    treeHeightRow <- 0\n  }\n\n\n  ## Do clustering for columns\n  if (isTRUE(clusterCols)) {\n    if (is.null(colLabel)) {\n      colLabel <- rep(1, ncol(mat))\n    } else {\n      # o <- order(colLabel)\n      o <- .Order(labels = colLabel, groupOrder = colGroupOrder)\n      mat <- mat[, o, drop = FALSE]\n      fmat <- fmat[, o, drop = FALSE]\n      colLabel <- colLabel[o]\n      if (!is.null(annotationCol) && !is.null(ncol(annotationCol))) {\n        annotationCol <- annotationCol[o, , drop = FALSE]\n      }\n    }\n\n    treeCol <- .clusterMat(t(mat),\n      colLabel,\n      distance = clusteringDistanceCols,\n      method = clusteringMethod\n    )\n    treeCol <- clusteringCallback(treeCol, t(mat))\n\n    mat <- mat[, treeCol$order, drop = FALSE]\n    fmat <- fmat[, treeCol$order, drop = FALSE]\n    labelsCol <- labelsCol[treeCol$order]\n\n    if (!is.null(annotationCol) && !is.null(ncol(annotationCol))) {\n      annotationCol <- annotationCol[treeCol$order, , drop = FALSE]\n    }\n    if (!is.na(cutreeCols)) {\n      gapsCol <- .findGaps(treeCol, cutreeCols)\n    } else {\n      gapsCol <- NULL\n    }\n  } else {\n    treeCol <- NA\n    treeHeightCol <- 0\n  }\n\n  attr(fmat, \"draw\") <- fmatDraw\n\n  # Colors and scales\n  if (!.is.na2(legendBreaks) & !.is.na2(legendLabels)) {\n    if (length(legendBreaks) != length(legendLabels)) {\n      stop(\"Lengths of legendBreaks and legendLabels must be the same\")\n    }\n  }\n\n\n  if (.is.na2(breaks)) {\n    breaks <- .generateBreaks(as.vector(mat), length(color))\n  }\n  if (legend & .is.na2(legendBreaks)) {\n    legend <- grid::grid.pretty(range(as.vector(breaks)))\n    names(legend) <- legend\n  }\n  else if (legend & !.is.na2(legendBreaks)) {\n    legend <- legendBreaks[legendBreaks >= min(breaks) &\n      legendBreaks <= max(breaks)]\n\n    if (!.is.na2(legendLabels)) {\n      legendLabels <- legendLabels[legendBreaks >= min(breaks) &\n        legendBreaks <= max(breaks)]\n      names(legend) <- legendLabels\n    } else {\n      names(legend) <- legend\n    }\n  } else {\n    legend <- NA\n  }\n  mat <- .scaleColours(mat, col = color, breaks = breaks)\n\n  annotation <- c(annotationRow, annotationCol)\n  annotation <- annotation[unlist(lapply(\n    annotation,\n    function(x) !.is.na2(x)\n  ))]\n  if (length(annotation) != 0) {\n    annotationColors <- .generateAnnotationColours(annotation,\n      annotationColors,\n      drop = dropLevels\n    )\n  } else {\n    annotationColors <- NA\n  }\n\n  labelsRow <- rownames(mat)\n  labelsCol <- colnames(mat)\n\n  if (!showRownames) {\n    labelsRow <- NULL\n  }\n\n  if (!showColnames) {\n    labelsCol <- NULL\n  }\n\n  # Draw heatmap\n  gt <- .heatmapMotor(mat,\n    borderColor = borderColor,\n    cellWidth = cellWidth,\n    cellHeight = cellHeight,\n    treeHeightCol = treeHeightCol,\n    treeHeightRow = treeHeightRow,\n    treeCol = treeCol,\n    treeRow = treeRow,\n    fileName = fileName,\n    width = width,\n    height = height,\n    breaks = breaks,\n    color = color,\n    legend = legend,\n    annotationRow = annotationRow,\n    annotationCol = annotationCol,\n    annotationColors = annotationColors,\n    annotationLegend = annotationLegend,\n    annotationNamesRow = annotationNamesRow,\n    annotationNamesCol = annotationNamesCol,\n    main = main,\n    fontSize = fontSize,\n    fontSizeRow = fontSizeRow,\n    fontSizeCol = fontSizeCol,\n    fmat = fmat,\n    fontSizeNumber = fontSizeNumber,\n    numberColor = numberColor,\n    gapsRow = gapsRow,\n    gapsCol = gapsCol,\n    labelsRow = labelsRow,\n    labelsCol = labelsCol,\n    ...\n  )\n\n  return(gt)\n}\n\n\n\n\n# order function that order the row/column labels\n# based on the order of the group priority\n# return value is a vector of the ordered index\n# labels is a vector of any non-zero length\n# groupOrder, a column named dataframe/matrix\n# with the \"groupName\" column storing the group\n# name and the \"groupIndex\" storing the group priority\n.Order <- function(labels, groupOrder = NULL) {\n  if (is.null(groupOrder)) {\n    return(order(labels))\n  } else {\n    # Throw error is length(unique(labels)) != nrow(groupOrder)\n    olabels <- plyr::mapvalues(\n      x = labels,\n      from = groupOrder[, \"groupName\"],\n      to = groupOrder[, \"groupIndex\"]\n    )\n    # Make sure the olabels is integer for order() function\n    olabels <- as.integer(olabels)\n    return(order(olabels))\n  }\n}\n"
  },
  {
    "path": "R/simulateCells.R",
    "content": "#' @title Simulate count data from the celda generative models.\n#' @description This function generates a \\linkS4class{SingleCellExperiment}\n#'  containing a simulated counts matrix in the \\code{\"counts\"} assay slot, as\n#'  well as various parameters used in the simulation which can be\n#'  useful for running celda and are stored in \\code{metadata} slot. The user\n#'  must provide the desired model (one of celda_C, celda_G, celda_CG) as well\n#'  as any desired tuning parameters for those model's simulation functions\n#'  as detailed below.\n#' @param model Character. Options available in \\code{celda::availableModels}.\n#'  Can be one of \\code{\"celda_CG\"}, \\code{\"celda_C\"}, or \\code{\"celda_G\"}.\n#'  Default \\code{\"celda_CG\"}.\n#' @param S Integer. Number of samples to simulate. Default 5. Only used if\n#'  \\code{model} is one of \\code{\"celda_CG\"} or \\code{\"celda_C\"}.\n#' @param CRange Integer vector. A vector of length 2 that specifies the lower\n#'  and upper bounds of the number of cells to be generated in each sample.\n#'  Default c(50, 100). Only used if\n#'  \\code{model} is one of \\code{\"celda_CG\"} or \\code{\"celda_C\"}.\n#' @param NRange Integer vector. A vector of length 2 that specifies the lower\n#'  and upper bounds of the number of counts generated for each cell. Default\n#'  c(500, 1000).\n#' @param C Integer. Number of cells to simulate. Default 100. Only used if\n#'  \\code{model} is \\code{\"celda_G\"}.\n#' @param G Integer. The total number of features to be simulated. Default 100.\n#' @param K Integer. Number of cell populations. Default 5. Only used if\n#'  \\code{model} is one of \\code{\"celda_CG\"} or \\code{\"celda_C\"}.\n#' @param L Integer. Number of feature modules. Default 10. Only used if\n#'  \\code{model} is one of \\code{\"celda_CG\"} or \\code{\"celda_G\"}.\n#' @param alpha Numeric. Concentration parameter for Theta. Adds a pseudocount\n#'  to each cell population in each sample. Default 1. Only used if\n#'  \\code{model} is one of \\code{\"celda_CG\"} or \\code{\"celda_C\"}.\n#' @param beta Numeric. Concentration parameter for Phi. Adds a pseudocount to\n#'  each feature module in each cell population. Default 1.\n#' @param gamma Numeric. Concentration parameter for Eta. Adds a pseudocount to\n#'  the number of features in each module. Default 5. Only used if\n#'  \\code{model} is one of \\code{\"celda_CG\"} or \\code{\"celda_G\"}.\n#' @param delta Numeric. Concentration parameter for Psi. Adds a pseudocount to\n#'  each feature in each module. Default 1. Only used if\n#'  \\code{model} is one of \\code{\"celda_CG\"} or \\code{\"celda_G\"}.\n#' @param seed Integer. Passed to \\link[withr]{with_seed}. For reproducibility,\n#'  a default value of 12345 is used. If NULL, no calls to\n#'  \\link[withr]{with_seed} are made.\n#' @return A \\link[SingleCellExperiment]{SingleCellExperiment} object with\n#'  simulated count matrix stored in the \"counts\" assay slot. Function\n#'  parameter settings are stored in the \\link{metadata} slot. For\n#'  \\code{\"celda_CG\"} and \\code{\"celda_C\"} models,\n#'  columns \\code{celda_sample_label} and \\code{celda_cell_cluster} in\n#'  \\link{colData} contain simulated sample labels and\n#'  cell population clusters. For \\code{\"celda_CG\"} and \\code{\"celda_G\"}\n#'  models, column \\code{celda_feature_module} in\n#'  \\link{rowData} contains simulated gene modules.\n#' @examples\n#' sce <- simulateCells()\n#' @export\nsimulateCells <- function(\n    model = c(\"celda_CG\", \"celda_C\", \"celda_G\"),\n    S = 5,\n    CRange = c(50, 100),\n    NRange = c(500, 1000),\n    C = 100,\n    G = 100,\n    K = 5,\n    L = 10,\n    alpha = 1,\n    beta = 1,\n    gamma = 5,\n    delta = 1,\n    seed = 12345) {\n\n    model <- match.arg(model)\n\n    if (model == \"celda_C\") {\n        sce <- .simulateCellsMaincelda_C(model = model,\n            S = S,\n            CRange = CRange,\n            NRange = NRange,\n            G = G,\n            K = K,\n            alpha = alpha,\n            beta = beta,\n            seed = seed)\n    } else if (model == \"celda_CG\") {\n        sce <- .simulateCellsMaincelda_CG(\n            model = model,\n            S = S,\n            CRange = CRange,\n            NRange = NRange,\n            G = G,\n            K = K,\n            L = L,\n            alpha = alpha,\n            beta = beta,\n            gamma = gamma,\n            delta = delta,\n            seed = seed)\n    } else if (model == \"celda_G\") {\n        sce <- .simulateCellsMaincelda_G(\n            model = model,\n            C = C,\n            L = L,\n            NRange = NRange,\n            G = G,\n            beta = beta,\n            delta = delta,\n            gamma = gamma,\n            seed = seed)\n    } else {\n        stop(\"'model' must be one of 'celda_C', 'celda_G', or 'celda_CG'\")\n    }\n\n    return(sce)\n}\n\n\n.simulateCellsMaincelda_C <- function(model,\n    S,\n    CRange,\n    NRange,\n    G,\n    K,\n    alpha,\n    beta,\n    seed) {\n\n    if (is.null(seed)) {\n        res <- .simulateCellscelda_C(model = model,\n            S = S,\n            CRange = CRange,\n            NRange = NRange,\n            G = G,\n            K = K,\n            alpha = alpha,\n            beta = beta)\n    } else {\n        res <- with_seed(seed,\n            .simulateCellscelda_C(model = model,\n                S = S,\n                CRange = CRange,\n                NRange = NRange,\n                G = G,\n                K = K,\n                alpha = alpha,\n                beta = beta))\n    }\n\n    sce <- .createSCEsimulateCellsCeldaC(res, seed)\n\n    return(sce)\n}\n\n\n.simulateCellscelda_C <- function(model,\n    S = 5,\n    CRange = c(50, 100),\n    NRange = c(500, 1000),\n    G = 100,\n    K = 5,\n    alpha = 1,\n    beta = 1) {\n\n    phi <- .rdirichlet(K, rep(beta, G))\n    theta <- .rdirichlet(S, rep(alpha, K))\n\n    ## Select the number of cells per sample\n    nC <- sample(seq(CRange[1], CRange[2]), size = S, replace = TRUE)\n    cellSampleLabel <- rep(seq(S), nC)\n\n    ## Select state of the cells\n    z <- unlist(lapply(seq(S), function(i) {\n        sample(seq(K),\n            size = nC[i],\n            prob = theta[i, ],\n            replace = TRUE)\n    }))\n\n    ## Select number of transcripts per cell\n    nN <- sample(seq(NRange[1], NRange[2]),\n        size = length(cellSampleLabel),\n        replace = TRUE)\n\n    ## Select transcript distribution for each cell\n    cellCounts <- vapply(seq(length(cellSampleLabel)), function(i) {\n        stats::rmultinom(1, size = nN[i], prob = phi[z[i], ])\n    }, integer(G))\n\n    rownames(cellCounts) <- paste0(\"Gene_\", seq(nrow(cellCounts)))\n    colnames(cellCounts) <- paste0(\"Cell_\", seq(ncol(cellCounts)))\n    cellSampleLabel <- paste0(\"Sample_\", seq(S))[cellSampleLabel]\n    cellSampleLabel <- factor(cellSampleLabel,\n        levels = paste0(\"Sample_\", seq(S)))\n\n    ## Peform reordering on final Z and Y assigments:\n    cellCounts <- .processCounts(cellCounts)\n    names <- list(row = rownames(cellCounts),\n        column = colnames(cellCounts),\n        sample = unique(cellSampleLabel))\n    countChecksum <- .createCountChecksum(cellCounts)\n    result <- methods::new(\"celda_C\",\n        clusters = list(z = z),\n        params = list(K = as.integer(K),\n            alpha = alpha,\n            beta = beta,\n            countChecksum = countChecksum),\n        sampleLabel = cellSampleLabel,\n        names = names)\n    class(result) <- \"celda_C\"\n    result <- .reorderCeldaC(counts = cellCounts, res = result)\n\n    return(list(z = celdaClusters(result)$z,\n        counts = cellCounts,\n        sampleLabel = cellSampleLabel,\n        G = G,\n        K = K,\n        alpha = alpha,\n        beta = beta,\n        CRange = CRange,\n        NRange = NRange,\n        S = S))\n}\n\n\n.createSCEsimulateCellsCeldaC <- function(simList, seed) {\n    sce <- SingleCellExperiment::SingleCellExperiment(\n        assays = list(counts = simList$counts))\n\n    # add metadata\n    S4Vectors::metadata(sce)[[\"celda_simulateCellscelda_C\"]] <- list(\n        model = \"celda_C\",\n        sampleLevels = as.character(unique(simList$sampleLabel)),\n        cellClusterLevels = sort(unique(simList$z)),\n        S = simList$S,\n        CRange = simList$CRange,\n        NRange = simList$NRange,\n        G = simList$G,\n        K = simList$K,\n        alpha = simList$alpha,\n        beta = simList$beta,\n        seed = seed)\n\n    SummarizedExperiment::rowData(sce)[\"rownames\"] <- rownames(simList$counts)\n    SummarizedExperiment::colData(sce)[\"colnames\"] <-\n        colnames(simList$counts)\n    SummarizedExperiment::colData(sce)[\"celda_sample_label\"] <-\n        as.factor(simList$sampleLabel)\n    SummarizedExperiment::colData(sce)[\"celda_cell_cluster\"] <-\n        as.factor(simList$z)\n\n    return(sce)\n}\n\n\n.simulateCellsMaincelda_CG <- function(model,\n    S,\n    CRange,\n    NRange,\n    G,\n    K,\n    L,\n    alpha,\n    beta,\n    gamma,\n    delta,\n    seed) {\n\n    if (is.null(seed)) {\n        res <- .simulateCellscelda_CG(\n            model = model,\n            S = S,\n            CRange = CRange,\n            NRange = NRange,\n            G = G,\n            K = K,\n            L = L,\n            alpha = alpha,\n            beta = beta,\n            gamma = gamma,\n            delta = delta)\n    } else {\n        with_seed(\n            seed,\n            res <- .simulateCellscelda_CG(\n                model = model,\n                S = S,\n                CRange = CRange,\n                NRange = NRange,\n                G = G,\n                K = K,\n                L = L,\n                alpha = alpha,\n                beta = beta,\n                gamma = gamma,\n                delta = delta\n            )\n        )\n    }\n\n    sce <- .createSCEsimulateCellsCeldaCG(res, seed)\n\n    return(sce)\n}\n\n\n.simulateCellscelda_CG <- function(model = model,\n    S = S,\n    CRange = CRange,\n    NRange = NRange,\n    G = G,\n    K = K,\n    L = L,\n    alpha = alpha,\n    beta = beta,\n    gamma = gamma,\n    delta = delta) {\n\n    ## Number of cells per sample\n    nC <- sample(seq(CRange[1], CRange[2]), size = S, replace = TRUE)\n    nCSum <- sum(nC)\n    cellSampleLabel <- rep(seq(S), nC)\n\n    ## Select number of transcripts per cell\n    nN <- sample(seq(NRange[1], NRange[2]),\n        size = length(cellSampleLabel),\n        replace = TRUE\n    )\n\n    ## Generate cell population distribution for each sample\n    theta <- t(.rdirichlet(S, rep(alpha, K)))\n\n    ## Assign cells to cellular subpopulations\n    z <- unlist(lapply(seq(S), function(i) {\n        sample(seq(K),\n            size = nC[i],\n            prob = theta[, i],\n            replace = TRUE\n        )\n    }))\n\n    ## Generate transcriptional state distribution for each cell subpopulation\n    phi <- .rdirichlet(K, rep(beta, L))\n\n    ## Assign genes to gene modules\n    eta <- .rdirichlet(1, rep(gamma, L))\n    y <- sample(seq(L),\n        size = G,\n        prob = eta,\n        replace = TRUE\n    )\n    if (length(table(y)) < L) {\n        warning(\n            \"Some gene modules did not receive any genes after sampling.\",\n            \" Try increasing G and/or making gamma larger.\"\n        )\n        L <- length(table(y))\n        y <- as.integer(as.factor(y))\n    }\n\n    psi <- matrix(0, nrow = G, ncol = L)\n    for (i in seq(L)) {\n        ind <- y == i\n        psi[ind, i] <- .rdirichlet(1, rep(delta, sum(ind)))\n    }\n\n    ## Select transcript distribution for each cell\n    cellCounts <- matrix(0, nrow = G, ncol = nCSum)\n    for (i in seq(nCSum)) {\n        transcriptionalStateDist <- as.integer(stats::rmultinom(1,\n            size = nN[i], prob = phi[z[i], ]\n        ))\n        for (j in seq(L)) {\n            if (transcriptionalStateDist[j] > 0) {\n                cellCounts[, i] <- cellCounts[, i] + stats::rmultinom(1,\n                    size = transcriptionalStateDist[j], prob = psi[, j]\n                )\n            }\n        }\n    }\n\n    ## Ensure that there are no all-0 rows in the counts matrix, which violates\n    ## a celda modeling\n    ## constraint (columns are guarnteed at least one count):\n    zeroRowIdx <- which(rowSums(cellCounts) == 0)\n    if (length(zeroRowIdx > 0)) {\n        cellCounts <- cellCounts[-zeroRowIdx, ]\n        y <- y[-zeroRowIdx]\n    }\n\n    ## Assign gene/cell/sample names\n    rownames(cellCounts) <- paste0(\"Gene_\", seq(nrow(cellCounts)))\n    colnames(cellCounts) <- paste0(\"Cell_\", seq(ncol(cellCounts)))\n    cellSampleLabel <- paste0(\"Sample_\", seq(S))[cellSampleLabel]\n    cellSampleLabel <- factor(cellSampleLabel,\n        levels = paste0(\"Sample_\", seq(S))\n    )\n\n    ## Peform reordering on final Z and Y assigments:\n    cellCounts <- .processCounts(cellCounts)\n    names <- list(\n        row = rownames(cellCounts),\n        column = colnames(cellCounts),\n        sample = unique(cellSampleLabel)\n    )\n    countChecksum <- .createCountChecksum(cellCounts)\n    result <- methods::new(\"celda_CG\",\n        clusters = list(z = z, y = y),\n        params = list(\n            K = as.integer(K),\n            L = as.integer(L),\n            alpha = alpha,\n            beta = beta,\n            delta = delta,\n            gamma = gamma,\n            countChecksum = countChecksum\n        ),\n        sampleLabel = cellSampleLabel,\n        names = names\n    )\n\n    result <- .reorderCeldaCG(counts = cellCounts, res = result)\n\n    return(list(\n        z = celdaClusters(result)$z,\n        y = celdaClusters(result)$y,\n        counts = cellCounts,\n        sampleLabel = cellSampleLabel,\n        G = G,\n        K = K,\n        L = L,\n        CRange = CRange,\n        NRange = NRange,\n        S = S,\n        alpha = alpha,\n        beta = beta,\n        gamma = gamma,\n        delta = delta\n    ))\n}\n\n\n.createSCEsimulateCellsCeldaCG <- function(simList, seed) {\n    sce <- SingleCellExperiment::SingleCellExperiment(\n        assays = list(counts = simList$counts))\n\n    # add metadata\n    S4Vectors::metadata(sce)[[\"celda_simulateCellscelda_CG\"]] <- list(\n        model = \"celda_CG\",\n        sampleLevels = as.character(unique(simList$sampleLabel)),\n        cellClusterLevels = sort(unique(simList$z)),\n        featureModuleLevels = sort(unique(simList$y)),\n        S = simList$S,\n        CRange = simList$CRange,\n        NRange = simList$NRange,\n        G = simList$G,\n        K = simList$K,\n        L = simList$L,\n        alpha = simList$alpha,\n        beta = simList$beta,\n        gamma = simList$gamma,\n        delta = simList$delta,\n        seed = seed)\n\n    SummarizedExperiment::rowData(sce)[\"rownames\"] <- rownames(simList$counts)\n    SummarizedExperiment::colData(sce)[\"colnames\"] <-\n        colnames(simList$counts)\n    SummarizedExperiment::colData(sce)[\"celda_sample_label\"] <-\n        as.factor(simList$sampleLabel)\n    SummarizedExperiment::colData(sce)[\"celda_cell_cluster\"] <-\n        as.factor(simList$z)\n    SummarizedExperiment::rowData(sce)[\"celda_feature_module\"] <-\n        as.factor(simList$y)\n\n    return(sce)\n}\n\n\n.simulateCellsMaincelda_G <- function(model,\n    C,\n    L,\n    NRange,\n    G,\n    beta,\n    delta,\n    gamma,\n    seed) {\n\n    if (is.null(seed)) {\n        res <- .simulateCellscelda_G(\n            model = model,\n            C = C,\n            L = L,\n            NRange = NRange,\n            G = G,\n            beta = beta,\n            delta = delta,\n            gamma = gamma)\n    } else {\n        with_seed(\n            seed,\n            res <- .simulateCellscelda_G(\n                model = model,\n                C = C,\n                L = L,\n                NRange = NRange,\n                G = G,\n                beta = beta,\n                delta = delta,\n                gamma = gamma)\n        )\n    }\n\n    sce <- .createSCEsimulateCellsCeldaG(res, seed)\n\n    return(sce)\n}\n\n\n.simulateCellscelda_G <- function(model,\n    C = 100,\n    L = 10,\n    NRange = c(500, 1000),\n    G = 100,\n    beta = 1,\n    gamma = 5,\n    delta = 1,\n    ...) {\n\n    eta <- .rdirichlet(1, rep(gamma, L))\n\n    y <- sample(seq(L),\n        size = G,\n        prob = eta,\n        replace = TRUE\n    )\n    if (length(table(y)) < L) {\n        stop(\n            \"Some states did not receive any features after sampling. Try\",\n            \" increasing G and/or setting gamma > 1.\"\n        )\n    }\n\n    psi <- matrix(0, nrow = G, ncol = L)\n    for (i in seq(L)) {\n        ind <- y == i\n        psi[ind, i] <- .rdirichlet(1, rep(delta, sum(ind)))\n    }\n\n    phi <- .rdirichlet(C, rep(beta, L))\n\n    ## Select number of transcripts per cell\n    nN <- sample(seq(NRange[1], NRange[2]), size = C, replace = TRUE)\n\n    ## Select transcript distribution for each cell\n    cellCounts <- matrix(0, nrow = G, ncol = C)\n    for (i in seq(C)) {\n        cellDist <- stats::rmultinom(1, size = nN[i], prob = phi[i, ])\n        for (j in seq(L)) {\n            cellCounts[, i] <- cellCounts[, i] + stats::rmultinom(1,\n                size = cellDist[j], prob = psi[, j]\n            )\n        }\n    }\n\n    ## Ensure that there are no all-0 rows in the counts matrix, which violates\n    ## a celda modeling\n    ## constraint (columns are guarnteed at least one count):\n    zeroRowIdx <- which(rowSums(cellCounts) == 0)\n    if (length(zeroRowIdx > 0)) {\n        cellCounts <- cellCounts[-zeroRowIdx, ]\n        y <- y[-zeroRowIdx]\n    }\n\n    rownames(cellCounts) <- paste0(\"Gene_\", seq(nrow(cellCounts)))\n    colnames(cellCounts) <- paste0(\"Cell_\", seq(ncol(cellCounts)))\n\n    ## Peform reordering on final Z and Y assigments:\n    cellCounts <- .processCounts(cellCounts)\n    names <- list(\n        row = rownames(cellCounts),\n        column = colnames(cellCounts)\n    )\n    countChecksum <- .createCountChecksum(cellCounts)\n    result <- methods::new(\"celda_G\",\n        clusters = list(y = y),\n        params = list(\n            L = as.integer(L),\n            beta = beta,\n            delta = delta,\n            gamma = gamma,\n            countChecksum = countChecksum\n        ),\n        names = names\n    )\n    result <- .reorderCeldaG(counts = cellCounts, res = result)\n\n    return(list(\n        y = celdaClusters(result)$y,\n        counts = cellCounts,\n        C = C,\n        G = G,\n        L = L,\n        NRange = NRange,\n        beta = beta,\n        delta = delta,\n        gamma = gamma\n    ))\n}\n\n\n.createSCEsimulateCellsCeldaG <- function(simList, seed) {\n    sce <- SingleCellExperiment::SingleCellExperiment(\n        assays = list(counts = simList$counts))\n\n    # add metadata\n    S4Vectors::metadata(sce)[[\"celda_simulateCellscelda_G\"]] <- list(\n        model = \"celda_G\",\n        featureModuleLevels = sort(unique(simList$y)),\n        NRange = simList$NRange,\n        C = simList$C,\n        G = simList$G,\n        L = simList$L,\n        beta = simList$beta,\n        gamma = simList$gamma,\n        delta = simList$delta,\n        seed = seed)\n\n    SummarizedExperiment::rowData(sce)[\"rownames\"] <- rownames(simList$counts)\n    SummarizedExperiment::colData(sce)[\"colnames\"] <-\n        colnames(simList$counts)\n    SummarizedExperiment::rowData(sce)[\"celda_feature_module\"] <-\n        as.factor(simList$y)\n\n    return(sce)\n}\n"
  },
  {
    "path": "R/splitModule.R",
    "content": "#' @title Split celda feature module\n#' @description Manually select a celda feature module to split into 2 or\n#'  more modules. Useful for splitting up modules that show divergent\n#'  expression of features in multiple cell clusters.\n#' @param x A \\linkS4class{SingleCellExperiment} object\n#'  with the matrix located in the assay slot under \\code{useAssay}.\n#'  Rows represent features and columns represent cells.\n#' @param module Integer. The module to be split.\n#' @param useAssay A string specifying which \\link{assay}\n#'  slot to use for \\code{x}. Default \"counts\".\n#' @param altExpName The name for the \\link{altExp} slot\n#'  to use. Default \\code{\"featureSubset\"}.\n#' @param n Integer. How many modules should \\code{module} be split into.\n#'  Default \\code{2}.\n#' @param seed Integer. Passed to \\link[withr]{with_seed}. For reproducibility,\n#'  a default value of 12345 is used. If NULL, no calls to\n#'  \\link[withr]{with_seed} are made.\n#' @return A updated \\linkS4class{SingleCellExperiment} object with new\n#'  feature modules stored in column \\code{celda_feature_module} in\n#'  \\code{\\link{rowData}(x)}.\n#' @export\nsetGeneric(\"splitModule\",\n    function(x,\n        module,             \n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        n = 2,\n        seed = 12345) {\n\n        standardGeneric(\"splitModule\")\n    })\n\n\n#' @rdname splitModule\n#' @examples\n#' data(sceCeldaCG)\n#' # Split module 5 into 2 new modules.\n#' sce <- splitModule(sceCeldaCG, module = 5)\n#' @export\nsetMethod(\"splitModule\", signature(x = \"SingleCellExperiment\"),\n    function(x,\n        module,             \n        useAssay = \"counts\",\n        altExpName = \"featureSubset\",\n        n = 2,\n        seed = 12345) {\n\n        altExp <- SingleCellExperiment::altExp(x, altExpName)\n\n        if (!module %in% celdaModules(x, altExpName = altExpName)) {\n            stop(\"Module \", module, \" is not found in celdaModules(x,\",\n                \" altExpName = altExpName).\",\n                \" Please specify a valid module.\")\n        }\n\n        celdaGMod <- .splitModuleWithSeed(x = altExp,\n            useAssay = useAssay,\n            module = module,\n            n = n,\n            seed = seed)\n\n        S4Vectors::metadata(altExp)[[\"celda_parameters\"]]$L <-\n            params(celdaGMod)$L\n        S4Vectors::metadata(altExp)[[\"celda_parameters\"]]$finalLogLik <-\n            celdaGMod@finalLogLik\n        S4Vectors::metadata(altExp)[[\"celda_parameters\"]]$featureModuleLevels <-\n            sort(unique(celdaClusters(celdaGMod)$y))\n        SummarizedExperiment::rowData(altExp)[\"celda_feature_module\"] <-\n            as.factor(celdaClusters(celdaGMod)$y)\n        SingleCellExperiment::altExp(x, altExpName) <- altExp\n        return(x)\n    }\n)\n\n\n.splitModuleWithSeed <- function(x,\n    useAssay,\n    module,\n    n,\n    seed) {\n\n    if (is.null(seed)) {\n        celdaGMod <- .splitModule(x, useAssay, module, n)\n    } else {\n        with_seed(seed, celdaGMod <- .splitModule(x, useAssay, module, n))\n    }\n    return(celdaGMod)\n}\n\n\n.splitModule <- function(x, useAssay, module, n) {\n    counts <- SummarizedExperiment::assay(x, i = useAssay)\n    counts <- .processCounts(counts)\n    .validateCounts(counts)\n    \n    L <- S4Vectors::metadata(x)$celda_parameters$L\n    y <- as.numeric(SummarizedExperiment::rowData(x)$celda_feature_module)\n    ix <- y == module\n    \n    if (sum(ix) < n) {\n      stop(\"Module \", module, \" contains less than \", n, \" features. \",\n            \"Module splitting was not performed.\")\n    }      \n      \n    tempModel <- .celda_G(\n      counts = counts[ix, , drop = FALSE],\n      L = n,\n      yInitialize = \"random\",\n      splitOnIter = -1,\n      splitOnLast = FALSE,\n      nchains = 1,\n      verbose = FALSE\n    )\n    \n    # Need to set some of the features to the original module number.\n    # The remaining features need to have \"L + something\" as they represent\n    # a new module. Note that there may be more than 1 new module. \n    splitY <-\n      as.numeric(as.character(celdaClusters(tempModel)$y))\n    splitIx <- splitY > 1\n    splitY[splitIx] <- L + splitY[splitIx] - 1\n    splitY[!splitIx] <- module\n    \n    # Set up new y and L\n    newY <- y\n    newY[ix] <- splitY\n    newL <- max(newY)\n    \n    newLl <- .logLikelihoodcelda_G(\n      counts = counts,\n      y = newY,\n      L = newL,\n      beta = S4Vectors::metadata(x)$celda_parameters$beta,\n      delta = S4Vectors::metadata(x)$celda_parameters$delta,\n      gamma = S4Vectors::metadata(x)$celda_parameters$gamma\n    )\n    \n    model <- methods::new(\n      \"celda_G\",\n      clusters = list(y = factor(newY, seq(newL))),\n      params = list(\n        L = newL,\n        beta = S4Vectors::metadata(x)$celda_parameters$beta,\n        delta = S4Vectors::metadata(x)$celda_parameters$delta,\n        gamma = S4Vectors::metadata(x)$celda_parameters$gamma,\n        countChecksum = .createCountChecksum(counts)\n      ),\n      names = list(\n        row = rownames(x),\n        column = colnames(x),\n        sample = x@metadata$celda_parameters$sampleLevels\n      ),\n      finalLogLik = newLl\n    )\n    \n    return(model)\n}\n"
  },
  {
    "path": "R/split_clusters.R",
    "content": "# .cCCalcLL = function(mCPByS, nGByCP, s, z, K, nS, nG, alpha, beta)\n.cCSplitZ <- function(counts,\n                      mCPByS,\n                      nGByCP,\n                      nCP,\n                      s,\n                      z,\n                      K,\n                      nS,\n                      nG,\n                      alpha,\n                      beta,\n                      zProb,\n                      maxClustersToTry = 10,\n                      minCell = 3) {\n\n  ## Identify clusters to split\n  zTa <- tabulate(z, K)\n  zToSplit <- which(zTa >= minCell)\n  zNonEmpty <- which(zTa > 0)\n\n  if (length(zToSplit) == 0) {\n    m <- paste0(\n      date(),\n      \" .... Cluster sizes too small. No additional splitting was\",\n      \" performed.\"\n    )\n    return(list(\n      z = z,\n      mCPByS,\n      nGByCP,\n      nCP = nCP,\n      message = m\n    ))\n  }\n\n  ## Loop through each split-able Z and perform split\n  clustSplit <- vector(\"list\", K)\n  for (i in zToSplit) {\n    clustLabel <- .celda_C(\n      counts[, z == i],\n      K = 2,\n      zInitialize = \"random\",\n      maxIter = 5,\n      splitOnIter = -1,\n      splitOnLast = FALSE,\n      verbose = FALSE,\n      reorder = FALSE\n    )\n    clustSplit[[i]] <- as.integer(celdaClusters(clustLabel)$z)\n  }\n\n  ## Find second best assignment give current assignments for each cell\n  zProb[cbind(seq(nrow(zProb)), z)] <- NA\n  zSecond <- apply(zProb, 1, which.max)\n\n  ## Set up initial variables\n  zSplit <- matrix(NA,\n    nrow = length(z),\n    ncol = length(zToSplit) * maxClustersToTry\n  )\n  zSplitLl <- rep(NA, times = length(zToSplit) * maxClustersToTry)\n  zSplitLl[1] <- .cCCalcLL(mCPByS, nGByCP, s, z, K, nS, nG, alpha, beta)\n  zSplit[, 1] <- z\n\n  ## Select worst clusters to test for reshuffling\n  previousZ <- z\n  llShuffle <- rep(NA, K)\n  for (i in zNonEmpty) {\n    ix <- z == i\n    newZ <- z\n    newZ[ix] <- zSecond[ix]\n\n    p <- .cCReDecomposeCounts(counts, s, newZ, previousZ, nGByCP, K)\n    nGByCP <- p$nGByCP\n    mCPByS <- p$mCPByS\n    llShuffle[i] <- .cCCalcLL(mCPByS, nGByCP, s, z, K, nS, nG, alpha, beta)\n    previousZ <- newZ\n  }\n  zToShuffle <- utils::head(order(llShuffle, decreasing = TRUE, na.last = NA),\n    n = maxClustersToTry\n  )\n\n  pairs <- c(NA, NA)\n  splitIx <- 2\n  for (i in zToShuffle) {\n    otherClusters <- setdiff(zToSplit, i)\n\n    for (j in otherClusters) {\n      newZ <- z\n\n      ## Assign cluster i to the next most similar cluster (excluding\n      ## cluster j)\n      ## as defined above by the correlation\n      ixToMove <- z == i\n      newZ[ixToMove] <- zSecond[ixToMove]\n\n      ## Split cluster j according to the clustering defined above\n      ixToSplit <- z == j\n      newZ[ixToSplit] <- ifelse(clustSplit[[j]] == 1, j, i)\n\n      p <- .cCReDecomposeCounts(counts, s, newZ, previousZ, nGByCP, K)\n      nGByCP <- p$nGByCP\n      mCPByS <- p$mCPByS\n\n      ## Calculate likelihood of split\n      zSplitLl[splitIx] <- .cCCalcLL(\n        mCPByS,\n        nGByCP,\n        s,\n        z,\n        K,\n        nS,\n        nG,\n        alpha,\n        beta\n      )\n      zSplit[, splitIx] <- newZ\n      splitIx <- splitIx + 1L\n      previousZ <- newZ\n\n      pairs <- rbind(pairs, c(i, j))\n    }\n  }\n\n  select <- which.max(zSplitLl)\n\n  if (select == 1) {\n    m <- paste0(date(), \" .... No additional splitting was performed.\")\n  } else {\n    m <- paste0(\n      date(),\n      \" .... Cluster \",\n      pairs[select, 1],\n      \" was reassigned and cluster \",\n      pairs[select, 2],\n      \" was split in two.\"\n    )\n  }\n\n  p <- .cCReDecomposeCounts(counts, s, zSplit[, select], previousZ, nGByCP, K)\n  return(list(\n    z = zSplit[, select],\n    mCPByS = p$mCPByS,\n    nGByCP = p$nGByCP,\n    nCP = p$nCP,\n    message = m\n  ))\n}\n\n\n# .cCGCalcLL = function(K, L, mCPByS, nTSByCP, nByG, nByTS, nGByTS,\n# nS, nG, alpha, beta, delta, gamma)\n.cCGSplitZ <- function(counts,\n                       mCPByS,\n                       nTSByC,\n                       nTSByCP,\n                       nByG,\n                       nByTS,\n                       nGByTS,\n                       nCP,\n                       s,\n                       z,\n                       K,\n                       L,\n                       nS,\n                       nG,\n                       alpha,\n                       beta,\n                       delta,\n                       gamma,\n                       zProb,\n                       maxClustersToTry = 10,\n                       minCell = 3) {\n\n  ## Identify clusters to split\n  zTa <- tabulate(z, K)\n  zToSplit <- which(zTa >= minCell)\n  zNonEmpty <- which(zTa > 0)\n\n  if (length(zToSplit) == 0) {\n    m <- paste0(\n      date(),\n      \" .... Cluster sizes too small. No additional splitting was\",\n      \" performed.\"\n    )\n    return(list(\n      z = z,\n      mCPByS = mCPByS,\n      nTSByCP = nTSByCP,\n      nCP = nCP,\n      message = m\n    ))\n  }\n\n  ## Loop through each split-able Z and perform split\n  clustSplit <- vector(\"list\", K)\n  for (i in zToSplit) {\n    clustLabel <- .celda_C(counts[, z == i],\n      K = 2,\n      zInitialize = \"random\",\n      maxIter = 5,\n      splitOnIter = -1,\n      splitOnLast = FALSE,\n      verbose = FALSE,\n      reorder = FALSE\n    )\n    clustSplit[[i]] <- as.integer(celdaClusters(clustLabel)$z)\n  }\n\n  ## Find second best assignment give current assignments for each cell\n  zProb[cbind(seq(nrow(zProb)), z)] <- NA\n  zSecond <- apply(zProb, 1, which.max)\n\n  ## Set up initial variables\n  zSplit <- matrix(NA,\n    nrow = length(z),\n    ncol = length(zToSplit) * maxClustersToTry\n  )\n  zSplitLl <- rep(NA, ncol = length(zToSplit) * maxClustersToTry)\n  zSplitLl[1] <- .cCGCalcLL(\n    K,\n    L,\n    mCPByS,\n    nTSByCP,\n    nByG,\n    nByTS,\n    nGByTS,\n    nS,\n    nG,\n    alpha,\n    beta,\n    delta,\n    gamma\n  )\n  zSplit[, 1] <- z\n\n  ## Select worst clusters to test for reshuffling\n  previousZ <- z\n  llShuffle <- rep(NA, K)\n  for (i in zNonEmpty) {\n    ix <- z == i\n    newZ <- z\n    newZ[ix] <- zSecond[ix]\n\n    p <- .cCReDecomposeCounts(nTSByC, s, newZ, previousZ, nTSByCP, K)\n    nTSByCP <- p$nGByCP\n    mCPByS <- p$mCPByS\n    llShuffle[i] <- .cCGCalcLL(\n      K,\n      L,\n      mCPByS,\n      nTSByCP,\n      nByG,\n      nByTS,\n      nGByTS,\n      nS,\n      nG,\n      alpha,\n      beta,\n      delta,\n      gamma\n    )\n    previousZ <- newZ\n  }\n  zToShuffle <- utils::head(order(llShuffle, decreasing = TRUE, na.last = NA),\n    n = maxClustersToTry\n  )\n\n\n  pairs <- c(NA, NA)\n  splitIx <- 2\n  for (i in zToShuffle) {\n    otherClusters <- setdiff(zToSplit, i)\n\n    for (j in otherClusters) {\n      newZ <- z\n\n      ## Assign cluster i to the next most similar cluster (excluding\n      ## cluster j)\n      ## as defined above by the correlation\n      ixToMove <- z == i\n      newZ[ixToMove] <- zSecond[ixToMove]\n\n      ## Split cluster j according to the clustering defined above\n      ixToSplit <- z == j\n      newZ[ixToSplit] <- ifelse(clustSplit[[j]] == 1, j, i)\n\n      p <- .cCReDecomposeCounts(nTSByC, s, newZ, previousZ, nTSByCP, K)\n      nTSByCP <- p$nGByCP\n      mCPByS <- p$mCPByS\n\n      ## Calculate likelihood of split\n      zSplitLl[splitIx] <- .cCGCalcLL(\n        K,\n        L,\n        mCPByS,\n        nTSByCP,\n        nByG,\n        nByTS,\n        nGByTS,\n        nS,\n        nG,\n        alpha,\n        beta,\n        delta,\n        gamma\n      )\n      zSplit[, splitIx] <- newZ\n      splitIx <- splitIx + 1L\n      previousZ <- newZ\n\n      pairs <- rbind(pairs, c(i, j))\n    }\n  }\n\n  select <- which.max(zSplitLl)\n\n  if (select == 1) {\n    m <- paste0(date(), \" .... No additional splitting was performed.\")\n  } else {\n    m <- paste0(\n      date(),\n      \" .... Cluster \",\n      pairs[select, 1],\n      \" was reassigned and cluster \",\n      pairs[select, 2],\n      \" was split in two.\"\n    )\n  }\n\n  p <- .cCReDecomposeCounts(\n    nTSByC,\n    s,\n    zSplit[, select],\n    previousZ,\n    nTSByCP,\n    K\n  )\n  return(list(\n    z = zSplit[, select],\n    mCPByS = p$mCPByS,\n    nTSByCP = p$nGByCP,\n    nCP = p$nCP,\n    message = m\n  ))\n}\n\n\n.cCGSplitY <- function(counts,\n                       y,\n                       mCPByS,\n                       nGByCP,\n                       nTSByC,\n                       nTSByCP,\n                       nByG,\n                       nByTS,\n                       nGByTS,\n                       nCP,\n                       s,\n                       z,\n                       K,\n                       L,\n                       nS,\n                       nG,\n                       alpha,\n                       beta,\n                       delta,\n                       gamma,\n                       yProb,\n                       maxClustersToTry = 10,\n                       KSubclusters = 10,\n                       minCell = 3) {\n\n  #########################\n  ## First, the cell dimension of the original matrix will be reduced by\n  ## splitting each z cluster into 'KSubclusters'.\n  #########################\n\n  ## This will not be as big as the original matrix (which can take a lot of\n  ## time to process with large number of cells), but not as small as the\n  ## 'nGByCP' with current z assignments\n\n  zTa <- tabulate(z, K)\n  zNonEmpty <- which(zTa > 0)\n  tempZ <- rep(0, length(z))\n  currentTopZ <- 0\n  for (i in zNonEmpty) {\n    ix <- z == i\n    if (zTa[i] <= KSubclusters) {\n      tempZ[ix] <- seq(currentTopZ + 1, currentTopZ + zTa[i])\n    } else {\n      clustLabel <- .celda_C(counts[, z == i],\n        K = KSubclusters,\n        zInitialize = \"random\",\n        maxIter = 5,\n        splitOnIter = -1,\n        splitOnLast = FALSE,\n        verbose = FALSE,\n        reorder = FALSE\n      )\n      tempZ[ix] <- as.integer(celdaClusters(clustLabel)$z) + currentTopZ\n    }\n    currentTopZ <- max(tempZ, na.rm = TRUE)\n  }\n\n  ## Decompose counts according to new/temp z labels\n  tempNGByCP <- .colSumByGroup(counts, group = tempZ, K = currentTopZ)\n\n  #########################\n  ## Second, different y splits will be estimated and tested\n  #########################\n\n  ## Identify clusters to split\n  yTa <- tabulate(y, L)\n  yToSplit <- which(yTa >= minCell)\n  yNonEmpty <- which(yTa > 0)\n\n  if (length(yToSplit) == 0) {\n    m <- paste0(\n      date(),\n      \" .... Cluster sizes too small. No additional splitting was\",\n      \" performed.\"\n    )\n    return(list(\n      y = y,\n      mCPByS = mCPByS,\n      nTSByCP = nTSByCP,\n      nCP = nCP,\n      message = m\n    ))\n  }\n\n  ## Loop through each split-able Z and perform split\n  clustSplit <- vector(\"list\", L)\n  for (i in yToSplit) {\n    clustLabel <- .celda_G(tempNGByCP[y == i, ],\n      L = 2,\n      yInitialize = \"random\",\n      maxIter = 5,\n      splitOnIter = -1,\n      splitOnLast = FALSE,\n      verbose = FALSE,\n      reorder = FALSE\n    )\n    clustSplit[[i]] <- as.integer(celdaClusters(clustLabel)$y)\n  }\n\n  ## Find second best assignment give current assignments for each cell\n  yProb[cbind(seq(nrow(yProb)), y)] <- NA\n  ySecond <- apply(yProb, 1, which.max)\n\n  ## Set up initial variables\n  ySplit <- matrix(NA,\n    nrow = length(y),\n    ncol = length(yToSplit) * maxClustersToTry\n  )\n  ySplitLl <- rep(NA, ncol = length(yToSplit) * maxClustersToTry)\n  ySplitLl[1] <- .cCGCalcLL(\n    K,\n    L,\n    mCPByS,\n    nTSByCP,\n    nByG,\n    nByTS,\n    nGByTS,\n    nS,\n    nG,\n    alpha,\n    beta,\n    delta,\n    gamma\n  )\n  ySplit[, 1] <- y\n\n  ## Select worst clusters to test for reshuffling\n  previousY <- y\n  llShuffle <- rep(NA, L)\n  for (i in yNonEmpty) {\n    ix <- y == i\n    newY <- y\n    newY[ix] <- ySecond[ix]\n\n    p <- .cGReDecomposeCounts(nGByCP, newY, previousY, nTSByCP, nByG, L)\n    nTSByCP <- p$nTSByC\n    nByTS <- p$nByTS\n    nGByTS <- p$nGByTS\n\n    llShuffle[i] <- .cCGCalcLL(\n      K,\n      L,\n      mCPByS,\n      nTSByCP,\n      nByG,\n      nByTS,\n      nGByTS,\n      nS,\n      nG,\n      alpha,\n      beta,\n      delta,\n      gamma\n    )\n    previousY <- newY\n  }\n  yToShuffle <- utils::head(order(llShuffle, decreasing = TRUE, na.last = NA),\n    n = maxClustersToTry\n  )\n\n  pairs <- c(NA, NA)\n  splitIx <- 2\n  for (i in yToShuffle) {\n    otherClusters <- setdiff(yToSplit, i)\n\n    for (j in otherClusters) {\n      newY <- y\n\n      ## Assign cluster i to the next most similar cluster (excluding\n      ## cluster j)\n      ## as defined above by the correlation\n      ixToMove <- y == i\n      newY[ixToMove] <- ySecond[ixToMove]\n\n      ## Split cluster j according to the clustering defined above\n      ixToSplit <- y == j\n      newY[ixToSplit] <- ifelse(clustSplit[[j]] == 1, j, i)\n\n      p <- .cGReDecomposeCounts(nGByCP, newY, previousY, nTSByCP, nByG, L)\n      nTSByCP <- p$nTSByC\n      nByTS <- p$nByTS\n      nGByTS <- p$nGByTS\n\n      ## Calculate likelihood of split\n      ySplitLl[splitIx] <- .cCGCalcLL(\n        K,\n        L,\n        mCPByS,\n        nTSByCP,\n        nByG,\n        nByTS,\n        nGByTS,\n        nS,\n        nG,\n        alpha,\n        beta,\n        delta,\n        gamma\n      )\n      ySplit[, splitIx] <- newY\n      splitIx <- splitIx + 1L\n      previousY <- newY\n\n      pairs <- rbind(pairs, c(i, j))\n    }\n  }\n\n  select <- which.max(ySplitLl)\n\n  if (select == 1) {\n    m <- paste0(date(), \" .... No additional splitting was performed.\")\n  } else {\n    m <- paste0(\n      date(),\n      \" .... Cluster \",\n      pairs[select, 1],\n      \" was reassigned and cluster \",\n      pairs[select, 2],\n      \" was split in two.\"\n    )\n  }\n\n  p <- .cGReDecomposeCounts(\n    nGByCP,\n    ySplit[, select],\n    previousY,\n    nTSByCP,\n    nByG,\n    L\n  )\n  return(list(\n    y = ySplit[, select],\n    nTSByCP = p$nTSByC,\n    nByTS = p$nByTS,\n    nGByTS = p$nGByTS,\n    message = m\n  ))\n}\n\n\n# .cGCalcLL = function(nTSByC, nByTS, nByG, nGByTS, nM, nG, L, beta, delta,\n# gamma) {\n.cGSplitY <- function(counts,\n                      y,\n                      nTSByC,\n                      nByTS,\n                      nByG,\n                      nGByTS,\n                      nM,\n                      nG,\n                      L,\n                      beta,\n                      delta,\n                      gamma,\n                      yProb,\n                      minFeature = 3,\n                      maxClustersToTry = 10) {\n\n  ## Identify clusters to split\n  yTa <- table(factor(y, levels = seq(L)))\n  yToSplit <- which(yTa >= minFeature)\n  yNonEmpty <- which(yTa > 0)\n\n  if (length(yToSplit) == 0) {\n    m <- paste0(\n      date(),\n      \" .... Cluster sizes too small. No additional splitting was\",\n      \" performed.\"\n    )\n    return(list(\n      y = y,\n      nTSByC = nTSByC,\n      nByTS = nByTS,\n      nGByTS = nGByTS,\n      message = m\n    ))\n  }\n\n  ## Loop through each split-able y and find best split\n  clustSplit <- vector(\"list\", L)\n  for (i in yToSplit) {\n    clustLabel <- .celda_G(counts[y == i, ],\n      L = 2,\n      yInitialize = \"random\",\n      maxIter = 5,\n      splitOnIter = -1,\n      splitOnLast = FALSE,\n      verbose = FALSE,\n      reorder = FALSE\n    )\n    clustSplit[[i]] <- as.integer(celdaClusters(clustLabel)$y)\n  }\n\n  ## Find second best assignment give current assignments for each cell\n  yProb[cbind(seq(nrow(yProb)), y)] <- NA\n  ySecond <- apply(yProb, 1, which.max)\n\n  ## Set up initial variables\n  ySplit <- matrix(NA,\n    nrow = length(y),\n    ncol = length(yToSplit) * maxClustersToTry\n  )\n  ySplitLl <- rep(NA, ncol = length(yToSplit) * maxClustersToTry)\n  ySplitLl[1] <- .cGCalcLL(\n    nTSByC,\n    nByTS,\n    nByG,\n    nGByTS,\n    nM,\n    nG,\n    L,\n    beta,\n    delta,\n    gamma\n  )\n  ySplit[, 1] <- y\n\n  ## Select worst clusters to test for reshuffling\n  llShuffle <- rep(NA, L)\n  previousY <- y\n  for (i in yNonEmpty) {\n    ix <- y == i\n    newY <- y\n    newY[ix] <- ySecond[ix]\n    p <- .cGReDecomposeCounts(counts, newY, previousY, nTSByC, nByG, L)\n    llShuffle[i] <- .cGCalcLL(\n      p$nTSByC,\n      p$nByTS,\n      nByG,\n      p$nGByTS,\n      nM,\n      nG,\n      L,\n      beta,\n      delta,\n      gamma\n    )\n    previousY <- newY\n  }\n  yToShuffle <- utils::head(order(llShuffle, decreasing = TRUE, na.last = NA),\n    n = maxClustersToTry\n  )\n\n  pairs <- c(NA, NA)\n  splitIx <- 2\n  for (i in yToShuffle) {\n    otherClusters <- setdiff(yToSplit, i)\n\n    for (j in otherClusters) {\n      newY <- y\n\n      ## Assign cluster i to the next most similar cluster (excluding\n      ## cluster j)\n      ## as defined above by the spearman correlation\n      ixToMove <- y == i\n      newY[ixToMove] <- ySecond[ixToMove]\n\n      ## Split cluster j according to the clustering defined above\n      ixToSplit <- y == j\n      newY[ixToSplit] <- ifelse(clustSplit[[j]] == 1, j, i)\n\n      ## Calculate likelihood of split\n      p <- .cGReDecomposeCounts(counts, newY, previousY, nTSByC, nByG, L)\n      ySplitLl[splitIx] <- .cGCalcLL(\n        p$nTSByC,\n        p$nByTS,\n        nByG,\n        p$nGByTS,\n        nM,\n        nG,\n        L,\n        beta,\n        delta,\n        gamma\n      )\n      ySplit[, splitIx] <- newY\n      splitIx <- splitIx + 1L\n      previousY <- newY\n\n      pairs <- rbind(pairs, c(i, j))\n    }\n  }\n\n  select <- which.max(ySplitLl)\n\n  if (select == 1) {\n    m <- paste0(date(), \" .... No additional splitting was performed.\")\n  } else {\n    m <- paste0(\n      date(),\n      \" .... Cluster \",\n      pairs[select, 1],\n      \" was reassigned and cluster \",\n      pairs[select, 2],\n      \" was split in two.\"\n    )\n  }\n\n  p <- .cGReDecomposeCounts(\n    counts,\n    ySplit[, select],\n    previousY,\n    nTSByC,\n    nByG,\n    L\n  )\n  return(list(\n    y = ySplit[, select],\n    nTSByC = p$nTSByC,\n    nByTS = p$nByTS,\n    nGByTS = p$nGByTS,\n    message = m\n  ))\n}\n"
  },
  {
    "path": "R/topRank.R",
    "content": "#' @title Identify features with the highest influence on clustering.\n#' @description topRank() can quickly identify the top `n` rows for each column\n#'  of a matrix. For example, this can be useful for identifying the top `n`\n#'  features per cell.\n#' @param matrix Numeric matrix.\n#' @param n Integer. Maximum number of items above `threshold` returned for each\n#'  ranked row or column.\n#' @param margin Integer. Dimension of `matrix` to rank, with 1 for rows, 2 for\n#'  columns. Default 2.\n#' @param threshold Numeric. Only return ranked rows or columns in the matrix\n#'  that are above this threshold. If NULL, then no threshold will be applied.\n#'  Default 0.\n#' @param decreasing Logical. Specifies if the rank should be decreasing.\n#'  Default TRUE.\n#' @return List. The `index` variable provides the top `n` row (feature) indices\n#'  contributing the most to each column (cell). The `names` variable provides\n#'  the rownames corresponding to these indexes.\n#' @examples\n#' data(sampleCells)\n#' topRanksPerCell <- topRank(sampleCells, n = 5)\n#' topFeatureNamesForCell <- topRanksPerCell$names[1]\n#' @export\ntopRank <- function(matrix,\n                    n = 25,\n                    margin = 2,\n                    threshold = 0,\n                    decreasing = TRUE) {\n  if (is.null(threshold) || is.na(threshold)) {\n    threshold <- min(matrix) - 1\n  }\n\n  # Function to sort values in a vector and return 'n' top results\n  # If there are not 'n' top results above 'thresh', then the\n  # number of entries in 'v' that are above 'thresh' will be returned\n  .topFunction <- function(v, n, thresh) {\n    vAboveThresh <- sum(v > thresh)\n    nToSelect <- min(vAboveThresh, n)\n\n    h <- NA\n    if (nToSelect > 0) {\n      h <- utils::head(order(v, decreasing = decreasing), nToSelect)\n    }\n    return(h)\n  }\n\n  # Parse top ranked indices from matrix\n  topIx <-\n    base::apply(matrix, margin, .topFunction, thresh = threshold, n = n)\n\n  # Convert to list if apply converted to a matrix because all\n  # elements had the same length\n  if (is.matrix(topIx)) {\n    topIx <- lapply(seq(ncol(topIx)), function(i) {\n      topIx[, i]\n    })\n    names(topIx) <- dimnames(matrix)[[margin]]\n  }\n\n  # Parse names from returned margin\n  oppositeMargin <-\n    ifelse(margin - 1 > 0, margin - 1, length(dim(matrix)))\n  topNames <- NULL\n  namesToParse <- dimnames(matrix)[[oppositeMargin]]\n  if (!is.null(namesToParse) & all(!is.na(topIx))) {\n    topNames <- lapply(\n      seq(length(topIx)),\n      function(i) {\n        ifelse(is.na(topIx[[i]]), NA, namesToParse[topIx[[i]]])\n      }\n    )\n    names(topNames) <- names(topIx)\n  }\n\n  return(list(index = topIx, names = topNames))\n}\n"
  },
  {
    "path": "README.md",
    "content": "<!-- badges: start -->\n[![R-CMD-check](https://github.com/campbio/celda/workflows/R-CMD-check/badge.svg)](https://github.com/campbio/celda/actions)\n[![Coverage Status](https://coveralls.io/repos/github/campbio/celda/badge.svg?branch=master)](https://coveralls.io/github/campbio/celda?branch=master)\n<!-- badges: end -->\n\n# celda: CEllular Latent Dirichlet Allocation\n\n\"celda\" stands for \"**CE**llular **L**atent **D**irichlet **A**llocation\". It is a suite of Bayesian hierarchical models and supporting functions to perform gene and cell clustering for count data generated by single cell RNA-seq platforms. This algorithm is an extension of the Latent Dirichlet Allocation (LDA) topic modeling framework that has been popular in text mining applications. This package also includes a method called **DecontX** which can be used to estimate and remove contamination in single cell genomic data. \n\n\n## Installation Instructions\n\nTo install the latest stable release of **celda** from [Bioconductor](http://bioconductor.org/packages/celda/) (requires R version >= 3.6):\n\n```\nif (!requireNamespace(\"BiocManager\", quietly = TRUE))\n    install.packages(\"BiocManager\")\nBiocManager::install(\"celda\")\n```\n\nThe latest stable version  of **celda** can be installed from GitHub using `devtools`:\n\n```\nlibrary(devtools)\ninstall_github(\"campbio/celda\")\n```\n\nThe development version of **celda** can also be installed from GitHub using `devtools`:\n```\nlibrary(devtools)\ninstall_github(\"campbio/celda@devel\")\n```\n\n**NOTE** For MAC OSX users, `devtools::install_github()` requires installation of **libgit2.** This can be installed via homebrew:\n```\nbrew install libgit2\n```\n\nAlso, if you receive installation errors when Rcpp is being installed and compiled, try following the steps outlined here to solve the issue:\n\nhttps://thecoatlessprofessor.com/programming/cpp/r-compiler-tools-for-rcpp-on-macos/\n\nIf you are running R 4.0.0 or later version on MacOS Catalina and you see error `'wchar.h' file not found`, you can try the method in this link:\n\nhttps://discourse.mc-stan.org/t/dealing-with-catalina-iii/12731/5\n\nIf you are trying to install on MacOS in an Apple Silicon computater and you see the following error:\n\n```\nld: warning: directory not found for option '-L/opt/gfortran/lib/gcc/x86_64-apple-darwin20.0/12.2.0'\nld: warning: directory not found for option '-L/opt/gfortran/lib'\nld: library not found for -lgfortran\nclang: error: linker command failed with exit code 1 (use -v to see invocation)\nmake: *** [celda.so] Error 1\nERROR: compilation failed for package ‘celda’\n```\n\nYou can solve this by downloading and installing the gfortran pkg located [here](https://mac.r-project.org/tools/gfortran-12.2-universal.pkg) and then running the following command:\n\n```\nsudo /opt/gfortran/bin/gfortran-update-sdk\n```  \n\n\n**NOTE** If you are trying to install **celda** using Rstudio and get this error: `could not find tools necessary to compile a package`, you can try this:\n```\noptions(buildtools.check = function(action) TRUE)\n```\n\n## Vignettes and examples\n\nTo build the vignettes for Celda and DecontX during installation from GitHub, use the following command:\n\n```\nlibrary(devtools)\ninstall_github(\"campbio/celda\", build_vignettes = TRUE)\n```\n\nNote that installation may take an extra 5-10 minutes for building of the vignettes. The Celda and DecontX vignettes can then be accessed via the following commands:\n```\nvignette(\"celda\")\nvignette(\"decontX\")\n```\n\n## For developers\nCheck out our [Wiki](https://github.com/campbio/celda/wiki) for developer's guide if you want to contribute!\n- [Celda Development Coding Style Guide](https://github.com/campbio/celda/wiki/Celda-Development-Coding-Style-Guide)\n- [Celda Development Robust and Efficient Code](https://github.com/campbio/celda/wiki/Celda-Development-Robust-and-Efficient-Code)\n- [Celda Development Rstudio configuration](https://github.com/campbio/celda/wiki/Celda-Development-Rstudio-configuration)\n- [FAQ on how to use celda](https://github.com/campbio/celda/wiki/FAQ-on-how-to-use-celda)\n- [FAQ on package development](https://github.com/campbio/celda/wiki/FAQ-on-package-development)\n"
  },
  {
    "path": "_pkgdown.yml",
    "content": "template:\n  params:\n    bootswatch: yeti\n\nreference:\n- title: Primary celda functions\n  desc: Functions for clustering of cells\n  contents:\n  - celda_CG\n  - celda_C\n  - celda_G\n  - reportCeldaCGRun\n  - reportCeldaCGPlotResults\n  - selectFeatures  \n  - splitModule\n\n- title: Visualization functions for celda results\n  desc: Functions for displaying celda resuls on 2-D embeddings, heatmaps, and violin plots\n  contents:\n  - celdaUmap\n  - celdaTsne\n  - moduleHeatmap\n  - celdaProbabilityMap\n  - plotDimReduceCluster\n  - plotDimReduceFeature\n  - plotDimReduceModule\n  - plotDimReduceGrid  \n  - plotCeldaViolin  \n  - celdaHeatmap\n\n- title: Primary decontX functions\n  desc: Functions for estimating and displaying contamination with decontX\n  contents:\n  - decontX\n  - plotDecontXContamination\n  - plotDecontXMarkerExpression\n  - plotDecontXMarkerPercentage\n  - decontXcounts\n  \n- title: Functions for determining the numbers of clusters in celda\n  desc: Functions for running and comparing multiple celda models with different number of modules or cell populations\n  contents:\n  - recursiveSplitCell\n  - recursiveSplitModule\n  - plotRPC\n  - celdaGridSearch\n  - plotGridSearchPerplexity\n  - perplexity\n  - resamplePerplexity\n  - selectBestModel\n  - resList  \n  - subsetCeldaList  \n  - appendCeldaList\n  - celdaPerplexity\n  \n- title: Miscellaneous celda functions \n  desc: Various functions for manipulation of celda results\n  contents:\n  - celdaClusters\n  - celdaModules\n  - recodeClusterY\n  - recodeClusterZ\n  - reorderCelda  \n  - featureModuleLookup\n  - featureModuleTable\n  - celda\n  - params  \n  - runParams  \n  - factorizeMatrix\n  - bestLogLikelihood\n  - clusterProbability\n  - geneSetEnrich\n  - plotHeatmap\n  - retrieveFeatureIndex\n  - normalizeCounts\n  - distinctColors\n  - matrixNames\n  - logLikelihood\n  - logLikelihoodHistory\n  - topRank\n  - sampleLabel\n\n- title: Simulation functions\n  desc: Functions for generating data from the generative process of each model \n  contents:\n  - simulateCells\n  - simulateContamination\n\n- title: Data objects\n  desc: Small data objects used in examples\n  contents:\n  - sceCeldaCG\n  - sceCeldaC\n  - sceCeldaG\n  - sceCeldaCGGridSearch\n  - celdaCGGridSearchRes\n  - sampleCells\n  - contaminationSim\n\n- title: internal\n  contents:\n  - availableModels\n  - celdaCGMod\n  - celdaCGSim \n  - celdaCMod\n  - celdaCSim\n  - celdaGMod\n  - celdaGSim\n  - celdaModel\n  - celdatosce\n  - compareCountMatrix\n  - countChecksum\n  - eigenMatMultInt\n  - eigenMatMultNumeric\n  - fastNormProp\n  - fastNormPropLog\n  - fastNormPropSqrt\n  - nonzero\n  - semiPheatmap\n  - '`celdaPerplexity,celdaList-method`'\n  - '`countChecksum,celdaList-method`'\n  \nnavbar:\n  title: \"celda\"\n  left:\n    - icon: fa-home fa-lg\n      href: https://www.camplab.net/celda\n    - text: \"Installation\"\n      href: articles/articles/installation.html\n    - text: \"Vignettes\"\n      menu:\n      - text: \"Celda - Analysis of PBMC3K\"\n        href: articles/articles/celda_pbmc3k.html\n      - text: \"DecontX - Decontamination of PBMC4K\"\n        href: articles/articles/decontX_pbmc4k.html\n    - text: \"Reference\"\n      href: reference/index.html\n    - text: \"News\"\n      href: news/index.html\n    - icon: fa-github\n      href: https://github.com/campbio/celda\n"
  },
  {
    "path": "docs/404.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<meta charset=\"utf-8\">\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Page not found (404) • celda</title>\n<!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\">\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"bootstrap-toc.css\">\n<script src=\"bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\">\n<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\">\n<!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"pkgdown.css\" rel=\"stylesheet\">\n<script src=\"pkgdown.js\"></script><meta property=\"og:title\" content=\"Page not found (404)\">\n<!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]-->\n</head>\n<body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-title-body\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\">\n<li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\">\n<li>\n      <a href=\"articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul>\n</li>\n<li>\n  <a href=\"reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul>\n<ul class=\"nav navbar-nav navbar-right\">\n<li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul>\n</div>\n<!--/.nav-collapse -->\n  </div>\n<!--/.container -->\n</div>\n<!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"contents col-md-9\">\n    <div class=\"page-header\">\n      <h1>Page not found (404)</h1>\n    </div>\n\nContent not found. Please use links in the navbar.\n\n  </div>\n\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav>\n</div>\n\n</div>\n\n\n\n      <footer><div class=\"copyright\">\n  <p></p>\n<p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p>\n<p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer>\n</div>\n\n  \n\n\n  \n\n  </body>\n</html>\n"
  },
  {
    "path": "docs/CONDUCT.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Contributor Code of Conduct • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"bootstrap-toc.css\"><script src=\"bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"pkgdown.css\" rel=\"stylesheet\"><script src=\"pkgdown.js\"></script><meta property=\"og:title\" content=\"Contributor Code of Conduct\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-title-body\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"contents col-md-9\">\n    <div class=\"page-header\">\n      <h1>Contributor Code of Conduct</h1>\n    </div>\n\n<div id=\"contributor-code-of-conduct\" class=\"section level1\">\n\n<p>As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.</p>\n<p>We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, or religion.</p>\n<p>Examples of unacceptable behavior by participants include the use of sexual language or imagery, derogatory comments or personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct.</p>\n<p>Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. Project maintainers who do not follow the Code of Conduct may be removed from the project team.</p>\n<p>Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers.</p>\n<p>This Code of Conduct is adapted from the Contributor Covenant (<a href=\"http:contributor-covenant.org\" class=\"uri\">http:contributor-covenant.org</a>), version 1.0.0, available at <a href=\"http://contributor-covenant.org/version/1/0/0/\" class=\"external-link uri\">http://contributor-covenant.org/version/1/0/0/</a></p>\n</div>\n\n  </div>\n\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n\n</div>\n\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/LICENSE-text.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>License • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"bootstrap-toc.css\"><script src=\"bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"pkgdown.css\" rel=\"stylesheet\"><script src=\"pkgdown.js\"></script><meta property=\"og:title\" content=\"License\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-title-body\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"contents col-md-9\">\n    <div class=\"page-header\">\n      <h1>License</h1>\n    </div>\n\n<pre>MIT License\n\nCopyright (c) 2018 Joshua D Campbell\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n</pre>\n\n  </div>\n\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n\n</div>\n\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/articles/articles/celda_pbmc3k.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<meta charset=\"utf-8\">\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Celda - Analysis of PBMC3K • celda</title>\n<!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\">\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../../bootstrap-toc.css\">\n<script src=\"../../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\">\n<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\">\n<!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../../pkgdown.css\" rel=\"stylesheet\">\n<script src=\"../../pkgdown.js\"></script><meta property=\"og:title\" content=\"Celda - Analysis of PBMC3K\">\n<meta property=\"og:description\" content=\"celda\">\n<!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]-->\n</head>\n<body data-spy=\"scroll\" data-target=\"#toc\">\n    <div class=\"container template-article\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"Released version\">1.12.0</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\">\n<li>\n  <a href=\"https://www.camplab.net/celda\">\n    <span class=\"fas fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\">\n<li>\n      <a href=\"../../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul>\n</li>\n<li>\n  <a href=\"../../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\">\n    <span class=\"fas fa-github\"></span>\n     \n  </a>\n</li>\n      </ul>\n<ul class=\"nav navbar-nav navbar-right\">\n<li>\n  <a href=\"https://github.com/campbio/celda/\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul>\n</div>\n<!--/.nav-collapse -->\n  </div>\n<!--/.container -->\n</div>\n<!--/.navbar -->\n\n      \n\n      </header><script src=\"celda_pbmc3k_files/header-attrs-2.7/header-attrs.js\"></script><script src=\"celda_pbmc3k_files/accessible-code-block-0.0.1/empty-anchor.js\"></script><script src=\"celda_pbmc3k_files/kePrint-0.0.1/kePrint.js\"></script><link href=\"celda_pbmc3k_files/lightable-0.0.1/lightable.css\" rel=\"stylesheet\">\n<div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header toc-ignore\">\n      <h1 data-toc-skip>Celda - Analysis of PBMC3K</h1>\n                        <h4 class=\"author\">Joshua Campbell, Zhe Wang</h4>\n            \n            <h4 class=\"date\">Compiled April 30, 2022</h4>\n      \n      <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/master/vignettes/articles/celda_pbmc3k.Rmd\"><code>vignettes/articles/celda_pbmc3k.Rmd</code></a></small>\n      <div class=\"hidden name\"><code>celda_pbmc3k.Rmd</code></div>\n\n    </div>\n\n    \n    \n<div id=\"introduction\" class=\"section level1\">\n<h1 class=\"hasAnchor\">\n<a href=\"#introduction\" class=\"anchor\"></a>Introduction</h1>\n<p>Celda is a Bayesian hierarchical model that can perform bi-clustering of features into modules and observations into subpopulations. In this tutorial, we will apply Celda to a real-world single-cell RNA sequencing (scRNA-seq) dataset of 2,700 Peripheral Blood Mononuclear Cells (PBMCs) collected from a healthy donor. This dataset (PBMC3K) is available from 10X Genomics and can be found on the <a href=\"https://support.10xgenomics.com/single-cell-gene-expression/datasets/1.1.0/pbmc3k\" target=\"_blank\">10X website</a>.</p>\n<p>The <code>celda</code> package uses the <a href=\"https://bioconductor.org/packages/release/bioc/html/SingleCellExperiment.html\" target=\"_blank\">SingleCellExperiment</a> (SCE) object for management of expression matrices, feature/cell annotation data, and metadata. All of the functions have an SCE object as the first input parameter. The functions operate on a matrix stored in the <code>assay</code> slot of the SCE object. The parameter <code>useAssay</code> can be used to specify which matrix to use (the default is <code>\"counts\"</code>). Matrices can be of class <code>matrix</code> or <code>dgCMatrix</code> from the <a href=\"https://cran.r-project.org/web/packages/Matrix/index.html\">Matrix</a> package. While the primary clustering is performed with functions from the celda package, the <a href=\"https://bioconductor.org/packages/release/bioc/html/singleCellTK.html\">singleCellTK</a> package is used for some other tasks such as importing data, quality control, and marker identification with differential expression.</p>\n</div>\n<div id=\"importing-data\" class=\"section level1\">\n<h1 class=\"hasAnchor\">\n<a href=\"#importing-data\" class=\"anchor\"></a>Importing data</h1>\n<p>The PBMC3K data can be easily loaded via the Bioconductor package <a href=\"https://bioconductor.org/packages/release/data/experiment/html/TENxPBMCData.html\" target=\"_blank\">TENxPBMCData</a>. <code>TENxPBMCData</code> is an experiment package that provides resources for various PBMC datasets generated by 10X Genomics. When using this package, the column names of returned SCE object are <code>NULL</code> by default. For this example, we paste together the name of the sample with the cell barcode to generate column names for the SCE object. Additionally, the count matrix within <code>sce</code> object is converted from a <code>DelayedMatrix</code> object to a sparse matrix <code>dgCMatrix</code> object.</p>\n<div class=\"sourceCode\" id=\"cb1\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\">library</a></span><span class=\"op\">(</span><span class=\"va\">TENxPBMCData</span><span class=\"op\">)</span>\n<span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/TENxPBMCData/man/TENxPBMCData.html\">TENxPBMCData</a></span><span class=\"op\">(</span><span class=\"st\">\"pbmc3k\"</span><span class=\"op\">)</span>\n<span class=\"fu\"><a href=\"https://rdrr.io/r/base/colnames.html\">colnames</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/paste.html\">paste0</a></span><span class=\"op\">(</span><span class=\"st\">\"pbmc3k_\"</span>, <span class=\"fu\">colData</span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span><span class=\"op\">$</span><span class=\"va\">Sequence</span><span class=\"op\">)</span>\n<span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/assays.html\">counts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">as</span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/assays.html\">counts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span>, <span class=\"st\">\"dgCMatrix\"</span><span class=\"op\">)</span></code></pre></div>\n<p>If you have the <a href=\"https://bioconductor.org/packages/release/bioc/html/singleCellTK.html\" target=\"_blank\">singleCellTK</a> package installed, then this dataset can be imported and converted with a single command:</p>\n<div class=\"sourceCode\" id=\"cb2\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://www.camplab.net/sctk/\">singleCellTK</a></span><span class=\"op\">)</span>\n<span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/singleCellTK/man/importExampleData.html\">importExampleData</a></span><span class=\"op\">(</span><span class=\"st\">\"pbmc3k\"</span><span class=\"op\">)</span></code></pre></div>\n<p>To get your own data into a <code>SingleCellExperiment</code> object, the <code>singleCellTK</code> package has several importing functions for different preprocessing tools including CellRanger, STARsolo, BUStools, Optimus, DropEST, SEQC, and Alevin/Salmon. For example, the following code can be used as a template to read in multiple samples processed with CellRanger:</p>\n<div class=\"sourceCode\" id=\"cb3\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://www.camplab.net/sctk/\">singleCellTK</a></span><span class=\"op\">)</span>\n<span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/singleCellTK/man/importCellRanger.html\">importCellRanger</a></span><span class=\"op\">(</span>sampleDirs <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"path/to/sample1/\"</span>, <span class=\"st\">\"path/to/sample2/\"</span><span class=\"op\">)</span><span class=\"op\">)</span></code></pre></div>\n<p><strong>Note:</strong> As a reminder, you can view the assays, column annotation, and row annotation stored in the SCE with the commands <code>assays(sce)</code>, <code>colData(sce)</code>, and <code>rowData(sce)</code>, respectively.</p>\n<p>Finally, we set the <code>rownames</code> of the SCE to the gene symbol:</p>\n<div class=\"sourceCode\" id=\"cb4\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"fu\"><a href=\"https://rdrr.io/r/base/colnames.html\">rownames</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">rowData</span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span><span class=\"op\">$</span><span class=\"va\">Symbol_TENx</span></code></pre></div>\n</div>\n<div id=\"quality-control\" class=\"section level1\">\n<h1 class=\"hasAnchor\">\n<a href=\"#quality-control\" class=\"anchor\"></a>Quality Control</h1>\n<p>Quality control and filtering of cells is often needed before down-stream analyses such as dimensionality reduction and clustering. Typical filtering procedures include exclusion of poor quality cells with low numbers of counts/UMIs, estimation and removal of ambient RNA, and identification of potential doublet/multiplets. Many tools and packages are available to perform these operations and users are free to apply their tool(s) of choice as the celda clustering functions will work with any matrix stored in an SCE object. The celda package does contain a Bayesian method called <a href=\"https://doi.org/10.1186/s13059-020-1950-6\" target=\"_blank\">decontX</a> to estimate and remove transcript contamination in individual cells in a scRNA-seq dataset.</p>\n<p>To perform QC, we suggest using the <code>runCellQC</code> function in <code>singleCellTK</code> package. This is a wrapper for several methods for calculation of QC metrics, doublet detection, and estimation of ambient RNA (including decontX). Below is a quick example of how to perform standard QC before applying celda. If you have another preferred approach or your data has already been QC’ed, you can move to <a href=\"#featureselection\">Feature selection</a> section. For this tutorial, we will only run one doublet detection algorithm and one decontamination algorithms. For a full list of algorithms that this function runs by default, see <code><a href=\"https://rdrr.io/pkg/singleCellTK/man/runCellQC.html\">?runCellQC</a></code>. We will also quantify the percentage of mitochondrial genes in each cell as this is often used as a measure of cell viability.</p>\n<div class=\"sourceCode\" id=\"cb5\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://www.camplab.net/sctk/\">singleCellTK</a></span><span class=\"op\">)</span>\n\n<span class=\"co\"># Get list of mitochondrial genes</span>\n<span class=\"va\">mito.genes</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/grep.html\">grep</a></span><span class=\"op\">(</span><span class=\"st\">\"^MT-\"</span>, <span class=\"fu\"><a href=\"https://rdrr.io/r/base/colnames.html\">rownames</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span>, value <span class=\"op\">=</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span>\n\n<span class=\"co\"># Run QC</span>\n<span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/singleCellTK/man/runCellQC.html\">runCellQC</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, sample <span class=\"op\">=</span> <span class=\"cn\">NULL</span>, algorithms <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"QCMetrics\"</span>, <span class=\"st\">\"scDblFinder\"</span>, <span class=\"st\">\"decontX\"</span><span class=\"op\">)</span>, geneSetList <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\">list</a></span><span class=\"op\">(</span>mito<span class=\"op\">=</span><span class=\"va\">mito.genes</span><span class=\"op\">)</span>, geneSetListLocation <span class=\"op\">=</span> <span class=\"st\">\"rownames\"</span><span class=\"op\">)</span></code></pre></div>\n<p><strong>Note:</strong> If you have cells from multiple samples stored in the SCE object, make sure to supply the <code>sample</code> parameter as the QC tools need to be applied to cells from each sample individually.</p>\n<p>Individual sets of QC metrics can be plotted with specific functions. For example to plot distributions of total numbers of UMIs derived from <code>runPerCellQC</code>, doublet scores from <code>runScDblFinder</code>, and contamination scores from <code>runDecontX</code> (all of which were run by the <code>runCellQC</code> function), the following plotting functions can be used:</p>\n<div class=\"sourceCode\" id=\"cb6\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"fu\"><a href=\"https://rdrr.io/pkg/singleCellTK/man/plotRunPerCellQCResults.html\">plotRunPerCellQCResults</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/sctk_qc_plot-1.png\" width=\"700\"></p>\n<div class=\"sourceCode\" id=\"cb7\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"fu\"><a href=\"https://rdrr.io/pkg/singleCellTK/man/plotScDblFinderResults.html\">plotScDblFinderResults</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, reducedDimName <span class=\"op\">=</span> <span class=\"st\">\"decontX_UMAP\"</span><span class=\"op\">)</span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/sctk_qc_plot-2.png\" width=\"700\"></p>\n<div class=\"sourceCode\" id=\"cb8\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"fu\"><a href=\"https://rdrr.io/pkg/singleCellTK/man/plotDecontXResults.html\">plotDecontXResults</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, reducedDimName <span class=\"op\">=</span> <span class=\"st\">\"decontX_UMAP\"</span><span class=\"op\">)</span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/sctk_qc_plot-3.png\" width=\"700\"></p>\n<p>An comprehensive HTML report can be generated to visualize and explore the QC metrics in greater detail:</p>\n<div class=\"sourceCode\" id=\"cb9\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"fu\"><a href=\"https://rdrr.io/pkg/singleCellTK/man/reportCellQC.html\">reportCellQC</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span></code></pre></div>\n<p>After examining the distributions of various QC metrics, poor quality cells will need to be removed. Typically, thresholds for QC metrics should exclude cells that are outliers of the distribution (i.e. long tails in the violin or density plots). Cells can be removed using the <code>subsetSCECols</code> function. Metrics stored in the <code>colData</code> of the SCE object can be filtered using the <code>colData</code> parameter. Here we will limit to cells with at least 600 counts and 300 genes detected:</p>\n<div class=\"sourceCode\" id=\"cb10\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"co\"># Filter SCE</span>\n<span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/singleCellTK/man/subsetSCECols.html\">subsetSCECols</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, colData <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"total &gt; 600\"</span>, <span class=\"st\">\"detected &gt; 300\"</span><span class=\"op\">)</span><span class=\"op\">)</span>\n\n<span class=\"co\"># See number of cells after filtering</span>\n<span class=\"fu\"><a href=\"https://rdrr.io/r/base/nrow.html\">ncol</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span></code></pre></div>\n<pre><code>## [1] 2675</code></pre>\n<p>Other common metrics to filter on include <code>subsets_mito_percent</code> for removal of cells with high mitochondrial percentage, <code>decontX_contamination</code> for removal of cells with higher levels of contamination from ambient RNA, <code>scDblFinder_class</code> to remove doublets (or calls from any of the other doublet detection algorithms). See the <code>singleCellTK</code> <a href=\"sctk.camplab.net\">documentation</a> For more information on performing comprehensive QC and filtering.</p>\n</div>\n<div id=\"featureselection\" class=\"section level1\">\n<h1 class=\"hasAnchor\">\n<a href=\"#featureselection\" class=\"anchor\"></a>Feature selection</h1>\n<p>In general, removing features with low numbers of counts across all cells is recommended to reduce computational run time. A simple selection can be performed by removing features with a minimum number of counts in a minimum number of cells using the <code>selectFeatures</code> function:</p>\n<div class=\"sourceCode\" id=\"cb12\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"co\"># Select features with at least 3 counts in at least 3 cells</span>\n<span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\">library</a></span><span class=\"op\">(</span><span class=\"va\">celda</span><span class=\"op\">)</span>\n<span class=\"va\">useAssay</span> <span class=\"op\">&lt;-</span> <span class=\"st\">\"counts\"</span>\n<span class=\"va\">altExpName</span> <span class=\"op\">&lt;-</span> <span class=\"st\">\"featureSubset\"</span>\n<span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../../reference/selectFeatures.html\">selectFeatures</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, minCount <span class=\"op\">=</span> <span class=\"fl\">3</span>, minCell <span class=\"op\">=</span> <span class=\"fl\">3</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span><span class=\"op\">)</span>\n\n<span class=\"co\"># See number of features after filtering</span>\n<span class=\"fu\"><a href=\"https://rdrr.io/r/base/nrow.html\">nrow</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\">altExp</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, <span class=\"va\">altExpName</span><span class=\"op\">)</span><span class=\"op\">)</span></code></pre></div>\n<pre><code>## [1] 2639</code></pre>\n<p>The <code>useAssay</code> parameter is used to denote which assay/matrix within the SCE to use for filtering. The default raw counts matrix is traditionally stored in the <code>\"counts\"</code> assay. If <code>decontX</code> was previously run during QC, then the decontaminated counts can be used by setting this parameter to <code>\"decontXcounts\"</code>. We will save this parameter in a variable called <code>useAssay</code> which will be used as input in several downstream functions.</p>\n<p><strong>Note:</strong> The subsetted matrix is stored in the “alternative experiment” slot (<code>altExp</code>) within the SCE. This allows for a matrix with a different number of rows to be stored within the same SCE object (rather than creating two SCE objects). The celda functions described in the next several sections operate on a matrix stored in the <code>altExp</code> slot. The default name given to the alternative experiment and used in all downstream celda functions is <code>\"featureSubset\"</code>. If the <code>altExpName</code> parameter is changed here, then it will need to be supplied to downstream plotting functions as well. The list of alternative experiments in an SCE can be view with <code><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\">altExpNames(sce)</a></code>. If you have already have an SCE with selected features or do not want to perform feature selection, then you need to set the alternative experiment directly with a command like <code>altExp(sce, \"featureSubset\") &lt;- assay(sce, \"counts\")</code>. In the future, this will be updated to be more simple by utilizing the <code>ExperimentSubset</code> package.</p>\n<p>If the number of features is still relatively large (e.g. &gt;5000), an alternative approach is to select highly variable features that can be used in the downstream clustering. The advantage of this approach is that it can greatly speed up celda and can improve with module detection among highly variable features with overall lower expression. The disadvantage of this approach is that features that do not fall into the highly variable group will not be clustered into modules. The celda package does not include methods for selection of highly variable genes (HVGs). However, the <code>singleCellTK</code> provides wrappers for methods used in <a href=\"https://doi.org/10.1016/j.cell.2019.05.031\" target=\"_blank\">Seurat</a> and <a href=\"https://bioconductor.org/packages/release/bioc/html/scran.html\">Scran</a>. We recommend keeping at least 2,000-5,000 HVGs for clustering. Here is some example code of how to select the top 5,000 most variable genes and store it back in the SCE as an <code>altExp</code>:</p>\n<div class=\"sourceCode\" id=\"cb14\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://www.camplab.net/sctk/\">singleCellTK</a></span><span class=\"op\">)</span>\n<span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/singleCellTK/man/seuratFindHVG.html\">seuratFindHVG</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, hvgMethod <span class=\"op\">=</span> <span class=\"st\">\"vst\"</span><span class=\"op\">)</span>\n<span class=\"va\">g</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/singleCellTK/man/getTopHVG.html\">getTopHVG</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, method <span class=\"op\">=</span> <span class=\"st\">\"vst\"</span>, n <span class=\"op\">=</span> <span class=\"fl\">5000</span><span class=\"op\">)</span>\n<span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\">altExp</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, <span class=\"va\">altExpName</span><span class=\"op\">)</span> <span class=\"op\">&lt;-</span> <span class=\"va\">sce</span><span class=\"op\">[</span><span class=\"va\">g</span>, <span class=\"op\">]</span></code></pre></div>\n<p>For the rest of the analysis with the PBMC3K data, we will use the first approach where features with at least 3 counts in 3 cells were included.</p>\n</div>\n<div id=\"analysis-with-celda\" class=\"section level1\">\n<h1 class=\"hasAnchor\">\n<a href=\"#analysis-with-celda\" class=\"anchor\"></a>Analysis with Celda</h1>\n<div id=\"bi-clustering-with-known-numbers-of-clusters\" class=\"section level2\">\n<h2 class=\"hasAnchor\">\n<a href=\"#bi-clustering-with-known-numbers-of-clusters\" class=\"anchor\"></a>Bi-clustering with known numbers of clusters</h2>\n<p>As mentioned earlier, celda is discrete Bayesian model that is able to simultaneously bi-cluster features into modules and cells into cell clusters. The primary bi-clustering model can be accessed with the function <code>celda_CG</code>. This function operates on a matrix stored as an alternative experiment in the <code>altExp</code> slot. If you did not perform feature selection as recommended in the previous section and your matrix of interest is not currently located in an <code>altExp</code> slot, the following code can be used to copy a matrix in the main assay slot to the <code>altExp</code> slot:</p>\n<div class=\"sourceCode\" id=\"cb15\"><pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb15-1\"><a href=\"#cb15-1\"></a>useAssay &lt;-<span class=\"st\"> \"counts\"</span></span>\n<span id=\"cb15-2\"><a href=\"#cb15-2\"></a>altExpName &lt;-<span class=\"st\"> \"featureSubset\"</span></span>\n<span id=\"cb15-3\"><a href=\"#cb15-3\"></a><span class=\"kw\">altExp</span>(sce, altExpName) &lt;-<span class=\"st\"> </span><span class=\"kw\">assay</span>(sce, useAssay)<span class=\"st\">`</span><span class=\"dt\">. </span></span></code></pre></div>\n<p>The two major adjustable parameters in this model are <code>L</code>, the number of modules, and <code>K</code>, the number of cell populations. The following code bi-clusters the PBMC3K dataset into 100 modules and 15 cell populations:</p>\n<div class=\"sourceCode\" id=\"cb16\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../../reference/celda_CG.html\">celda_CG</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, L <span class=\"op\">=</span> <span class=\"fl\">100</span>, K <span class=\"op\">=</span> <span class=\"fl\">15</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span><span class=\"op\">)</span></code></pre></div>\n<p>However, in most cases, the number of feature modules (<code>L</code>) and the number of cell clusters (<code>K</code>) are not known beforehand. In the next sections, we outline procedures that can be used suggest reasonable choices for these parameters. If the data is clustered with the code above by supplying K and L directly to the <code>celda_CG</code> function, then you can skip the next section and proceed to <a href=\"#embed\">Creating 2-D embeddings</a>.</p>\n</div>\n<div id=\"finding-the-number-of-modules\" class=\"section level2\">\n<h2 class=\"hasAnchor\">\n<a href=\"#finding-the-number-of-modules\" class=\"anchor\"></a>Finding the number of modules</h2>\n<p>In order to help choose a reasonable solutions for L and K, celda provides step-wise splitting procedures along with measurements of perplexity to suggest reasonable choices for <code>L</code> and <code>K</code>. First, the function <code>recursiveSplitModule</code> can be used to cluster features into modules for a range of <code>L</code>. Within each step, the best split of an existing module into 2 new modules is chosen to create the L-th module. The module labels of the previous model with <span class=\"math inline\">\\(L-1\\)</span> modules are used as the initial starting values in the next model with <span class=\"math inline\">\\(L\\)</span> modules. Note that the initialization step may take longer with larger numbers of cells in the dataset and the splitting procedure will take longer with larger numbers features in the dataset. Celda models with a L range between <code>initialL = 10</code> and <code>maxL = 150</code> are tested in the example below.</p>\n<div class=\"sourceCode\" id=\"cb17\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"va\">moduleSplit</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../../reference/recursiveSplitModule.html\">recursiveSplitModule</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span>, initialL <span class=\"op\">=</span> <span class=\"fl\">10</span>, maxL <span class=\"op\">=</span> <span class=\"fl\">150</span><span class=\"op\">)</span></code></pre></div>\n<p>Perplexity has been commonly used in the topic models to measure how well a probabilistic model predicts observed samples (<a href=\"https://dl.acm.org/doi/10.5555/944919.944937\" target=\"_blank\">Blei et al., 2003</a>). Here, we use perplexity to evaluate the performance of individual models by calculating the probability of observing expression counts given an estimated Celda model. Rather than performing cross-validation which is computationally expensive, a series of test sets are created by sampling the counts from each cell according to a multinomial distribution defined by dividing the counts for each gene in the cell by the total number of counts for that cell. Perplexity is then calculated on each test set and can be visualized using function <code>plotGridSearchPerplexity</code>. A lower perplexity indicates a better model fit.</p>\n<div class=\"sourceCode\" id=\"cb18\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"fu\"><a href=\"../../reference/plotGridSearchPerplexity.html\">plotGridSearchPerplexity</a></span><span class=\"op\">(</span><span class=\"va\">moduleSplit</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span>, sep <span class=\"op\">=</span> <span class=\"fl\">10</span><span class=\"op\">)</span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/module_split_perplexity-1.png\" width=\"700\"></p>\n<p>The perplexity alone often does not show a clear elbow or “leveling off”. However, the rate of perplexity change (RPC) can be more informative to determine when adding new modules does not add much additional information <a href=\"https://doi.org/10.1186/1471-2105-16-S13-S8\" target=\"_blank\">Zhao et al., 2015</a>). An RPC closer to zero indicates that the addition of new modules or cell clusters is not substantially decreasing the perplexity. The RPC of models can be visualized using function <code>plotRPC</code>:</p>\n<div class=\"sourceCode\" id=\"cb19\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"fu\"><a href=\"../../reference/plotRPC.html\">plotRPC</a></span><span class=\"op\">(</span><span class=\"va\">moduleSplit</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span><span class=\"op\">)</span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/module_split_rpc-1.png\" width=\"700\"></p>\n<p>In this case, we will choose an <code>L</code> of 80 as the RPC curve tends to level off at this point:</p>\n<div class=\"sourceCode\" id=\"cb20\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"va\">L</span> <span class=\"op\">&lt;-</span> <span class=\"fl\">80</span></code></pre></div>\n<div class=\"line-block\">\n<strong>Note:</strong> Perplexity and RPC are meant to be guides to give a sense of a possible starting point for <code>L</code>. However, they may not always give a clear “leveling off” depending of the complexity and quality of the dataset. <strong>Do not give up if the choice of L is unclear or imperfect!</strong> If the <code>L</code> to choose is unclear from these, then you can set a somewhat high number (e.g. 75) and move to the next step of selecting <code>K</code>. Later on, manual review of modules using functions such as <code>moduleHeatmap</code> can give a sense of whether individual modules should be further split up by selecting higher <code>L</code>. For example, you can start exploring the cell populations and modules with <code>L = 75</code>. If some modules need to be further split, you can then try <code>L = 100</code>, <code>L = 125</code>, and so on.</div>\n</div>\n<div id=\"finding-the-number-of-cell-subpopulations\" class=\"section level2\">\n<h2 class=\"hasAnchor\">\n<a href=\"#finding-the-number-of-cell-subpopulations\" class=\"anchor\"></a>Finding the number of cell subpopulations</h2>\n<p>Now we extract the Celda model of <code>L =</code><span class=\"math inline\">\\(L\\)</span> with function <code>subsetCeldaList</code> and run <code>recursiveSplitCell</code> to fit models with a range of <code>K</code> between 3 and 25:</p>\n<div class=\"sourceCode\" id=\"cb21\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"va\">temp</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../../reference/subsetCeldaList.html\">subsetCeldaList</a></span><span class=\"op\">(</span><span class=\"va\">moduleSplit</span>, <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\">list</a></span><span class=\"op\">(</span>L <span class=\"op\">=</span> <span class=\"va\">L</span><span class=\"op\">)</span><span class=\"op\">)</span>\n<span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../../reference/recursiveSplitCell.html\">recursiveSplitCell</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span>, initialK <span class=\"op\">=</span> <span class=\"fl\">3</span>, maxK <span class=\"op\">=</span> <span class=\"fl\">25</span>, yInit <span class=\"op\">=</span> <span class=\"fu\"><a href=\"../../reference/celdaModules.html\">celdaModules</a></span><span class=\"op\">(</span><span class=\"va\">temp</span><span class=\"op\">)</span><span class=\"op\">)</span></code></pre></div>\n<p>The perplexities and RPC of models can be visualized using the same functions <code>plotGridSearchPerplexity</code> and <code>plotRPC</code>.</p>\n<div class=\"sourceCode\" id=\"cb22\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"fu\"><a href=\"../../reference/plotGridSearchPerplexity.html\">plotGridSearchPerplexity</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/cell_split_perplexity-1.png\" width=\"700\"></p>\n<div class=\"sourceCode\" id=\"cb23\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"fu\"><a href=\"../../reference/plotRPC.html\">plotRPC</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/cell_split_perplexity-2.png\" width=\"700\"></p>\n<p>The perplexity continues to decrease with larger values of <code>K</code>. The RPC generally levels off between 13 and 16 and we choose the model with <code>K = 14</code> for downstream analysis. The follow code selects the final <code>celda_CG</code> model with <code>L = 80</code> and <code>K = 14</code>:</p>\n<div class=\"sourceCode\" id=\"cb24\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"va\">K</span> <span class=\"op\">&lt;-</span> <span class=\"fl\">14</span>\n<span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../../reference/subsetCeldaList.html\">subsetCeldaList</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\">list</a></span><span class=\"op\">(</span>L <span class=\"op\">=</span> <span class=\"va\">L</span>, K <span class=\"op\">=</span> <span class=\"va\">K</span><span class=\"op\">)</span><span class=\"op\">)</span></code></pre></div>\n<p><strong>Note:</strong> Similar to choosing <code>L</code>, you can guess an initial value of <code>K</code> based off of the perplexity and RPC plots and then move to the downstream exploratory analyses described in the next several sections. After reviewing the cell clusters on 2-D embeddings and module heatmaps, you may have to come back to tweak the choice of <code>K</code> until you have something that captures the cellular heterogeneity within the data without “over-clustering” cells into too many subpopulations. This may be an iterative procedure of going back-and-forth between choices of <code>K</code> and plotting the results. So do not let imperfect perplexity/PRC plots prevent you from moving on to the rest of the analysis. Often times, using an initial guess for <code>K</code> will allow you to move on in the analysis to get a sense of the major sources of biological heterogeneity present in the data.</p>\n</div>\n</div>\n<div id=\"exploring-cell-populations\" class=\"section level1\">\n<h1 class=\"hasAnchor\">\n<a href=\"#exploring-cell-populations\" class=\"anchor\"></a>Exploring cell populations</h1>\n<div id=\"embed\" class=\"section level2\">\n<h2 class=\"hasAnchor\">\n<a href=\"#embed\" class=\"anchor\"></a>Creating 2-D embeddings</h2>\n<p>After selecting a celda model with specific values of <code>L</code> and <code>K</code>, we can then perform additional exploratory and downstream analyses to understand the biology of the transcriptional modules and cell populations. We can start by generating a dimension reduction plot with the Uniform Manifold Approximation and Projection (UMAP) method to visualize the relationships between the cells in a 2-D embedding. This can be done with function <code>celdaUmap</code>.</p>\n<div class=\"sourceCode\" id=\"cb25\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../../reference/celdaUmap.html\">celdaUmap</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span><span class=\"op\">)</span></code></pre></div>\n<p>Alternatively, a t-distributed stochastic neighbor embedding (t-SNE) can be generated using function <code>celdaTsne</code>. The UMAP and t-SNE plots generated by <code>celdaUmap</code> and <code>celdaTsne</code> are computed based on the module probabilities (analogous to using PCs from PCA). The calculated dimension reduction coordinates for the cells are stored under the <code>reducedDim</code> slot of the <code>altExp</code> slot in the original SCE object. The follow command lists the names of the dimensionality reductions that can be used in downstream plotting functions in the next few sections:</p>\n<div class=\"sourceCode\" id=\"cb26\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/reducedDims.html\">reducedDimNames</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\">altExp</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, <span class=\"va\">altExpName</span><span class=\"op\">)</span><span class=\"op\">)</span></code></pre></div>\n<pre><code>## [1] \"decontX_UMAP\" \"celda_UMAP\"</code></pre>\n</div>\n<div id=\"plotting-cell-population-cluster-labels\" class=\"section level2\">\n<h2 class=\"hasAnchor\">\n<a href=\"#plotting-cell-population-cluster-labels\" class=\"anchor\"></a>Plotting cell population cluster labels</h2>\n<p>The function <code>plotDimReduceCluster</code> can be used to plot the cluster labels for cell populations identified by celda on the UMAP:</p>\n<div class=\"sourceCode\" id=\"cb28\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"fu\"><a href=\"../../reference/plotDimReduceCluster.html\">plotDimReduceCluster</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, reducedDimName <span class=\"op\">=</span> <span class=\"st\">\"celda_UMAP\"</span>, labelClusters <span class=\"op\">=</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/cell_clusters-1.png\" width=\"700\"></p>\n</div>\n<div id=\"plotting-expression-of-specific-features\" class=\"section level2\">\n<h2 class=\"hasAnchor\">\n<a href=\"#plotting-expression-of-specific-features\" class=\"anchor\"></a>Plotting expression of specific features</h2>\n<p>Usually, biological features of some cell populations are known <em>a priori</em> and can be identified with known marker genes. The expression of selected marker genes can be plotted on the UMAP with the function <code>plotDimReduceFeature</code>.</p>\n<div class=\"sourceCode\" id=\"cb29\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"va\">markers</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"CD3D\"</span>, <span class=\"st\">\"IL7R\"</span>, <span class=\"st\">\"CD4\"</span>, <span class=\"st\">\"CD8B\"</span>, <span class=\"st\">\"CD19\"</span>, <span class=\"st\">\"FCGR3A\"</span>, <span class=\"st\">\"CD14\"</span>, <span class=\"st\">\"FCER1A\"</span>, <span class=\"st\">\"PF4\"</span><span class=\"op\">)</span>\n\n<span class=\"fu\"><a href=\"../../reference/plotDimReduceFeature.html\">plotDimReduceFeature</a></span><span class=\"op\">(</span>x <span class=\"op\">=</span> <span class=\"va\">sce</span>, features <span class=\"op\">=</span> <span class=\"va\">markers</span>, reducedDimName <span class=\"op\">=</span> <span class=\"st\">\"celda_UMAP\"</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span>, normalize <span class=\"op\">=</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/cell_marker_umap-1.png\" width=\"700\"></p>\n<p>The parameter <code>displayName</code> can be used to switch between IDs stored in the <code>rownames</code> of the SCE and columns of the <code>rowData</code> of the SCE. If the assay denoted by <code>useAssay</code> is a raw counts matrix, then setting <code>normalize = TRUE</code> is recommended (otherwise the z-score of the raw counts will be plotted). When set to <code>TRUE</code>, each count will be normalized by dividing by the total number of counts in each cell. An alternative approach is to perform normalization with another method and then point to the normalized assay with the <code>useAssay</code> parameter. For example, normalization can be performed with the scater package:</p>\n<div class=\"sourceCode\" id=\"cb30\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"http://bioconductor.org/packages/scater/\">scater</a></span><span class=\"op\">)</span>\n<span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/scuttle/man/logNormCounts.html\">logNormCounts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, exprs_values <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, name <span class=\"op\">=</span> <span class=\"st\">\"logcounts\"</span><span class=\"op\">)</span>\n<span class=\"fu\"><a href=\"../../reference/plotDimReduceFeature.html\">plotDimReduceFeature</a></span><span class=\"op\">(</span>x <span class=\"op\">=</span> <span class=\"va\">sce</span>, features <span class=\"op\">=</span> <span class=\"va\">markers</span>, reducedDimName <span class=\"op\">=</span> <span class=\"st\">\"celda_UMAP\"</span>, useAssay <span class=\"op\">=</span> <span class=\"st\">\"logcounts\"</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span>, normalize <span class=\"op\">=</span> <span class=\"cn\">FALSE</span><span class=\"op\">)</span></code></pre></div>\n<p>This second approach may be faster if plotting a lot of marker genes or if the dataset is relatively large.</p>\n</div>\n<div id=\"plotting-cell-subpopulations-with-labels\" class=\"section level2\">\n<h2 class=\"hasAnchor\">\n<a href=\"#plotting-cell-subpopulations-with-labels\" class=\"anchor\"></a>Plotting cell subpopulations with labels</h2>\n<p>Once we identify of various cell subpopulations using the known marker genes, these custom labels can be added on the UMAP colored by cluster:</p>\n<div class=\"sourceCode\" id=\"cb31\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"va\">g</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../../reference/plotDimReduceCluster.html\">plotDimReduceCluster</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, reducedDimName <span class=\"op\">=</span> <span class=\"st\">\"celda_UMAP\"</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span>, labelClusters <span class=\"op\">=</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span>\n\n<span class=\"va\">labels</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"1: Megakaryocytes\"</span>,\n    <span class=\"st\">\"2: CD14+ Monocytes 1\"</span>,\n    <span class=\"st\">\"3: CD14+ Monocytes 2\"</span>,\n    <span class=\"st\">\"4: FCGR3A (CD16+) Monocytes\"</span>,\n    <span class=\"st\">\"5: CD14+ Monocytes 3\"</span>,\n    <span class=\"st\">\"6: CD8+ Cytotoxic T-cells\"</span>,\n    <span class=\"st\">\"7: CD4+ T-cells\"</span>,\n    <span class=\"st\">\"8: CD8+ Cytotoxic T-cells\"</span>,\n    <span class=\"st\">\"9: B-cells\"</span>,\n    <span class=\"st\">\"10: Naive CD8+ T-cells\"</span>,\n    <span class=\"st\">\"11: Naive CD4+ T-cells\"</span>,\n    <span class=\"st\">\"12: NK-cells\"</span>,\n    <span class=\"st\">\"13: Unknown T-cells\"</span>,\n    <span class=\"st\">\"14: Dendritic cells\"</span><span class=\"op\">)</span>\n\n<span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://ggplot2.tidyverse.org\">ggplot2</a></span><span class=\"op\">)</span>\n<span class=\"va\">g</span> <span class=\"op\">&lt;-</span> <span class=\"va\">g</span> <span class=\"op\">+</span> <span class=\"fu\"><a href=\"https://ggplot2.tidyverse.org/reference/scale_manual.html\">scale_color_manual</a></span><span class=\"op\">(</span>labels <span class=\"op\">=</span> <span class=\"va\">labels</span>,\n    values <span class=\"op\">=</span> <span class=\"fu\"><a href=\"../../reference/distinctColors.html\">distinctColors</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/length.html\">length</a></span><span class=\"op\">(</span><span class=\"va\">labels</span><span class=\"op\">)</span><span class=\"op\">)</span><span class=\"op\">)</span>\n<span class=\"fu\"><a href=\"https://rdrr.io/r/base/print.html\">print</a></span><span class=\"op\">(</span><span class=\"va\">g</span><span class=\"op\">)</span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/cell_identities-1.png\" width=\"700\"></p>\n</div>\n</div>\n<div id=\"probmap\" class=\"section level1\">\n<h1 class=\"hasAnchor\">\n<a href=\"#probmap\" class=\"anchor\"></a>Exploring relationship between modules and cell populations</h1>\n<p>Celda has the ability to identify modules of co-expressed features and quantify the probability of these modules in each cell population. An overview of the relationships between modules and cell subpopulations can be explored with the function <code>celdaProbabilityMap</code>. The “Absolute probability” heatmap on the left shows the proportion of counts in each module for each cell population. The “Absolute probability” map gives insights into the absolute abundance of a module within a given cell subpopulation. The absolute heatmap can be used to explore which modules are higher than other modules <strong>within a cell population</strong>. The “Relative expression” map shows the standardized (z-scored) module probabilities across cell subpopulations. The relative heatmap can be used to explore which modules are relatively higher than other modules <strong>across cell populations</strong>.</p>\n<div class=\"sourceCode\" id=\"cb32\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"fu\"><a href=\"../../reference/celdaProbabilityMap.html\">celdaProbabilityMap</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span><span class=\"op\">)</span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/celdaProbabilityMap-1.png\" width=\"960\"></p>\n<p>In this plot, we can see a variety of patterns. Modules 15 - 20 are highly expressed across most cell populations indicating that they may contain housekeeping genes (e.g. ribosomal). Other modules are specific to a cell population or groups of cell populations. For example, module 35 is only on in population 1 while module 70 is expressed across populations 2, 3, and to some degree in population 5. The unknown T-cell population 13 has highly specific levels of modules 30. In the next section, we can look at the genes in these modules to gain insights into the biological properties of each of these cell populations.</p>\n</div>\n<div id=\"exploring-feature-modules\" class=\"section level1\">\n<h1 class=\"hasAnchor\">\n<a href=\"#exploring-feature-modules\" class=\"anchor\"></a>Exploring feature modules</h1>\n<p>The primary advantage of celda over other tools is that it can cluster features that are co-expressed across cells into modules. These modules are often more biologically coherent than features correlated with principal components from PCA. Below are several ways in which modules can be explored and visualized.</p>\n<div id=\"table-of-features-in-each-module\" class=\"section level2\">\n<h2 class=\"hasAnchor\">\n<a href=\"#table-of-features-in-each-module\" class=\"anchor\"></a>Table of features in each module</h2>\n<p>The function <code>featureModuleTable</code> can be used to get the names of all features in each module into a <code>data.frame</code>.</p>\n<div class=\"sourceCode\" id=\"cb33\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"co\"># Save to a data.frame</span>\n<span class=\"va\">ta</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../../reference/featureModuleTable.html\">featureModuleTable</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span><span class=\"op\">)</span>\n<span class=\"fu\"><a href=\"https://rdrr.io/r/base/dim.html\">dim</a></span><span class=\"op\">(</span><span class=\"va\">ta</span><span class=\"op\">)</span></code></pre></div>\n<pre><code>## [1] 154  80</code></pre>\n<div class=\"sourceCode\" id=\"cb35\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/head.html\">head</a></span><span class=\"op\">(</span><span class=\"va\">ta</span><span class=\"op\">[</span>,<span class=\"st\">\"L70\"</span><span class=\"op\">]</span><span class=\"op\">)</span></code></pre></div>\n<pre><code>## [1] \"S100A9\"   \"S100A8\"   \"S100A12\"  \"RBP7\"     \"FOLR3\"    \"C19orf59\"</code></pre>\n<p>The parameter <code>displayName</code> can be used to switch between IDs stored in the <code>rownames</code> of the SCE and columns of the <code>rowData</code> of the SCE. The the <code>outputFile</code> parameter is set, the table will be saved to a tab-delimited text file instead of to a <code>data.frame</code>:</p>\n<div class=\"sourceCode\" id=\"cb37\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"co\"># Save to file called \"modules.txt\"</span>\n<span class=\"fu\"><a href=\"../../reference/featureModuleTable.html\">featureModuleTable</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span>, outputFile <span class=\"op\">=</span> <span class=\"st\">\"modules.txt\"</span><span class=\"op\">)</span></code></pre></div>\n<p>The modules for this model are shown below:</p>\n<div style=\"border: 1px solid #ddd; padding: 0px; overflow-y: scroll; height:550px; overflow-x: scroll; width:100%; \">\n<table class=\"table table table-striped table-condensed\">\n<thead><tr>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL1\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL2\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL3\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL4\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL5\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL6\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL7\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL8\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL9\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL10\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL11\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL12\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL13\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL14\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL15\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL16\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL17\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL18\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL19\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL20\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL21\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL22\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL23\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL24\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL25\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL26\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL27\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL28\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL29\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL30\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL31\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL32\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL33\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL34\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL35\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL36\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL37\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL38\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL39\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL40\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL41\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL42\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL43\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL44\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL45\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL46\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL47\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL48\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL49\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL50\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL51\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL52\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL53\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL54\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL55\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL56\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL57\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL58\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL59\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL60\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL61\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL62\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL63\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL64\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL65\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL66\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL67\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL68\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL69\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL70\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL71\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL72\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL73\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL74\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL75\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL76\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL77\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL78\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL79\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL80\n</th>\n</tr></thead>\n<tbody>\n<tr>\n<td style=\"text-align:left;\">\nCCL3\n</td>\n<td style=\"text-align:left;\">\nGNLY\n</td>\n<td style=\"text-align:left;\">\nCTSW\n</td>\n<td style=\"text-align:left;\">\nNKG7\n</td>\n<td style=\"text-align:left;\">\nRPS19\n</td>\n<td style=\"text-align:left;\">\nMT-CO2\n</td>\n<td style=\"text-align:left;\">\nMT-CO3\n</td>\n<td style=\"text-align:left;\">\nDDX5\n</td>\n<td style=\"text-align:left;\">\nRPL28\n</td>\n<td style=\"text-align:left;\">\nRPL18A\n</td>\n<td style=\"text-align:left;\">\nFOS\n</td>\n<td style=\"text-align:left;\">\nEIF1\n</td>\n<td style=\"text-align:left;\">\nJUNB\n</td>\n<td style=\"text-align:left;\">\nGIMAP7\n</td>\n<td style=\"text-align:left;\">\nRPL13A\n</td>\n<td style=\"text-align:left;\">\nRPS6\n</td>\n<td style=\"text-align:left;\">\nRPS2\n</td>\n<td style=\"text-align:left;\">\nRPL10\n</td>\n<td style=\"text-align:left;\">\nRPL13\n</td>\n<td style=\"text-align:left;\">\nRPS14\n</td>\n<td style=\"text-align:left;\">\nRPSA\n</td>\n<td style=\"text-align:left;\">\nRPS27\n</td>\n<td style=\"text-align:left;\">\nLTB\n</td>\n<td style=\"text-align:left;\">\nPTPRCAP\n</td>\n<td style=\"text-align:left;\">\nMALAT1\n</td>\n<td style=\"text-align:left;\">\nLDHB\n</td>\n<td style=\"text-align:left;\">\nIL32\n</td>\n<td style=\"text-align:left;\">\nCD79B\n</td>\n<td style=\"text-align:left;\">\nCD37\n</td>\n<td style=\"text-align:left;\">\nTUBA1B\n</td>\n<td style=\"text-align:left;\">\nGAPDH\n</td>\n<td style=\"text-align:left;\">\nPPIA\n</td>\n<td style=\"text-align:left;\">\nACTG1\n</td>\n<td style=\"text-align:left;\">\nCCL5\n</td>\n<td style=\"text-align:left;\">\nPPBP\n</td>\n<td style=\"text-align:left;\">\nRGS10\n</td>\n<td style=\"text-align:left;\">\nOAZ1\n</td>\n<td style=\"text-align:left;\">\nTAGLN2\n</td>\n<td style=\"text-align:left;\">\nMT-ND1\n</td>\n<td style=\"text-align:left;\">\nMT-CO1\n</td>\n<td style=\"text-align:left;\">\nARPC3\n</td>\n<td style=\"text-align:left;\">\nSH3BGRL3\n</td>\n<td style=\"text-align:left;\">\nCYBA\n</td>\n<td style=\"text-align:left;\">\nPTMA\n</td>\n<td style=\"text-align:left;\">\nTMSB10\n</td>\n<td style=\"text-align:left;\">\nLAPTM5\n</td>\n<td style=\"text-align:left;\">\nARHGDIB\n</td>\n<td style=\"text-align:left;\">\nHLA-B\n</td>\n<td style=\"text-align:left;\">\nCFL1\n</td>\n<td style=\"text-align:left;\">\nSRGN\n</td>\n<td style=\"text-align:left;\">\nACTB\n</td>\n<td style=\"text-align:left;\">\nTMSB4X\n</td>\n<td style=\"text-align:left;\">\nC9orf142\n</td>\n<td style=\"text-align:left;\">\nANXA1\n</td>\n<td style=\"text-align:left;\">\nUBB\n</td>\n<td style=\"text-align:left;\">\nB2M\n</td>\n<td style=\"text-align:left;\">\nMYL12A\n</td>\n<td style=\"text-align:left;\">\nHLA-A\n</td>\n<td style=\"text-align:left;\">\nFCGR3A\n</td>\n<td style=\"text-align:left;\">\nIFITM2\n</td>\n<td style=\"text-align:left;\">\nFAM26F\n</td>\n<td style=\"text-align:left;\">\nFCER1G\n</td>\n<td style=\"text-align:left;\">\nAIF1\n</td>\n<td style=\"text-align:left;\">\nFTH1\n</td>\n<td style=\"text-align:left;\">\nFCER1A\n</td>\n<td style=\"text-align:left;\">\nHLA-DQA1\n</td>\n<td style=\"text-align:left;\">\nHLA-DPB1\n</td>\n<td style=\"text-align:left;\">\nCD74\n</td>\n<td style=\"text-align:left;\">\nHLA-DRA\n</td>\n<td style=\"text-align:left;\">\nS100A9\n</td>\n<td style=\"text-align:left;\">\nLYZ\n</td>\n<td style=\"text-align:left;\">\nCST3\n</td>\n<td style=\"text-align:left;\">\nVIM\n</td>\n<td style=\"text-align:left;\">\nNEAT1\n</td>\n<td style=\"text-align:left;\">\nS100A4\n</td>\n<td style=\"text-align:left;\">\nGSTP1\n</td>\n<td style=\"text-align:left;\">\nLGALS1\n</td>\n<td style=\"text-align:left;\">\nGABARAP\n</td>\n<td style=\"text-align:left;\">\nTYROBP\n</td>\n<td style=\"text-align:left;\">\nFTL\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\nIGFBP7\n</td>\n<td style=\"text-align:left;\">\nGZMB\n</td>\n<td style=\"text-align:left;\">\nCD247\n</td>\n<td style=\"text-align:left;\">\nGZMA\n</td>\n<td style=\"text-align:left;\">\nNACA\n</td>\n<td style=\"text-align:left;\">\nCD52\n</td>\n<td style=\"text-align:left;\">\nMT-ND4\n</td>\n<td style=\"text-align:left;\">\nTSC22D3\n</td>\n<td style=\"text-align:left;\">\nRPS9\n</td>\n<td style=\"text-align:left;\">\nRPL12\n</td>\n<td style=\"text-align:left;\">\nFXYD5\n</td>\n<td style=\"text-align:left;\">\nH3F3B\n</td>\n<td style=\"text-align:left;\">\nTMEM66\n</td>\n<td style=\"text-align:left;\">\nGIMAP4\n</td>\n<td style=\"text-align:left;\">\nRPS18\n</td>\n<td style=\"text-align:left;\">\nRPS3\n</td>\n<td style=\"text-align:left;\">\nRPL19\n</td>\n<td style=\"text-align:left;\">\nRPL11\n</td>\n<td style=\"text-align:left;\">\nRPL32\n</td>\n<td style=\"text-align:left;\">\nEEF1A1\n</td>\n<td style=\"text-align:left;\">\nJUN\n</td>\n<td style=\"text-align:left;\">\nRPL21\n</td>\n<td style=\"text-align:left;\">\nMYC\n</td>\n<td style=\"text-align:left;\">\nCXCR4\n</td>\n<td style=\"text-align:left;\">\nMYLIP\n</td>\n<td style=\"text-align:left;\">\nIL7R\n</td>\n<td style=\"text-align:left;\">\nCD3D\n</td>\n<td style=\"text-align:left;\">\nCD79A\n</td>\n<td style=\"text-align:left;\">\nSNHG7\n</td>\n<td style=\"text-align:left;\">\nHMGB2\n</td>\n<td style=\"text-align:left;\">\nEIF4A1\n</td>\n<td style=\"text-align:left;\">\nHNRNPA2B1\n</td>\n<td style=\"text-align:left;\">\nCORO1A\n</td>\n<td style=\"text-align:left;\">\nGZMK\n</td>\n<td style=\"text-align:left;\">\nPF4\n</td>\n<td style=\"text-align:left;\">\nTUBA4A\n</td>\n<td style=\"text-align:left;\">\nFKBP1A\n</td>\n<td style=\"text-align:left;\">\nGDI2\n</td>\n<td style=\"text-align:left;\">\nPFDN5\n</td>\n<td style=\"text-align:left;\">\nLSP1\n</td>\n<td style=\"text-align:left;\">\nYBX1\n</td>\n<td style=\"text-align:left;\">\nSERF2\n</td>\n<td style=\"text-align:left;\">\nCLIC1\n</td>\n<td style=\"text-align:left;\">\nHNRNPA1\n</td>\n<td style=\"text-align:left;\">\nEIF3K\n</td>\n<td style=\"text-align:left;\">\nSNX3\n</td>\n<td style=\"text-align:left;\">\nUBC\n</td>\n<td style=\"text-align:left;\">\nSRP14\n</td>\n<td style=\"text-align:left;\">\nPSMB9\n</td>\n<td style=\"text-align:left;\">\nITGB2\n</td>\n<td style=\"text-align:left;\">\nPFN1\n</td>\n<td style=\"text-align:left;\">\nGMFG\n</td>\n<td style=\"text-align:left;\">\nAPOBEC3G\n</td>\n<td style=\"text-align:left;\">\nHCST\n</td>\n<td style=\"text-align:left;\">\nRAC2\n</td>\n<td style=\"text-align:left;\">\nHLA-C\n</td>\n<td style=\"text-align:left;\">\nHSPA8\n</td>\n<td style=\"text-align:left;\">\nCALM1\n</td>\n<td style=\"text-align:left;\">\nRHOC\n</td>\n<td style=\"text-align:left;\">\nCTSC\n</td>\n<td style=\"text-align:left;\">\nNCF1\n</td>\n<td style=\"text-align:left;\">\nFGR\n</td>\n<td style=\"text-align:left;\">\nLST1\n</td>\n<td style=\"text-align:left;\">\nCOTL1\n</td>\n<td style=\"text-align:left;\">\nCLEC10A\n</td>\n<td style=\"text-align:left;\">\nHLA-DQB1\n</td>\n<td style=\"text-align:left;\">\nHLA-DPA1\n</td>\n<td style=\"text-align:left;\">\nIRF8\n</td>\n<td style=\"text-align:left;\">\nHLA-DMA\n</td>\n<td style=\"text-align:left;\">\nS100A8\n</td>\n<td style=\"text-align:left;\">\nLGALS2\n</td>\n<td style=\"text-align:left;\">\nCFP\n</td>\n<td style=\"text-align:left;\">\nS100A10\n</td>\n<td style=\"text-align:left;\">\nISG15\n</td>\n<td style=\"text-align:left;\">\nS100A6\n</td>\n<td style=\"text-align:left;\">\nGPX1\n</td>\n<td style=\"text-align:left;\">\nTYMP\n</td>\n<td style=\"text-align:left;\">\nTSPO\n</td>\n<td style=\"text-align:left;\">\nFCN1\n</td>\n<td style=\"text-align:left;\">\nCTSS\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\nHAVCR2\n</td>\n<td style=\"text-align:left;\">\nFGFBP2\n</td>\n<td style=\"text-align:left;\">\nGZMM\n</td>\n<td style=\"text-align:left;\">\nCST7\n</td>\n<td style=\"text-align:left;\">\nNAP1L1\n</td>\n<td style=\"text-align:left;\">\nPPDPF\n</td>\n<td style=\"text-align:left;\">\nMT-CYB\n</td>\n<td style=\"text-align:left;\">\nTXNIP\n</td>\n<td style=\"text-align:left;\">\nFAU\n</td>\n<td style=\"text-align:left;\">\nRPL8\n</td>\n<td style=\"text-align:left;\">\nCD48\n</td>\n<td style=\"text-align:left;\">\nDUSP1\n</td>\n<td style=\"text-align:left;\">\nZFP36L2\n</td>\n<td style=\"text-align:left;\">\nFYB\n</td>\n<td style=\"text-align:left;\">\nRPS8\n</td>\n<td style=\"text-align:left;\">\nRPS12\n</td>\n<td style=\"text-align:left;\">\nRPLP1\n</td>\n<td style=\"text-align:left;\">\nRPL6\n</td>\n<td style=\"text-align:left;\">\nRPLP2\n</td>\n<td style=\"text-align:left;\">\nRPS4X\n</td>\n<td style=\"text-align:left;\">\nNPM1\n</td>\n<td style=\"text-align:left;\">\nRPS3A\n</td>\n<td style=\"text-align:left;\">\nSIT1\n</td>\n<td style=\"text-align:left;\">\nISG20\n</td>\n<td style=\"text-align:left;\">\nATM\n</td>\n<td style=\"text-align:left;\">\nNOSIP\n</td>\n<td style=\"text-align:left;\">\nCD3E\n</td>\n<td style=\"text-align:left;\">\nMS4A1\n</td>\n<td style=\"text-align:left;\">\nSNX2\n</td>\n<td style=\"text-align:left;\">\nEIF1AY\n</td>\n<td style=\"text-align:left;\">\nSLC25A5\n</td>\n<td style=\"text-align:left;\">\nHMGB1\n</td>\n<td style=\"text-align:left;\">\nCHCHD2\n</td>\n<td style=\"text-align:left;\">\nLAG3\n</td>\n<td style=\"text-align:left;\">\nHIST1H2AC\n</td>\n<td style=\"text-align:left;\">\nCDC42SE2\n</td>\n<td style=\"text-align:left;\">\nTALDO1\n</td>\n<td style=\"text-align:left;\">\nATP5C1\n</td>\n<td style=\"text-align:left;\">\nSLC25A6\n</td>\n<td style=\"text-align:left;\">\nATP6V0E1\n</td>\n<td style=\"text-align:left;\">\nLY6E\n</td>\n<td style=\"text-align:left;\">\nARPC1B\n</td>\n<td style=\"text-align:left;\">\nSUPT4H1\n</td>\n<td style=\"text-align:left;\">\nRPL36AL\n</td>\n<td style=\"text-align:left;\">\nATP5E\n</td>\n<td style=\"text-align:left;\">\nUQCRH\n</td>\n<td style=\"text-align:left;\">\nMYL12B\n</td>\n<td style=\"text-align:left;\">\nPSME1\n</td>\n<td style=\"text-align:left;\">\nPPP1CA\n</td>\n<td style=\"text-align:left;\">\nCD63\n</td>\n<td style=\"text-align:left;\">\nMYL6\n</td>\n<td style=\"text-align:left;\">\nCAPZB\n</td>\n<td style=\"text-align:left;\">\nCDC37\n</td>\n<td style=\"text-align:left;\">\nID2\n</td>\n<td style=\"text-align:left;\">\nUCP2\n</td>\n<td style=\"text-align:left;\">\nHLA-E\n</td>\n<td style=\"text-align:left;\">\nEVL\n</td>\n<td style=\"text-align:left;\">\nCD99\n</td>\n<td style=\"text-align:left;\">\nCDKN1C\n</td>\n<td style=\"text-align:left;\">\nMYO1G\n</td>\n<td style=\"text-align:left;\">\nLYN\n</td>\n<td style=\"text-align:left;\">\nCD86\n</td>\n<td style=\"text-align:left;\">\nIFITM3\n</td>\n<td style=\"text-align:left;\">\nSAT1\n</td>\n<td style=\"text-align:left;\">\nENHO\n</td>\n<td style=\"text-align:left;\">\nHLA-DQA2\n</td>\n<td style=\"text-align:left;\">\nHLA-DRB1\n</td>\n<td style=\"text-align:left;\">\nLAT2\n</td>\n<td style=\"text-align:left;\">\nLY86\n</td>\n<td style=\"text-align:left;\">\nS100A12\n</td>\n<td style=\"text-align:left;\">\nMS4A6A\n</td>\n<td style=\"text-align:left;\">\nCPVL\n</td>\n<td style=\"text-align:left;\">\nNFKBIA\n</td>\n<td style=\"text-align:left;\">\nANXA2\n</td>\n<td style=\"text-align:left;\">\nS100A11\n</td>\n<td style=\"text-align:left;\">\nAP1S2\n</td>\n<td style=\"text-align:left;\">\nLGALS3\n</td>\n<td style=\"text-align:left;\">\nRAC1\n</td>\n<td style=\"text-align:left;\">\nNCF2\n</td>\n<td style=\"text-align:left;\">\nNPC2\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\nCCL4L1\n</td>\n<td style=\"text-align:left;\">\nCCL4\n</td>\n<td style=\"text-align:left;\">\nLYAR\n</td>\n<td style=\"text-align:left;\">\nPRF1\n</td>\n<td style=\"text-align:left;\">\nSOD1\n</td>\n<td style=\"text-align:left;\">\nATP6V1G1\n</td>\n<td style=\"text-align:left;\">\nMT-ND2\n</td>\n<td style=\"text-align:left;\">\nCIRBP\n</td>\n<td style=\"text-align:left;\">\nUBA52\n</td>\n<td style=\"text-align:left;\">\nRPL29\n</td>\n<td style=\"text-align:left;\">\nAPRT\n</td>\n<td style=\"text-align:left;\">\nITM2B\n</td>\n<td style=\"text-align:left;\">\nTMEM123\n</td>\n<td style=\"text-align:left;\">\nGIMAP1\n</td>\n<td style=\"text-align:left;\">\nRPL10A\n</td>\n<td style=\"text-align:left;\">\nRPL3\n</td>\n<td style=\"text-align:left;\">\nRPL15\n</td>\n<td style=\"text-align:left;\">\nRPL26\n</td>\n<td style=\"text-align:left;\">\nRPS16\n</td>\n<td style=\"text-align:left;\">\nRPL27A\n</td>\n<td style=\"text-align:left;\">\nRPSAP58\n</td>\n<td style=\"text-align:left;\">\nRPS27A\n</td>\n<td style=\"text-align:left;\">\nBIRC3\n</td>\n<td style=\"text-align:left;\">\nCD69\n</td>\n<td style=\"text-align:left;\">\nANKRD44\n</td>\n<td style=\"text-align:left;\">\nGIMAP5\n</td>\n<td style=\"text-align:left;\">\nCD7\n</td>\n<td style=\"text-align:left;\">\nTCL1A\n</td>\n<td style=\"text-align:left;\">\nPRKCB\n</td>\n<td style=\"text-align:left;\">\nMANF\n</td>\n<td style=\"text-align:left;\">\nTPI1\n</td>\n<td style=\"text-align:left;\">\nHSP90AA1\n</td>\n<td style=\"text-align:left;\">\nENO1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSDPR\n</td>\n<td style=\"text-align:left;\">\nFERMT3\n</td>\n<td style=\"text-align:left;\">\nH3F3A\n</td>\n<td style=\"text-align:left;\">\nPRDX6\n</td>\n<td style=\"text-align:left;\">\nATP5G2\n</td>\n<td style=\"text-align:left;\">\nBRK1\n</td>\n<td style=\"text-align:left;\">\nRHOA\n</td>\n<td style=\"text-align:left;\">\nALDOA\n</td>\n<td style=\"text-align:left;\">\nIFI35\n</td>\n<td style=\"text-align:left;\">\nCOX7C\n</td>\n<td style=\"text-align:left;\">\nATP5L\n</td>\n<td style=\"text-align:left;\">\nGABARAPL2\n</td>\n<td style=\"text-align:left;\">\nYWHAB\n</td>\n<td style=\"text-align:left;\">\nRBM3\n</td>\n<td style=\"text-align:left;\">\nPSMB8\n</td>\n<td style=\"text-align:left;\">\nCTSD\n</td>\n<td style=\"text-align:left;\">\nARPC2\n</td>\n<td style=\"text-align:left;\">\nTUBA1A\n</td>\n<td style=\"text-align:left;\">\nARGLU1\n</td>\n<td style=\"text-align:left;\">\nRNF181\n</td>\n<td style=\"text-align:left;\">\nCD53\n</td>\n<td style=\"text-align:left;\">\nARL6IP5\n</td>\n<td style=\"text-align:left;\">\nIFITM1\n</td>\n<td style=\"text-align:left;\">\nSEPT7\n</td>\n<td style=\"text-align:left;\">\nCKB\n</td>\n<td style=\"text-align:left;\">\nABI3\n</td>\n<td style=\"text-align:left;\">\nPOU2F2\n</td>\n<td style=\"text-align:left;\">\nCD300C\n</td>\n<td style=\"text-align:left;\">\nCFD\n</td>\n<td style=\"text-align:left;\">\nPSAP\n</td>\n<td style=\"text-align:left;\">\nDNASE1L3\n</td>\n<td style=\"text-align:left;\">\nCD1C\n</td>\n<td style=\"text-align:left;\">\nHLA-DRB5\n</td>\n<td style=\"text-align:left;\">\nEAF2\n</td>\n<td style=\"text-align:left;\">\nHLA-DMB\n</td>\n<td style=\"text-align:left;\">\nRBP7\n</td>\n<td style=\"text-align:left;\">\nCD14\n</td>\n<td style=\"text-align:left;\">\nIGSF6\n</td>\n<td style=\"text-align:left;\">\nAMICA1\n</td>\n<td style=\"text-align:left;\">\nPRELID1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGRN\n</td>\n<td style=\"text-align:left;\">\nTNFSF13B\n</td>\n<td style=\"text-align:left;\">\nPYCARD\n</td>\n<td style=\"text-align:left;\">\nCDA\n</td>\n<td style=\"text-align:left;\">\nBRI3\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSPON2\n</td>\n<td style=\"text-align:left;\">\nHOPX\n</td>\n<td style=\"text-align:left;\">\nGZMH\n</td>\n<td style=\"text-align:left;\">\nCYTIP\n</td>\n<td style=\"text-align:left;\">\nPRR13\n</td>\n<td style=\"text-align:left;\">\nMT-ATP6\n</td>\n<td style=\"text-align:left;\">\nLIMD2\n</td>\n<td style=\"text-align:left;\">\nRPS24\n</td>\n<td style=\"text-align:left;\">\nGNB2L1\n</td>\n<td style=\"text-align:left;\">\nGSTK1\n</td>\n<td style=\"text-align:left;\">\nKLF6\n</td>\n<td style=\"text-align:left;\">\nBTG2\n</td>\n<td style=\"text-align:left;\">\nCITED2\n</td>\n<td style=\"text-align:left;\">\nRPS5\n</td>\n<td style=\"text-align:left;\">\nRPS15A\n</td>\n<td style=\"text-align:left;\">\nRPS15\n</td>\n<td style=\"text-align:left;\">\nRPL14\n</td>\n<td style=\"text-align:left;\">\nRPS28\n</td>\n<td style=\"text-align:left;\">\nTPT1\n</td>\n<td style=\"text-align:left;\">\nHINT1\n</td>\n<td style=\"text-align:left;\">\nRPL9\n</td>\n<td style=\"text-align:left;\">\nRIC3\n</td>\n<td style=\"text-align:left;\">\nSTK17A\n</td>\n<td style=\"text-align:left;\">\nCARS\n</td>\n<td style=\"text-align:left;\">\nC12orf57\n</td>\n<td style=\"text-align:left;\">\nCD2\n</td>\n<td style=\"text-align:left;\">\nIGLL5\n</td>\n<td style=\"text-align:left;\">\nARL4A\n</td>\n<td style=\"text-align:left;\">\nHMGA1\n</td>\n<td style=\"text-align:left;\">\nPKM\n</td>\n<td style=\"text-align:left;\">\nHMGN1\n</td>\n<td style=\"text-align:left;\">\nSLC25A3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTSC22D1\n</td>\n<td style=\"text-align:left;\">\nDNAJB6\n</td>\n<td style=\"text-align:left;\">\nGSTO1\n</td>\n<td style=\"text-align:left;\">\nDNAJC8\n</td>\n<td style=\"text-align:left;\">\nZFP36\n</td>\n<td style=\"text-align:left;\">\nC11orf31\n</td>\n<td style=\"text-align:left;\">\nCALM2\n</td>\n<td style=\"text-align:left;\">\nLAMTOR4\n</td>\n<td style=\"text-align:left;\">\nIRF7\n</td>\n<td style=\"text-align:left;\">\nCNBP\n</td>\n<td style=\"text-align:left;\">\nPSMA7\n</td>\n<td style=\"text-align:left;\">\nPOLD4\n</td>\n<td style=\"text-align:left;\">\nOST4\n</td>\n<td style=\"text-align:left;\">\nC19orf43\n</td>\n<td style=\"text-align:left;\">\nTPM3\n</td>\n<td style=\"text-align:left;\">\nMYO1F\n</td>\n<td style=\"text-align:left;\">\nEMP3\n</td>\n<td style=\"text-align:left;\">\nPGK1\n</td>\n<td style=\"text-align:left;\">\nTMCO1\n</td>\n<td style=\"text-align:left;\">\nCKLF\n</td>\n<td style=\"text-align:left;\">\nPLAC8\n</td>\n<td style=\"text-align:left;\">\nBIN2\n</td>\n<td style=\"text-align:left;\">\nAES\n</td>\n<td style=\"text-align:left;\">\nPDIA3\n</td>\n<td style=\"text-align:left;\">\nLYPD2\n</td>\n<td style=\"text-align:left;\">\nATP1B3\n</td>\n<td style=\"text-align:left;\">\nSCPEP1\n</td>\n<td style=\"text-align:left;\">\nFAM49A\n</td>\n<td style=\"text-align:left;\">\nSERPINA1\n</td>\n<td style=\"text-align:left;\">\nTIMP1\n</td>\n<td style=\"text-align:left;\">\nSERPINF1\n</td>\n<td style=\"text-align:left;\">\nFCGR2B\n</td>\n<td style=\"text-align:left;\">\nPLD4\n</td>\n<td style=\"text-align:left;\">\nMEF2C\n</td>\n<td style=\"text-align:left;\">\nRNASE6\n</td>\n<td style=\"text-align:left;\">\nFOLR3\n</td>\n<td style=\"text-align:left;\">\nALDH2\n</td>\n<td style=\"text-align:left;\">\nRAB32\n</td>\n<td style=\"text-align:left;\">\nMYADM\n</td>\n<td style=\"text-align:left;\">\nIFI6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCEBPD\n</td>\n<td style=\"text-align:left;\">\nRNF130\n</td>\n<td style=\"text-align:left;\">\nTKT\n</td>\n<td style=\"text-align:left;\">\nSLC7A7\n</td>\n<td style=\"text-align:left;\">\nCTSB\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCLIC3\n</td>\n<td style=\"text-align:left;\">\nC12orf75\n</td>\n<td style=\"text-align:left;\">\nKLRD1\n</td>\n<td style=\"text-align:left;\">\nCLNS1A\n</td>\n<td style=\"text-align:left;\">\nSYF2\n</td>\n<td style=\"text-align:left;\">\nSSR2\n</td>\n<td style=\"text-align:left;\">\nKLF2\n</td>\n<td style=\"text-align:left;\">\nCOX4I1\n</td>\n<td style=\"text-align:left;\">\nRPS11\n</td>\n<td style=\"text-align:left;\">\nCD44\n</td>\n<td style=\"text-align:left;\">\nIER2\n</td>\n<td style=\"text-align:left;\">\nNDFIP1\n</td>\n<td style=\"text-align:left;\">\nSEPW1\n</td>\n<td style=\"text-align:left;\">\nRPS23\n</td>\n<td style=\"text-align:left;\">\nRPL23A\n</td>\n<td style=\"text-align:left;\">\nRPS7\n</td>\n<td style=\"text-align:left;\">\nRPL27\n</td>\n<td style=\"text-align:left;\">\nRPL36\n</td>\n<td style=\"text-align:left;\">\nRPL7\n</td>\n<td style=\"text-align:left;\">\nEIF4A2\n</td>\n<td style=\"text-align:left;\">\nBTG1\n</td>\n<td style=\"text-align:left;\">\nSTMN3\n</td>\n<td style=\"text-align:left;\">\nACAP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDNAJB1\n</td>\n<td style=\"text-align:left;\">\nLCK\n</td>\n<td style=\"text-align:left;\">\nIGJ\n</td>\n<td style=\"text-align:left;\">\nHVCN1\n</td>\n<td style=\"text-align:left;\">\nSTMN1\n</td>\n<td style=\"text-align:left;\">\nCOX8A\n</td>\n<td style=\"text-align:left;\">\nSRSF7\n</td>\n<td style=\"text-align:left;\">\nLDHA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNRGN\n</td>\n<td style=\"text-align:left;\">\nLIMS1\n</td>\n<td style=\"text-align:left;\">\nSOD2\n</td>\n<td style=\"text-align:left;\">\nYWHAH\n</td>\n<td style=\"text-align:left;\">\nSERP1\n</td>\n<td style=\"text-align:left;\">\nCOPE\n</td>\n<td style=\"text-align:left;\">\nRNASET2\n</td>\n<td style=\"text-align:left;\">\nCOX5B\n</td>\n<td style=\"text-align:left;\">\nMIR142\n</td>\n<td style=\"text-align:left;\">\nTMA7\n</td>\n<td style=\"text-align:left;\">\nCOX6B1\n</td>\n<td style=\"text-align:left;\">\nSEP15\n</td>\n<td style=\"text-align:left;\">\nNDUFA4\n</td>\n<td style=\"text-align:left;\">\nSUMO2\n</td>\n<td style=\"text-align:left;\">\nCOX6A1\n</td>\n<td style=\"text-align:left;\">\nFLNA\n</td>\n<td style=\"text-align:left;\">\nPSME2\n</td>\n<td style=\"text-align:left;\">\nARF1\n</td>\n<td style=\"text-align:left;\">\nADRM1\n</td>\n<td style=\"text-align:left;\">\nIL10RA\n</td>\n<td style=\"text-align:left;\">\nCD164\n</td>\n<td style=\"text-align:left;\">\nRAP1B\n</td>\n<td style=\"text-align:left;\">\nRARRES3\n</td>\n<td style=\"text-align:left;\">\nLITAF\n</td>\n<td style=\"text-align:left;\">\nVMO1\n</td>\n<td style=\"text-align:left;\">\nSPN\n</td>\n<td style=\"text-align:left;\">\nSYNGR2\n</td>\n<td style=\"text-align:left;\">\nARRB1\n</td>\n<td style=\"text-align:left;\">\nCD68\n</td>\n<td style=\"text-align:left;\">\nCEBPB\n</td>\n<td style=\"text-align:left;\">\nLILRA4\n</td>\n<td style=\"text-align:left;\">\nPPP1R14A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCDC50\n</td>\n<td style=\"text-align:left;\">\nGAPT\n</td>\n<td style=\"text-align:left;\">\nC19orf59\n</td>\n<td style=\"text-align:left;\">\nIL8\n</td>\n<td style=\"text-align:left;\">\nCD33\n</td>\n<td style=\"text-align:left;\">\nPPT1\n</td>\n<td style=\"text-align:left;\">\nC1orf162\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFCGRT\n</td>\n<td style=\"text-align:left;\">\nSTX11\n</td>\n<td style=\"text-align:left;\">\nAP2S1\n</td>\n<td style=\"text-align:left;\">\nFPR1\n</td>\n<td style=\"text-align:left;\">\nBLVRA\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nXCL2\n</td>\n<td style=\"text-align:left;\">\nCD8A\n</td>\n<td style=\"text-align:left;\">\nCD160\n</td>\n<td style=\"text-align:left;\">\nCCT7\n</td>\n<td style=\"text-align:left;\">\nEVI2B\n</td>\n<td style=\"text-align:left;\">\nTMEM14B\n</td>\n<td style=\"text-align:left;\">\nHNRNPDL\n</td>\n<td style=\"text-align:left;\">\nBTF3\n</td>\n<td style=\"text-align:left;\">\nRPL23\n</td>\n<td style=\"text-align:left;\">\nPPP1R15A\n</td>\n<td style=\"text-align:left;\">\nGPSM3\n</td>\n<td style=\"text-align:left;\">\nRWDD1\n</td>\n<td style=\"text-align:left;\">\nGIMAP2\n</td>\n<td style=\"text-align:left;\">\nRPL18\n</td>\n<td style=\"text-align:left;\">\nRPL30\n</td>\n<td style=\"text-align:left;\">\nRPL7A\n</td>\n<td style=\"text-align:left;\">\nEEF1D\n</td>\n<td style=\"text-align:left;\">\nRPL22\n</td>\n<td style=\"text-align:left;\">\nRPL35A\n</td>\n<td style=\"text-align:left;\">\nSNRPD2\n</td>\n<td style=\"text-align:left;\">\nGLTSCR2\n</td>\n<td style=\"text-align:left;\">\nCRIP2\n</td>\n<td style=\"text-align:left;\">\nRHOH\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPRDX2\n</td>\n<td style=\"text-align:left;\">\nLAT\n</td>\n<td style=\"text-align:left;\">\nLINC00926\n</td>\n<td style=\"text-align:left;\">\nSYPL1\n</td>\n<td style=\"text-align:left;\">\nPRDX4\n</td>\n<td style=\"text-align:left;\">\nPSMB3\n</td>\n<td style=\"text-align:left;\">\nRAN\n</td>\n<td style=\"text-align:left;\">\nPPIB\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTUBB1\n</td>\n<td style=\"text-align:left;\">\nMAX\n</td>\n<td style=\"text-align:left;\">\nPOLE4\n</td>\n<td style=\"text-align:left;\">\nMRPL14\n</td>\n<td style=\"text-align:left;\">\nGPX4\n</td>\n<td style=\"text-align:left;\">\nCOX5A\n</td>\n<td style=\"text-align:left;\">\nDRAP1\n</td>\n<td style=\"text-align:left;\">\nTCEB2\n</td>\n<td style=\"text-align:left;\">\nLAP3\n</td>\n<td style=\"text-align:left;\">\nEIF3F\n</td>\n<td style=\"text-align:left;\">\nVAMP8\n</td>\n<td style=\"text-align:left;\">\nLSM7\n</td>\n<td style=\"text-align:left;\">\nSKP1\n</td>\n<td style=\"text-align:left;\">\nEIF3G\n</td>\n<td style=\"text-align:left;\">\nGUK1\n</td>\n<td style=\"text-align:left;\">\nGLIPR2\n</td>\n<td style=\"text-align:left;\">\nARPC5\n</td>\n<td style=\"text-align:left;\">\nLRRFIP1\n</td>\n<td style=\"text-align:left;\">\nPPP2CA\n</td>\n<td style=\"text-align:left;\">\nCMTM3\n</td>\n<td style=\"text-align:left;\">\nPPP1R18\n</td>\n<td style=\"text-align:left;\">\nHLA-F\n</td>\n<td style=\"text-align:left;\">\nTRAF3IP3\n</td>\n<td style=\"text-align:left;\">\nXBP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nADA\n</td>\n<td style=\"text-align:left;\">\nLYST\n</td>\n<td style=\"text-align:left;\">\nTCF7L2\n</td>\n<td style=\"text-align:left;\">\nSPI1\n</td>\n<td style=\"text-align:left;\">\nSTXBP2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPHACTR1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCSF3R\n</td>\n<td style=\"text-align:left;\">\nCD302\n</td>\n<td style=\"text-align:left;\">\nCORO1B\n</td>\n<td style=\"text-align:left;\">\nRHOG\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCTSH\n</td>\n<td style=\"text-align:left;\">\nMNDA\n</td>\n<td style=\"text-align:left;\">\nATP6V0B\n</td>\n<td style=\"text-align:left;\">\nMAFB\n</td>\n<td style=\"text-align:left;\">\nRHOB\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTTC38\n</td>\n<td style=\"text-align:left;\">\nKLRG1\n</td>\n<td style=\"text-align:left;\">\nFCRL6\n</td>\n<td style=\"text-align:left;\">\nATP1A1\n</td>\n<td style=\"text-align:left;\">\nYPEL5\n</td>\n<td style=\"text-align:left;\">\nC19orf24\n</td>\n<td style=\"text-align:left;\">\nANAPC16\n</td>\n<td style=\"text-align:left;\">\nPABPC1\n</td>\n<td style=\"text-align:left;\">\nEEF2\n</td>\n<td style=\"text-align:left;\">\nPLP2\n</td>\n<td style=\"text-align:left;\">\nEDF1\n</td>\n<td style=\"text-align:left;\">\nSOCS3\n</td>\n<td style=\"text-align:left;\">\nDGCR6L\n</td>\n<td style=\"text-align:left;\">\nRPL5\n</td>\n<td style=\"text-align:left;\">\nRPS25\n</td>\n<td style=\"text-align:left;\">\nRPL35\n</td>\n<td style=\"text-align:left;\">\nRPL24\n</td>\n<td style=\"text-align:left;\">\nC6orf48\n</td>\n<td style=\"text-align:left;\">\nRPL34\n</td>\n<td style=\"text-align:left;\">\nSELL\n</td>\n<td style=\"text-align:left;\">\nFOXP1\n</td>\n<td style=\"text-align:left;\">\nTNFRSF4\n</td>\n<td style=\"text-align:left;\">\nBIN1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCD27\n</td>\n<td style=\"text-align:left;\">\nCD3G\n</td>\n<td style=\"text-align:left;\">\nBANK1\n</td>\n<td style=\"text-align:left;\">\nADK\n</td>\n<td style=\"text-align:left;\">\nCHTF8\n</td>\n<td style=\"text-align:left;\">\nGNB2\n</td>\n<td style=\"text-align:left;\">\nHNRNPK\n</td>\n<td style=\"text-align:left;\">\nSRSF3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGNG11\n</td>\n<td style=\"text-align:left;\">\nAP3S1\n</td>\n<td style=\"text-align:left;\">\nRAB10\n</td>\n<td style=\"text-align:left;\">\nSPINT2\n</td>\n<td style=\"text-align:left;\">\nATP5D\n</td>\n<td style=\"text-align:left;\">\nWDR83OS\n</td>\n<td style=\"text-align:left;\">\nSH3BGRL\n</td>\n<td style=\"text-align:left;\">\nBST2\n</td>\n<td style=\"text-align:left;\">\nTMEM179B\n</td>\n<td style=\"text-align:left;\">\nUBE2D3\n</td>\n<td style=\"text-align:left;\">\nARL6IP4\n</td>\n<td style=\"text-align:left;\">\nRASGRP2\n</td>\n<td style=\"text-align:left;\">\nCOX6C\n</td>\n<td style=\"text-align:left;\">\nTMBIM6\n</td>\n<td style=\"text-align:left;\">\nTRAPPC1\n</td>\n<td style=\"text-align:left;\">\nEFHD2\n</td>\n<td style=\"text-align:left;\">\nATP5B\n</td>\n<td style=\"text-align:left;\">\nCALM3\n</td>\n<td style=\"text-align:left;\">\nPDHB\n</td>\n<td style=\"text-align:left;\">\nFYN\n</td>\n<td style=\"text-align:left;\">\nSCP2\n</td>\n<td style=\"text-align:left;\">\nDHRS7\n</td>\n<td style=\"text-align:left;\">\nIL2RG\n</td>\n<td style=\"text-align:left;\">\nANXA6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSH3BP1\n</td>\n<td style=\"text-align:left;\">\nLYL1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIFI30\n</td>\n<td style=\"text-align:left;\">\nASAH1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPLBD1\n</td>\n<td style=\"text-align:left;\">\nLILRB4\n</td>\n<td style=\"text-align:left;\">\nTMEM14C\n</td>\n<td style=\"text-align:left;\">\nMT2A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nBLVRB\n</td>\n<td style=\"text-align:left;\">\nFGL2\n</td>\n<td style=\"text-align:left;\">\nRGS2\n</td>\n<td style=\"text-align:left;\">\nFCGR2A\n</td>\n<td style=\"text-align:left;\">\nPLAUR\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAKR1C3\n</td>\n<td style=\"text-align:left;\">\nZAP70\n</td>\n<td style=\"text-align:left;\">\nXCL1\n</td>\n<td style=\"text-align:left;\">\nARID4B\n</td>\n<td style=\"text-align:left;\">\nDAZAP2\n</td>\n<td style=\"text-align:left;\">\nMPC2\n</td>\n<td style=\"text-align:left;\">\nVAMP2\n</td>\n<td style=\"text-align:left;\">\nEIF3H\n</td>\n<td style=\"text-align:left;\">\nNBEAL1\n</td>\n<td style=\"text-align:left;\">\nKHDRBS1\n</td>\n<td style=\"text-align:left;\">\nUQCR11\n</td>\n<td style=\"text-align:left;\">\nTRADD\n</td>\n<td style=\"text-align:left;\">\nTMEM173\n</td>\n<td style=\"text-align:left;\">\nRPS10\n</td>\n<td style=\"text-align:left;\">\nRPL31\n</td>\n<td style=\"text-align:left;\">\nRPL4\n</td>\n<td style=\"text-align:left;\">\nRPL38\n</td>\n<td style=\"text-align:left;\">\nC21orf33\n</td>\n<td style=\"text-align:left;\">\nRPL17\n</td>\n<td style=\"text-align:left;\">\nPEBP1\n</td>\n<td style=\"text-align:left;\">\nRP11-796E2.4\n</td>\n<td style=\"text-align:left;\">\nRP11-706O15.1\n</td>\n<td style=\"text-align:left;\">\nOCIAD2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLEPROTL1\n</td>\n<td style=\"text-align:left;\">\nCD8B\n</td>\n<td style=\"text-align:left;\">\nVPREB3\n</td>\n<td style=\"text-align:left;\">\nSMIM14\n</td>\n<td style=\"text-align:left;\">\nSP140\n</td>\n<td style=\"text-align:left;\">\nUQCRFS1\n</td>\n<td style=\"text-align:left;\">\nMIF\n</td>\n<td style=\"text-align:left;\">\nPARK7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRGS18\n</td>\n<td style=\"text-align:left;\">\nCTSA\n</td>\n<td style=\"text-align:left;\">\nPTPN18\n</td>\n<td style=\"text-align:left;\">\nH2AFJ\n</td>\n<td style=\"text-align:left;\">\nHIGD2A\n</td>\n<td style=\"text-align:left;\">\nFIS1\n</td>\n<td style=\"text-align:left;\">\nBLOC1S1\n</td>\n<td style=\"text-align:left;\">\nSF3B5\n</td>\n<td style=\"text-align:left;\">\nPLSCR1\n</td>\n<td style=\"text-align:left;\">\nERP29\n</td>\n<td style=\"text-align:left;\">\nNEDD8\n</td>\n<td style=\"text-align:left;\">\nMX1\n</td>\n<td style=\"text-align:left;\">\nPTPRC\n</td>\n<td style=\"text-align:left;\">\nSAP18\n</td>\n<td style=\"text-align:left;\">\nCAP1\n</td>\n<td style=\"text-align:left;\">\nPLEK\n</td>\n<td style=\"text-align:left;\">\nMSN\n</td>\n<td style=\"text-align:left;\">\nFKBP8\n</td>\n<td style=\"text-align:left;\">\nTPST2\n</td>\n<td style=\"text-align:left;\">\nETHE1\n</td>\n<td style=\"text-align:left;\">\nTMEM9B\n</td>\n<td style=\"text-align:left;\">\nTMEM50A\n</td>\n<td style=\"text-align:left;\">\nCCND3\n</td>\n<td style=\"text-align:left;\">\nYWHAQ\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGUSB\n</td>\n<td style=\"text-align:left;\">\nSTX7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAPOBEC3A\n</td>\n<td style=\"text-align:left;\">\nBID\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nASGR1\n</td>\n<td style=\"text-align:left;\">\nRAB31\n</td>\n<td style=\"text-align:left;\">\nDHRS4L2\n</td>\n<td style=\"text-align:left;\">\nCSTB\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNUP214\n</td>\n<td style=\"text-align:left;\">\nKLF4\n</td>\n<td style=\"text-align:left;\">\nLINC00936\n</td>\n<td style=\"text-align:left;\">\nTMEM176B\n</td>\n<td style=\"text-align:left;\">\nCTSZ\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPRSS23\n</td>\n<td style=\"text-align:left;\">\nAPMAP\n</td>\n<td style=\"text-align:left;\">\nKLRC1\n</td>\n<td style=\"text-align:left;\">\nTHYN1\n</td>\n<td style=\"text-align:left;\">\nSP110\n</td>\n<td style=\"text-align:left;\">\nTMED4\n</td>\n<td style=\"text-align:left;\">\nUBE2D2\n</td>\n<td style=\"text-align:left;\">\nPNRC1\n</td>\n<td style=\"text-align:left;\">\nEIF3L\n</td>\n<td style=\"text-align:left;\">\nSURF1\n</td>\n<td style=\"text-align:left;\">\nSSR4\n</td>\n<td style=\"text-align:left;\">\nCHURC1\n</td>\n<td style=\"text-align:left;\">\nGBP1\n</td>\n<td style=\"text-align:left;\">\nRPS13\n</td>\n<td style=\"text-align:left;\">\nRPS20\n</td>\n<td style=\"text-align:left;\">\nRPL37A\n</td>\n<td style=\"text-align:left;\">\nRPS4Y1\n</td>\n<td style=\"text-align:left;\">\nC1orf228\n</td>\n<td style=\"text-align:left;\">\nRPL36A\n</td>\n<td style=\"text-align:left;\">\nCMPK1\n</td>\n<td style=\"text-align:left;\">\nKCNQ1OT1\n</td>\n<td style=\"text-align:left;\">\nKRT1\n</td>\n<td style=\"text-align:left;\">\nFAIM3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPIK3IP1\n</td>\n<td style=\"text-align:left;\">\nOPTN\n</td>\n<td style=\"text-align:left;\">\nFCER2\n</td>\n<td style=\"text-align:left;\">\nMYCBP2\n</td>\n<td style=\"text-align:left;\">\nHIST1H4C\n</td>\n<td style=\"text-align:left;\">\nANAPC11\n</td>\n<td style=\"text-align:left;\">\nSRSF2\n</td>\n<td style=\"text-align:left;\">\nPSMB1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCLU\n</td>\n<td style=\"text-align:left;\">\nNCOA4\n</td>\n<td style=\"text-align:left;\">\nGLUL\n</td>\n<td style=\"text-align:left;\">\nTPM4\n</td>\n<td style=\"text-align:left;\">\nFOSB\n</td>\n<td style=\"text-align:left;\">\nPSMB7\n</td>\n<td style=\"text-align:left;\">\nRNH1\n</td>\n<td style=\"text-align:left;\">\nGLRX\n</td>\n<td style=\"text-align:left;\">\nTMEM205\n</td>\n<td style=\"text-align:left;\">\nGTF3A\n</td>\n<td style=\"text-align:left;\">\nNDUFA13\n</td>\n<td style=\"text-align:left;\">\nMAF1\n</td>\n<td style=\"text-align:left;\">\nPTGES3\n</td>\n<td style=\"text-align:left;\">\nJTB\n</td>\n<td style=\"text-align:left;\">\nLCP1\n</td>\n<td style=\"text-align:left;\">\nCD300A\n</td>\n<td style=\"text-align:left;\">\nHN1\n</td>\n<td style=\"text-align:left;\">\nATRAID\n</td>\n<td style=\"text-align:left;\">\nPPP6C\n</td>\n<td style=\"text-align:left;\">\nPTGER2\n</td>\n<td style=\"text-align:left;\">\nZNF207\n</td>\n<td style=\"text-align:left;\">\nSIGIRR\n</td>\n<td style=\"text-align:left;\">\nSRP9\n</td>\n<td style=\"text-align:left;\">\nALOX5AP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFAM110A\n</td>\n<td style=\"text-align:left;\">\nYBX3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMS4A7\n</td>\n<td style=\"text-align:left;\">\nWARS\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTNFAIP2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCD4\n</td>\n<td style=\"text-align:left;\">\nC10orf54\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIL1B\n</td>\n<td style=\"text-align:left;\">\nODF3B\n</td>\n<td style=\"text-align:left;\">\nCNPY3\n</td>\n<td style=\"text-align:left;\">\nVSTM1\n</td>\n<td style=\"text-align:left;\">\nTBXAS1\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGPR56\n</td>\n<td style=\"text-align:left;\">\nSAMD3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRP11-347P5.1\n</td>\n<td style=\"text-align:left;\">\nCCDC12\n</td>\n<td style=\"text-align:left;\">\nMRPL21\n</td>\n<td style=\"text-align:left;\">\nUXT\n</td>\n<td style=\"text-align:left;\">\nUBXN1\n</td>\n<td style=\"text-align:left;\">\nZFAS1\n</td>\n<td style=\"text-align:left;\">\nSTAT1\n</td>\n<td style=\"text-align:left;\">\nMT-ND5\n</td>\n<td style=\"text-align:left;\">\nSTAT3\n</td>\n<td style=\"text-align:left;\">\nDNAJA2\n</td>\n<td style=\"text-align:left;\">\nRPLP0\n</td>\n<td style=\"text-align:left;\">\nRPS29\n</td>\n<td style=\"text-align:left;\">\nRPL37\n</td>\n<td style=\"text-align:left;\">\nTOMM7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCOMMD6\n</td>\n<td style=\"text-align:left;\">\nPPA1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLBH\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRGCC\n</td>\n<td style=\"text-align:left;\">\nITM2A\n</td>\n<td style=\"text-align:left;\">\nPDLIM1\n</td>\n<td style=\"text-align:left;\">\nCYB561A3\n</td>\n<td style=\"text-align:left;\">\nPCNA\n</td>\n<td style=\"text-align:left;\">\nPGAM1\n</td>\n<td style=\"text-align:left;\">\nHNRNPC\n</td>\n<td style=\"text-align:left;\">\nH2AFZ\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCD9\n</td>\n<td style=\"text-align:left;\">\nRHEB\n</td>\n<td style=\"text-align:left;\">\nRNPEP\n</td>\n<td style=\"text-align:left;\">\nCOMMD3\n</td>\n<td style=\"text-align:left;\">\nNDUFA11\n</td>\n<td style=\"text-align:left;\">\nSRSF9\n</td>\n<td style=\"text-align:left;\">\nPTPN6\n</td>\n<td style=\"text-align:left;\">\nSERPINB1\n</td>\n<td style=\"text-align:left;\">\nTLN1\n</td>\n<td style=\"text-align:left;\">\nPCBP2\n</td>\n<td style=\"text-align:left;\">\nATP5G3\n</td>\n<td style=\"text-align:left;\">\nRCSD1\n</td>\n<td style=\"text-align:left;\">\nACTR3\n</td>\n<td style=\"text-align:left;\">\nEID1\n</td>\n<td style=\"text-align:left;\">\nHCLS1\n</td>\n<td style=\"text-align:left;\">\nAOAH\n</td>\n<td style=\"text-align:left;\">\nDOK2\n</td>\n<td style=\"text-align:left;\">\nM6PR\n</td>\n<td style=\"text-align:left;\">\nATXN10\n</td>\n<td style=\"text-align:left;\">\nCDC42EP3\n</td>\n<td style=\"text-align:left;\">\nNDUFS2\n</td>\n<td style=\"text-align:left;\">\nSH3KBP1\n</td>\n<td style=\"text-align:left;\">\nFUS\n</td>\n<td style=\"text-align:left;\">\nTMED9\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nASB8\n</td>\n<td style=\"text-align:left;\">\nSNX10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHCK\n</td>\n<td style=\"text-align:left;\">\nNINJ1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nBST1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUBE2Q1\n</td>\n<td style=\"text-align:left;\">\nANXA5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPGD\n</td>\n<td style=\"text-align:left;\">\nSMCO4\n</td>\n<td style=\"text-align:left;\">\nCAPG\n</td>\n<td style=\"text-align:left;\">\nRETN\n</td>\n<td style=\"text-align:left;\">\nG0S2\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHBA1\n</td>\n<td style=\"text-align:left;\">\nNCR3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTTC3\n</td>\n<td style=\"text-align:left;\">\nSTUB1\n</td>\n<td style=\"text-align:left;\">\nTMEM165\n</td>\n<td style=\"text-align:left;\">\nPNISR\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRPL39\n</td>\n<td style=\"text-align:left;\">\nHPCAL1\n</td>\n<td style=\"text-align:left;\">\nPCBP1\n</td>\n<td style=\"text-align:left;\">\nTNFAIP3\n</td>\n<td style=\"text-align:left;\">\nSORL1\n</td>\n<td style=\"text-align:left;\">\nEEF1B2\n</td>\n<td style=\"text-align:left;\">\nRPS26\n</td>\n<td style=\"text-align:left;\">\nEIF3D\n</td>\n<td style=\"text-align:left;\">\nSRSF5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nST13\n</td>\n<td style=\"text-align:left;\">\nANKRD12\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGPR183\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTCF7\n</td>\n<td style=\"text-align:left;\">\nRORA\n</td>\n<td style=\"text-align:left;\">\nP2RX5\n</td>\n<td style=\"text-align:left;\">\nMBD4\n</td>\n<td style=\"text-align:left;\">\nNME1\n</td>\n<td style=\"text-align:left;\">\nTIMM13\n</td>\n<td style=\"text-align:left;\">\nSPCS1\n</td>\n<td style=\"text-align:left;\">\nGHITM\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nACRBP\n</td>\n<td style=\"text-align:left;\">\nODC1\n</td>\n<td style=\"text-align:left;\">\nFAM45A\n</td>\n<td style=\"text-align:left;\">\nETFA\n</td>\n<td style=\"text-align:left;\">\nMCL1\n</td>\n<td style=\"text-align:left;\">\nARF5\n</td>\n<td style=\"text-align:left;\">\nZNF706\n</td>\n<td style=\"text-align:left;\">\nATP6V1F\n</td>\n<td style=\"text-align:left;\">\nANXA4\n</td>\n<td style=\"text-align:left;\">\nHSP90AB1\n</td>\n<td style=\"text-align:left;\">\nUBL5\n</td>\n<td style=\"text-align:left;\">\nDDT\n</td>\n<td style=\"text-align:left;\">\nCOX7A2\n</td>\n<td style=\"text-align:left;\">\nNDUFB8\n</td>\n<td style=\"text-align:left;\">\nATP5F1\n</td>\n<td style=\"text-align:left;\">\nCX3CR1\n</td>\n<td style=\"text-align:left;\">\nPTP4A2\n</td>\n<td style=\"text-align:left;\">\nC1orf43\n</td>\n<td style=\"text-align:left;\">\nTMX2\n</td>\n<td style=\"text-align:left;\">\nGYG1\n</td>\n<td style=\"text-align:left;\">\nPSMC4\n</td>\n<td style=\"text-align:left;\">\nRASSF5\n</td>\n<td style=\"text-align:left;\">\nDUSP2\n</td>\n<td style=\"text-align:left;\">\nSUN2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUTRN\n</td>\n<td style=\"text-align:left;\">\nNOTCH2NL\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRP11-290F20.3\n</td>\n<td style=\"text-align:left;\">\nCPPED1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFCGR1A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nH2AFY\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMSRB1\n</td>\n<td style=\"text-align:left;\">\nTGFBI\n</td>\n<td style=\"text-align:left;\">\nLGALS9\n</td>\n<td style=\"text-align:left;\">\nMTMR11\n</td>\n<td style=\"text-align:left;\">\nC5AR1\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPTGDS\n</td>\n<td style=\"text-align:left;\">\nCHST12\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRBM4\n</td>\n<td style=\"text-align:left;\">\nC19orf70\n</td>\n<td style=\"text-align:left;\">\nLYPLA1\n</td>\n<td style=\"text-align:left;\">\nRBMX\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nZFP36L1\n</td>\n<td style=\"text-align:left;\">\nRBMS1\n</td>\n<td style=\"text-align:left;\">\nICAM3\n</td>\n<td style=\"text-align:left;\">\nUBAC2\n</td>\n<td style=\"text-align:left;\">\nPTGER4\n</td>\n<td style=\"text-align:left;\">\nRPS21\n</td>\n<td style=\"text-align:left;\">\nZFAND1\n</td>\n<td style=\"text-align:left;\">\nMZT2B\n</td>\n<td style=\"text-align:left;\">\nCCNI\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCDC109B\n</td>\n<td style=\"text-align:left;\">\nSLC2A3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRCN2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSPOCK2\n</td>\n<td style=\"text-align:left;\">\nSH2D1A\n</td>\n<td style=\"text-align:left;\">\nBLK\n</td>\n<td style=\"text-align:left;\">\nIFT57\n</td>\n<td style=\"text-align:left;\">\nSNRNP25\n</td>\n<td style=\"text-align:left;\">\nMOB1A\n</td>\n<td style=\"text-align:left;\">\nC1QBP\n</td>\n<td style=\"text-align:left;\">\nPRDX1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMMD\n</td>\n<td style=\"text-align:left;\">\nRBBP6\n</td>\n<td style=\"text-align:left;\">\nMPP1\n</td>\n<td style=\"text-align:left;\">\nCIR1\n</td>\n<td style=\"text-align:left;\">\nLAMTOR1\n</td>\n<td style=\"text-align:left;\">\nPPP4C\n</td>\n<td style=\"text-align:left;\">\nGNG5\n</td>\n<td style=\"text-align:left;\">\nUBE2L6\n</td>\n<td style=\"text-align:left;\">\nLAIR1\n</td>\n<td style=\"text-align:left;\">\nATP5O\n</td>\n<td style=\"text-align:left;\">\nCOX7A2L\n</td>\n<td style=\"text-align:left;\">\nHERPUD1\n</td>\n<td style=\"text-align:left;\">\nCIB1\n</td>\n<td style=\"text-align:left;\">\nC9orf16\n</td>\n<td style=\"text-align:left;\">\nVPS28\n</td>\n<td style=\"text-align:left;\">\nMIR4435-1HG\n</td>\n<td style=\"text-align:left;\">\nCAPZA2\n</td>\n<td style=\"text-align:left;\">\nGBP2\n</td>\n<td style=\"text-align:left;\">\nRPL7L1\n</td>\n<td style=\"text-align:left;\">\nIFI44\n</td>\n<td style=\"text-align:left;\">\nSRP72\n</td>\n<td style=\"text-align:left;\">\nSYTL1\n</td>\n<td style=\"text-align:left;\">\nGYPC\n</td>\n<td style=\"text-align:left;\">\nTAP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTMEM18\n</td>\n<td style=\"text-align:left;\">\nBTK\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLILRA5\n</td>\n<td style=\"text-align:left;\">\nDUSP6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nQPCT\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPGLS\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nVCAN\n</td>\n<td style=\"text-align:left;\">\nNUDT16\n</td>\n<td style=\"text-align:left;\">\nSAT2\n</td>\n<td style=\"text-align:left;\">\nCSTA\n</td>\n<td style=\"text-align:left;\">\nMPEG1\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPTPN7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDSCR3\n</td>\n<td style=\"text-align:left;\">\nTNFRSF14\n</td>\n<td style=\"text-align:left;\">\nPCSK7\n</td>\n<td style=\"text-align:left;\">\nSON\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAPEX1\n</td>\n<td style=\"text-align:left;\">\nUSP3\n</td>\n<td style=\"text-align:left;\">\nNDUFB11\n</td>\n<td style=\"text-align:left;\">\nHSPB1\n</td>\n<td style=\"text-align:left;\">\nMT1X\n</td>\n<td style=\"text-align:left;\">\nSNHG8\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFBL\n</td>\n<td style=\"text-align:left;\">\nRPL41\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAIMP1\n</td>\n<td style=\"text-align:left;\">\nARHGAP15\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPPM1K\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCR7\n</td>\n<td style=\"text-align:left;\">\nETS1\n</td>\n<td style=\"text-align:left;\">\nFCRLA\n</td>\n<td style=\"text-align:left;\">\nPPAPDC1B\n</td>\n<td style=\"text-align:left;\">\nAHCY\n</td>\n<td style=\"text-align:left;\">\nCYC1\n</td>\n<td style=\"text-align:left;\">\nTRMT112\n</td>\n<td style=\"text-align:left;\">\nSNRPB\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCA2\n</td>\n<td style=\"text-align:left;\">\nAMD1\n</td>\n<td style=\"text-align:left;\">\nPLEKHO1\n</td>\n<td style=\"text-align:left;\">\nADIPOR1\n</td>\n<td style=\"text-align:left;\">\nSCAND1\n</td>\n<td style=\"text-align:left;\">\nEIF5\n</td>\n<td style=\"text-align:left;\">\nVASP\n</td>\n<td style=\"text-align:left;\">\nPOLR2L\n</td>\n<td style=\"text-align:left;\">\nDDAH2\n</td>\n<td style=\"text-align:left;\">\nHNRNPA0\n</td>\n<td style=\"text-align:left;\">\nCRIP1\n</td>\n<td style=\"text-align:left;\">\nPAPOLA\n</td>\n<td style=\"text-align:left;\">\nTMEM59\n</td>\n<td style=\"text-align:left;\">\nUFC1\n</td>\n<td style=\"text-align:left;\">\nDBI\n</td>\n<td style=\"text-align:left;\">\nACTN4\n</td>\n<td style=\"text-align:left;\">\nRAB8A\n</td>\n<td style=\"text-align:left;\">\nVPS29\n</td>\n<td style=\"text-align:left;\">\nCLEC2B\n</td>\n<td style=\"text-align:left;\">\nSMIM12\n</td>\n<td style=\"text-align:left;\">\nZFAND6\n</td>\n<td style=\"text-align:left;\">\nRASAL3\n</td>\n<td style=\"text-align:left;\">\nPPP2R5C\n</td>\n<td style=\"text-align:left;\">\nBTN3A2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nINSIG1\n</td>\n<td style=\"text-align:left;\">\nUNC93B1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPILRA\n</td>\n<td style=\"text-align:left;\">\nTESC\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPID1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCARD16\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nID1\n</td>\n<td style=\"text-align:left;\">\nPRAM1\n</td>\n<td style=\"text-align:left;\">\nIFNGR2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCYBB\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTIGIT\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nBAZ1A\n</td>\n<td style=\"text-align:left;\">\nPOLR2I\n</td>\n<td style=\"text-align:left;\">\nTBC1D10C\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEIF2S3\n</td>\n<td style=\"text-align:left;\">\nACTR1B\n</td>\n<td style=\"text-align:left;\">\nCHMP4A\n</td>\n<td style=\"text-align:left;\">\nMRPS33\n</td>\n<td style=\"text-align:left;\">\nRCBTB2\n</td>\n<td style=\"text-align:left;\">\nEEF1G\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEBPL\n</td>\n<td style=\"text-align:left;\">\nCUTA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTNFAIP8\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nARID5B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAQP3\n</td>\n<td style=\"text-align:left;\">\nCDC25B\n</td>\n<td style=\"text-align:left;\">\nMZB1\n</td>\n<td style=\"text-align:left;\">\nNAT9\n</td>\n<td style=\"text-align:left;\">\nMCM5\n</td>\n<td style=\"text-align:left;\">\nSNF8\n</td>\n<td style=\"text-align:left;\">\nERH\n</td>\n<td style=\"text-align:left;\">\nUBE2I\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPTCRA\n</td>\n<td style=\"text-align:left;\">\nGRAP2\n</td>\n<td style=\"text-align:left;\">\nMTHFD2\n</td>\n<td style=\"text-align:left;\">\nFDFT1\n</td>\n<td style=\"text-align:left;\">\nGNAS\n</td>\n<td style=\"text-align:left;\">\nLAMTOR5\n</td>\n<td style=\"text-align:left;\">\nRBX1\n</td>\n<td style=\"text-align:left;\">\nSEC11A\n</td>\n<td style=\"text-align:left;\">\nPARP14\n</td>\n<td style=\"text-align:left;\">\nANP32B\n</td>\n<td style=\"text-align:left;\">\nATP5H\n</td>\n<td style=\"text-align:left;\">\nRTFDC1\n</td>\n<td style=\"text-align:left;\">\nHNRNPF\n</td>\n<td style=\"text-align:left;\">\nARF6\n</td>\n<td style=\"text-align:left;\">\nDYNLL1\n</td>\n<td style=\"text-align:left;\">\nASCL2\n</td>\n<td style=\"text-align:left;\">\nIDH2\n</td>\n<td style=\"text-align:left;\">\nMKRN1\n</td>\n<td style=\"text-align:left;\">\nEMG1\n</td>\n<td style=\"text-align:left;\">\nFLOT1\n</td>\n<td style=\"text-align:left;\">\nPMAIP1\n</td>\n<td style=\"text-align:left;\">\nMAEA\n</td>\n<td style=\"text-align:left;\">\nDDIT4\n</td>\n<td style=\"text-align:left;\">\nPRMT2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCUX1\n</td>\n<td style=\"text-align:left;\">\nSCIMP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLRRC25\n</td>\n<td style=\"text-align:left;\">\nSLC16A3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCXCL2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCASP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCD1D\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAPLP2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSLC11A1\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPRR5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMRPL18\n</td>\n<td style=\"text-align:left;\">\nARF4\n</td>\n<td style=\"text-align:left;\">\nFAM65B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMED30\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSSU72\n</td>\n<td style=\"text-align:left;\">\nRP11-51J9.5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHNRNPH3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEIF3E\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPCNP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPPP3CC\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFLT3LG\n</td>\n<td style=\"text-align:left;\">\nBCL11B\n</td>\n<td style=\"text-align:left;\">\nCD72\n</td>\n<td style=\"text-align:left;\">\nRBM5\n</td>\n<td style=\"text-align:left;\">\nFABP5\n</td>\n<td style=\"text-align:left;\">\nFIBP\n</td>\n<td style=\"text-align:left;\">\nCNN2\n</td>\n<td style=\"text-align:left;\">\nSEC61B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSPARC\n</td>\n<td style=\"text-align:left;\">\nRSU1\n</td>\n<td style=\"text-align:left;\">\nSNN\n</td>\n<td style=\"text-align:left;\">\nGRSF1\n</td>\n<td style=\"text-align:left;\">\nHSD17B11\n</td>\n<td style=\"text-align:left;\">\nREEP5\n</td>\n<td style=\"text-align:left;\">\nRGS19\n</td>\n<td style=\"text-align:left;\">\nCASP4\n</td>\n<td style=\"text-align:left;\">\nLMO4\n</td>\n<td style=\"text-align:left;\">\nATP5A1\n</td>\n<td style=\"text-align:left;\">\nNDUFB10\n</td>\n<td style=\"text-align:left;\">\nLSM10\n</td>\n<td style=\"text-align:left;\">\nC11orf58\n</td>\n<td style=\"text-align:left;\">\nHNRNPM\n</td>\n<td style=\"text-align:left;\">\nPSMB10\n</td>\n<td style=\"text-align:left;\">\nMPST\n</td>\n<td style=\"text-align:left;\">\nCLTB\n</td>\n<td style=\"text-align:left;\">\nMYH9\n</td>\n<td style=\"text-align:left;\">\nDPM1\n</td>\n<td style=\"text-align:left;\">\nPSTPIP1\n</td>\n<td style=\"text-align:left;\">\nRAB11B\n</td>\n<td style=\"text-align:left;\">\nRAB37\n</td>\n<td style=\"text-align:left;\">\nTERF2IP\n</td>\n<td style=\"text-align:left;\">\nBUB3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUBLCP1\n</td>\n<td style=\"text-align:left;\">\nALOX5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLILRB2\n</td>\n<td style=\"text-align:left;\">\nCTSL\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEREG\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nARRB2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNCOR2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nJUND\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCLEC7A\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nKLRB1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSMIM7\n</td>\n<td style=\"text-align:left;\">\nN4BP2L1\n</td>\n<td style=\"text-align:left;\">\nPPP1R2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRP11-349A22.5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRAP1A\n</td>\n<td style=\"text-align:left;\">\nIL27RA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEPB41L4A-AS1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRSL1D1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMZT2A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLY9\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTRAT1\n</td>\n<td style=\"text-align:left;\">\nGATA3\n</td>\n<td style=\"text-align:left;\">\nTSPAN13\n</td>\n<td style=\"text-align:left;\">\nTPD52\n</td>\n<td style=\"text-align:left;\">\nPTTG1\n</td>\n<td style=\"text-align:left;\">\nTMEM208\n</td>\n<td style=\"text-align:left;\">\nDAD1\n</td>\n<td style=\"text-align:left;\">\nNDUFA1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMYL9\n</td>\n<td style=\"text-align:left;\">\nNT5C3A\n</td>\n<td style=\"text-align:left;\">\nTAX1BP3\n</td>\n<td style=\"text-align:left;\">\nILK\n</td>\n<td style=\"text-align:left;\">\nCHMP1B\n</td>\n<td style=\"text-align:left;\">\nATP5EP2\n</td>\n<td style=\"text-align:left;\">\nRTN4\n</td>\n<td style=\"text-align:left;\">\nNOP10\n</td>\n<td style=\"text-align:left;\">\nSKAP2\n</td>\n<td style=\"text-align:left;\">\nNDUFB9\n</td>\n<td style=\"text-align:left;\">\nUQCR10\n</td>\n<td style=\"text-align:left;\">\nRPL22L1\n</td>\n<td style=\"text-align:left;\">\nRBM39\n</td>\n<td style=\"text-align:left;\">\nHNRNPA3\n</td>\n<td style=\"text-align:left;\">\nPRDX5\n</td>\n<td style=\"text-align:left;\">\nTMEM140\n</td>\n<td style=\"text-align:left;\">\nPSMA4\n</td>\n<td style=\"text-align:left;\">\nNMI\n</td>\n<td style=\"text-align:left;\">\nVPS25\n</td>\n<td style=\"text-align:left;\">\nLINC00152\n</td>\n<td style=\"text-align:left;\">\nNT5C\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSEPT1\n</td>\n<td style=\"text-align:left;\">\nHSPA5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCDIP1\n</td>\n<td style=\"text-align:left;\">\nHHEX\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC19orf38\n</td>\n<td style=\"text-align:left;\">\nNAGA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTNFSF10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGSN\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC4orf48\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSULT1A1\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMATK\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTRIM22\n</td>\n<td style=\"text-align:left;\">\nGMPR2\n</td>\n<td style=\"text-align:left;\">\nNCOR1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nKIAA0040\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPOLR1D\n</td>\n<td style=\"text-align:left;\">\nPRMT10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIMPDH2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCNL1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDDX24\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRP1-313I6.12\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPRKCQ-AS1\n</td>\n<td style=\"text-align:left;\">\nSIRPG\n</td>\n<td style=\"text-align:left;\">\nHLA-DOB\n</td>\n<td style=\"text-align:left;\">\nITM2C\n</td>\n<td style=\"text-align:left;\">\nMCM7\n</td>\n<td style=\"text-align:left;\">\nMX2\n</td>\n<td style=\"text-align:left;\">\nSERBP1\n</td>\n<td style=\"text-align:left;\">\nABRACL\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGP9\n</td>\n<td style=\"text-align:left;\">\nR3HDM4\n</td>\n<td style=\"text-align:left;\">\nMFSD1\n</td>\n<td style=\"text-align:left;\">\nCNDP2\n</td>\n<td style=\"text-align:left;\">\nERGIC3\n</td>\n<td style=\"text-align:left;\">\nPOLR2J\n</td>\n<td style=\"text-align:left;\">\nCHCHD10\n</td>\n<td style=\"text-align:left;\">\nC20orf24\n</td>\n<td style=\"text-align:left;\">\nEPN1\n</td>\n<td style=\"text-align:left;\">\nC19orf53\n</td>\n<td style=\"text-align:left;\">\nATP5J2\n</td>\n<td style=\"text-align:left;\">\nZC3H15\n</td>\n<td style=\"text-align:left;\">\nCDC42\n</td>\n<td style=\"text-align:left;\">\nEIF3I\n</td>\n<td style=\"text-align:left;\">\nCSNK2B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nOASL\n</td>\n<td style=\"text-align:left;\">\nMPC1\n</td>\n<td style=\"text-align:left;\">\nCRELD2\n</td>\n<td style=\"text-align:left;\">\nDNAJC1\n</td>\n<td style=\"text-align:left;\">\nATF6B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nARL4C\n</td>\n<td style=\"text-align:left;\">\nWIPF1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPPM1N\n</td>\n<td style=\"text-align:left;\">\nSYK\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSLC31A2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGNAI2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRASSF4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAGTRAP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGNS\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIL2RB\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGRK6\n</td>\n<td style=\"text-align:left;\">\nC10orf32\n</td>\n<td style=\"text-align:left;\">\nSP100\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIFI44L\n</td>\n<td style=\"text-align:left;\">\nUBE2K\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTAF1D\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNSA2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTSTD1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPITPNA-AS1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLEF1\n</td>\n<td style=\"text-align:left;\">\nGPR171\n</td>\n<td style=\"text-align:left;\">\nSPIB\n</td>\n<td style=\"text-align:left;\">\nCXXC5\n</td>\n<td style=\"text-align:left;\">\nFEN1\n</td>\n<td style=\"text-align:left;\">\nTXNDC17\n</td>\n<td style=\"text-align:left;\">\nTUBB\n</td>\n<td style=\"text-align:left;\">\nMDH2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nF13A1\n</td>\n<td style=\"text-align:left;\">\nNGFRAP1\n</td>\n<td style=\"text-align:left;\">\nMARCH2\n</td>\n<td style=\"text-align:left;\">\nHIST1H2BK\n</td>\n<td style=\"text-align:left;\">\nIDH3G\n</td>\n<td style=\"text-align:left;\">\nSUMO3\n</td>\n<td style=\"text-align:left;\">\nNDUFB5\n</td>\n<td style=\"text-align:left;\">\nTMEM219\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nU2AF1\n</td>\n<td style=\"text-align:left;\">\nMRPL23\n</td>\n<td style=\"text-align:left;\">\nLSM2\n</td>\n<td style=\"text-align:left;\">\nYWHAZ\n</td>\n<td style=\"text-align:left;\">\nRABAC1\n</td>\n<td style=\"text-align:left;\">\nNDUFB2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUBE2B\n</td>\n<td style=\"text-align:left;\">\nMOB2\n</td>\n<td style=\"text-align:left;\">\nSMARCA4\n</td>\n<td style=\"text-align:left;\">\nFDPS\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTECR\n</td>\n<td style=\"text-align:left;\">\nARPC5L\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCD83\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHMOX1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDYNLT1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nENTPD1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGCA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nADAP2\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nS100B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC1orf63\n</td>\n<td style=\"text-align:left;\">\nMESDC2\n</td>\n<td style=\"text-align:left;\">\nMEAF6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIGBP1\n</td>\n<td style=\"text-align:left;\">\nLGALS3BP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nZNF331\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nILF3-AS1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSBDS\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNUP54\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMAL\n</td>\n<td style=\"text-align:left;\">\nAC092580.4\n</td>\n<td style=\"text-align:left;\">\nPKIG\n</td>\n<td style=\"text-align:left;\">\nMAP3K8\n</td>\n<td style=\"text-align:left;\">\nMAD2L1\n</td>\n<td style=\"text-align:left;\">\nTIMM8B\n</td>\n<td style=\"text-align:left;\">\nSUB1\n</td>\n<td style=\"text-align:left;\">\nPSMB6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTMEM40\n</td>\n<td style=\"text-align:left;\">\nCD82\n</td>\n<td style=\"text-align:left;\">\nPARVB\n</td>\n<td style=\"text-align:left;\">\nTHOC6\n</td>\n<td style=\"text-align:left;\">\nMT-ND3\n</td>\n<td style=\"text-align:left;\">\nDBNL\n</td>\n<td style=\"text-align:left;\">\nOAS1\n</td>\n<td style=\"text-align:left;\">\nCLTA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nISCU\n</td>\n<td style=\"text-align:left;\">\nATP5I\n</td>\n<td style=\"text-align:left;\">\nEIF1B\n</td>\n<td style=\"text-align:left;\">\nC4orf3\n</td>\n<td style=\"text-align:left;\">\nENSA\n</td>\n<td style=\"text-align:left;\">\nRAB7A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRNF149\n</td>\n<td style=\"text-align:left;\">\nCMC1\n</td>\n<td style=\"text-align:left;\">\nCTD-2035E11.3\n</td>\n<td style=\"text-align:left;\">\nGNG2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSEPT6\n</td>\n<td style=\"text-align:left;\">\nLAMP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIFIT2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLILRA3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNAAA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nOSM\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC20orf27\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCD320\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPPCS\n</td>\n<td style=\"text-align:left;\">\nPOLR3K\n</td>\n<td style=\"text-align:left;\">\nRNPS1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMETTL9\n</td>\n<td style=\"text-align:left;\">\nCAMK2G\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nYME1L1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPSIP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCHI3L2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSUSD3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nBLNK\n</td>\n<td style=\"text-align:left;\">\nIL4R\n</td>\n<td style=\"text-align:left;\">\nTYMS\n</td>\n<td style=\"text-align:left;\">\nMRPL28\n</td>\n<td style=\"text-align:left;\">\nC14orf166\n</td>\n<td style=\"text-align:left;\">\nATP5J\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTREML1\n</td>\n<td style=\"text-align:left;\">\nPTTG1IP\n</td>\n<td style=\"text-align:left;\">\nCORO1C\n</td>\n<td style=\"text-align:left;\">\nPOP7\n</td>\n<td style=\"text-align:left;\">\nOXA1L\n</td>\n<td style=\"text-align:left;\">\nSNX17\n</td>\n<td style=\"text-align:left;\">\nATG3\n</td>\n<td style=\"text-align:left;\">\nNDUFS7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMORF4L1\n</td>\n<td style=\"text-align:left;\">\nNDUFA2\n</td>\n<td style=\"text-align:left;\">\nEZR\n</td>\n<td style=\"text-align:left;\">\nSEPT9\n</td>\n<td style=\"text-align:left;\">\nTMEM258\n</td>\n<td style=\"text-align:left;\">\nFAM49B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSQRDL\n</td>\n<td style=\"text-align:left;\">\nRAB9A\n</td>\n<td style=\"text-align:left;\">\nRAB27A\n</td>\n<td style=\"text-align:left;\">\nPHF14\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPIM1\n</td>\n<td style=\"text-align:left;\">\nARL6IP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSIGLEC10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCSF1R\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEPSTI1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSULF2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSCO2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSH2D2A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nADAR\n</td>\n<td style=\"text-align:left;\">\nTLE4\n</td>\n<td style=\"text-align:left;\">\nKRT10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMRFAP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTMC8\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDDX18\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAAK1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nKIAA0125\n</td>\n<td style=\"text-align:left;\">\nSWAP70\n</td>\n<td style=\"text-align:left;\">\nEZH2\n</td>\n<td style=\"text-align:left;\">\nSPCS3\n</td>\n<td style=\"text-align:left;\">\nCYCS\n</td>\n<td style=\"text-align:left;\">\nUQCRQ\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nITGA2B\n</td>\n<td style=\"text-align:left;\">\nACTN1\n</td>\n<td style=\"text-align:left;\">\nH1F0\n</td>\n<td style=\"text-align:left;\">\nLMNA\n</td>\n<td style=\"text-align:left;\">\nTMEM147\n</td>\n<td style=\"text-align:left;\">\nEIF6\n</td>\n<td style=\"text-align:left;\">\nCD55\n</td>\n<td style=\"text-align:left;\">\nAHNAK\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNDUFS5\n</td>\n<td style=\"text-align:left;\">\nALKBH7\n</td>\n<td style=\"text-align:left;\">\nDECR1\n</td>\n<td style=\"text-align:left;\">\nPAIP2\n</td>\n<td style=\"text-align:left;\">\nRBM8A\n</td>\n<td style=\"text-align:left;\">\nOSTF1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUPP1\n</td>\n<td style=\"text-align:left;\">\nMRPL19\n</td>\n<td style=\"text-align:left;\">\nRRAGC\n</td>\n<td style=\"text-align:left;\">\nTMEM109\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nADD3\n</td>\n<td style=\"text-align:left;\">\nMRPS6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRELT\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAPOBEC3B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nOAZ2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMGST2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNAPRT1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPLEKHF1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDNAJC15\n</td>\n<td style=\"text-align:left;\">\nMORF4L2\n</td>\n<td style=\"text-align:left;\">\nEIF4B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNDUFA3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nADSL\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNDNL2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLDLRAP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPOU2AF1\n</td>\n<td style=\"text-align:left;\">\nNXT2\n</td>\n<td style=\"text-align:left;\">\nKIAA0101\n</td>\n<td style=\"text-align:left;\">\nEIF3A\n</td>\n<td style=\"text-align:left;\">\nXRCC6\n</td>\n<td style=\"text-align:left;\">\nCALR\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCMTM5\n</td>\n<td style=\"text-align:left;\">\nHIST1H1C\n</td>\n<td style=\"text-align:left;\">\nSOX4\n</td>\n<td style=\"text-align:left;\">\nSLC39A3\n</td>\n<td style=\"text-align:left;\">\nC1orf86\n</td>\n<td style=\"text-align:left;\">\nXAF1\n</td>\n<td style=\"text-align:left;\">\nMARCKSL1\n</td>\n<td style=\"text-align:left;\">\nZNHIT1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNHP2L1\n</td>\n<td style=\"text-align:left;\">\nRNF7\n</td>\n<td style=\"text-align:left;\">\nMRPL43\n</td>\n<td style=\"text-align:left;\">\nDNAJA1\n</td>\n<td style=\"text-align:left;\">\nAP2M1\n</td>\n<td style=\"text-align:left;\">\nARPC4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMGAT1\n</td>\n<td style=\"text-align:left;\">\nDHX36\n</td>\n<td style=\"text-align:left;\">\nFAM105A\n</td>\n<td style=\"text-align:left;\">\nMAPK1IP1L\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHDAC1\n</td>\n<td style=\"text-align:left;\">\nLSM14A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nKYNU\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGPBAR1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHSBP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIER3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEIF4EBP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nZNHIT3\n</td>\n<td style=\"text-align:left;\">\nSF3A1\n</td>\n<td style=\"text-align:left;\">\nARHGEF1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCMTM7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCT2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTTC39C\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAL928768.3\n</td>\n<td style=\"text-align:left;\">\nHELQ\n</td>\n<td style=\"text-align:left;\">\nRRM2\n</td>\n<td style=\"text-align:left;\">\nISOC2\n</td>\n<td style=\"text-align:left;\">\nEIF4G2\n</td>\n<td style=\"text-align:left;\">\nPSMD8\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCLDN5\n</td>\n<td style=\"text-align:left;\">\nRUFY1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDAPP1\n</td>\n<td style=\"text-align:left;\">\nC14orf2\n</td>\n<td style=\"text-align:left;\">\nWAS\n</td>\n<td style=\"text-align:left;\">\nENY2\n</td>\n<td style=\"text-align:left;\">\nVAMP5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSMDT1\n</td>\n<td style=\"text-align:left;\">\nMRPL54\n</td>\n<td style=\"text-align:left;\">\nRNASEH2B\n</td>\n<td style=\"text-align:left;\">\nVAPA\n</td>\n<td style=\"text-align:left;\">\nIRF1\n</td>\n<td style=\"text-align:left;\">\nARHGDIA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMMP24-AS1\n</td>\n<td style=\"text-align:left;\">\nGFER\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCYB561D2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nANXA2R\n</td>\n<td style=\"text-align:left;\">\nRNF167\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPIK3AP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRXRA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nATP6V0D1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGMPR\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNAGK\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPRKAR1A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSRSF11\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSQSTM1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFAM107B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMGAT4A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRP5-887A10.1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCENPN\n</td>\n<td style=\"text-align:left;\">\nGGCT\n</td>\n<td style=\"text-align:left;\">\nATPIF1\n</td>\n<td style=\"text-align:left;\">\nAURKAIP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nERV3-1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRIOK3\n</td>\n<td style=\"text-align:left;\">\nPQBP1\n</td>\n<td style=\"text-align:left;\">\nPFDN2\n</td>\n<td style=\"text-align:left;\">\nCOX17\n</td>\n<td style=\"text-align:left;\">\nSDCBP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCDC85B\n</td>\n<td style=\"text-align:left;\">\nVDAC1\n</td>\n<td style=\"text-align:left;\">\nYPEL3\n</td>\n<td style=\"text-align:left;\">\nC9orf78\n</td>\n<td style=\"text-align:left;\">\nTMEM230\n</td>\n<td style=\"text-align:left;\">\nTBCB\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nANAPC13\n</td>\n<td style=\"text-align:left;\">\nCXXC1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCELF1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHMOX2\n</td>\n<td style=\"text-align:left;\">\nC19orf66\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nKIAA0930\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nOSCAR\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEIF4E2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSRA1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAPBB1IP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTAF7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDPP7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFGFR1OP2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nOXNAD1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTNFRSF13B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGMNN\n</td>\n<td style=\"text-align:left;\">\nYIF1B\n</td>\n<td style=\"text-align:left;\">\nSPCS2\n</td>\n<td style=\"text-align:left;\">\nMTDH\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTUBA1C\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nZNF263\n</td>\n<td style=\"text-align:left;\">\nDNAJC7\n</td>\n<td style=\"text-align:left;\">\nACTR2\n</td>\n<td style=\"text-align:left;\">\nLYSMD2\n</td>\n<td style=\"text-align:left;\">\nSAMHD1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEIF3M\n</td>\n<td style=\"text-align:left;\">\nHADHA\n</td>\n<td style=\"text-align:left;\">\nCCT6A\n</td>\n<td style=\"text-align:left;\">\nDYNLRB1\n</td>\n<td style=\"text-align:left;\">\nKRTCAP2\n</td>\n<td style=\"text-align:left;\">\nBAX\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPLIN2\n</td>\n<td style=\"text-align:left;\">\nSTX18\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDTNBP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRPA2\n</td>\n<td style=\"text-align:left;\">\nSLC9A3R1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHES1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLILRB1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nZYX\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMIR24-2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIKZF1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nKMT2E\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFNBP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPIM2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNUCB2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTNFRSF17\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTK1\n</td>\n<td style=\"text-align:left;\">\nHAUS4\n</td>\n<td style=\"text-align:left;\">\nPSMC5\n</td>\n<td style=\"text-align:left;\">\nPSMA5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nBBC3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDERA\n</td>\n<td style=\"text-align:left;\">\nBNIP3L\n</td>\n<td style=\"text-align:left;\">\nERP44\n</td>\n<td style=\"text-align:left;\">\nGRB2\n</td>\n<td style=\"text-align:left;\">\nSDHB\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCSDE1\n</td>\n<td style=\"text-align:left;\">\nPSMG2\n</td>\n<td style=\"text-align:left;\">\nDRAM2\n</td>\n<td style=\"text-align:left;\">\nSELK\n</td>\n<td style=\"text-align:left;\">\nPDCD6\n</td>\n<td style=\"text-align:left;\">\nSELT\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIFIT1\n</td>\n<td style=\"text-align:left;\">\nPGM1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nBAZ2A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNDUFA5\n</td>\n<td style=\"text-align:left;\">\nTSC22D4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHES4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTNFRSF1B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNR4A1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSNAP23\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTAPSAR1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMGST3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDNAJB9\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRGL4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGINS2\n</td>\n<td style=\"text-align:left;\">\nHDGF\n</td>\n<td style=\"text-align:left;\">\nRANBP1\n</td>\n<td style=\"text-align:left;\">\nH2AFV\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPLA2G12A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPICALM\n</td>\n<td style=\"text-align:left;\">\nNENF\n</td>\n<td style=\"text-align:left;\">\nTWF2\n</td>\n<td style=\"text-align:left;\">\nLSM6\n</td>\n<td style=\"text-align:left;\">\nLAMTOR2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSF1\n</td>\n<td style=\"text-align:left;\">\nETFB\n</td>\n<td style=\"text-align:left;\">\nCAPZA1\n</td>\n<td style=\"text-align:left;\">\nPYURF\n</td>\n<td style=\"text-align:left;\">\nVDAC2\n</td>\n<td style=\"text-align:left;\">\nTMBIM4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nARRDC1\n</td>\n<td style=\"text-align:left;\">\nDYNLL2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHSH2D\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDENND2D\n</td>\n<td style=\"text-align:left;\">\nBZW1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCAMK1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCAPNS1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCECR1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nBEST1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTCEA1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNUCB1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDEGS1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCD40LG\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nZWINT\n</td>\n<td style=\"text-align:left;\">\nPGP\n</td>\n<td style=\"text-align:left;\">\nDUT\n</td>\n<td style=\"text-align:left;\">\nTOMM22\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPGRMC1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAPP\n</td>\n<td style=\"text-align:left;\">\nAKR1A1\n</td>\n<td style=\"text-align:left;\">\nEMC7\n</td>\n<td style=\"text-align:left;\">\nZFAND5\n</td>\n<td style=\"text-align:left;\">\nNDUFS6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTRA2B\n</td>\n<td style=\"text-align:left;\">\nCOX14\n</td>\n<td style=\"text-align:left;\">\nSMAP2\n</td>\n<td style=\"text-align:left;\">\nS1PR4\n</td>\n<td style=\"text-align:left;\">\nFAM96B\n</td>\n<td style=\"text-align:left;\">\nPSMD4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIFI27\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAPOBEC3C\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTBCC\n</td>\n<td style=\"text-align:left;\">\nDEF6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCD300E\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUBE2D1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMIDN\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTAOK3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUBXN4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTGOLN2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nXXbac-BPG299F13.17\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTRABD2A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nBIK\n</td>\n<td style=\"text-align:left;\">\nREEP3\n</td>\n<td style=\"text-align:left;\">\nTBCA\n</td>\n<td style=\"text-align:left;\">\nNDUFC2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFHL1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMID1IP1\n</td>\n<td style=\"text-align:left;\">\nNDUFS3\n</td>\n<td style=\"text-align:left;\">\nCHMP4B\n</td>\n<td style=\"text-align:left;\">\nCD97\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNDUFV2\n</td>\n<td style=\"text-align:left;\">\nPSMB4\n</td>\n<td style=\"text-align:left;\">\nPLEKHJ1\n</td>\n<td style=\"text-align:left;\">\nBCAP31\n</td>\n<td style=\"text-align:left;\">\nLMAN2\n</td>\n<td style=\"text-align:left;\">\nWDR1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRSAD2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nZBP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPBXIP1\n</td>\n<td style=\"text-align:left;\">\nC5orf56\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCD300LF\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTHEMIS2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGRINA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCARD8\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMED10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPTPN2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPARP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCD6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCNA2\n</td>\n<td style=\"text-align:left;\">\nLMNB1\n</td>\n<td style=\"text-align:left;\">\nHSP90B1\n</td>\n<td style=\"text-align:left;\">\nLSM4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSLC40A1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHADHB\n</td>\n<td style=\"text-align:left;\">\nBAG1\n</td>\n<td style=\"text-align:left;\">\nSMS\n</td>\n<td style=\"text-align:left;\">\nTGFB1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUQCRC2\n</td>\n<td style=\"text-align:left;\">\nPSMD9\n</td>\n<td style=\"text-align:left;\">\nTMEM256\n</td>\n<td style=\"text-align:left;\">\nICAM2\n</td>\n<td style=\"text-align:left;\">\nTAPBP\n</td>\n<td style=\"text-align:left;\">\nNDUFB7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nATP5SL\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nABHD14B\n</td>\n<td style=\"text-align:left;\">\nRSRC2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nARHGEF40\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNANS\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPTPRE\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nKLF3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSEC62\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEVI2A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTOB1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSH3YL1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nBIRC5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nECH1\n</td>\n<td style=\"text-align:left;\">\nPDIA6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPNMA1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTREX1\n</td>\n<td style=\"text-align:left;\">\nLRPAP1\n</td>\n<td style=\"text-align:left;\">\nCAT\n</td>\n<td style=\"text-align:left;\">\nGLIPR1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEIF2S2\n</td>\n<td style=\"text-align:left;\">\nADI1\n</td>\n<td style=\"text-align:left;\">\nBLOC1S2\n</td>\n<td style=\"text-align:left;\">\nTMED2\n</td>\n<td style=\"text-align:left;\">\nSUMO1\n</td>\n<td style=\"text-align:left;\">\nRAB5C\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCOMMD10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRGS1\n</td>\n<td style=\"text-align:left;\">\nHDDC2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCXCL16\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nATOX1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCARS2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLIPA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCT4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTNIP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSVIP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCAMK4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nXRCC5\n</td>\n<td style=\"text-align:left;\">\nTUFM\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTPM1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPARL\n</td>\n<td style=\"text-align:left;\">\nSHKBP1\n</td>\n<td style=\"text-align:left;\">\nLTA4H\n</td>\n<td style=\"text-align:left;\">\nRILPL2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMINOS1\n</td>\n<td style=\"text-align:left;\">\nNAA10\n</td>\n<td style=\"text-align:left;\">\nWBP2\n</td>\n<td style=\"text-align:left;\">\nSSBP1\n</td>\n<td style=\"text-align:left;\">\nGADD45B\n</td>\n<td style=\"text-align:left;\">\nCHMP2A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCD38\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIFRD1\n</td>\n<td style=\"text-align:left;\">\nSMARCE1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTPPP3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMAPKAPK3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDNTTIP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nZNF394\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nKIF5B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEMC10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTMEM261\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSATB1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHNRNPU\n</td>\n<td style=\"text-align:left;\">\nP4HB\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCDC69\n</td>\n<td style=\"text-align:left;\">\nTRAPPC2L\n</td>\n<td style=\"text-align:left;\">\nFAM32A\n</td>\n<td style=\"text-align:left;\">\nSSR3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMRPL20\n</td>\n<td style=\"text-align:left;\">\nTXN2\n</td>\n<td style=\"text-align:left;\">\nEIF5B\n</td>\n<td style=\"text-align:left;\">\nANXA11\n</td>\n<td style=\"text-align:left;\">\nGADD45GIP1\n</td>\n<td style=\"text-align:left;\">\nSRI\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nITGB7\n</td>\n<td style=\"text-align:left;\">\nDDX6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLILRA2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCBR1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMYO9B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCLK3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSTK4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMTIF3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nBEX4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFHIT\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNCL\n</td>\n<td style=\"text-align:left;\">\nDEK\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHTATIP2\n</td>\n<td style=\"text-align:left;\">\nC7orf50\n</td>\n<td style=\"text-align:left;\">\nPMVK\n</td>\n<td style=\"text-align:left;\">\nUQCRC1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTOMM20\n</td>\n<td style=\"text-align:left;\">\nMRPL41\n</td>\n<td style=\"text-align:left;\">\nMMADHC\n</td>\n<td style=\"text-align:left;\">\nCD47\n</td>\n<td style=\"text-align:left;\">\nACP1\n</td>\n<td style=\"text-align:left;\">\nSIVA1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDNAJC19\n</td>\n<td style=\"text-align:left;\">\nSDF4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEMR2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTNFRSF1A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUBE2R2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSNX9\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPOLR3GL\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFRG1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCYLD\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUSP10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNHP2\n</td>\n<td style=\"text-align:left;\">\nUBE2L3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nARHGAP4\n</td>\n<td style=\"text-align:left;\">\nBNIP2\n</td>\n<td style=\"text-align:left;\">\nYWHAE\n</td>\n<td style=\"text-align:left;\">\nSERPINB6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC19orf60\n</td>\n<td style=\"text-align:left;\">\nNDUFA7\n</td>\n<td style=\"text-align:left;\">\nSLTM\n</td>\n<td style=\"text-align:left;\">\nNDUFB4\n</td>\n<td style=\"text-align:left;\">\nPSMA1\n</td>\n<td style=\"text-align:left;\">\nRALY\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRNF139\n</td>\n<td style=\"text-align:left;\">\nDERL1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMS4A4A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nADRBK1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLACTB\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nOCIAD1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCSRNP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nASF1A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUXS1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPA2G4\n</td>\n<td style=\"text-align:left;\">\nC19orf10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMRPL40\n</td>\n<td style=\"text-align:left;\">\nMRPS23\n</td>\n<td style=\"text-align:left;\">\nPARVG\n</td>\n<td style=\"text-align:left;\">\nLSMD1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIDS\n</td>\n<td style=\"text-align:left;\">\nRNF187\n</td>\n<td style=\"text-align:left;\">\nHAGH\n</td>\n<td style=\"text-align:left;\">\nNDUFA12\n</td>\n<td style=\"text-align:left;\">\nRPS19BP1\n</td>\n<td style=\"text-align:left;\">\nBSG\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFKBP11\n</td>\n<td style=\"text-align:left;\">\nPRPF31\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCTD-2006K23.1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTCIRG1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCDKN1A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMPHOSPH8\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSLC38A1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCISH\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNOL7\n</td>\n<td style=\"text-align:left;\">\nMYEOV2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMTHFS\n</td>\n<td style=\"text-align:left;\">\nFAM173A\n</td>\n<td style=\"text-align:left;\">\nACAA1\n</td>\n<td style=\"text-align:left;\">\nPHPT1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nATF4\n</td>\n<td style=\"text-align:left;\">\nOLA1\n</td>\n<td style=\"text-align:left;\">\nCOQ7\n</td>\n<td style=\"text-align:left;\">\nPSMA2\n</td>\n<td style=\"text-align:left;\">\nRPN2\n</td>\n<td style=\"text-align:left;\">\nTCF25\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSKAP1\n</td>\n<td style=\"text-align:left;\">\nSPSB3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC1QA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNAMPT\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCREG1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCRBN\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCDKN1B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPASK\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMDH1\n</td>\n<td style=\"text-align:left;\">\nPSMB2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDNAJC4\n</td>\n<td style=\"text-align:left;\">\nHBP1\n</td>\n<td style=\"text-align:left;\">\nNFKBIZ\n</td>\n<td style=\"text-align:left;\">\nNDUFB1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDGUOK\n</td>\n<td style=\"text-align:left;\">\nMRPL52\n</td>\n<td style=\"text-align:left;\">\nFBXW5\n</td>\n<td style=\"text-align:left;\">\nSSB\n</td>\n<td style=\"text-align:left;\">\nBANF1\n</td>\n<td style=\"text-align:left;\">\nPOLR2G\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNAP1L4\n</td>\n<td style=\"text-align:left;\">\nEBP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nZNF703\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nZNF106\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFUOM\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTMEM243\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLSM5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTNFRSF25\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCT8\n</td>\n<td style=\"text-align:left;\">\nMRPL51\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPRPF8\n</td>\n<td style=\"text-align:left;\">\nTIMMDC1\n</td>\n<td style=\"text-align:left;\">\nVMP1\n</td>\n<td style=\"text-align:left;\">\nSPG21\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMRPS21\n</td>\n<td style=\"text-align:left;\">\nMPG\n</td>\n<td style=\"text-align:left;\">\nPNKD\n</td>\n<td style=\"text-align:left;\">\nCELF2\n</td>\n<td style=\"text-align:left;\">\nHMGN3\n</td>\n<td style=\"text-align:left;\">\nNDUFS8\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nYTHDF2\n</td>\n<td style=\"text-align:left;\">\nGCHFR\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCEBPA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAP2A1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFBP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPPIG\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nG3BP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCDC104\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHSPE1\n</td>\n<td style=\"text-align:left;\">\nTXN\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nZNF581\n</td>\n<td style=\"text-align:left;\">\nABTB1\n</td>\n<td style=\"text-align:left;\">\nCYTH4\n</td>\n<td style=\"text-align:left;\">\nIFI27L2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCAMLG\n</td>\n<td style=\"text-align:left;\">\nNDUFA9\n</td>\n<td style=\"text-align:left;\">\nTINF2\n</td>\n<td style=\"text-align:left;\">\nRPS27L\n</td>\n<td style=\"text-align:left;\">\nKARS\n</td>\n<td style=\"text-align:left;\">\nBUD31\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSTT3B\n</td>\n<td style=\"text-align:left;\">\nMFSD10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nALDH3B1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC11orf21\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPDXK\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMED4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMPHOSPH10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nINTS12\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPHB\n</td>\n<td style=\"text-align:left;\">\nSNRPD1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nACAP2\n</td>\n<td style=\"text-align:left;\">\nZNF511\n</td>\n<td style=\"text-align:left;\">\nMTPN\n</td>\n<td style=\"text-align:left;\">\nVIMP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPPP1CC\n</td>\n<td style=\"text-align:left;\">\nEMC6\n</td>\n<td style=\"text-align:left;\">\nSMARCB1\n</td>\n<td style=\"text-align:left;\">\nNUDC\n</td>\n<td style=\"text-align:left;\">\nSHISA5\n</td>\n<td style=\"text-align:left;\">\nRNF213\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nREXO2\n</td>\n<td style=\"text-align:left;\">\nUBA2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC1QB\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNRROS\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPLIN3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUGP2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTHAP7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNELL2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCT3\n</td>\n<td style=\"text-align:left;\">\nSNRPC\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRPL26L1\n</td>\n<td style=\"text-align:left;\">\nTPP1\n</td>\n<td style=\"text-align:left;\">\nMYD88\n</td>\n<td style=\"text-align:left;\">\nCOMT\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNDUFAF3\n</td>\n<td style=\"text-align:left;\">\nMVP\n</td>\n<td style=\"text-align:left;\">\nSET\n</td>\n<td style=\"text-align:left;\">\nCAPN2\n</td>\n<td style=\"text-align:left;\">\nIMP3\n</td>\n<td style=\"text-align:left;\">\nATP6AP2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRBL2\n</td>\n<td style=\"text-align:left;\">\nALDH9A1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHCAR3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMANBA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nATF3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDCK\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nID3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAKTIP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEWSR1\n</td>\n<td style=\"text-align:left;\">\nMRPS34\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTRMT1\n</td>\n<td style=\"text-align:left;\">\nIFNGR1\n</td>\n<td style=\"text-align:left;\">\nAKIRIN2\n</td>\n<td style=\"text-align:left;\">\nMAP2K3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nANXA7\n</td>\n<td style=\"text-align:left;\">\nNDUFC1\n</td>\n<td style=\"text-align:left;\">\nLRCH4\n</td>\n<td style=\"text-align:left;\">\nIK\n</td>\n<td style=\"text-align:left;\">\nC16orf13\n</td>\n<td style=\"text-align:left;\">\nMAP1LC3B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNOP58\n</td>\n<td style=\"text-align:left;\">\nORAI1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCXCL3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMBOAT7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nWTAP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSLC25A45\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLINC00176\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHNRNPR\n</td>\n<td style=\"text-align:left;\">\nPSMD7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFAM195A\n</td>\n<td style=\"text-align:left;\">\nDOCK2\n</td>\n<td style=\"text-align:left;\">\nCOMMD9\n</td>\n<td style=\"text-align:left;\">\nCHCHD5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHAX1\n</td>\n<td style=\"text-align:left;\">\nCOX7B\n</td>\n<td style=\"text-align:left;\">\nSIAH2\n</td>\n<td style=\"text-align:left;\">\nEIF4H\n</td>\n<td style=\"text-align:left;\">\nCDC42SE1\n</td>\n<td style=\"text-align:left;\">\nRER1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCD96\n</td>\n<td style=\"text-align:left;\">\nSURF4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPRKCD\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nORMDL1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRP11-489E7.4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCD28\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCBX3\n</td>\n<td style=\"text-align:left;\">\nILF2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFAM192A\n</td>\n<td style=\"text-align:left;\">\nIFIT3\n</td>\n<td style=\"text-align:left;\">\nSTX10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMBNL1\n</td>\n<td style=\"text-align:left;\">\nMRPS16\n</td>\n<td style=\"text-align:left;\">\nUBE2J1\n</td>\n<td style=\"text-align:left;\">\nHMHA1\n</td>\n<td style=\"text-align:left;\">\nSPAG7\n</td>\n<td style=\"text-align:left;\">\nFMNL1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSH3BP5\n</td>\n<td style=\"text-align:left;\">\nB3GAT3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSGK1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCDC107\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGPATCH4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSCGB3A1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCACYBP\n</td>\n<td style=\"text-align:left;\">\nCCT5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCINP\n</td>\n<td style=\"text-align:left;\">\nERICH1\n</td>\n<td style=\"text-align:left;\">\nHM13\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNR4A2\n</td>\n<td style=\"text-align:left;\">\nZNRD1\n</td>\n<td style=\"text-align:left;\">\nC12orf10\n</td>\n<td style=\"text-align:left;\">\nJAK1\n</td>\n<td style=\"text-align:left;\">\nSDHC\n</td>\n<td style=\"text-align:left;\">\nDCTN3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEMB\n</td>\n<td style=\"text-align:left;\">\nPLGRKT\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRAB34\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTAGAP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTNRC6C\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nOSTC\n</td>\n<td style=\"text-align:left;\">\nATP5G1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nARPC1A\n</td>\n<td style=\"text-align:left;\">\nVKORC1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMRP63\n</td>\n<td style=\"text-align:left;\">\nMKKS\n</td>\n<td style=\"text-align:left;\">\nSMCHD1\n</td>\n<td style=\"text-align:left;\">\nTRAM1\n</td>\n<td style=\"text-align:left;\">\nEMC4\n</td>\n<td style=\"text-align:left;\">\nPCMT1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPRKCH\n</td>\n<td style=\"text-align:left;\">\nGBP5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPDCD4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRP11-291B21.2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTHOC7\n</td>\n<td style=\"text-align:left;\">\nSHFM1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRFXANK\n</td>\n<td style=\"text-align:left;\">\nECHDC1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSF3B2\n</td>\n<td style=\"text-align:left;\">\nSTRA13\n</td>\n<td style=\"text-align:left;\">\nTANK\n</td>\n<td style=\"text-align:left;\">\nCOPS6\n</td>\n<td style=\"text-align:left;\">\nAPH1A\n</td>\n<td style=\"text-align:left;\">\nCDKN2D\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNUDT16L1\n</td>\n<td style=\"text-align:left;\">\nPRKD2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTCP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHAPLN3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPRMT1\n</td>\n<td style=\"text-align:left;\">\nANP32A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPCGF5\n</td>\n<td style=\"text-align:left;\">\nSLA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRAD23A\n</td>\n<td style=\"text-align:left;\">\nGPI\n</td>\n<td style=\"text-align:left;\">\nSTX5\n</td>\n<td style=\"text-align:left;\">\nRAB2A\n</td>\n<td style=\"text-align:left;\">\nARL5A\n</td>\n<td style=\"text-align:left;\">\nRBCK1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nODF2L\n</td>\n<td style=\"text-align:left;\">\nTRPV2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCNG1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHSPD1\n</td>\n<td style=\"text-align:left;\">\nNDUFAB1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSNX5\n</td>\n<td style=\"text-align:left;\">\nSNAPIN\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTRAPPC6A\n</td>\n<td style=\"text-align:left;\">\nANAPC15\n</td>\n<td style=\"text-align:left;\">\nTHRAP3\n</td>\n<td style=\"text-align:left;\">\nDSTN\n</td>\n<td style=\"text-align:left;\">\nSF3B14\n</td>\n<td style=\"text-align:left;\">\nLAPTM4A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC14orf1\n</td>\n<td style=\"text-align:left;\">\nSTAMBP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNONO\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMATR3\n</td>\n<td style=\"text-align:left;\">\nNUTF2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nERCC1\n</td>\n<td style=\"text-align:left;\">\nRTN3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPHB2\n</td>\n<td style=\"text-align:left;\">\nKXD1\n</td>\n<td style=\"text-align:left;\">\nFAM96A\n</td>\n<td style=\"text-align:left;\">\nCCDC115\n</td>\n<td style=\"text-align:left;\">\nPIN1\n</td>\n<td style=\"text-align:left;\">\nCSK\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCYB5B\n</td>\n<td style=\"text-align:left;\">\nMLLT11\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIL16\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEIF5A\n</td>\n<td style=\"text-align:left;\">\nHSD17B10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNCKAP1L\n</td>\n<td style=\"text-align:left;\">\nPEPD\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRSL24D1\n</td>\n<td style=\"text-align:left;\">\nMRPL16\n</td>\n<td style=\"text-align:left;\">\nISCA2\n</td>\n<td style=\"text-align:left;\">\nRHOF\n</td>\n<td style=\"text-align:left;\">\nSRRM2\n</td>\n<td style=\"text-align:left;\">\nCHMP5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPSMD5-AS1\n</td>\n<td style=\"text-align:left;\">\nSYNE1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLUC7L3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPDCD5\n</td>\n<td style=\"text-align:left;\">\nPOLR2E\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIL10RB\n</td>\n<td style=\"text-align:left;\">\nSTK38\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSTK17B\n</td>\n<td style=\"text-align:left;\">\nSLIRP\n</td>\n<td style=\"text-align:left;\">\nAAMP\n</td>\n<td style=\"text-align:left;\">\nEAPP\n</td>\n<td style=\"text-align:left;\">\nCFLAR\n</td>\n<td style=\"text-align:left;\">\nSSNA1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nORMDL3\n</td>\n<td style=\"text-align:left;\">\nTFDP2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFNTA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUBE2N\n</td>\n<td style=\"text-align:left;\">\nPPP1R7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPFKL\n</td>\n<td style=\"text-align:left;\">\nC9orf89\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLINC00493\n</td>\n<td style=\"text-align:left;\">\nUQCRB\n</td>\n<td style=\"text-align:left;\">\nCHPT1\n</td>\n<td style=\"text-align:left;\">\nCOPS5\n</td>\n<td style=\"text-align:left;\">\nCCNDBP1\n</td>\n<td style=\"text-align:left;\">\nWASF2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCDC167\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nN4BP2L2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMAGOH\n</td>\n<td style=\"text-align:left;\">\nSEC11C\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUNC119\n</td>\n<td style=\"text-align:left;\">\nCDV3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGGNBP2\n</td>\n<td style=\"text-align:left;\">\nCTNNBL1\n</td>\n<td style=\"text-align:left;\">\nREL\n</td>\n<td style=\"text-align:left;\">\nSNX6\n</td>\n<td style=\"text-align:left;\">\nCOPZ1\n</td>\n<td style=\"text-align:left;\">\nKDELR2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGIMAP6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTPR\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPPHLN1\n</td>\n<td style=\"text-align:left;\">\nSNRPD3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nATP2B1\n</td>\n<td style=\"text-align:left;\">\nHEXB\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNSMCE1\n</td>\n<td style=\"text-align:left;\">\nFAM50A\n</td>\n<td style=\"text-align:left;\">\nITGAE\n</td>\n<td style=\"text-align:left;\">\nSARS\n</td>\n<td style=\"text-align:left;\">\nTMED10\n</td>\n<td style=\"text-align:left;\">\nCOX6A1P2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPYCR2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nG3BP2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nVDAC3\n</td>\n<td style=\"text-align:left;\">\nPSMC3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRABGAP1L\n</td>\n<td style=\"text-align:left;\">\nZNF524\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCWC15\n</td>\n<td style=\"text-align:left;\">\nKDELR1\n</td>\n<td style=\"text-align:left;\">\nUSF2\n</td>\n<td style=\"text-align:left;\">\nFBXO7\n</td>\n<td style=\"text-align:left;\">\nDDOST\n</td>\n<td style=\"text-align:left;\">\nSELPLG\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRNF115\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nELOVL5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNUCKS1\n</td>\n<td style=\"text-align:left;\">\nOTUB1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNFYC\n</td>\n<td style=\"text-align:left;\">\nVMA21\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPDCD2\n</td>\n<td style=\"text-align:left;\">\nIRF2BP2\n</td>\n<td style=\"text-align:left;\">\nITGA4\n</td>\n<td style=\"text-align:left;\">\nGNAI3\n</td>\n<td style=\"text-align:left;\">\nSDHD\n</td>\n<td style=\"text-align:left;\">\nWSB1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPTPN4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSCAF11\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAIP\n</td>\n<td style=\"text-align:left;\">\nMRPS7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMTSS1\n</td>\n<td style=\"text-align:left;\">\nPLD3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMRPS18B\n</td>\n<td style=\"text-align:left;\">\nPSMD11\n</td>\n<td style=\"text-align:left;\">\nNSFL1C\n</td>\n<td style=\"text-align:left;\">\nCCM2\n</td>\n<td style=\"text-align:left;\">\nMRPL34\n</td>\n<td style=\"text-align:left;\">\nC7orf73\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSYNE2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPRPF38B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRBM17\n</td>\n<td style=\"text-align:left;\">\nPSMA3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRALB\n</td>\n<td style=\"text-align:left;\">\nATP6V1B2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPRRC2C\n</td>\n<td style=\"text-align:left;\">\nHARS\n</td>\n<td style=\"text-align:left;\">\nGRPEL1\n</td>\n<td style=\"text-align:left;\">\nSNHG15\n</td>\n<td style=\"text-align:left;\">\nTMEM160\n</td>\n<td style=\"text-align:left;\">\nCMTM6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTMEM87A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSLC3A2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGTF2A2\n</td>\n<td style=\"text-align:left;\">\nCDK2AP2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDPEP2\n</td>\n<td style=\"text-align:left;\">\nCHIC2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCNPY2\n</td>\n<td style=\"text-align:left;\">\nSEC13\n</td>\n<td style=\"text-align:left;\">\nSAMD9L\n</td>\n<td style=\"text-align:left;\">\nABT1\n</td>\n<td style=\"text-align:left;\">\nZMAT2\n</td>\n<td style=\"text-align:left;\">\nSUCLG1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRBM38\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDPY30\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSTRAP\n</td>\n<td style=\"text-align:left;\">\nSRM\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSNAP29\n</td>\n<td style=\"text-align:left;\">\nOAS3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRP11-1143G9.4\n</td>\n<td style=\"text-align:left;\">\nFAM89B\n</td>\n<td style=\"text-align:left;\">\nCCS\n</td>\n<td style=\"text-align:left;\">\nRNF5\n</td>\n<td style=\"text-align:left;\">\nIFI16\n</td>\n<td style=\"text-align:left;\">\nPRDX3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTHAP11\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCYTH1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSNRPE\n</td>\n<td style=\"text-align:left;\">\nUFD1L\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGCH1\n</td>\n<td style=\"text-align:left;\">\nCEBPG\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNECAP2\n</td>\n<td style=\"text-align:left;\">\nNIT2\n</td>\n<td style=\"text-align:left;\">\nACO2\n</td>\n<td style=\"text-align:left;\">\nFAM162A\n</td>\n<td style=\"text-align:left;\">\nTRAPPC3\n</td>\n<td style=\"text-align:left;\">\nMIEN1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nOBFC1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCDC59\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEPC1\n</td>\n<td style=\"text-align:left;\">\nPOMP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGINM1\n</td>\n<td style=\"text-align:left;\">\nCBWD1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDDX17\n</td>\n<td style=\"text-align:left;\">\nFLYWCH2\n</td>\n<td style=\"text-align:left;\">\nMRPL12\n</td>\n<td style=\"text-align:left;\">\nCCNH\n</td>\n<td style=\"text-align:left;\">\nC17orf62\n</td>\n<td style=\"text-align:left;\">\nRNASEH2C\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCD59\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nWHSC1L1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRNF126\n</td>\n<td style=\"text-align:left;\">\nMRPL11\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRIPK2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTXNL1\n</td>\n<td style=\"text-align:left;\">\nPTOV1\n</td>\n<td style=\"text-align:left;\">\nSTARD7\n</td>\n<td style=\"text-align:left;\">\nKTN1\n</td>\n<td style=\"text-align:left;\">\nPDAP1\n</td>\n<td style=\"text-align:left;\">\nSH3GLB1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCND2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSF3B1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nADH5\n</td>\n<td style=\"text-align:left;\">\nGTF3C6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUTP6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nH1FX\n</td>\n<td style=\"text-align:left;\">\nFH\n</td>\n<td style=\"text-align:left;\">\nTRIM38\n</td>\n<td style=\"text-align:left;\">\nLCP2\n</td>\n<td style=\"text-align:left;\">\nRNF166\n</td>\n<td style=\"text-align:left;\">\nAKAP13\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPHACTR4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRBM23\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPPM1G\n</td>\n<td style=\"text-align:left;\">\nSDF2L1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPACSIN2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMED28\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTRA2A\n</td>\n<td style=\"text-align:left;\">\nBCL7B\n</td>\n<td style=\"text-align:left;\">\nTXNDC12\n</td>\n<td style=\"text-align:left;\">\nELOF1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGOLT1B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nBBX\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSNRPF\n</td>\n<td style=\"text-align:left;\">\nPSMC2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLINC01003\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSRRM1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCOMMD5\n</td>\n<td style=\"text-align:left;\">\nGLUD1\n</td>\n<td style=\"text-align:left;\">\nIDH3B\n</td>\n<td style=\"text-align:left;\">\nNDUFA6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMTFP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNAA38\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nWBSCR22\n</td>\n<td style=\"text-align:left;\">\nNDUFB3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRBM25\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCKS1B\n</td>\n<td style=\"text-align:left;\">\nELF1\n</td>\n<td style=\"text-align:left;\">\nMRPL55\n</td>\n<td style=\"text-align:left;\">\nATP6V1E1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCXCR3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIRF9\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMAPRE1\n</td>\n<td style=\"text-align:left;\">\nTUBB4B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDCXR\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDUSP22\n</td>\n<td style=\"text-align:left;\">\nCOMMD8\n</td>\n<td style=\"text-align:left;\">\nPOLR2F\n</td>\n<td style=\"text-align:left;\">\nFKBP2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGALM\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMAT2B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMETTL23\n</td>\n<td style=\"text-align:left;\">\nXRN2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSFPQ\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPTPN1\n</td>\n<td style=\"text-align:left;\">\nDCTN2\n</td>\n<td style=\"text-align:left;\">\nARHGAP30\n</td>\n<td style=\"text-align:left;\">\nCAST\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nACD\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGPBP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSNRPA1\n</td>\n<td style=\"text-align:left;\">\nCARHSP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCHMP3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSRSF6\n</td>\n<td style=\"text-align:left;\">\nTMEM126B\n</td>\n<td style=\"text-align:left;\">\nDDX46\n</td>\n<td style=\"text-align:left;\">\nSFT2D1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTNFRSF18\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCHD2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAKR1B1\n</td>\n<td style=\"text-align:left;\">\nC11orf48\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDAP3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTEN1\n</td>\n<td style=\"text-align:left;\">\nNME4\n</td>\n<td style=\"text-align:left;\">\nCOMMD7\n</td>\n<td style=\"text-align:left;\">\nCISD3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEGLN2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPPP1R12A\n</td>\n<td style=\"text-align:left;\">\nNDUFS4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMRPS15\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCOMMD4\n</td>\n<td style=\"text-align:left;\">\nCCZ1\n</td>\n<td style=\"text-align:left;\">\nPPP1R11\n</td>\n<td style=\"text-align:left;\">\nNDUFB6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nARL2BP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSTOML2\n</td>\n<td style=\"text-align:left;\">\nTCEB1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEIF2A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTSSC1\n</td>\n<td style=\"text-align:left;\">\nRPF1\n</td>\n<td style=\"text-align:left;\">\nAUP1\n</td>\n<td style=\"text-align:left;\">\nUBE2F\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRBBP7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMRPL9\n</td>\n<td style=\"text-align:left;\">\nIMP4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMFNG\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCWC25\n</td>\n<td style=\"text-align:left;\">\nYY1\n</td>\n<td style=\"text-align:left;\">\nPPP2R1A\n</td>\n<td style=\"text-align:left;\">\nPSENEN\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRPAIN\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMFF\n</td>\n<td style=\"text-align:left;\">\nMRPS18C\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPSMF1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCEPT1\n</td>\n<td style=\"text-align:left;\">\nRAB11A\n</td>\n<td style=\"text-align:left;\">\nPSMD13\n</td>\n<td style=\"text-align:left;\">\nFAM204A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNKTR\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPITHD1\n</td>\n<td style=\"text-align:left;\">\nSEC61G\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPHF5A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCHD9\n</td>\n<td style=\"text-align:left;\">\nKPNB1\n</td>\n<td style=\"text-align:left;\">\nPET100\n</td>\n<td style=\"text-align:left;\">\nSCAMP2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPNN\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nANAPC5\n</td>\n<td style=\"text-align:left;\">\nZDHHC12\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTAF9\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCD81\n</td>\n<td style=\"text-align:left;\">\nPDCL3\n</td>\n<td style=\"text-align:left;\">\nITGB1BP1\n</td>\n<td style=\"text-align:left;\">\nNAPA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDARS\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCDC123\n</td>\n<td style=\"text-align:left;\">\nPTBP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNDUFA10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRFC2\n</td>\n<td style=\"text-align:left;\">\nGLG1\n</td>\n<td style=\"text-align:left;\">\nTEX264\n</td>\n<td style=\"text-align:left;\">\nOS9\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNCBP2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSNRPG\n</td>\n<td style=\"text-align:left;\">\nHNRNPD\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSNW1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nACP5\n</td>\n<td style=\"text-align:left;\">\nMETTL5\n</td>\n<td style=\"text-align:left;\">\nCSNK1A1\n</td>\n<td style=\"text-align:left;\">\nASNA1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAATF\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLYRM4\n</td>\n<td style=\"text-align:left;\">\nNUDT1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFDX1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUROS\n</td>\n<td style=\"text-align:left;\">\nLSM1\n</td>\n<td style=\"text-align:left;\">\nMLX\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRSF1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGLRX3\n</td>\n<td style=\"text-align:left;\">\nPAK2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nECHS1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMAGED2\n</td>\n<td style=\"text-align:left;\">\nGSDMD\n</td>\n<td style=\"text-align:left;\">\nMEA1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCHCHD7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSRP19\n</td>\n<td style=\"text-align:left;\">\nSEPT2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMT-ND4L\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nZCRB1\n</td>\n<td style=\"text-align:left;\">\nRTF1\n</td>\n<td style=\"text-align:left;\">\nUBE2A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAL592183.1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC17orf89\n</td>\n<td style=\"text-align:left;\">\nAK2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDHPS\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCDC53\n</td>\n<td style=\"text-align:left;\">\nNME3\n</td>\n<td style=\"text-align:left;\">\nEMC3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nBTF3L4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSNRNP70\n</td>\n<td style=\"text-align:left;\">\nRPS6KB2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPMF1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAPOL3\n</td>\n<td style=\"text-align:left;\">\nTAF12\n</td>\n<td style=\"text-align:left;\">\nSTK10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFLI1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPSMD6\n</td>\n<td style=\"text-align:left;\">\nTIMM17A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSUCLG2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSHARPIN\n</td>\n<td style=\"text-align:left;\">\nPUF60\n</td>\n<td style=\"text-align:left;\">\nTPGS1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNR3C1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNUDT5\n</td>\n<td style=\"text-align:left;\">\nDCTPP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPRKCSH\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPPA2\n</td>\n<td style=\"text-align:left;\">\nIAH1\n</td>\n<td style=\"text-align:left;\">\nTMEM141\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nITSN2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDDX39A\n</td>\n<td style=\"text-align:left;\">\nHMGN2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nBABAM1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nZFAND2B\n</td>\n<td style=\"text-align:left;\">\nPDLIM2\n</td>\n<td style=\"text-align:left;\">\nPKN1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nZC3HAV1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHSPA9\n</td>\n<td style=\"text-align:left;\">\nMTCH2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPABPC4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSLFN5\n</td>\n<td style=\"text-align:left;\">\nMGMT\n</td>\n<td style=\"text-align:left;\">\nUBE2E3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMTERFD2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nVCP\n</td>\n<td style=\"text-align:left;\">\nMRPL47\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nATG12\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCDC90B\n</td>\n<td style=\"text-align:left;\">\nMRPS12\n</td>\n<td style=\"text-align:left;\">\nCCDC124\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGRAMD1A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSRSF1\n</td>\n<td style=\"text-align:left;\">\nUQCC2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNXT1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTMBIM1\n</td>\n<td style=\"text-align:left;\">\nBRD2\n</td>\n<td style=\"text-align:left;\">\nCOA3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nZNF24\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEIF4A3\n</td>\n<td style=\"text-align:left;\">\nMRPL36\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPPIE\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTSNAX\n</td>\n<td style=\"text-align:left;\">\nCANX\n</td>\n<td style=\"text-align:left;\">\nRPN1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUSE1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCLPP\n</td>\n<td style=\"text-align:left;\">\nNKAP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPIH1D1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSEPHS2\n</td>\n<td style=\"text-align:left;\">\nNAA20\n</td>\n<td style=\"text-align:left;\">\nRAB4A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUSP16\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTTC1\n</td>\n<td style=\"text-align:left;\">\nDAZAP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUBE2E1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSLC44A2\n</td>\n<td style=\"text-align:left;\">\nNOP56\n</td>\n<td style=\"text-align:left;\">\nTADA3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nARFGAP2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIDI1\n</td>\n<td style=\"text-align:left;\">\nMRPL15\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nQARS\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nASCC2\n</td>\n<td style=\"text-align:left;\">\nFUNDC2\n</td>\n<td style=\"text-align:left;\">\nMRPS11\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFRG1B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMRPS26\n</td>\n<td style=\"text-align:left;\">\nTIMM10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGID8\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nBFAR\n</td>\n<td style=\"text-align:left;\">\nMTCH1\n</td>\n<td style=\"text-align:left;\">\nDNAJC2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTIMM9\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHNRNPUL1\n</td>\n<td style=\"text-align:left;\">\nDTYMK\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMRPL3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCDC25\n</td>\n<td style=\"text-align:left;\">\nTXNL4A\n</td>\n<td style=\"text-align:left;\">\nFKBP5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMARCH7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHINT2\n</td>\n<td style=\"text-align:left;\">\nTOP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUSP15\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNRBP1\n</td>\n<td style=\"text-align:left;\">\nPTRHD1\n</td>\n<td style=\"text-align:left;\">\nRRP7A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLENG1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSLBP\n</td>\n<td style=\"text-align:left;\">\nPSMG3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMRPL32\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPHF3\n</td>\n<td style=\"text-align:left;\">\nSLC25A11\n</td>\n<td style=\"text-align:left;\">\nDNAJB11\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCYB5A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPSMD14\n</td>\n<td style=\"text-align:left;\">\nDLD\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMAPKAPK5-AS1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSYS1\n</td>\n<td style=\"text-align:left;\">\nCOX16\n</td>\n<td style=\"text-align:left;\">\nYIPF3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSMIM19\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFKBP3\n</td>\n<td style=\"text-align:left;\">\nDCPS\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPTP4A1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPPM1B\n</td>\n<td style=\"text-align:left;\">\nNDUFV1\n</td>\n<td style=\"text-align:left;\">\nDIAPH1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLINC-PINT\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSDHA\n</td>\n<td style=\"text-align:left;\">\nTFDP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEIF1AX\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nYAF2\n</td>\n<td style=\"text-align:left;\">\nARHGAP9\n</td>\n<td style=\"text-align:left;\">\nHNRNPH2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nOARD1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNCBP2-AS2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRP11-139H15.1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLNPEP\n</td>\n<td style=\"text-align:left;\">\nLSM3\n</td>\n<td style=\"text-align:left;\">\nPFDN6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTTC14\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSNRNP40\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFXR1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPEX16\n</td>\n<td style=\"text-align:left;\">\nGPAA1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTMEM242\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRAD21\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEIF2B1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSRSF4\n</td>\n<td style=\"text-align:left;\">\nMAPK1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDDIT3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nVBP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nESD\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPHF11\n</td>\n<td style=\"text-align:left;\">\nACAA2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSAFB2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC14orf119\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSF3A3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nVTI1B\n</td>\n<td style=\"text-align:left;\">\nPANK2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCEBPZ-AS1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFAM177A1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMCTS1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAKR7A2\n</td>\n<td style=\"text-align:left;\">\nIFNAR2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nBRD9\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHPRT1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCNC\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nURM1\n</td>\n<td style=\"text-align:left;\">\nMAD2L2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPRDM2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSLC25A39\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCOA6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAHSA1\n</td>\n<td style=\"text-align:left;\">\nCCDC88C\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCD84\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRPA3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPHYKPL\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nJAGN1\n</td>\n<td style=\"text-align:left;\">\nRAB4B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEGR1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSNRPA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCAMTA1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGRHPR\n</td>\n<td style=\"text-align:left;\">\nG6PD\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGLRX5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC19orf25\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nROMO1\n</td>\n<td style=\"text-align:left;\">\nARFGAP3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTIAL1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCHCHD1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPFDN1\n</td>\n<td style=\"text-align:left;\">\nBCCIP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEXOSC8\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEIF4E\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSTX8\n</td>\n<td style=\"text-align:left;\">\nRABL6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLBR\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC11orf83\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRNPEPL1\n</td>\n<td style=\"text-align:left;\">\nSMC4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nILF3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSREK1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTMEM248\n</td>\n<td style=\"text-align:left;\">\nMVD\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSAP30BP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nANKRD11\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGGA1\n</td>\n<td style=\"text-align:left;\">\nMRPS28\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nACTR10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTMEM138\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIFT20\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNUDT21\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPTGES2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAKAP9\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUBE2G1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLGALS8\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC18orf32\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLARP7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMLEC\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nBRMS1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPPIH\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC5orf15\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCAPN1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEBNA1BP2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFEM1B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDDRGK1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nVOPP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRAD23B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGNL3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nWDR33\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCISD2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nWDR61\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSSRP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSUGT1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPDIA4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLAGE3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSYNCRIP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRBBP4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC1orf35\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nESYT1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMAP7D1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAPOA1BP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDNAJC9\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMIF4GD\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHAUS1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCFDP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nILKAP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUBE2J2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRPUSD3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMRPS5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCDKN2AIPNL\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSRPK2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPOLD2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFAM200B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHNRNPAB\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC17orf49\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTMEM106C\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNUBP2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCBX1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPRKAG1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNAA50\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSURF2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMCM3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSSSCA1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCISD1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEI24\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTFPT\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCSNK1D\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUBA5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDCTD\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLMAN1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPEX2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPGRMC2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPNKP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC19orf48\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTMEM70\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC14orf142\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nJMJD6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPAICS\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDCAF5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRCE1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div>\n<div id=\"module-lookup\" class=\"section level2\">\n<h2 class=\"hasAnchor\">\n<a href=\"#module-lookup\" class=\"anchor\"></a>Module lookup</h2>\n<p>If you want to quickly find which module a particular feature was assigned to, the <code>featureModuleLookup</code> function can be used. Here will will look up a marker gene for T-cells called “CD3E”:</p>\n<div class=\"sourceCode\" id=\"cb38\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"va\">mod</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../../reference/featureModuleLookup.html\">featureModuleLookup</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, feature <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"CD3E\"</span>, <span class=\"st\">\"S100A8\"</span><span class=\"op\">)</span><span class=\"op\">)</span>\n<span class=\"va\">mod</span></code></pre></div>\n<pre><code>##   CD3E S100A8 \n##     27     70</code></pre>\n</div>\n<div id=\"module-heatmaps\" class=\"section level2\">\n<h2 class=\"hasAnchor\">\n<a href=\"#module-heatmaps\" class=\"anchor\"></a>Module heatmaps</h2>\n<p>The function <code>moduleHeatmap</code> can be used to view the expression of features across cells for a specific module. The <code>featureModule</code> parameter denotes the module(s) to be displayed. Cells are ordered from those with the lowest probability of the module on the left to the highest probability on the right. Similarly, features are ordered from those with the highest probability within the module on the top to the lowest probability on the bottom.</p>\n<div class=\"sourceCode\" id=\"cb40\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"fu\"><a href=\"../../reference/moduleHeatmap.html\">moduleHeatmap</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, featureModule <span class=\"op\">=</span> <span class=\"fl\">27</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span><span class=\"op\">)</span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/module_heatmap-1.png\" width=\"700\"></p>\n<p>The parameter <code>topCells</code> can be used to control the number of cells included in the heatmap. By default, only the 100 cells with the lowest probabilities and the 100 cells with the highest probabilities for each selected module are included (i.e. <code>topCells = 100</code> by default). To display all cells, this parameter can be set to <code>NULL</code>:</p>\n<div class=\"sourceCode\" id=\"cb41\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"fu\"><a href=\"../../reference/moduleHeatmap.html\">moduleHeatmap</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, featureModule <span class=\"op\">=</span> <span class=\"fl\">27</span>, topCells <span class=\"op\">=</span> <span class=\"cn\">NULL</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span><span class=\"op\">)</span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/module_heatmap_topcells-1.png\" width=\"700\"></p>\n<p><strong>Note:</strong> Multiple modules can be displayed by giving a vector of module indices to the parameter <code>featureModule</code>. If <code>featureModule</code> is not specified, then all modules will be plotted.</p>\n</div>\n<div id=\"module-probabilities-on-2-d-embeddings\" class=\"section level2\">\n<h2 class=\"hasAnchor\">\n<a href=\"#module-probabilities-on-2-d-embeddings\" class=\"anchor\"></a>Module probabilities on 2-D embeddings</h2>\n<p>The function <code>plotDimReduceModule</code> can be used visualize the probabilities of a particular module or sets of modules on a reduced dimensional plot such as a UMAP. This can be another quick method to see how modules are expressed across various cells in 2-D space. As an example, we can look at module 70 which contained S100A8:</p>\n<div class=\"sourceCode\" id=\"cb42\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"fu\"><a href=\"../../reference/plotDimReduceModule.html\">plotDimReduceModule</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, modules <span class=\"op\">=</span> <span class=\"fl\">70</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span>, reducedDimName <span class=\"op\">=</span> <span class=\"st\">\"celda_UMAP\"</span><span class=\"op\">)</span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/module_umaps-1.png\" width=\"700\"></p>\n<p>Similarly, multiple modules can be plotting in a grid of UMAPs:</p>\n<div class=\"sourceCode\" id=\"cb43\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"fu\"><a href=\"../../reference/plotDimReduceModule.html\">plotDimReduceModule</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, modules <span class=\"op\">=</span> <span class=\"fl\">70</span><span class=\"op\">:</span><span class=\"fl\">78</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span>, reducedDimName <span class=\"op\">=</span> <span class=\"st\">\"celda_UMAP\"</span><span class=\"op\">)</span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/module_umaps_grid-1.png\" width=\"700\"></p>\n<p>In this grid, we can see that module 70 (which has high levels of S100A8 and S100A9) is highly expressed in cell populations 2 and 3, module 71 (which contains CD14) can be used to identify all CD14+ monocytes, module 72 (which contains CST3) is expressed across both CD14 and FCGR3A (CD16) expressing monocytes, and module 73 (which contains CD4) is expressed broadly across both monocytes and dendritic cells as well as some T-cell populations. If we were interesting in defining transcriptional programs active across all monocytes, we could examine the genes found in module 72. If we were interested in defining transcriptional programs for all CD14+ monocytes, we could examine the genes in module 71. These patterns can also be observed in the <a href=\"#probmap\">Probability Map</a></p>\n<p>In the celda probability map, we saw that the unknown T-cell population 13 had high levels of module 30. We can examine both module heatmaps and module probability maps to further explore this:</p>\n<div class=\"sourceCode\" id=\"cb44\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"fu\"><a href=\"../../reference/moduleHeatmap.html\">moduleHeatmap</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, featureModule <span class=\"op\">=</span> <span class=\"fl\">30</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span><span class=\"op\">)</span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/module_Tcell_prolif-1.png\" width=\"700\"></p>\n<div class=\"sourceCode\" id=\"cb45\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"fu\"><a href=\"../../reference/plotDimReduceModule.html\">plotDimReduceModule</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, modules <span class=\"op\">=</span> <span class=\"fl\">30</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span>, reducedDimName <span class=\"op\">=</span> <span class=\"st\">\"celda_UMAP\"</span><span class=\"op\">)</span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/module_Tcell_prolif-2.png\" width=\"700\"></p>\n<p>Module 30 has high levels of genes associated with proliferation including HMGA1, STMN1, PCNA, HMGB2, and TUBA1B. We can therefore re-label these cells as “Proliferating T-cells”.</p>\n</div>\n</div>\n<div id=\"identification-and-plotting-of-marker-genes\" class=\"section level1\">\n<h1 class=\"hasAnchor\">\n<a href=\"#identification-and-plotting-of-marker-genes\" class=\"anchor\"></a>Identification and plotting of marker genes</h1>\n<p>In addition to examining modules, differential expression can be used to identify potential marker genes up-regulated in specific cell populations. The function <code>findMarkerDiffExp</code> in the <code>singleCellTK</code> package will find markers up-regulated in each cell population compared to all the others.</p>\n<div id=\"differential-expression-to-identify-marker-genes\" class=\"section level2\">\n<h2 class=\"hasAnchor\">\n<a href=\"#differential-expression-to-identify-marker-genes\" class=\"anchor\"></a>Differential expression to identify marker genes</h2>\n<div class=\"sourceCode\" id=\"cb46\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"co\"># Normalize counts (if not performed previously)</span>\n<span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"http://bioconductor.org/packages/scater/\">scater</a></span><span class=\"op\">)</span>\n<span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/scuttle/man/logNormCounts.html\">logNormCounts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, exprs_values <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, name <span class=\"op\">=</span> <span class=\"st\">\"logcounts\"</span><span class=\"op\">)</span>\n\n<span class=\"co\"># Run differential expression analysis</span>\n<span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/singleCellTK/man/findMarkerDiffExp.html\">findMarkerDiffExp</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, useAssay <span class=\"op\">=</span> <span class=\"st\">\"logcounts\"</span>, method <span class=\"op\">=</span> <span class=\"st\">\"wilcox\"</span>, cluster <span class=\"op\">=</span> <span class=\"fu\"><a href=\"../../reference/celdaClusters.html\">celdaClusters</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span>, minMeanExpr <span class=\"op\">=</span> <span class=\"fl\">0</span>, fdrThreshold <span class=\"op\">=</span> <span class=\"fl\">0.05</span>, log2fcThreshold <span class=\"op\">=</span> <span class=\"fl\">0</span>, minClustExprPerc <span class=\"op\">=</span> <span class=\"fl\">0</span>, maxCtrlExprPerc <span class=\"op\">=</span> <span class=\"fl\">1</span><span class=\"op\">)</span></code></pre></div>\n<p>The function <code>plotMarkerDiffExp</code> can be used to plot the results in a heatmap. The <code>topN</code> parameter will plot the top N ranked genes for each cluster.</p>\n<div class=\"sourceCode\" id=\"cb47\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"co\"># Plot differentially expressed genes that pass additional thresholds 'minClustExprPerc' and 'maxCtrlExprPerc'</span>\n<span class=\"fu\"><a href=\"https://rdrr.io/pkg/singleCellTK/man/plotMarkerDiffExp.html\">plotMarkerDiffExp</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, topN <span class=\"op\">=</span> <span class=\"fl\">5</span>, log2fcThreshold <span class=\"op\">=</span> <span class=\"fl\">0</span>, rowLabel <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>, fdrThreshold <span class=\"op\">=</span> <span class=\"fl\">0.05</span>, minClustExprPerc <span class=\"op\">=</span> <span class=\"fl\">0.6</span>, maxCtrlExprPerc <span class=\"op\">=</span> <span class=\"fl\">0.4</span>, minMeanExpr <span class=\"op\">=</span> <span class=\"fl\">0</span><span class=\"op\">)</span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/diffExp_plot-1.png\" width=\"700\"></p>\n<p>Other parameters such as <code>minClustExprPerc</code> (the minimum number of cells expressing the marker gene in the cluster) and <code>maxCtrlExprPerc</code> (the maximum number of cells expression the marker gene in other clusters) can be used to control how specific each marker gene is to each cell populations. Similarly, adding a log2 fold-change cutoff (e.g. 1) can select for markers that are more strongly up-regulated in a cell population.</p>\n</div>\n<div id=\"violin-plots-for-marker-genes\" class=\"section level2\">\n<h2 class=\"hasAnchor\">\n<a href=\"#violin-plots-for-marker-genes\" class=\"anchor\"></a>Violin plots for marker genes</h2>\n<p>The <code>plotCeldaViolin</code> function can be used to examine the distribution of expression of various features across cell population clusters derived from celda. Here we can see that the gene CD79A has high expression in the B-cell cluster and HMGB2 has high expression in the proliferating T-cell population.</p>\n<div class=\"sourceCode\" id=\"cb48\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"co\"># Normalize counts if not performed in previous steps</span>\n<span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"http://bioconductor.org/packages/scater/\">scater</a></span><span class=\"op\">)</span>\n<span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/scuttle/man/logNormCounts.html\">logNormCounts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, exprs_values <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, name <span class=\"op\">=</span> <span class=\"st\">\"logcounts\"</span><span class=\"op\">)</span>\n\n<span class=\"co\"># Make violin plots for marker genes</span>\n<span class=\"fu\"><a href=\"../../reference/plotCeldaViolin.html\">plotCeldaViolin</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, useAssay <span class=\"op\">=</span> <span class=\"st\">\"logcounts\"</span>, features <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"CD79A\"</span>, <span class=\"st\">\"HMGB2\"</span><span class=\"op\">)</span><span class=\"op\">)</span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/violin-1.png\" width=\"700\"></p>\n</div>\n</div>\n<div id=\"generating-html-reports\" class=\"section level1\">\n<h1 class=\"hasAnchor\">\n<a href=\"#generating-html-reports\" class=\"anchor\"></a>Generating HTML reports</h1>\n<p>The celda package comes with two functions for generating comprehensive HTML reports that 1) capture the process of selecting K/L for a <code>celda_CG</code> model and 2) plot the results from the downstream analysis. The first report runs both <code>recursiveSplitModule</code> and <code>recursiveSplitCell</code> for selection of <code>L</code> and <code>K</code>, respectively. To recapitulate the complete analysis presented in this tutorial in the HTML report, the following command can be used:</p>\n<div class=\"sourceCode\" id=\"cb49\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../../reference/reportceldaCG.html\">reportCeldaCGRun</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, sampleLabel <span class=\"op\">=</span> <span class=\"cn\">NULL</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span>, minCell <span class=\"op\">=</span> <span class=\"fl\">3</span>, minCount <span class=\"op\">=</span> <span class=\"fl\">3</span>, initialL <span class=\"op\">=</span> <span class=\"fl\">10</span>, maxL <span class=\"op\">=</span> <span class=\"fl\">150</span>, initialK <span class=\"op\">=</span> <span class=\"fl\">3</span>, maxK <span class=\"op\">=</span> <span class=\"fl\">25</span>, L <span class=\"op\">=</span> <span class=\"fl\">80</span>, K <span class=\"op\">=</span> <span class=\"fl\">14</span><span class=\"op\">)</span></code></pre></div>\n<p>All of the parameters in this function are the same that were used throughout this tutorial in the <code>selectFeatures</code>, <code>recursiveSplitModule</code>, and <code>recursiveSplitCell</code> functions. Note that this report does <strong>not</strong> do cell filtering, so that must be completed before running this function. The returned SCE object will have the <code>celda_CG</code> model with selected <code>K</code> and <code>L</code> which can be used in any of the downstream plotting functions as well as input into the second plotting report described next.</p>\n<p>The second report takes in as input an SCE object with a fitted <code>celda_CG</code> model and systematically generates several plots that facilitate exploratory analysis including cell subpopulation cluster labels on 2-D embeddings, user-specified annotations on 2-D embeddings, module heatmaps, module probabilities, expression of marker genes on 2-D embeddings, and the celda probability map. The report can be generated with the following code:</p>\n<div class=\"sourceCode\" id=\"cb50\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"fu\"><a href=\"../../reference/reportceldaCG.html\">reportCeldaCGPlotResults</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, reducedDimName <span class=\"op\">=</span> <span class=\"st\">\"celda_UMAP\"</span>, features <span class=\"op\">=</span> <span class=\"va\">markers</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span>, cellAnnot <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"total\"</span>, <span class=\"st\">\"detected\"</span>, <span class=\"st\">\"decontX_contamination\"</span>, <span class=\"st\">\"subsets_mito_percent\"</span><span class=\"op\">)</span>, cellAnnotLabel <span class=\"op\">=</span> <span class=\"st\">\"scDblFinder_class\"</span><span class=\"op\">)</span></code></pre></div>\n<p>User-supplied annotations to plot on the 2-D embedding can be specified through the <code>cellAnnot</code> and <code>cellAnnotLabel</code> variables. Both parameters will allow for plotting of variables stored in the colData of the SCE on the 2-D embedding plot specified by <code>reducedDimName</code> parameter. For <code>cellAnnot</code>, integer and numeric variables will be plotted as as continuous variables while factors and characters will be plotted as categorical variables. For <code>cellAnnotLabel</code>, all variables will be coerced to a factor and the labels of the categories will be plotted on the scatter plot.</p>\n</div>\n<div id=\"other-useful-functions\" class=\"section level1\">\n<h1 class=\"hasAnchor\">\n<a href=\"#other-useful-functions\" class=\"anchor\"></a>Other useful functions</h1>\n<div id=\"matrix-factorization\" class=\"section level2\">\n<h2 class=\"hasAnchor\">\n<a href=\"#matrix-factorization\" class=\"anchor\"></a>Matrix factorization</h2>\n<p>The celda model factorizes the original matrix into three matrices:</p>\n<p><strong>1) module -</strong> The probability of each feature in each module (Psi)</p>\n<p><strong>2) cellPopulation -</strong> The probability of each module in each cell population (Phi)</p>\n<p><strong>3) sample -</strong> The probability of each cell population in each sample (Theta)</p>\n<p>Additionally, we can calculate the probability of each module within each cell (cell). The cell matrix can essentially be used to replace PCs from PCA and is useful for downstream visualization (e.g. generating 2-D embeddings). All of these matrices can be retrieved with the <code>factorizeMatrix</code> function. The matrices are returned in three different versions: unnormalized counts, proportions (normalized by the total), or posterior estimates (where the Dirichlet concentration parameter is added in before normalization).</p>\n<div class=\"sourceCode\" id=\"cb51\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"co\"># Factorize the original counts matrix</span>\n<span class=\"va\">fm</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../../reference/factorizeMatrix.html\">factorizeMatrix</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span>\n\n<span class=\"co\"># Three different version of each matrix:</span>\n<span class=\"fu\"><a href=\"https://rdrr.io/r/base/names.html\">names</a></span><span class=\"op\">(</span><span class=\"va\">fm</span><span class=\"op\">)</span></code></pre></div>\n<pre><code>## [1] \"counts\"      \"proportions\" \"posterior\"</code></pre>\n<div class=\"sourceCode\" id=\"cb53\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"co\"># Get normalized proportional matrices</span>\n<span class=\"fu\"><a href=\"https://rdrr.io/r/base/dim.html\">dim</a></span><span class=\"op\">(</span><span class=\"va\">fm</span><span class=\"op\">$</span><span class=\"va\">proportions</span><span class=\"op\">$</span><span class=\"va\">cell</span><span class=\"op\">)</span> <span class=\"co\"># Matrix of module probabilities for each cell</span></code></pre></div>\n<pre><code>## [1]   80 2675</code></pre>\n<div class=\"sourceCode\" id=\"cb55\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"fu\"><a href=\"https://rdrr.io/r/base/dim.html\">dim</a></span><span class=\"op\">(</span><span class=\"va\">fm</span><span class=\"op\">$</span><span class=\"va\">proportions</span><span class=\"op\">$</span><span class=\"va\">module</span><span class=\"op\">)</span> <span class=\"co\"># Matrix of feature probabilities for each module</span></code></pre></div>\n<pre><code>## [1] 2639   80</code></pre>\n<div class=\"sourceCode\" id=\"cb57\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"fu\"><a href=\"https://rdrr.io/r/base/dim.html\">dim</a></span><span class=\"op\">(</span><span class=\"va\">fm</span><span class=\"op\">$</span><span class=\"va\">proportions</span><span class=\"op\">$</span><span class=\"va\">cellPopulation</span><span class=\"op\">)</span> <span class=\"co\"># Matrix of module probabilities for each cell population</span></code></pre></div>\n<pre><code>## [1] 80 14</code></pre>\n<div class=\"sourceCode\" id=\"cb59\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"fu\"><a href=\"https://rdrr.io/r/base/dim.html\">dim</a></span><span class=\"op\">(</span><span class=\"va\">fm</span><span class=\"op\">$</span><span class=\"va\">proportions</span><span class=\"op\">$</span><span class=\"va\">sample</span><span class=\"op\">)</span> <span class=\"co\"># Matrix of cell population probabilities in each sample</span></code></pre></div>\n<pre><code>## [1] 14  1</code></pre>\n</div>\n<div id=\"changing-the-feature-display-name\" class=\"section level2\">\n<h2 class=\"hasAnchor\">\n<a href=\"#changing-the-feature-display-name\" class=\"anchor\"></a>Changing the feature display name</h2>\n<p>The parameter <code>displayName</code> can be used to change the labels of the rows from the <code>rownames</code> to a column in the <code>rowData</code> of the SCE object. The function is available in <code>plotDimReduceFeature</code> and <code>moduleHeatmap</code>. For example, if we did not change the <code>rownames</code> to <code>Symbol_TENx</code> in the beginning of the tutorial, the following code still could be run in <code>moduleHeatmap</code> to display the gene symbol even if the <code>rownames</code> were set to the original Ensembl IDs:</p>\n<div class=\"sourceCode\" id=\"cb61\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"fu\"><a href=\"../../reference/moduleHeatmap.html\">moduleHeatmap</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, featureModule <span class=\"op\">=</span> <span class=\"fl\">27</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span>, displayName <span class=\"op\">=</span> <span class=\"st\">\"Symbol_TENx\"</span><span class=\"op\">)</span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/module_heatmap_with_display-1.png\" width=\"700\"></p>\n</div>\n</div>\n<div id=\"session-information\" class=\"section level1\">\n<h1 class=\"hasAnchor\">\n<a href=\"#session-information\" class=\"anchor\"></a>Session information</h1>\n<details><p><summary>sessionInfo()</summary></p>\n<pre><code>## R version 4.0.4 (2021-02-15)\n## Platform: x86_64-apple-darwin17.0 (64-bit)\n## Running under: macOS Big Sur 10.16\n## \n## Matrix products: default\n## BLAS:   /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRblas.dylib\n## LAPACK: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRlapack.dylib\n## \n## locale:\n## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8\n## \n## attached base packages:\n## [1] parallel  stats4    stats     graphics  grDevices utils     datasets \n## [8] methods   base     \n## \n## other attached packages:\n##  [1] scater_1.18.6               kableExtra_1.3.4           \n##  [3] knitr_1.31                  ggplot2_3.3.5              \n##  [5] celda_1.12.0                singleCellTK_2.5.1         \n##  [7] TENxPBMCData_1.8.0          HDF5Array_1.18.1           \n##  [9] rhdf5_2.34.0                DelayedArray_0.16.2        \n## [11] Matrix_1.3-2                SingleCellExperiment_1.12.0\n## [13] SummarizedExperiment_1.20.0 Biobase_2.50.0             \n## [15] GenomicRanges_1.42.0        GenomeInfoDb_1.26.4        \n## [17] IRanges_2.24.1              S4Vectors_0.28.1           \n## [19] BiocGenerics_0.36.0         MatrixGenerics_1.2.1       \n## [21] matrixStats_0.58.0         \n## \n## loaded via a namespace (and not attached):\n##   [1] utf8_1.2.1                    reticulate_1.18              \n##   [3] R.utils_2.10.1                tidyselect_1.1.0             \n##   [5] RSQLite_2.2.4                 AnnotationDbi_1.52.0         \n##   [7] grid_4.0.4                    combinat_0.0-8               \n##   [9] BiocParallel_1.24.1           Rtsne_0.15                   \n##  [11] scDblFinder_1.4.0             DropletUtils_1.10.3          \n##  [13] munsell_0.5.0                 codetools_0.2-18             \n##  [15] ragg_1.1.3                    statmod_1.4.35               \n##  [17] scran_1.18.5                  xgboost_1.3.2.1              \n##  [19] withr_2.4.1                   colorspace_2.0-0             \n##  [21] highr_0.8                     rstudioapi_0.13              \n##  [23] assertive.base_0.0-9          labeling_0.4.2               \n##  [25] GenomeInfoDbData_1.2.4        GSVAdata_1.26.0              \n##  [27] bit64_4.0.5                   farver_2.1.0                 \n##  [29] rprojroot_2.0.2               vctrs_0.3.6                  \n##  [31] generics_0.1.0                xfun_0.22                    \n##  [33] BiocFileCache_1.14.0          fishpond_1.6.0               \n##  [35] R6_2.5.0                      doParallel_1.0.16            \n##  [37] ggbeeswarm_0.6.0              clue_0.3-58                  \n##  [39] rsvd_1.0.3                    RcppEigen_0.3.3.9.1          \n##  [41] locfit_1.5-9.4                bitops_1.0-6                 \n##  [43] rhdf5filters_1.2.0            cachem_1.0.4                 \n##  [45] gridGraphics_0.5-1            assertthat_0.2.1             \n##  [47] promises_1.2.0.1              scales_1.1.1                 \n##  [49] beeswarm_0.3.1                gtable_0.3.0                 \n##  [51] beachmat_2.6.4                Cairo_1.5-12.2               \n##  [53] rlang_0.4.10                  systemfonts_1.0.1            \n##  [55] GlobalOptions_0.1.2           BiocManager_1.30.10          \n##  [57] yaml_2.2.1                    reshape2_1.4.4               \n##  [59] httpuv_1.5.5                  tools_4.0.4                  \n##  [61] ellipsis_0.3.1                jquerylib_0.1.3              \n##  [63] RColorBrewer_1.1-2            Rcpp_1.0.6                   \n##  [65] plyr_1.8.6                    sparseMatrixStats_1.2.1      \n##  [67] zlibbioc_1.36.0               purrr_0.3.4                  \n##  [69] RCurl_1.98-1.2                dbscan_1.1-6                 \n##  [71] GetoptLong_1.0.5              viridis_0.5.1                \n##  [73] cowplot_1.1.1                 cluster_2.1.0                \n##  [75] ggrepel_0.9.1                 fs_1.5.0                     \n##  [77] magrittr_2.0.1                data.table_1.14.0            \n##  [79] RSpectra_0.16-0               magick_2.7.0                 \n##  [81] circlize_0.4.12               mime_0.10                    \n##  [83] evaluate_0.14                 xtable_1.8-4                 \n##  [85] gridExtra_2.3                 shape_1.4.5                  \n##  [87] compiler_4.0.4                tibble_3.1.0                 \n##  [89] crayon_1.4.1                  R.oo_1.24.0                  \n##  [91] htmltools_0.5.1.1             later_1.1.0.1                \n##  [93] MCMCprecision_0.4.0           DBI_1.1.1                    \n##  [95] ExperimentHub_1.16.0          assertive.files_0.0-2        \n##  [97] dbplyr_2.1.0                  ComplexHeatmap_2.6.2         \n##  [99] rappdirs_0.3.3                assertive.numbers_0.0-2      \n## [101] assertive.types_0.0-3         R.methodsS3_1.8.1            \n## [103] igraph_1.2.6                  pkgconfig_2.0.3              \n## [105] pkgdown_1.6.1                 scuttle_1.0.4                \n## [107] xml2_1.3.2                    foreach_1.5.1                \n## [109] svglite_2.0.0                 vipor_0.4.5                  \n## [111] bslib_0.2.4                   dqrng_0.2.1                  \n## [113] webshot_0.5.2                 XVector_0.30.0               \n## [115] rvest_1.0.0                   stringr_1.4.0                \n## [117] digest_0.6.27                 rmarkdown_2.7                \n## [119] enrichR_3.0                   uwot_0.1.10                  \n## [121] edgeR_3.32.1                  DelayedMatrixStats_1.12.3    \n## [123] curl_4.3                      shiny_1.6.0                  \n## [125] gtools_3.8.2                  rjson_0.2.20                 \n## [127] lifecycle_1.0.0               jsonlite_1.7.2               \n## [129] Rhdf5lib_1.12.1               BiocNeighbors_1.8.2          \n## [131] desc_1.3.0                    viridisLite_0.3.0            \n## [133] limma_3.46.0                  fansi_0.4.2                  \n## [135] pillar_1.5.1                  lattice_0.20-41              \n## [137] fastmap_1.1.0                 httr_1.4.2                   \n## [139] interactiveDisplayBase_1.28.0 glue_1.4.2                   \n## [141] FNN_1.1.3                     png_0.1-7                    \n## [143] iterators_1.0.13              multipanelfigure_2.1.2       \n## [145] bluster_1.0.0                 BiocVersion_3.12.0           \n## [147] bit_4.0.4                     assertive.properties_0.0-4   \n## [149] stringi_1.5.3                 sass_0.3.1                   \n## [151] blob_1.2.1                    textshaping_0.3.5            \n## [153] BiocSingular_1.6.0            AnnotationHub_2.22.0         \n## [155] memoise_2.0.0                 dplyr_1.0.5                  \n## [157] irlba_2.3.3</code></pre>\n</details>\n</div>\n  </div>\n\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n\n        <nav id=\"toc\" data-toggle=\"toc\"><h2 data-toc-skip>Contents</h2>\n    </nav>\n</div>\n\n</div>\n\n\n\n      <footer><div class=\"copyright\">\n  <p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p>Site built with <a href=\"https://pkgdown.r-lib.org/\">pkgdown</a> 1.6.1.</p>\n</div>\n\n      </footer>\n</div>\n\n  \n\n\n  </body>\n</html>\n"
  },
  {
    "path": "docs/articles/articles/celda_pbmc3k_files/accessible-code-block-0.0.1/empty-anchor.js",
    "content": "// Hide empty <a> tag within highlighted CodeBlock for screen reader accessibility (see https://github.com/jgm/pandoc/issues/6352#issuecomment-626106786) -->\n// v0.0.1\n// Written by JooYoung Seo (jooyoung@psu.edu) and Atsushi Yasumoto on June 1st, 2020.\n\ndocument.addEventListener('DOMContentLoaded', function() {\n  const codeList = document.getElementsByClassName(\"sourceCode\");\n  for (var i = 0; i < codeList.length; i++) {\n    var linkList = codeList[i].getElementsByTagName('a');\n    for (var j = 0; j < linkList.length; j++) {\n      if (linkList[j].innerHTML === \"\") {\n        linkList[j].setAttribute('aria-hidden', 'true');\n      }\n    }\n  }\n});\n"
  },
  {
    "path": "docs/articles/articles/celda_pbmc3k_files/header-attrs-2.7/header-attrs.js",
    "content": "// Pandoc 2.9 adds attributes on both header and div. We remove the former (to\n// be compatible with the behavior of Pandoc < 2.8).\ndocument.addEventListener('DOMContentLoaded', function(e) {\n  var hs = document.querySelectorAll(\"div.section[class*='level'] > :first-child\");\n  var i, h, a;\n  for (i = 0; i < hs.length; i++) {\n    h = hs[i];\n    if (!/^h[1-6]$/i.test(h.tagName)) continue;  // it should be a header h1-h6\n    a = h.attributes;\n    while (a.length > 0) h.removeAttribute(a[0].name);\n  }\n});\n"
  },
  {
    "path": "docs/articles/articles/celda_pbmc3k_files/kePrint-0.0.1/kePrint.js",
    "content": "$(document).ready(function(){\n    if (typeof $('[data-toggle=\"tooltip\"]').tooltip === 'function') {\n        $('[data-toggle=\"tooltip\"]').tooltip();\n    }\n    if ($('[data-toggle=\"popover\"]').popover === 'function') {\n        $('[data-toggle=\"popover\"]').popover();\n    }\n});\n"
  },
  {
    "path": "docs/articles/articles/celda_pbmc3k_files/lightable-0.0.1/lightable.css",
    "content": "/*!\n * lightable v0.0.1\n * Copyright 2020 Hao Zhu\n * Licensed under MIT (https://github.com/haozhu233/kableExtra/blob/master/LICENSE)\n */\n\n.lightable-minimal {\n  border-collapse: separate;\n  border-spacing: 16px 1px;\n  width: 100%;\n  margin-bottom: 10px;\n}\n\n.lightable-minimal td {\n  margin-left: 5px;\n  margin-right: 5px;\n}\n\n.lightable-minimal th {\n  margin-left: 5px;\n  margin-right: 5px;\n}\n\n.lightable-minimal thead tr:last-child th {\n  border-bottom: 2px solid #00000050;\n  empty-cells: hide;\n\n}\n\n.lightable-minimal tbody tr:first-child td {\n  padding-top: 0.5em;\n}\n\n.lightable-minimal.lightable-hover tbody tr:hover {\n  background-color: #f5f5f5;\n}\n\n.lightable-minimal.lightable-striped tbody tr:nth-child(even) {\n  background-color: #f5f5f5;\n}\n\n.lightable-classic {\n  border-top: 0.16em solid #111111;\n  border-bottom: 0.16em solid #111111;\n  width: 100%;\n  margin-bottom: 10px;\n  margin: 10px 5px;\n}\n\n.lightable-classic tfoot tr td {\n  border: 0;\n}\n\n.lightable-classic tfoot tr:first-child td {\n  border-top: 0.14em solid #111111;\n}\n\n.lightable-classic caption {\n  color: #222222;\n}\n\n.lightable-classic td {\n  padding-left: 5px;\n  padding-right: 5px;\n  color: #222222;\n}\n\n.lightable-classic th {\n  padding-left: 5px;\n  padding-right: 5px;\n  font-weight: normal;\n  color: #222222;\n}\n\n.lightable-classic thead tr:last-child th {\n  border-bottom: 0.10em solid #111111;\n}\n\n.lightable-classic.lightable-hover tbody tr:hover {\n  background-color: #F9EEC1;\n}\n\n.lightable-classic.lightable-striped tbody tr:nth-child(even) {\n  background-color: #f5f5f5;\n}\n\n.lightable-classic-2 {\n  border-top: 3px double #111111;\n  border-bottom: 3px double #111111;\n  width: 100%;\n  margin-bottom: 10px;\n}\n\n.lightable-classic-2 tfoot tr td {\n  border: 0;\n}\n\n.lightable-classic-2 tfoot tr:first-child td {\n  border-top: 3px double #111111;\n}\n\n.lightable-classic-2 caption {\n  color: #222222;\n}\n\n.lightable-classic-2 td {\n  padding-left: 5px;\n  padding-right: 5px;\n  color: #222222;\n}\n\n.lightable-classic-2 th {\n  padding-left: 5px;\n  padding-right: 5px;\n  font-weight: normal;\n  color: #222222;\n}\n\n.lightable-classic-2 tbody tr:last-child td {\n  border-bottom: 3px double #111111;\n}\n\n.lightable-classic-2 thead tr:last-child th {\n  border-bottom: 1px solid #111111;\n}\n\n.lightable-classic-2.lightable-hover tbody tr:hover {\n  background-color: #F9EEC1;\n}\n\n.lightable-classic-2.lightable-striped tbody tr:nth-child(even) {\n  background-color: #f5f5f5;\n}\n\n.lightable-material {\n  min-width: 100%;\n  white-space: nowrap;\n  table-layout: fixed;\n  font-family: Roboto, sans-serif;\n  border: 1px solid #EEE;\n  border-collapse: collapse;\n  margin-bottom: 10px;\n}\n\n.lightable-material tfoot tr td {\n  border: 0;\n}\n\n.lightable-material tfoot tr:first-child td {\n  border-top: 1px solid #EEE;\n}\n\n.lightable-material th {\n  height: 56px;\n  padding-left: 16px;\n  padding-right: 16px;\n}\n\n.lightable-material td {\n  height: 52px;\n  padding-left: 16px;\n  padding-right: 16px;\n  border-top: 1px solid #eeeeee;\n}\n\n.lightable-material.lightable-hover tbody tr:hover {\n  background-color: #f5f5f5;\n}\n\n.lightable-material.lightable-striped tbody tr:nth-child(even) {\n  background-color: #f5f5f5;\n}\n\n.lightable-material.lightable-striped tbody td {\n  border: 0;\n}\n\n.lightable-material.lightable-striped thead tr:last-child th {\n  border-bottom: 1px solid #ddd;\n}\n\n.lightable-material-dark {\n  min-width: 100%;\n  white-space: nowrap;\n  table-layout: fixed;\n  font-family: Roboto, sans-serif;\n  border: 1px solid #FFFFFF12;\n  border-collapse: collapse;\n  margin-bottom: 10px;\n  background-color: #363640;\n}\n\n.lightable-material-dark tfoot tr td {\n  border: 0;\n}\n\n.lightable-material-dark tfoot tr:first-child td {\n  border-top: 1px solid #FFFFFF12;\n}\n\n.lightable-material-dark th {\n  height: 56px;\n  padding-left: 16px;\n  padding-right: 16px;\n  color: #FFFFFF60;\n}\n\n.lightable-material-dark td {\n  height: 52px;\n  padding-left: 16px;\n  padding-right: 16px;\n  color: #FFFFFF;\n  border-top: 1px solid #FFFFFF12;\n}\n\n.lightable-material-dark.lightable-hover tbody tr:hover {\n  background-color: #FFFFFF12;\n}\n\n.lightable-material-dark.lightable-striped tbody tr:nth-child(even) {\n  background-color: #FFFFFF12;\n}\n\n.lightable-material-dark.lightable-striped tbody td {\n  border: 0;\n}\n\n.lightable-material-dark.lightable-striped thead tr:last-child th {\n  border-bottom: 1px solid #FFFFFF12;\n}\n\n.lightable-paper {\n  width: 100%;\n  margin-bottom: 10px;\n  color: #444;\n}\n\n.lightable-paper tfoot tr td {\n  border: 0;\n}\n\n.lightable-paper tfoot tr:first-child td {\n  border-top: 1px solid #00000020;\n}\n\n.lightable-paper thead tr:last-child th {\n  color: #666;\n  vertical-align: bottom;\n  border-bottom: 1px solid #00000020;\n  line-height: 1.15em;\n  padding: 10px 5px;\n}\n\n.lightable-paper td {\n  vertical-align: middle;\n  border-bottom: 1px solid #00000010;\n  line-height: 1.15em;\n  padding: 7px 5px;\n}\n\n.lightable-paper.lightable-hover tbody tr:hover {\n  background-color: #F9EEC1;\n}\n\n.lightable-paper.lightable-striped tbody tr:nth-child(even) {\n  background-color: #00000008;\n}\n\n.lightable-paper.lightable-striped tbody td {\n  border: 0;\n}\n\n"
  },
  {
    "path": "docs/articles/articles/decontX_pbmc4k.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<meta charset=\"utf-8\">\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Decontamination of ambient RNA in single-cell genomic data with DecontX • celda</title>\n<!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\">\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../../bootstrap-toc.css\">\n<script src=\"../../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\">\n<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\">\n<!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../../pkgdown.css\" rel=\"stylesheet\">\n<script src=\"../../pkgdown.js\"></script><meta property=\"og:title\" content=\"Decontamination of ambient RNA in single-cell genomic data with DecontX\">\n<meta property=\"og:description\" content=\"celda\">\n<!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]-->\n</head>\n<body data-spy=\"scroll\" data-target=\"#toc\">\n    <div class=\"container template-article\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"Released version\">1.12.0</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\">\n<li>\n  <a href=\"https://www.camplab.net/celda\">\n    <span class=\"fas fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\">\n<li>\n      <a href=\"../../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul>\n</li>\n<li>\n  <a href=\"../../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\">\n    <span class=\"fas fa-github\"></span>\n     \n  </a>\n</li>\n      </ul>\n<ul class=\"nav navbar-nav navbar-right\">\n<li>\n  <a href=\"https://github.com/campbio/celda/\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul>\n</div>\n<!--/.nav-collapse -->\n  </div>\n<!--/.container -->\n</div>\n<!--/.navbar -->\n\n      \n\n      </header><script src=\"decontX_pbmc4k_files/header-attrs-2.7/header-attrs.js\"></script><script src=\"decontX_pbmc4k_files/accessible-code-block-0.0.1/empty-anchor.js\"></script><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header toc-ignore\">\n      <h1 data-toc-skip>Decontamination of ambient RNA in single-cell genomic data with DecontX</h1>\n                        <h4 class=\"author\">Shiyi (Iris) Yang</h4>\n            <address class=\"author_afil\">\n      Boston University School of Medicine<br><h4 class=\"author\">Zhe Wang</h4>\n            <address class=\"author_afil\">\n      Boston University School of Medicine<br><h4 class=\"author\">Yuan Yin</h4>\n            <address class=\"author_afil\">\n      Boston University School of Medicine<br><h4 class=\"author\">Joshua Campbell</h4>\n            <address class=\"author_afil\">\n      Boston University School of Medicine<br><a class=\"author_email\" href=\"mailto:#\"></a><a href=\"mailto:camp@bu.edu\" class=\"email\">camp@bu.edu</a>\n      </address>\n                  \n            <h4 class=\"date\">2022-04-30</h4>\n      \n      <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/master/vignettes/articles/decontX_pbmc4k.Rmd\"><code>vignettes/articles/decontX_pbmc4k.Rmd</code></a></small>\n      <div class=\"hidden name\"><code>decontX_pbmc4k.Rmd</code></div>\n\n    </address>\n</address>\n</address>\n</div>\n\n    \n    \n<div id=\"introduction\" class=\"section level1\">\n<h1 class=\"hasAnchor\">\n<a href=\"#introduction\" class=\"anchor\"></a>Introduction</h1>\n<p>Droplet-based microfluidic devices have become widely used to perform single-cell RNA sequencing (scRNA-seq). However, ambient RNA present in the cell suspension can be aberrantly counted along with a cell’s native mRNA and result in cross-contamination of transcripts between different cell populations. DecontX is a Bayesian method to estimate and remove contamination in individual cells. DecontX assumes the observed expression of a cell is a mixture of counts from two multinomial distributions: (1) a distribution of native transcript counts from the cell’s actual population and (2) a distribution of contaminating transcript counts from all other cell populations captured in the assay. Overall, computational decontamination of single cell counts can aid in downstream clustering and visualization.</p>\n<p>The package can be loaded using the <code>library</code> command.</p>\n<div class=\"sourceCode\" id=\"cb1\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\">library</a></span><span class=\"op\">(</span><span class=\"va\">celda</span><span class=\"op\">)</span></code></pre></div>\n</div>\n<div id=\"importing-data\" class=\"section level1\">\n<h1 class=\"hasAnchor\">\n<a href=\"#importing-data\" class=\"anchor\"></a>Importing data</h1>\n<p>DecontX can take either a <a href=\"https://bioconductor.org/packages/release/bioc/html/SingleCellExperiment.html\">SingleCellExperiment</a> object or a counts matrix as input. <code>decontX</code> will attempt to convert any input matrix to class <code>dgCMatrix</code> from package <a href=\"https://cran.r-project.org/web/packages/Matrix/index.html\">Matrix</a> before starting the analysis.</p>\n<p>To import datasets directly into an SCE object, the <a href=\"https://bioconductor.org/packages/release/bioc/html/singleCellTK.html\">singleCellTK</a> package has several importing functions for different preprocessing tools including CellRanger, STARsolo, BUStools, Optimus, DropEST, SEQC, and Alevin/Salmon. For example, the following code can be used as a template to read in the filtered and raw matrices for multiple samples processed with CellRanger:</p>\n<div class=\"sourceCode\" id=\"cb2\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://www.camplab.net/sctk/\">singleCellTK</a></span><span class=\"op\">)</span>\n<span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/singleCellTK/man/importCellRanger.html\">importCellRanger</a></span><span class=\"op\">(</span>sampleDirs <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"path/to/sample1/\"</span>, <span class=\"st\">\"path/to/sample2/\"</span><span class=\"op\">)</span><span class=\"op\">)</span></code></pre></div>\n<p>Within each sample directory, there should be subfolders called <code>\"outs/filtered_feature_bc_matrix/\"</code> or <code>\"outs/raw_feature_bc_matrix/\"</code> with files called <code>matrix.mtx.gz</code>, <code>features.tsv.gz</code> and <code>barcodes.tsv.gz</code>. If these files are in different subdirectories, the <code>importCellRangerV3Sample</code> function can be used to import data from a different directory instead.</p>\n<p>Optionally, the “raw” or “droplet” matrix can also be easily imported by setting the <code>dataType</code> argument to “raw”:</p>\n<div class=\"sourceCode\" id=\"cb3\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"va\">sce.raw</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/singleCellTK/man/importCellRanger.html\">importCellRanger</a></span><span class=\"op\">(</span>sampleDirs <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"path/to/sample1/\"</span>, <span class=\"st\">\"path/to/sample2/\"</span><span class=\"op\">)</span>, dataType <span class=\"op\">=</span> <span class=\"st\">\"raw\"</span><span class=\"op\">)</span></code></pre></div>\n<p>The raw matrix can be passed to the <code>background</code> parameter in <code>decontX</code> as described below. If using Seurat, go to the <a href=\"#seurat\">Working with Seurat</a> section for details on how to convert between SCE and Seurat objects.</p>\n</div>\n<div id=\"load-pbmc4k-data-from-10x\" class=\"section level1\">\n<h1 class=\"hasAnchor\">\n<a href=\"#load-pbmc4k-data-from-10x\" class=\"anchor\"></a>Load PBMC4k data from 10X</h1>\n<p>We will utilize the 10X PBMC 4K dataset as an example in this vignette. This data can be easily retrieved from the package <a href=\"http://bioconductor.org/packages/release/data/experiment/html/TENxPBMCData.html\">TENxPBMCData</a>. Make sure the the column names are set before running decontX.</p>\n<div class=\"sourceCode\" id=\"cb4\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"co\"># Load PBMC data</span>\n<span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\">library</a></span><span class=\"op\">(</span><span class=\"va\">TENxPBMCData</span><span class=\"op\">)</span>\n<span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/TENxPBMCData/man/TENxPBMCData.html\">TENxPBMCData</a></span><span class=\"op\">(</span><span class=\"st\">\"pbmc4k\"</span><span class=\"op\">)</span>\n<span class=\"fu\"><a href=\"https://rdrr.io/r/base/colnames.html\">colnames</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/paste.html\">paste</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">$</span><span class=\"va\">Sample</span>, <span class=\"va\">sce</span><span class=\"op\">$</span><span class=\"va\">Barcode</span>, sep <span class=\"op\">=</span> <span class=\"st\">\"_\"</span><span class=\"op\">)</span>\n<span class=\"fu\"><a href=\"https://rdrr.io/r/base/colnames.html\">rownames</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">rowData</span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span><span class=\"op\">$</span><span class=\"va\">Symbol_TENx</span>\n<span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/assays.html\">counts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">as</span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/assays.html\">counts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span>, <span class=\"st\">\"dgCMatrix\"</span><span class=\"op\">)</span></code></pre></div>\n</div>\n<div id=\"running-decontx\" class=\"section level1\">\n<h1 class=\"hasAnchor\">\n<a href=\"#running-decontx\" class=\"anchor\"></a>Running decontX</h1>\n<p>A SingleCellExperiment (SCE) object or a sparse matrix containing the counts for filtered cells can be passed to decontX via the <code>x</code> parameter. The matrix to use in an SCE object can be specified with the <code>assayName</code> parameter, which is set to <code>\"counts\"</code> by default. There are two major ways to run decontX: with and without the raw/droplet matrix containing empty droplets. Here is an example of running decontX without supplying the background:</p>\n<div class=\"sourceCode\" id=\"cb5\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../../reference/decontX.html\">decontX</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span></code></pre></div>\n<p>In this scenario, <code>decontX</code> will estimate the contamination distribution for each cell cluster based on the profiles of the other cell clusters in the filtered dataset. The estimated contamination results can be found in the <code>colData(sce)$decontX_contamination</code> and the decontaminated counts can be accessed with <code><a href=\"../../reference/decontXcounts.html\">decontXcounts(sce)</a></code>. <code>decontX</code> will perform heuristic clustering to quickly define major cell clusters. However if you have your own cell cluster labels, they can be specified with the <code>z</code> parameter. These results will be used throughout the rest of the vignette.</p>\n<p>The raw/droplet matrix can be used to empirically estimate the distribution of ambient RNA, which is especially useful when cells that contributed to the ambient RNA are not accurately represented in the filtered count matrix containing the cells. For example, cells that were removed via flow cytometry or that were more sensitive to lysis during dissociation may have contributed to the ambient RNA but were not measured in the filtered/cell matrix. The raw/droplet matrix can be input as an SCE object or a sparse matrix using the <code>background</code> parameter:</p>\n<div class=\"sourceCode\" id=\"cb6\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../../reference/decontX.html\">decontX</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, background <span class=\"op\">=</span> <span class=\"va\">sce.raw</span><span class=\"op\">)</span></code></pre></div>\n<p>Only empty droplets in the background matrix should be used to estimate the ambient RNA. If any cell ids (i.e. <code>colnames</code>) in the raw/droplet matrix supplied to the <code>background</code> parameter are also found in the filtered counts matrix (<code>x</code>), decontX will automatically remove them from the raw matrix. However, if the cell ids are not available for the input matrices, decontX will treat the entire <code>background</code> input as empty droplets. All of the outputs are the same as when running decontX without setting the <code>background</code> parameter.</p>\n<blockquote>\n<p>Note: If the input object is just a matrix and not an SCE object, make sure to save the output into a variable with a different name (e.g. <code>result &lt;- decontX(mat)</code>). The result object will be a list with contamination in <code>result$contamination</code> and the decontaminated counts in <code>result$decontXcounts</code>.</p>\n</blockquote>\n</div>\n<div id=\"plotting-decontx-results\" class=\"section level1\">\n<h1 class=\"hasAnchor\">\n<a href=\"#plotting-decontx-results\" class=\"anchor\"></a>Plotting DecontX results</h1>\n<div id=\"cluster-labels-on-umap\" class=\"section level2\">\n<h2 class=\"hasAnchor\">\n<a href=\"#cluster-labels-on-umap\" class=\"anchor\"></a>Cluster labels on UMAP</h2>\n<p>DecontX creates a UMAP which we can use to plot the cluster labels automatically identified in the analysis. Note that the clustering approach used here is designed to find “broad” cell types rather than individual cell subpopulations within a cell type.</p>\n<div class=\"sourceCode\" id=\"cb7\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"va\">umap</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/reducedDims.html\">reducedDim</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, <span class=\"st\">\"decontX_UMAP\"</span><span class=\"op\">)</span>\n<span class=\"fu\"><a href=\"../../reference/plotDimReduceCluster.html\">plotDimReduceCluster</a></span><span class=\"op\">(</span>x <span class=\"op\">=</span> <span class=\"va\">sce</span><span class=\"op\">$</span><span class=\"va\">decontX_clusters</span>,\n    dim1 <span class=\"op\">=</span> <span class=\"va\">umap</span><span class=\"op\">[</span>, <span class=\"fl\">1</span><span class=\"op\">]</span>, dim2 <span class=\"op\">=</span> <span class=\"va\">umap</span><span class=\"op\">[</span>, <span class=\"fl\">2</span><span class=\"op\">]</span><span class=\"op\">)</span></code></pre></div>\n<p><img src=\"decontX_pbmc4k_files/figure-html/UMAP_Clusters-1.png\" width=\"700\"></p>\n</div>\n<div id=\"contamination-on-umap\" class=\"section level2\">\n<h2 class=\"hasAnchor\">\n<a href=\"#contamination-on-umap\" class=\"anchor\"></a>Contamination on UMAP</h2>\n<p>The percentage of contamination in each cell can be plotting on the UMAP to visualize what what clusters may have higher levels of ambient RNA.</p>\n<div class=\"sourceCode\" id=\"cb8\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"fu\"><a href=\"../../reference/plotDecontXContamination.html\">plotDecontXContamination</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span></code></pre></div>\n<p><img src=\"decontX_pbmc4k_files/figure-html/plot_decon-1.png\" width=\"700\"></p>\n</div>\n<div id=\"expression-of-markers-on-umap\" class=\"section level2\">\n<h2 class=\"hasAnchor\">\n<a href=\"#expression-of-markers-on-umap\" class=\"anchor\"></a>Expression of markers on UMAP</h2>\n<p>Known marker genes can also be plotted on the UMAP to identify the cell types for each cluster. We will use CD3D and CD3E for T-cells, LYZ, S100A8, and S100A9 for monocytes, CD79A, CD79B, and MS4A1 for B-cells, GNLY for NK-cells, and PPBP for megakaryocytes.</p>\n<div class=\"sourceCode\" id=\"cb9\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"http://bioconductor.org/packages/scater/\">scater</a></span><span class=\"op\">)</span>\n<span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/scuttle/man/logNormCounts.html\">logNormCounts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span>\n<span class=\"fu\"><a href=\"../../reference/plotDimReduceFeature.html\">plotDimReduceFeature</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/matrix.html\">as.matrix</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/assays.html\">logcounts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span><span class=\"op\">)</span>,\n    dim1 <span class=\"op\">=</span> <span class=\"va\">umap</span><span class=\"op\">[</span>, <span class=\"fl\">1</span><span class=\"op\">]</span>,\n    dim2 <span class=\"op\">=</span> <span class=\"va\">umap</span><span class=\"op\">[</span>, <span class=\"fl\">2</span><span class=\"op\">]</span>,\n    features <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"CD3D\"</span>, <span class=\"st\">\"CD3E\"</span>, <span class=\"st\">\"GNLY\"</span>,\n        <span class=\"st\">\"LYZ\"</span>, <span class=\"st\">\"S100A8\"</span>, <span class=\"st\">\"S100A9\"</span>,\n        <span class=\"st\">\"CD79A\"</span>, <span class=\"st\">\"CD79B\"</span>, <span class=\"st\">\"MS4A1\"</span><span class=\"op\">)</span>,\n    exactMatch <span class=\"op\">=</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span></code></pre></div>\n<p><img src=\"decontX_pbmc4k_files/figure-html/plot_feature-1.png\" width=\"700\"></p>\n</div>\n<div id=\"barplot-of-markers-detected-in-cell-clusters\" class=\"section level2\">\n<h2 class=\"hasAnchor\">\n<a href=\"#barplot-of-markers-detected-in-cell-clusters\" class=\"anchor\"></a>Barplot of markers detected in cell clusters</h2>\n<p>The percetage of cells within a cluster that have detectable expression of marker genes can be displayed in a barplot. Markers for cell types need to be supplied in a named list. First, the detection of marker genes in the original <code>counts</code> assay is shown:</p>\n<div class=\"sourceCode\" id=\"cb10\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"va\">markers</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\">list</a></span><span class=\"op\">(</span>Tcell_Markers <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"CD3E\"</span>, <span class=\"st\">\"CD3D\"</span><span class=\"op\">)</span>,\n    Bcell_Markers <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"CD79A\"</span>, <span class=\"st\">\"CD79B\"</span>, <span class=\"st\">\"MS4A1\"</span><span class=\"op\">)</span>,\n    Monocyte_Markers <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"S100A8\"</span>, <span class=\"st\">\"S100A9\"</span>, <span class=\"st\">\"LYZ\"</span><span class=\"op\">)</span>,\n    NKcell_Markers <span class=\"op\">=</span> <span class=\"st\">\"GNLY\"</span><span class=\"op\">)</span>\n<span class=\"va\">cellTypeMappings</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\">list</a></span><span class=\"op\">(</span>Tcells <span class=\"op\">=</span> <span class=\"fl\">2</span>, Bcells <span class=\"op\">=</span> <span class=\"fl\">5</span>, Monocytes <span class=\"op\">=</span> <span class=\"fl\">1</span>, NKcells <span class=\"op\">=</span> <span class=\"fl\">6</span><span class=\"op\">)</span>\n<span class=\"fu\"><a href=\"../../reference/plotDecontXMarkerPercentage.html\">plotDecontXMarkerPercentage</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>,\n    markers <span class=\"op\">=</span> <span class=\"va\">markers</span>,\n    groupClusters <span class=\"op\">=</span> <span class=\"va\">cellTypeMappings</span>,\n    assayName <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span><span class=\"op\">)</span></code></pre></div>\n<p><img src=\"decontX_pbmc4k_files/figure-html/barplotCounts-1.png\" width=\"700\"></p>\n<p>We can then look to see how much decontX removed aberrant expression of marker genes in each cell type by changing the <code>assayName</code> to <code>decontXcounts</code>:</p>\n<div class=\"sourceCode\" id=\"cb11\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"fu\"><a href=\"../../reference/plotDecontXMarkerPercentage.html\">plotDecontXMarkerPercentage</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>,\n    markers <span class=\"op\">=</span> <span class=\"va\">markers</span>,\n    groupClusters <span class=\"op\">=</span> <span class=\"va\">cellTypeMappings</span>,\n    assayName <span class=\"op\">=</span> <span class=\"st\">\"decontXcounts\"</span><span class=\"op\">)</span></code></pre></div>\n<p><img src=\"decontX_pbmc4k_files/figure-html/barplotDecontCounts-1.png\" width=\"700\"></p>\n<p>Percentages of marker genes detected in other cell types were reduced or completely removed. For example, the percentage of cells that expressed Monocyte marker genes was greatly reduced in T-cells, B-cells, and NK-cells. The original counts and decontamined counts can be plotted side-by-side by listing multiple assays in the <code>assayName</code> parameter. This option is only available if the data is stored in <code>SingleCellExperiment</code> object.</p>\n<div class=\"sourceCode\" id=\"cb12\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"fu\"><a href=\"../../reference/plotDecontXMarkerPercentage.html\">plotDecontXMarkerPercentage</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>,\n    markers <span class=\"op\">=</span> <span class=\"va\">markers</span>,\n    groupClusters <span class=\"op\">=</span> <span class=\"va\">cellTypeMappings</span>,\n    assayName <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"counts\"</span>, <span class=\"st\">\"decontXcounts\"</span><span class=\"op\">)</span><span class=\"op\">)</span></code></pre></div>\n<p><img src=\"decontX_pbmc4k_files/figure-html/barplotBoth-1.png\" width=\"700\"></p>\n<p>Some helpful hints when using <code>plotDecontXMarkerPercentage</code>:</p>\n<ol style=\"list-style-type: decimal\">\n<li>Cell clusters can be renamed and re-grouped using the <code>groupCluster</code> parameter, which also needs to be a named list. If <code>groupCluster</code> is used, cell clusters not included in the list will be excluded in the barplot. For example, if we wanted to group T-cells and NK-cells together, we could set <code>cellTypeMappings &lt;- list(NK_Tcells = c(2,6), Bcells = 5, Monocytes = 1)</code>\n</li>\n<li>The level a gene that needs to be expressed to be considered detected in a cell can be adjusted using the <code>threshold</code> parameter.</li>\n<li>If you are not using a <code>SingleCellExperiment</code>, then you will need to supply the original counts matrix or the decontaminated counts matrix as the first argument to generate the barplots.</li>\n</ol>\n</div>\n<div id=\"violin-plot-to-compare-the-distributions-of-original-and-decontaminated-counts\" class=\"section level2\">\n<h2 class=\"hasAnchor\">\n<a href=\"#violin-plot-to-compare-the-distributions-of-original-and-decontaminated-counts\" class=\"anchor\"></a>Violin plot to compare the distributions of original and decontaminated counts</h2>\n<p>Another useful way to assess the amount of decontamination is to view the expression of marker genes before and after <code>decontX</code> across cell types. Here we view the monocyte markers in each cell type. The violin plot shows that the markers have been removed from T-cells, B-cells, and NK-cells, but are largely unaffected in monocytes.</p>\n<div class=\"sourceCode\" id=\"cb13\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"fu\"><a href=\"../../reference/plotDecontXMarkerExpression.html\">plotDecontXMarkerExpression</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>,\n    markers <span class=\"op\">=</span> <span class=\"va\">markers</span><span class=\"op\">[[</span><span class=\"st\">\"Monocyte_Markers\"</span><span class=\"op\">]</span><span class=\"op\">]</span>,\n    groupClusters <span class=\"op\">=</span> <span class=\"va\">cellTypeMappings</span>,\n    ncol <span class=\"op\">=</span> <span class=\"fl\">3</span><span class=\"op\">)</span></code></pre></div>\n<p><img src=\"decontX_pbmc4k_files/figure-html/plotDecontXMarkerExpression-1.png\" width=\"700\"></p>\n<p>Some helpful hints when using <code>plotDecontXMarkerExpression</code>:</p>\n<ol style=\"list-style-type: decimal\">\n<li>\n<code>groupClusters</code> works the same way as in <code>plotDecontXMarkerPercentage</code>.</li>\n<li>This function will plot each pair of markers and clusters (or cell type specified by <code>groupClusters</code>). Therefore, you may want to keep the number of markers small in each plot and call the function multiple times for different sets of marker genes.</li>\n<li>You can also plot the individual points by setting <code>plotDots = TRUE</code> and/or log transform the points on the fly by setting <code>log1p = TRUE</code>.</li>\n<li>This function can plot any assay in a <code>SingleCellExperiment</code>. Therefore you could also examine normalized expression of the original and decontaminated counts. For example:</li>\n</ol>\n<div class=\"sourceCode\" id=\"cb14\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"http://bioconductor.org/packages/scater/\">scater</a></span><span class=\"op\">)</span>\n<span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/scuttle/man/logNormCounts.html\">logNormCounts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>,\n    exprs_values <span class=\"op\">=</span> <span class=\"st\">\"decontXcounts\"</span>,\n    name <span class=\"op\">=</span> <span class=\"st\">\"decontXlogcounts\"</span><span class=\"op\">)</span>\n\n<span class=\"fu\"><a href=\"../../reference/plotDecontXMarkerExpression.html\">plotDecontXMarkerExpression</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>,\n    markers <span class=\"op\">=</span> <span class=\"va\">markers</span><span class=\"op\">[[</span><span class=\"st\">\"Monocyte_Markers\"</span><span class=\"op\">]</span><span class=\"op\">]</span>,\n    groupClusters <span class=\"op\">=</span> <span class=\"va\">cellTypeMappings</span>,\n    ncol <span class=\"op\">=</span> <span class=\"fl\">3</span>,\n    assayName <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"logcounts\"</span>, <span class=\"st\">\"decontXlogcounts\"</span><span class=\"op\">)</span><span class=\"op\">)</span></code></pre></div>\n<p><img src=\"decontX_pbmc4k_files/figure-html/plot_norm_counts-1.png\" width=\"700\"></p>\n</div>\n</div>\n<div id=\"other-important-notes\" class=\"section level1\">\n<h1 class=\"hasAnchor\">\n<a href=\"#other-important-notes\" class=\"anchor\"></a>Other important notes</h1>\n<div id=\"choosing-appropriate-cell-clusters\" class=\"section level2\">\n<h2 class=\"hasAnchor\">\n<a href=\"#choosing-appropriate-cell-clusters\" class=\"anchor\"></a>Choosing appropriate cell clusters</h2>\n<p>The ability of DecontX to accurately identify contamination is dependent on the cell cluster labels. DecontX assumes that contamination for a cell cluster comes from combination of counts from all other clusters. The default clustering approach used by DecontX tends to select fewer clusters that represent broader cell types. For example, all T-cells tend to be clustered together rather than splitting naive and cytotoxic T-cells into separate clusters. Custom cell type labels can be suppled via the <code>z</code> parameter if some cells are not being clustered appropriately by the default method.</p>\n</div>\n<div id=\"adjusting-the-priors-to-influence-contamination-estimates\" class=\"section level2\">\n<h2 class=\"hasAnchor\">\n<a href=\"#adjusting-the-priors-to-influence-contamination-estimates\" class=\"anchor\"></a>Adjusting the priors to influence contamination estimates</h2>\n<p>There are ways to force <code>decontX</code> to estimate more or less contamination across a dataset by manipulating the priors. The <code>delta</code> parameter is a numeric vector of length two. It is the concentration parameter for the Dirichlet distribution which serves as the prior for the proportions of native and contamination counts in each cell. The first element is the prior for the proportion of native counts while the second element is the prior for the proportion of contamination counts. These essentially act as pseudocounts for the native and contamination in each cell. If <code>estimateDelta = TRUE</code>, <code>delta</code> is only used to produce a random sample of proportions for an initial value of contamination in each cell. Then <code>delta</code> is updated in each iteration. If <code>estimateDelta = FALSE</code>, then <code>delta</code> is fixed with these values for the entire inference procedure. Fixing <code>delta</code> and setting a high number in the second element will force <code>decontX</code> to be more aggressive and estimate higher levels of contamination in each cell at the expense of potentially removing native expression. For example, in the previous PBMC example, we can see what the estimated <code>delta</code> was by looking in the estimates:</p>\n<div class=\"sourceCode\" id=\"cb15\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"fu\">metadata</span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span><span class=\"op\">$</span><span class=\"va\">decontX</span><span class=\"op\">$</span><span class=\"va\">estimates</span><span class=\"op\">$</span><span class=\"va\">all_cells</span><span class=\"op\">$</span><span class=\"va\">delta</span></code></pre></div>\n<pre><code>## [1] 9.287164 1.038217</code></pre>\n<p>Setting a higher value in the second element of delta and <code>estimateDelta = FALSE</code> will force <code>decontX</code> to estimate higher levels of contamination per cell:</p>\n<div class=\"sourceCode\" id=\"cb17\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"va\">sce.delta</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../../reference/decontX.html\">decontX</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, delta <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\">c</a></span><span class=\"op\">(</span><span class=\"fl\">9</span>, <span class=\"fl\">20</span><span class=\"op\">)</span>, estimateDelta <span class=\"op\">=</span> <span class=\"cn\">FALSE</span><span class=\"op\">)</span>\n\n<span class=\"fu\"><a href=\"https://rdrr.io/r/graphics/plot.default.html\">plot</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">$</span><span class=\"va\">decontX_contamination</span>, <span class=\"va\">sce.delta</span><span class=\"op\">$</span><span class=\"va\">decontX_contamination</span>,\n     xlab <span class=\"op\">=</span> <span class=\"st\">\"DecontX estimated priors\"</span>,\n     ylab <span class=\"op\">=</span> <span class=\"st\">\"Setting priors to estimate higher contamination\"</span><span class=\"op\">)</span>\n<span class=\"fu\"><a href=\"https://rdrr.io/r/graphics/abline.html\">abline</a></span><span class=\"op\">(</span><span class=\"fl\">0</span>, <span class=\"fl\">1</span>, col <span class=\"op\">=</span> <span class=\"st\">\"red\"</span>, lwd <span class=\"op\">=</span> <span class=\"fl\">2</span><span class=\"op\">)</span></code></pre></div>\n<p><img src=\"decontX_pbmc4k_files/figure-html/newDecontX-1.png\" width=\"700\"></p>\n</div>\n<div id=\"seurat\" class=\"section level2\">\n<h2 class=\"hasAnchor\">\n<a href=\"#seurat\" class=\"anchor\"></a>Working with Seurat</h2>\n<p>If you are using the <a href=\"https://cran.r-project.org/web/packages/Seurat/index.html\">Seurat</a> package for downstream analysis, the following code can be used to read in a matrix and convert between Seurat and SCE objects:</p>\n<div class=\"sourceCode\" id=\"cb18\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"co\"># Read counts from CellRanger output</span>\n<span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://satijalab.org/seurat\">Seurat</a></span><span class=\"op\">)</span>\n<span class=\"va\">counts</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://satijalab.org/seurat/reference/Read10X.html\">Read10X</a></span><span class=\"op\">(</span><span class=\"st\">\"sample/outs/filtered_feature_bc_matrix/\"</span><span class=\"op\">)</span>\n\n<span class=\"co\"># Create a SingleCellExperiment object and run decontX</span>\n<span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\">SingleCellExperiment</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\">list</a></span><span class=\"op\">(</span>counts <span class=\"op\">=</span> <span class=\"va\">counts</span><span class=\"op\">)</span><span class=\"op\">)</span>\n<span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../../reference/decontX.html\">decontX</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span>\n\n<span class=\"co\"># Create a Seurat object from a SCE with decontX results</span>\n<span class=\"va\">seuratObject</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://satijalab.org/seurat/reference/CreateSeuratObject.html\">CreateSeuratObject</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/Round.html\">round</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"../../reference/decontXcounts.html\">decontXcounts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span><span class=\"op\">)</span><span class=\"op\">)</span></code></pre></div>\n<p>Optionally, the “raw” matrix can be also be imported and used as the background:</p>\n<div class=\"sourceCode\" id=\"cb19\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"va\">counts.raw</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://satijalab.org/seurat/reference/Read10X.html\">Read10X</a></span><span class=\"op\">(</span><span class=\"st\">\"sample/outs/raw_feature_bc_matrix/\"</span><span class=\"op\">)</span>\n<span class=\"va\">sce.raw</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\">SingleCellExperiment</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\">list</a></span><span class=\"op\">(</span>counts <span class=\"op\">=</span> <span class=\"va\">counts.raw</span><span class=\"op\">)</span><span class=\"op\">)</span>\n<span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../../reference/decontX.html\">decontX</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, background <span class=\"op\">=</span> <span class=\"va\">sce.raw</span><span class=\"op\">)</span></code></pre></div>\n<p>Note that the decontaminated matrix of decontX consists of floating point numbers and must be rounded to integers before adding it to a Seurat object. If you already have a Seurat object containing the counts matrix and would like to run decontX, you can retrieve the count matrix, create a SCE object, and run decontX, and then add it back to the Seurat object:</p>\n<div class=\"sourceCode\" id=\"cb20\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"va\">counts</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://satijalab.org/seurat/reference/AssayData.html\">GetAssayData</a></span><span class=\"op\">(</span>object <span class=\"op\">=</span> <span class=\"va\">seuratObject</span>, slot <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span><span class=\"op\">)</span>\n<span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\">SingleCellExperiment</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\">list</a></span><span class=\"op\">(</span>counts <span class=\"op\">=</span> <span class=\"va\">counts</span><span class=\"op\">)</span><span class=\"op\">)</span>\n<span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../../reference/decontX.html\">decontX</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span>\n<span class=\"va\">seuratObj</span><span class=\"op\">[[</span><span class=\"st\">\"decontXcounts\"</span><span class=\"op\">]</span><span class=\"op\">]</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://satijalab.org/seurat/reference/CreateAssayObject.html\">CreateAssayObject</a></span><span class=\"op\">(</span>counts <span class=\"op\">=</span> <span class=\"fu\"><a href=\"../../reference/decontXcounts.html\">decontXcounts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span><span class=\"op\">)</span></code></pre></div>\n</div>\n</div>\n<div id=\"session-information\" class=\"section level1\">\n<h1 class=\"hasAnchor\">\n<a href=\"#session-information\" class=\"anchor\"></a>Session Information</h1>\n<div class=\"sourceCode\" id=\"cb21\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/sessionInfo.html\">sessionInfo</a></span><span class=\"op\">(</span><span class=\"op\">)</span></code></pre></div>\n<pre><code>## R version 4.0.4 (2021-02-15)\n## Platform: x86_64-apple-darwin17.0 (64-bit)\n## Running under: macOS Big Sur 10.16\n## \n## Matrix products: default\n## BLAS:   /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRblas.dylib\n## LAPACK: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRlapack.dylib\n## \n## locale:\n## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8\n## \n## attached base packages:\n## [1] parallel  stats4    stats     graphics  grDevices utils     datasets \n## [8] methods   base     \n## \n## other attached packages:\n##  [1] scater_1.18.6               ggplot2_3.3.5              \n##  [3] TENxPBMCData_1.8.0          HDF5Array_1.18.1           \n##  [5] rhdf5_2.34.0                DelayedArray_0.16.2        \n##  [7] celda_1.12.0                Matrix_1.3-2               \n##  [9] SingleCellExperiment_1.12.0 SummarizedExperiment_1.20.0\n## [11] Biobase_2.50.0              GenomicRanges_1.42.0       \n## [13] GenomeInfoDb_1.26.4         IRanges_2.24.1             \n## [15] S4Vectors_0.28.1            BiocGenerics_0.36.0        \n## [17] MatrixGenerics_1.2.1        matrixStats_0.58.0         \n## [19] BiocStyle_2.18.1           \n## \n## loaded via a namespace (and not attached):\n##   [1] AnnotationHub_2.22.0          BiocFileCache_1.14.0         \n##   [3] systemfonts_1.0.1             RcppEigen_0.3.3.9.1          \n##   [5] plyr_1.8.6                    assertive.files_0.0-2        \n##   [7] enrichR_3.0                   multipanelfigure_2.1.2       \n##   [9] BiocParallel_1.24.1           digest_0.6.27                \n##  [11] foreach_1.5.1                 htmltools_0.5.1.1            \n##  [13] viridis_0.5.1                 magick_2.7.0                 \n##  [15] fansi_0.4.2                   magrittr_2.0.1               \n##  [17] memoise_2.0.0                 assertive.numbers_0.0-2      \n##  [19] doParallel_1.0.16             pkgdown_1.6.1                \n##  [21] colorspace_2.0-0              blob_1.2.1                   \n##  [23] rappdirs_0.3.3                ggrepel_0.9.1                \n##  [25] textshaping_0.3.5             xfun_0.22                    \n##  [27] dplyr_1.0.5                   crayon_1.4.1                 \n##  [29] RCurl_1.98-1.2                jsonlite_1.7.2               \n##  [31] iterators_1.0.13              glue_1.4.2                   \n##  [33] gtable_0.3.0                  zlibbioc_1.36.0              \n##  [35] XVector_0.30.0                BiocSingular_1.6.0           \n##  [37] Rhdf5lib_1.12.1               scales_1.1.1                 \n##  [39] DBI_1.1.1                     Rcpp_1.0.6                   \n##  [41] viridisLite_0.3.0             xtable_1.8-4                 \n##  [43] gridGraphics_0.5-1            bit_4.0.4                    \n##  [45] rsvd_1.0.3                    httr_1.4.2                   \n##  [47] RColorBrewer_1.1-2            ellipsis_0.3.1               \n##  [49] farver_2.1.0                  pkgconfig_2.0.3              \n##  [51] scuttle_1.0.4                 sass_0.3.1                   \n##  [53] uwot_0.1.10                   dbplyr_2.1.0                 \n##  [55] utf8_1.2.1                    labeling_0.4.2               \n##  [57] tidyselect_1.1.0              rlang_0.4.10                 \n##  [59] reshape2_1.4.4                later_1.1.0.1                \n##  [61] AnnotationDbi_1.52.0          munsell_0.5.0                \n##  [63] BiocVersion_3.12.0            tools_4.0.4                  \n##  [65] cachem_1.0.4                  dbscan_1.1-6                 \n##  [67] generics_0.1.0                RSQLite_2.2.4                \n##  [69] ExperimentHub_1.16.0          evaluate_0.14                \n##  [71] stringr_1.4.0                 fastmap_1.1.0                \n##  [73] yaml_2.2.1                    ragg_1.1.3                   \n##  [75] knitr_1.31                    bit64_4.0.5                  \n##  [77] fs_1.5.0                      purrr_0.3.4                  \n##  [79] sparseMatrixStats_1.2.1       mime_0.10                    \n##  [81] compiler_4.0.4                beeswarm_0.3.1               \n##  [83] curl_4.3                      interactiveDisplayBase_1.28.0\n##  [85] tibble_3.1.0                  bslib_0.2.4                  \n##  [87] stringi_1.5.3                 highr_0.8                    \n##  [89] RSpectra_0.16-0               desc_1.3.0                   \n##  [91] lattice_0.20-41               assertive.base_0.0-9         \n##  [93] vctrs_0.3.6                   pillar_1.5.1                 \n##  [95] lifecycle_1.0.0               rhdf5filters_1.2.0           \n##  [97] BiocManager_1.30.10           combinat_0.0-8               \n##  [99] jquerylib_0.1.3               RcppAnnoy_0.0.18             \n## [101] BiocNeighbors_1.8.2           data.table_1.14.0            \n## [103] bitops_1.0-6                  irlba_2.3.3                  \n## [105] httpuv_1.5.5                  assertive.types_0.0-3        \n## [107] R6_2.5.0                      bookdown_0.21                \n## [109] assertive.properties_0.0-4    promises_1.2.0.1             \n## [111] gridExtra_2.3                 vipor_0.4.5                  \n## [113] codetools_0.2-18              MCMCprecision_0.4.0          \n## [115] assertthat_0.2.1              rprojroot_2.0.2              \n## [117] rjson_0.2.20                  withr_2.4.1                  \n## [119] GenomeInfoDbData_1.2.4        grid_4.0.4                   \n## [121] beachmat_2.6.4                rmarkdown_2.7                \n## [123] DelayedMatrixStats_1.12.3     Rtsne_0.15                   \n## [125] shiny_1.6.0                   ggbeeswarm_0.6.0</code></pre>\n</div>\n  </div>\n\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n\n        <nav id=\"toc\" data-toggle=\"toc\"><h2 data-toc-skip>Contents</h2>\n    </nav>\n</div>\n\n</div>\n\n\n\n      <footer><div class=\"copyright\">\n  <p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p>Site built with <a href=\"https://pkgdown.r-lib.org/\">pkgdown</a> 1.6.1.</p>\n</div>\n\n      </footer>\n</div>\n\n  \n\n\n  </body>\n</html>\n"
  },
  {
    "path": "docs/articles/articles/decontX_pbmc4k_files/accessible-code-block-0.0.1/empty-anchor.js",
    "content": "// Hide empty <a> tag within highlighted CodeBlock for screen reader accessibility (see https://github.com/jgm/pandoc/issues/6352#issuecomment-626106786) -->\n// v0.0.1\n// Written by JooYoung Seo (jooyoung@psu.edu) and Atsushi Yasumoto on June 1st, 2020.\n\ndocument.addEventListener('DOMContentLoaded', function() {\n  const codeList = document.getElementsByClassName(\"sourceCode\");\n  for (var i = 0; i < codeList.length; i++) {\n    var linkList = codeList[i].getElementsByTagName('a');\n    for (var j = 0; j < linkList.length; j++) {\n      if (linkList[j].innerHTML === \"\") {\n        linkList[j].setAttribute('aria-hidden', 'true');\n      }\n    }\n  }\n});\n"
  },
  {
    "path": "docs/articles/articles/decontX_pbmc4k_files/header-attrs-2.7/header-attrs.js",
    "content": "// Pandoc 2.9 adds attributes on both header and div. We remove the former (to\n// be compatible with the behavior of Pandoc < 2.8).\ndocument.addEventListener('DOMContentLoaded', function(e) {\n  var hs = document.querySelectorAll(\"div.section[class*='level'] > :first-child\");\n  var i, h, a;\n  for (i = 0; i < hs.length; i++) {\n    h = hs[i];\n    if (!/^h[1-6]$/i.test(h.tagName)) continue;  // it should be a header h1-h6\n    a = h.attributes;\n    while (a.length > 0) h.removeAttribute(a[0].name);\n  }\n});\n"
  },
  {
    "path": "docs/articles/articles/installation.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<meta charset=\"utf-8\">\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title> • celda</title>\n<!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\">\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../../bootstrap-toc.css\">\n<script src=\"../../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\">\n<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\">\n<!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../../pkgdown.css\" rel=\"stylesheet\">\n<script src=\"../../pkgdown.js\"></script><meta property=\"og:title\" content=\"\">\n<meta property=\"og:description\" content=\"celda\">\n<!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]-->\n</head>\n<body data-spy=\"scroll\" data-target=\"#toc\">\n    <div class=\"container template-article\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"Released version\">1.12.0</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\">\n<li>\n  <a href=\"https://www.camplab.net/celda\">\n    <span class=\"fas fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\">\n<li>\n      <a href=\"../../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul>\n</li>\n<li>\n  <a href=\"../../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\">\n    <span class=\"fas fa-github\"></span>\n     \n  </a>\n</li>\n      </ul>\n<ul class=\"nav navbar-nav navbar-right\">\n<li>\n  <a href=\"https://github.com/campbio/celda/\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul>\n</div>\n<!--/.nav-collapse -->\n  </div>\n<!--/.container -->\n</div>\n<!--/.navbar -->\n\n      \n\n      </header><script src=\"installation_files/header-attrs-2.7/header-attrs.js\"></script><script src=\"installation_files/accessible-code-block-0.0.1/empty-anchor.js\"></script><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header toc-ignore\">\n      <h1 data-toc-skip></h1>\n            \n      \n      <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/master/vignettes/articles/installation.Rmd\"><code>vignettes/articles/installation.Rmd</code></a></small>\n      <div class=\"hidden name\"><code>installation.Rmd</code></div>\n\n    </div>\n\n    \n    \n<div id=\"introduction\" class=\"section level1\">\n<h1 class=\"hasAnchor\">\n<a href=\"#introduction\" class=\"anchor\"></a>Introduction</h1>\n<p>“celda” stands for “<strong>CE</strong>llular <strong>L</strong>atent <strong>D</strong>irichlet <strong>A</strong>llocation”. It is a suite of Bayesian hierarchical models and supporting functions to perform gene and cell clustering for count data generated by single cell RNA-seq platforms. This algorithm is an extension of the Latent Dirichlet Allocation (LDA) topic modeling framework that has been popular in text mining applications. This package also includes a method called <strong>decontX</strong> which can be used to estimate and remove contamination in single cell genomic data.</p>\n</div>\n<div id=\"installation\" class=\"section level1\">\n<h1 class=\"hasAnchor\">\n<a href=\"#installation\" class=\"anchor\"></a>Installation</h1>\n<p>To install the latest stable release of <strong>celda</strong> from <a href=\"http://bioconductor.org/packages/celda/\">Bioconductor</a> (requires R version &gt;= 3.6):</p>\n<div class=\"sourceCode\" id=\"cb1\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"kw\">if</span> <span class=\"op\">(</span><span class=\"op\">!</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/ns-load.html\">requireNamespace</a></span><span class=\"op\">(</span><span class=\"st\">\"BiocManager\"</span>, quietly <span class=\"op\">=</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span><span class=\"op\">)</span>\n    <span class=\"fu\"><a href=\"https://rdrr.io/r/utils/install.packages.html\">install.packages</a></span><span class=\"op\">(</span><span class=\"st\">\"BiocManager\"</span><span class=\"op\">)</span>\n<span class=\"fu\">BiocManager</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/BiocManager/man/install.html\">install</a></span><span class=\"op\">(</span><span class=\"st\">\"celda\"</span><span class=\"op\">)</span></code></pre></div>\n<p>The latest stable version of <strong>celda</strong> can be installed from GitHub using <code>devtools</code>:</p>\n<div class=\"sourceCode\" id=\"cb2\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://devtools.r-lib.org/\">devtools</a></span><span class=\"op\">)</span>\n<span class=\"fu\"><a href=\"https://devtools.r-lib.org/reference/remote-reexports.html\">install_github</a></span><span class=\"op\">(</span><span class=\"st\">\"campbio/celda\"</span><span class=\"op\">)</span></code></pre></div>\n<p>The development version of <strong>celda</strong> can also be installed from GitHub using <code>devtools</code>:</p>\n<div class=\"sourceCode\" id=\"cb3\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://devtools.r-lib.org/\">devtools</a></span><span class=\"op\">)</span>\n<span class=\"fu\"><a href=\"https://devtools.r-lib.org/reference/remote-reexports.html\">install_github</a></span><span class=\"op\">(</span><span class=\"st\">\"campbio/celda@devel\"</span><span class=\"op\">)</span></code></pre></div>\n<p><strong>NOTE</strong> For MAC OSX users, <code><a href=\"https://devtools.r-lib.org/reference/remote-reexports.html\">devtools::install_github()</a></code> requires installation of <strong>libgit2.</strong> This can be installed via homebrew:</p>\n<pre><code>brew install libgit2</code></pre>\n</div>\n<div id=\"troubleshooting\" class=\"section level1\">\n<h1 class=\"hasAnchor\">\n<a href=\"#troubleshooting\" class=\"anchor\"></a>Troubleshooting</h1>\n<ul>\n<li>If you receive installation errors when Rcpp is being installed and compiled, try following the steps outlined <a href=\"https://thecoatlessprofessor.com/programming/cpp/r-compiler-tools-for-rcpp-on-macos/\">here</a> to solve the issue</li>\n<li>If you are running R 4.0.0 or later version on MacOS Catalina and you see error <code>'wchar.h' file not found</code>, you can try the method in <a href=\"https://discourse.mc-stan.org/t/dealing-with-catalina-iii/12731/5\">this</a> link:</li>\n<li>If you are trying to install <strong>celda</strong> using Rstudio and get this error: <code>could not find tools necessary to compile a package</code>, you can try typing this before running the install command:</li>\n</ul>\n<pre><code><a href=\"https://rdrr.io/r/base/options.html\">options(buildtools.check = function(action) TRUE)</a></code></pre>\n</div>\n  </div>\n\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n\n        <nav id=\"toc\" data-toggle=\"toc\"><h2 data-toc-skip>Contents</h2>\n    </nav>\n</div>\n\n</div>\n\n\n\n      <footer><div class=\"copyright\">\n  <p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p>Site built with <a href=\"https://pkgdown.r-lib.org/\">pkgdown</a> 1.6.1.</p>\n</div>\n\n      </footer>\n</div>\n\n  \n\n\n  </body>\n</html>\n"
  },
  {
    "path": "docs/articles/articles/installation_files/accessible-code-block-0.0.1/empty-anchor.js",
    "content": "// Hide empty <a> tag within highlighted CodeBlock for screen reader accessibility (see https://github.com/jgm/pandoc/issues/6352#issuecomment-626106786) -->\n// v0.0.1\n// Written by JooYoung Seo (jooyoung@psu.edu) and Atsushi Yasumoto on June 1st, 2020.\n\ndocument.addEventListener('DOMContentLoaded', function() {\n  const codeList = document.getElementsByClassName(\"sourceCode\");\n  for (var i = 0; i < codeList.length; i++) {\n    var linkList = codeList[i].getElementsByTagName('a');\n    for (var j = 0; j < linkList.length; j++) {\n      if (linkList[j].innerHTML === \"\") {\n        linkList[j].setAttribute('aria-hidden', 'true');\n      }\n    }\n  }\n});\n"
  },
  {
    "path": "docs/articles/articles/installation_files/header-attrs-2.7/header-attrs.js",
    "content": "// Pandoc 2.9 adds attributes on both header and div. We remove the former (to\n// be compatible with the behavior of Pandoc < 2.8).\ndocument.addEventListener('DOMContentLoaded', function(e) {\n  var hs = document.querySelectorAll(\"div.section[class*='level'] > :first-child\");\n  var i, h, a;\n  for (i = 0; i < hs.length; i++) {\n    h = hs[i];\n    if (!/^h[1-6]$/i.test(h.tagName)) continue;  // it should be a header h1-h6\n    a = h.attributes;\n    while (a.length > 0) h.removeAttribute(a[0].name);\n  }\n});\n"
  },
  {
    "path": "docs/articles/celda.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<meta charset=\"utf-8\">\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Analysis of single-cell genomic data with celda • celda</title>\n<!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\">\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\">\n<script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\">\n<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\">\n<!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\">\n<script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Analysis of single-cell genomic data with celda\">\n<meta property=\"og:description\" content=\"celda\">\n<!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]-->\n</head>\n<body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-article\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\">\n<li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\">\n<li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul>\n</li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul>\n<ul class=\"nav navbar-nav navbar-right\">\n<li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul>\n</div>\n<!--/.nav-collapse -->\n  </div>\n<!--/.container -->\n</div>\n<!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header toc-ignore\">\n      <h1 data-toc-skip>Analysis of single-cell genomic data with\ncelda</h1>\n                        <h4 data-toc-skip class=\"author\">Joshua\nCampbell</h4>\n            <address class=\"author_afil\">\n      Boston University School of\nMedicine<br><a class=\"author_email\" href=\"mailto:#\"></a><a href=\"mailto:camp@bu.edu\" class=\"email\">camp@bu.edu</a>\n      </address>\n                              <h4 data-toc-skip class=\"author\">Zhe\nWang</h4>\n            <address class=\"author_afil\">\n      Boston University School of\nMedicine<br><h4 data-toc-skip class=\"author\">Shiyi\nYang</h4>\n            <address class=\"author_afil\">\n      Boston University School of\nMedicine<br><h4 data-toc-skip class=\"author\">Sean\nCorbett</h4>\n            <address class=\"author_afil\">\n      Boston University School of\nMedicine<br><h4 data-toc-skip class=\"author\">Yusuke\nKoga</h4>\n            <address class=\"author_afil\">\n      Boston University School of Medicine<br><h4 data-toc-skip class=\"date\">2024-04-02</h4>\n      \n      <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/vignettes/celda.Rmd\" class=\"external-link\"><code>vignettes/celda.Rmd</code></a></small>\n      <div class=\"hidden name\"><code>celda.Rmd</code></div>\n\n    </address>\n</address>\n</address>\n</address>\n</div>\n\n    \n    \n<div class=\"section level2\">\n<h2 id=\"introduction\">Introduction<a class=\"anchor\" aria-label=\"anchor\" href=\"#introduction\"></a>\n</h2>\n<p><strong>CE</strong>llular <strong>L</strong>atent\n<strong>D</strong>irichlet <strong>A</strong>llocation (celda) is a\ncollection of Bayesian hierarchical models to perform feature and cell\nbi-clustering for count data generated by single-cell platforms. This\nalgorithm is an extension of the Latent Dirichlet Allocation (LDA) topic\nmodeling framework that has been popular in text mining applications and\nhas shown good performance with sparse data. celda simultaneously\nclusters features (i.e. gene expression) into modules based on\nco-expression patterns across cells and cells into subpopulations based\non the probabilities of the feature modules within each cell.</p>\n<p>Starting from Bioconductor release 3.12 (<code>celda</code> version\n1.6.0), <code>celda</code> makes use of <em><a href=\"https://bioconductor.org/packages/3.18/SingleCellExperiment\" class=\"external-link\">SingleCellExperiment</a></em>\n(SCE) objects for storing data and results. In this vignette we will\ndemonstrate how to use celda to perform cell and feature clustering with\na simple, small simulated dataset. This vignette does not include\nupstream importing of data, quality control, or filtering. To see a more\ncomplete analysis of larger real-world datasets, visit <a href=\"https://www.camplab.net/celda/\" class=\"external-link\">camplab.net/celda</a> for\nadditional vignettes.</p>\n</div>\n<div class=\"section level2\">\n<h2 id=\"installation\">Installation<a class=\"anchor\" aria-label=\"anchor\" href=\"#installation\"></a>\n</h2>\n<p>celda can be installed from Bioconductor:</p>\n<div class=\"sourceCode\" id=\"cb1\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"kw\">if</span> <span class=\"op\">(</span><span class=\"op\">!</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/ns-load.html\" class=\"external-link\">requireNamespace</a></span><span class=\"op\">(</span><span class=\"st\">\"BiocManager\"</span>, quietly <span class=\"op\">=</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span><span class=\"op\">)</span> <span class=\"op\">{</span></span>\n<span>    <span class=\"fu\"><a href=\"https://rdrr.io/r/utils/install.packages.html\" class=\"external-link\">install.packages</a></span><span class=\"op\">(</span><span class=\"st\">\"BiocManager\"</span><span class=\"op\">)</span></span>\n<span><span class=\"op\">}</span></span>\n<span><span class=\"fu\">BiocManager</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"https://bioconductor.github.io/BiocManager/reference/install.html\" class=\"external-link\">install</a></span><span class=\"op\">(</span><span class=\"st\">\"celda\"</span><span class=\"op\">)</span></span></code></pre></div>\n<p>To load the package, type the following:</p>\n<div class=\"sourceCode\" id=\"cb2\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\">celda</span><span class=\"op\">)</span></span></code></pre></div>\n<p>A complete list of help files are accessible using the help command\nwith the <code>package</code> option.</p>\n<div class=\"sourceCode\" id=\"cb3\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/help.html\" class=\"external-link\">help</a></span><span class=\"op\">(</span>package <span class=\"op\">=</span> <span class=\"va\">celda</span><span class=\"op\">)</span></span></code></pre></div>\n<p>To see the latest updates and releases or to post a bug, see our\nGitHub page at <a href=\"https://github.com/campbio/celda\" class=\"external-link uri\">https://github.com/campbio/celda</a>. To ask questions about\nrunning celda, post a thread on Bioconductor support site at <a href=\"https://support.bioconductor.org/\" class=\"external-link uri\">https://support.bioconductor.org/</a>.</p>\n<p><br></p>\n</div>\n<div class=\"section level2\">\n<h2 id=\"generation-of-a-simulated-single-cell-dataset\">Generation of a simulated single cell dataset<a class=\"anchor\" aria-label=\"anchor\" href=\"#generation-of-a-simulated-single-cell-dataset\"></a>\n</h2>\n<p>celda will take a matrix of counts where each row is a feature, each\ncolumn is a cell, and each entry in the matrix is the number of counts\nof each feature in each cell. To illustrate the utility of celda, we\nwill apply it to a simulated dataset.</p>\n<p>In the function <code>simulateCells</code>, the <strong>K</strong>\nparameter designates the number of cell clusters, the <strong>L</strong>\nparameter determines the number of feature modules, the\n<strong>S</strong> parameter determines the number of samples in the\nsimulated dataset, the <strong>G</strong> parameter determines the\nnumber of features to be simulated, and <strong>CRange</strong>\nspecifies the lower and upper bounds of the number of cells to be\ngenerated in each sample.</p>\n<p>To simulate a dataset of 5 samples with 5 cell populations, 10\nfeature modules, 200 features, and between 30 to 50 cells per sample\nusing <code>celda_CG</code> model:</p>\n<div class=\"sourceCode\" id=\"cb4\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">simsce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/simulateCells.html\">simulateCells</a></span><span class=\"op\">(</span><span class=\"st\">\"celda_CG\"</span>,</span>\n<span>    S <span class=\"op\">=</span> <span class=\"fl\">5</span>, K <span class=\"op\">=</span> <span class=\"fl\">5</span>, L <span class=\"op\">=</span> <span class=\"fl\">10</span>, G <span class=\"op\">=</span> <span class=\"fl\">200</span>, CRange <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"fl\">30</span>, <span class=\"fl\">50</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n<p>The <code>counts</code> assay slot in <code>simsce</code> contains\nthe counts matrix. The dimensions of counts matrix:</p>\n<div class=\"sourceCode\" id=\"cb5\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\">SingleCellExperiment</span><span class=\"op\">)</span></span>\n<span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/dim.html\" class=\"external-link\">dim</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/BiocGenerics/man/dge.html\" class=\"external-link\">counts</a></span><span class=\"op\">(</span><span class=\"va\">simsce</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n<pre><code><span><span class=\"co\">## [1] 200 207</span></span></code></pre>\n<p>Columns <code>celda_sample_label</code> and\n<code>celda_cell_cluster</code> in <code>colData(simsce)</code> contain\nsample labels and celda cell population cluster labels. Here are the\nnumbers of cells in each subpopulation and in each sample:</p>\n<div class=\"sourceCode\" id=\"cb7\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/BiocGenerics/man/table.html\" class=\"external-link\">table</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">colData</a></span><span class=\"op\">(</span><span class=\"va\">simsce</span><span class=\"op\">)</span><span class=\"op\">$</span><span class=\"va\">celda_cell_cluster</span><span class=\"op\">)</span></span></code></pre></div>\n<pre><code><span><span class=\"co\">## </span></span>\n<span><span class=\"co\">##  1  2  3  4  5 </span></span>\n<span><span class=\"co\">## 42 44 40 47 34</span></span></code></pre>\n<div class=\"sourceCode\" id=\"cb9\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/BiocGenerics/man/table.html\" class=\"external-link\">table</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">colData</a></span><span class=\"op\">(</span><span class=\"va\">simsce</span><span class=\"op\">)</span><span class=\"op\">$</span><span class=\"va\">celda_sample_label</span><span class=\"op\">)</span></span></code></pre></div>\n<pre><code><span><span class=\"co\">## </span></span>\n<span><span class=\"co\">## Sample_1 Sample_2 Sample_3 Sample_4 Sample_5 </span></span>\n<span><span class=\"co\">##       43       48       45       40       31</span></span></code></pre>\n<p>Column <code>celda_feature_module</code> in\n<code>rowData(simsce)</code> contains feature module labels. Here is the\nnumber of features in each feature module:</p>\n<div class=\"sourceCode\" id=\"cb11\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/BiocGenerics/man/table.html\" class=\"external-link\">table</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">rowData</a></span><span class=\"op\">(</span><span class=\"va\">simsce</span><span class=\"op\">)</span><span class=\"op\">$</span><span class=\"va\">celda_feature_module</span><span class=\"op\">)</span></span></code></pre></div>\n<pre><code><span><span class=\"co\">## </span></span>\n<span><span class=\"co\">##  1  2  3  4  5  6  7  8  9 10 </span></span>\n<span><span class=\"co\">## 23 39 17 15 21 22 19 12  4 28</span></span></code></pre>\n</div>\n<div class=\"section level2\">\n<h2 id=\"feature-selection\">Feature selection<a class=\"anchor\" aria-label=\"anchor\" href=\"#feature-selection\"></a>\n</h2>\n<p>A simple heuristic feature selection is performed to reduce the size\nof features used for clustering. To speed up the process, only features\nwith at least 3 counts in at least 3 cells are included in downstream\nclustering for this data. A subset <code>SingleCellExperiment</code>\nobject with filtered features is stored in\n<code>altExp(simsce, \"featureSubset\")</code> slot by default.</p>\n<div class=\"sourceCode\" id=\"cb13\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">simsce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/selectFeatures.html\">selectFeatures</a></span><span class=\"op\">(</span><span class=\"va\">simsce</span><span class=\"op\">)</span></span></code></pre></div>\n<p>If the number of features is still too large, then a smaller subset\nof features can be obtained by selecting the top number of most variable\ngenes. For an example code, see the PBMC3K tutorial in the online celda\n<a href=\"https://www.camplab.net/celda\" class=\"external-link\">documentation</a>.</p>\n</div>\n<div class=\"section level2\">\n<h2 id=\"performing-bi-clustering-with-celda\">Performing bi-clustering with celda<a class=\"anchor\" aria-label=\"anchor\" href=\"#performing-bi-clustering-with-celda\"></a>\n</h2>\n<p>There are currently three models within <em>celda</em> package:\n<code>celda_C</code> will cluster cells, <code>celda_G</code> will\ncluster features, and <code>celda_CG</code> will simultaneously cluster\ncells and features. Within the functions the <code>K</code> parameter\nwill be the number of cell populations to be estimated, while the\n<code>L</code> parameter will be the number of feature modules to be\nestimated in the output model.</p>\n<div class=\"sourceCode\" id=\"cb14\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/celda_CG.html\">celda_CG</a></span><span class=\"op\">(</span>x <span class=\"op\">=</span> <span class=\"va\">simsce</span>, K <span class=\"op\">=</span> <span class=\"fl\">5</span>, L <span class=\"op\">=</span> <span class=\"fl\">10</span>, verbose <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>, nchains <span class=\"op\">=</span> <span class=\"fl\">1</span><span class=\"op\">)</span></span></code></pre></div>\n<p>Here is a comparison between the true cluster labels and the\nestimated cluster labels.</p>\n<div class=\"sourceCode\" id=\"cb15\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/BiocGenerics/man/table.html\" class=\"external-link\">table</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"../reference/celdaClusters.html\">celdaClusters</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span>, <span class=\"fu\"><a href=\"../reference/celdaClusters.html\">celdaClusters</a></span><span class=\"op\">(</span><span class=\"va\">simsce</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n<pre><code><span><span class=\"co\">##    </span></span>\n<span><span class=\"co\">##      1  2  3  4  5</span></span>\n<span><span class=\"co\">##   1  0 44  0  0  0</span></span>\n<span><span class=\"co\">##   2 42  0  0  0  0</span></span>\n<span><span class=\"co\">##   3  0  0 40  0  0</span></span>\n<span><span class=\"co\">##   4  0  0  0 47  0</span></span>\n<span><span class=\"co\">##   5  0  0  0  0 34</span></span></code></pre>\n<div class=\"sourceCode\" id=\"cb17\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/BiocGenerics/man/table.html\" class=\"external-link\">table</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"../reference/celdaModules.html\">celdaModules</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span>, <span class=\"fu\"><a href=\"../reference/celdaModules.html\">celdaModules</a></span><span class=\"op\">(</span><span class=\"va\">simsce</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n<pre><code><span><span class=\"co\">##     </span></span>\n<span><span class=\"co\">##       1  2  3  4  5  6  7  8  9 10</span></span>\n<span><span class=\"co\">##   1   0 32  0  0  0  0  0  0  0  0</span></span>\n<span><span class=\"co\">##   2  19  0  0  0  0  0  0  0  0  0</span></span>\n<span><span class=\"co\">##   3   0  0 15  0  0  0  0  0  0  0</span></span>\n<span><span class=\"co\">##   4   0  0  0 13  0  0  0  0  0  0</span></span>\n<span><span class=\"co\">##   5   0  0  0  0 21  0  0  0  0  0</span></span>\n<span><span class=\"co\">##   6   0  0  0  0  0 19  0  0  0  0</span></span>\n<span><span class=\"co\">##   7   0  0  0  0  0  0  0 12  0  0</span></span>\n<span><span class=\"co\">##   8   0  0  0  0  0  0 17  0  0  0</span></span>\n<span><span class=\"co\">##   9   0  0  0  0  0  0  0  0  3  0</span></span>\n<span><span class=\"co\">##   10  0  0  0  0  0  0  0  0  0 20</span></span></code></pre>\n</div>\n<div class=\"section level2\">\n<h2 id=\"visualization\">Visualization<a class=\"anchor\" aria-label=\"anchor\" href=\"#visualization\"></a>\n</h2>\n<div class=\"section level3\">\n<h3 id=\"plotting-cell-populations-on-2d-embeddings\">Plotting cell populations on 2D-embeddings<a class=\"anchor\" aria-label=\"anchor\" href=\"#plotting-cell-populations-on-2d-embeddings\"></a>\n</h3>\n<p>celda contains its own wrapper function for tSNE and UMAP called\n<code>celdaTsne</code> and <code>celdaUmap</code>, respectively. Both of\nthese functions can be used to embed cells into 2-dimensions. The output\ncan be used in the downstream plotting functions\n<code>plotDimReduceCluster</code>, <code>plotDimReduceModule</code>, and\n<code>plotDimReduceFeature</code> to show cell population clusters,\nmodule probabilities, and expression of individual features,\nrespectively.</p>\n<div class=\"sourceCode\" id=\"cb19\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/celdaUmap.html\">celdaUmap</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span></span></code></pre></div>\n<div class=\"sourceCode\" id=\"cb20\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/plotDimReduceCluster.html\">plotDimReduceCluster</a></span><span class=\"op\">(</span>x <span class=\"op\">=</span> <span class=\"va\">sce</span>, reducedDimName <span class=\"op\">=</span> <span class=\"st\">\"celda_UMAP\"</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"celda_files/figure-html/plot_umap-1.png\" width=\"672\"></p>\n<div class=\"sourceCode\" id=\"cb21\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/plotDimReduceModule.html\">plotDimReduceModule</a></span><span class=\"op\">(</span>x <span class=\"op\">=</span> <span class=\"va\">sce</span>, reducedDimName <span class=\"op\">=</span> <span class=\"st\">\"celda_UMAP\"</span>, rescale <span class=\"op\">=</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"celda_files/figure-html/plot_umap-2.png\" width=\"672\"></p>\n<div class=\"sourceCode\" id=\"cb22\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/plotDimReduceFeature.html\">plotDimReduceFeature</a></span><span class=\"op\">(</span>x <span class=\"op\">=</span> <span class=\"va\">sce</span>, reducedDimName <span class=\"op\">=</span> <span class=\"st\">\"celda_UMAP\"</span>,</span>\n<span>    normalize <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>, features <span class=\"op\">=</span> <span class=\"st\">\"Gene_1\"</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"celda_files/figure-html/plot_umap-3.png\" width=\"672\"></p>\n</div>\n<div class=\"section level3\">\n<h3 id=\"creating-an-expression-heatmap\">Creating an expression heatmap<a class=\"anchor\" aria-label=\"anchor\" href=\"#creating-an-expression-heatmap\"></a>\n</h3>\n<p>The clustering results can be viewed with a heatmap of the normalized\ncounts using the function <code>celdaHeatmap</code>. The top\n<code>nfeatures</code> in each module will be selected according to the\nfactorized module probability matrix.</p>\n<div class=\"sourceCode\" id=\"cb23\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/graphics/plot.default.html\" class=\"external-link\">plot</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"../reference/celdaHeatmap.html\">celdaHeatmap</a></span><span class=\"op\">(</span>sce <span class=\"op\">=</span> <span class=\"va\">sce</span>, nfeatures <span class=\"op\">=</span> <span class=\"fl\">10</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"celda_files/figure-html/celda_heatmap-1.png\" width=\"672\"></p>\n</div>\n<div class=\"section level3\">\n<h3 id=\"displaying-relationships-between-modules-and-cell-populations\">Displaying relationships between modules and cell populations<a class=\"anchor\" aria-label=\"anchor\" href=\"#displaying-relationships-between-modules-and-cell-populations\"></a>\n</h3>\n<p>The relationships between feature modules and cell populations can be\nvisualized with <code>celdaProbabilityMap</code>. The absolute\nprobabilities of each feature module in each cellular subpopulation is\nshown on the left. The normalized and z-scored expression of each module\nin each cell population is shown on the right.</p>\n<div class=\"sourceCode\" id=\"cb24\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/celdaProbabilityMap.html\">celdaProbabilityMap</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"celda_files/figure-html/propmap-1.png\" width=\"672\"></p>\n</div>\n<div class=\"section level3\">\n<h3 id=\"examining-co-expression-with-module-heatmaps\">Examining co-expression with module heatmaps<a class=\"anchor\" aria-label=\"anchor\" href=\"#examining-co-expression-with-module-heatmaps\"></a>\n</h3>\n<p><code>moduleHeatmap</code> creates a heatmap using only the features\nfrom a specific feature module. Cells are ordered from those with the\nlowest probability of the module to the highest. If more than one module\nis used, then cells will be ordered by the probabilities of the first\nmodule.</p>\n<div class=\"sourceCode\" id=\"cb25\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/moduleHeatmap.html\">moduleHeatmap</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, featureModule <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"fl\">1</span>,<span class=\"fl\">2</span><span class=\"op\">)</span>, topCells <span class=\"op\">=</span> <span class=\"fl\">100</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"celda_files/figure-html/module_heatmap-1.png\" width=\"672\"></p>\n</div>\n</div>\n<div class=\"section level2\">\n<h2 id=\"identifying-reasonable-numbers-of-feature-modules-and-cell-subpopulations\">Identifying reasonable numbers of feature modules and cell\nsubpopulations<a class=\"anchor\" aria-label=\"anchor\" href=\"#identifying-reasonable-numbers-of-feature-modules-and-cell-subpopulations\"></a>\n</h2>\n<p>In the previous example, the best <code>K</code> (the number of cell\nclusters) and <code>L</code> (the number of feature modules) was already\nknown. However, the optimal <code>K</code> and <code>L</code> for each\nnew dataset will likely not be known beforehand and multiple choices of\n<code>K</code> and <code>L</code> may need to be tried and compared.\ncelda offers two sets of functions to determine the optimum\n<code>K</code> and <code>L</code>,\n<code>recursiveSplitModule</code>/<code>recursiveSplitCell</code>, and\n<code>celdaGridSearch</code>.</p>\n<div class=\"section level3\">\n<h3 id=\"using-recursive-splitting\">Using recursive splitting<a class=\"anchor\" aria-label=\"anchor\" href=\"#using-recursive-splitting\"></a>\n</h3>\n<p>Functions <code>recursiveSplitModule</code> and\n<code>recursiveSplitCell</code> offer a fast method to generate a celda\nmodel with optimum <code>K</code> and <code>L</code>. First,\n<code>recursiveSplitModule</code> is used to determine the optimal\n<code>L</code>. <code>recursiveSplitModule</code> first splits features\ninto however many modules are specified in <code>initialL</code>. The\nmodule labels are then recursively split in a way that would generate\nthe highest log-likelihood, all the way up to <code>maxL</code>.</p>\n<div class=\"sourceCode\" id=\"cb26\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">moduleSplit</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/recursiveSplitModule.html\">recursiveSplitModule</a></span><span class=\"op\">(</span><span class=\"va\">simsce</span>, initialL <span class=\"op\">=</span> <span class=\"fl\">2</span>, maxL <span class=\"op\">=</span> <span class=\"fl\">15</span><span class=\"op\">)</span></span></code></pre></div>\n<p>Perplexity is a statistical measure of how well a probability model\ncan predict new data. Lower perplexity indicates a better model. The\nperplexity of each model can be visualized with\n<code>plotGridSearchPerplexity</code>. In general, visual inspection of\nthe plot can be used to select the optimal number of modules\n(<code>L</code>) or cell populations (<code>K</code>) by identifying the\n“elbow” - where the rate of decrease in the perplexity starts to drop\noff.</p>\n<div class=\"sourceCode\" id=\"cb27\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/plotGridSearchPerplexity.html\">plotGridSearchPerplexity</a></span><span class=\"op\">(</span><span class=\"va\">moduleSplit</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"celda_files/figure-html/unnamed-chunk-3-1.png\" width=\"700\"></p>\n<p>In this example, the perplexity for <code>L</code> stops decreasing\nat L = 10, thus L = 10 would be a good choice. Sometimes the perplexity\nalone does not show a clear elbow or “leveling off”. However, the rate\nof perplexity change (RPC) can be more informative to determine when\nadding new modules does not add much additional information <a href=\"https://doi.org/10.1186/1471-2105-16-S13-S8\" target=\"_blank\" class=\"external-link\">Zhao\net al., 2015</a>). An RPC closer to zero indicates that the addition of\nnew modules or cell clusters is not substantially decreasing the\nperplexity. The RPC of models can be visualized using function\n<code>plotRPC</code>:</p>\n<div class=\"sourceCode\" id=\"cb28\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/plotRPC.html\">plotRPC</a></span><span class=\"op\">(</span><span class=\"va\">moduleSplit</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"celda_files/figure-html/module_split_rpc-1.png\" width=\"700\"></p>\n<p>Once you have identified the optimal <code>L</code> (in this case, L\nis selected to be 10), the module labels are used for initialization in\n<code>recursiveSplitCell</code>. Similarly to\n<code>recursiveSplitModule</code>, cells are initially split into a\nsmall number of subpopulations, and the subpopulations are recursively\nsplit up.</p>\n<div class=\"sourceCode\" id=\"cb29\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">moduleSplitSelect</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/subsetCeldaList.html\">subsetCeldaList</a></span><span class=\"op\">(</span><span class=\"va\">moduleSplit</span>, params <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>L <span class=\"op\">=</span> <span class=\"fl\">10</span><span class=\"op\">)</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"va\">cellSplit</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/recursiveSplitCell.html\">recursiveSplitCell</a></span><span class=\"op\">(</span><span class=\"va\">moduleSplitSelect</span>,</span>\n<span>    initialK <span class=\"op\">=</span> <span class=\"fl\">3</span>,</span>\n<span>    maxK <span class=\"op\">=</span> <span class=\"fl\">12</span>,</span>\n<span>    yInit <span class=\"op\">=</span> <span class=\"fu\"><a href=\"../reference/celdaModules.html\">celdaModules</a></span><span class=\"op\">(</span><span class=\"va\">moduleSplitSelect</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n<div class=\"sourceCode\" id=\"cb30\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/plotGridSearchPerplexity.html\">plotGridSearchPerplexity</a></span><span class=\"op\">(</span><span class=\"va\">cellSplit</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"celda_files/figure-html/rpc_cell-1.png\" width=\"700\"></p>\n<div class=\"sourceCode\" id=\"cb31\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/plotRPC.html\">plotRPC</a></span><span class=\"op\">(</span><span class=\"va\">cellSplit</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"celda_files/figure-html/rpc_cell-2.png\" width=\"700\"></p>\n<p>In this plot, the perplexity for K stops decreasing at K = 5, with a\nfinal K/L combination of K = 5, L = 10. Generally, this method can be\nused to pick a reasonable <code>L</code> and a potential range of\n<code>K</code>. However, manual review of specific selections of\n<code>K</code> is often required to ensure results are biologically\ncoherent.</p>\n<p>Once users have chosen the K/L parameters for further analysis, the\n<code>subsetCeldaList</code> function can be used to subset the celda\nlist <em>SCE</em> object to a single model <em>SCE</em> object.</p>\n<div class=\"sourceCode\" id=\"cb32\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/subsetCeldaList.html\">subsetCeldaList</a></span><span class=\"op\">(</span><span class=\"va\">cellSplit</span>, params <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>K <span class=\"op\">=</span> <span class=\"fl\">5</span>, L <span class=\"op\">=</span> <span class=\"fl\">10</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n</div>\n<div class=\"section level3\">\n<h3 id=\"using-a-grid-search\">Using a grid search<a class=\"anchor\" aria-label=\"anchor\" href=\"#using-a-grid-search\"></a>\n</h3>\n<p>Alternativley to recursive splitting, celda is able to run multiple\ncombinations of K and L with multiple chains in parallel via the\n<code>celdaGridSearch</code> function.</p>\n<div class=\"sourceCode\" id=\"cb33\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">cgs</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/celdaGridSearch.html\">celdaGridSearch</a></span><span class=\"op\">(</span><span class=\"va\">simsce</span>,</span>\n<span>    paramsTest <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>K <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/seq.html\" class=\"external-link\">seq</a></span><span class=\"op\">(</span><span class=\"fl\">4</span>, <span class=\"fl\">6</span><span class=\"op\">)</span>, L <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/seq.html\" class=\"external-link\">seq</a></span><span class=\"op\">(</span><span class=\"fl\">9</span>, <span class=\"fl\">11</span><span class=\"op\">)</span><span class=\"op\">)</span>,</span>\n<span>    cores <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>    model <span class=\"op\">=</span> <span class=\"st\">\"celda_CG\"</span>,</span>\n<span>    nchains <span class=\"op\">=</span> <span class=\"fl\">2</span>,</span>\n<span>    maxIter <span class=\"op\">=</span> <span class=\"fl\">100</span>,</span>\n<span>    verbose <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>    bestOnly <span class=\"op\">=</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span></span></code></pre></div>\n<p>Setting <code>verbose</code> to <code>TRUE</code> will print the\noutput of each model to a text file. These results can be visualized\nwith <code>plotGridSearchPerplexity</code>. The major goal is to pick\nthe lowest <code>K</code> and <code>L</code> combination with relatively\ngood perplexity. In general, visual inspection of the plot can be used\nto select the number of modules (<code>L</code>) or cell populations\n(<code>K</code>) where the rate of decrease in the perplexity starts to\ndrop off. <code>bestOnly = TRUE</code> indicates that only the chain\nwith the best log likelihood will be returned for each K/L\ncombination.</p>\n<div class=\"sourceCode\" id=\"cb34\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/plotGridSearchPerplexity.html\">plotGridSearchPerplexity</a></span><span class=\"op\">(</span><span class=\"va\">cgs</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"celda_files/figure-html/plot_grid_search-1.png\" width=\"768\"></p>\n<p>In this example, the perplexity for <code>L</code> stops decreasing\nat L = 10 for the majority of <code>K</code> values. For the line\ncorresponding to L = 10, the perplexity stops decreasing at K = 5. Thus\nL = 10 and K = 5 would be a good choice. Again, manual review of\nspecific selections of K is often be required to ensure results are\nbiologically coherent.</p>\n<p>Once users have chosen the K/L parameters for further analysis, the\n<code>subsetCeldaList</code> function can be used to subset the celda\nlist <em>SCE</em> object to a single model <em>SCE</em> object.</p>\n<div class=\"sourceCode\" id=\"cb35\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/subsetCeldaList.html\">subsetCeldaList</a></span><span class=\"op\">(</span><span class=\"va\">cgs</span>, params <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>K <span class=\"op\">=</span> <span class=\"fl\">5</span>, L <span class=\"op\">=</span> <span class=\"fl\">10</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n<p>If the “bestOnly” parameter is set to FALSE in the\n<code>celdaGridSearch</code>, then the <code>selectBestModel</code>\nfunction can be used to select the chains with the lowest log\nlikelihoods within each combination of parameters. Alternatively, users\ncan select a specific chain by specifying the index within the\n<code>subsetCeldaList</code> function.</p>\n<div class=\"sourceCode\" id=\"cb36\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">cgs</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/celdaGridSearch.html\">celdaGridSearch</a></span><span class=\"op\">(</span><span class=\"va\">simsce</span>,</span>\n<span>    paramsTest <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>K <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/seq.html\" class=\"external-link\">seq</a></span><span class=\"op\">(</span><span class=\"fl\">4</span>, <span class=\"fl\">6</span><span class=\"op\">)</span>, L <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/seq.html\" class=\"external-link\">seq</a></span><span class=\"op\">(</span><span class=\"fl\">9</span>, <span class=\"fl\">11</span><span class=\"op\">)</span><span class=\"op\">)</span>,</span>\n<span>    cores <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>    model <span class=\"op\">=</span> <span class=\"st\">\"celda_CG\"</span>,</span>\n<span>    nchains <span class=\"op\">=</span> <span class=\"fl\">2</span>,</span>\n<span>    maxIter <span class=\"op\">=</span> <span class=\"fl\">100</span>,</span>\n<span>    verbose <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>    bestOnly <span class=\"op\">=</span> <span class=\"cn\">FALSE</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"va\">cgs</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/resamplePerplexity.html\">resamplePerplexity</a></span><span class=\"op\">(</span><span class=\"va\">cgs</span>, celdaList <span class=\"op\">=</span> <span class=\"va\">cgs</span>, resample <span class=\"op\">=</span> <span class=\"fl\">2</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"va\">cgsK5L10</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/subsetCeldaList.html\">subsetCeldaList</a></span><span class=\"op\">(</span><span class=\"va\">cgs</span>, params <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>K <span class=\"op\">=</span> <span class=\"fl\">5</span>, L <span class=\"op\">=</span> <span class=\"fl\">10</span><span class=\"op\">)</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/selectBestModel.html\">selectBestModel</a></span><span class=\"op\">(</span><span class=\"va\">cgsK5L10</span><span class=\"op\">)</span></span></code></pre></div>\n</div>\n</div>\n<div class=\"section level2\">\n<h2 id=\"miscellaneous-utility-functions\">Miscellaneous utility functions<a class=\"anchor\" aria-label=\"anchor\" href=\"#miscellaneous-utility-functions\"></a>\n</h2>\n<p>celda also contains several utility functions for the users’\nconvenience.</p>\n<div class=\"section level3\">\n<h3 id=\"finding-the-modules-for-feature-with-featuremodulelookup\">Finding the modules for feature with featureModuleLookup<a class=\"anchor\" aria-label=\"anchor\" href=\"#finding-the-modules-for-feature-with-featuremodulelookup\"></a>\n</h3>\n<p><code>featureModuleLookup</code> can be used to look up the module a\nspecific feature was clustered to.</p>\n<div class=\"sourceCode\" id=\"cb37\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/featureModuleLookup.html\">featureModuleLookup</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, feature <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"Gene_99\"</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n<pre><code><span><span class=\"co\">## Gene_99 </span></span>\n<span><span class=\"co\">##       4</span></span></code></pre>\n</div>\n<div class=\"section level3\">\n<h3 id=\"reordering-cluster-labels-with-recodeclusterz-recodeclustery\">Reordering cluster labels with recodeClusterZ, recodeClusterY<a class=\"anchor\" aria-label=\"anchor\" href=\"#reordering-cluster-labels-with-recodeclusterz-recodeclustery\"></a>\n</h3>\n<p><code>recodeClusterZ</code> and <code>recodeClusterY</code> allows\nthe user to recode the cell and feature cluster labels,\nrespectively.</p>\n<div class=\"sourceCode\" id=\"cb39\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">sceZRecoded</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/recodeClusterZ.html\">recodeClusterZ</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>,</span>\n<span>    from <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"fl\">1</span>, <span class=\"fl\">2</span>, <span class=\"fl\">3</span>, <span class=\"fl\">4</span>, <span class=\"fl\">5</span><span class=\"op\">)</span>, to <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"fl\">2</span>, <span class=\"fl\">1</span>, <span class=\"fl\">3</span>, <span class=\"fl\">4</span>, <span class=\"fl\">5</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n<p>The model prior to reordering cell labels compared to after\nreordering cell labels:</p>\n<div class=\"sourceCode\" id=\"cb40\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/BiocGenerics/man/table.html\" class=\"external-link\">table</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"../reference/celdaClusters.html\">celdaClusters</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span>, <span class=\"fu\"><a href=\"../reference/celdaClusters.html\">celdaClusters</a></span><span class=\"op\">(</span><span class=\"va\">sceZRecoded</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n<pre><code><span><span class=\"co\">##    </span></span>\n<span><span class=\"co\">##      1  2  3  4  5</span></span>\n<span><span class=\"co\">##   1  0 44  0  0  0</span></span>\n<span><span class=\"co\">##   2 42  0  0  0  0</span></span>\n<span><span class=\"co\">##   3  0  0 40  0  0</span></span>\n<span><span class=\"co\">##   4  0  0  0 47  0</span></span>\n<span><span class=\"co\">##   5  0  0  0  0 34</span></span></code></pre>\n</div>\n</div>\n<div class=\"section level2\">\n<h2 id=\"session-information\">Session Information<a class=\"anchor\" aria-label=\"anchor\" href=\"#session-information\"></a>\n</h2>\n<div class=\"sourceCode\" id=\"cb42\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/sessionInfo.html\" class=\"external-link\">sessionInfo</a></span><span class=\"op\">(</span><span class=\"op\">)</span></span></code></pre></div>\n<pre><code><span><span class=\"co\">## R version 4.3.3 (2024-02-29)</span></span>\n<span><span class=\"co\">## Platform: x86_64-apple-darwin20 (64-bit)</span></span>\n<span><span class=\"co\">## Running under: macOS Sonoma 14.4.1</span></span>\n<span><span class=\"co\">## </span></span>\n<span><span class=\"co\">## Matrix products: default</span></span>\n<span><span class=\"co\">## BLAS:   /Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/lib/libRblas.0.dylib </span></span>\n<span><span class=\"co\">## LAPACK: /Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/lib/libRlapack.dylib;  LAPACK version 3.11.0</span></span>\n<span><span class=\"co\">## </span></span>\n<span><span class=\"co\">## locale:</span></span>\n<span><span class=\"co\">## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8</span></span>\n<span><span class=\"co\">## </span></span>\n<span><span class=\"co\">## time zone: America/New_York</span></span>\n<span><span class=\"co\">## tzcode source: internal</span></span>\n<span><span class=\"co\">## </span></span>\n<span><span class=\"co\">## attached base packages:</span></span>\n<span><span class=\"co\">## [1] stats4    stats     graphics  grDevices utils     datasets  methods  </span></span>\n<span><span class=\"co\">## [8] base     </span></span>\n<span><span class=\"co\">## </span></span>\n<span><span class=\"co\">## other attached packages:</span></span>\n<span><span class=\"co\">##  [1] celda_1.18.2                Matrix_1.6-5               </span></span>\n<span><span class=\"co\">##  [3] SingleCellExperiment_1.24.0 SummarizedExperiment_1.32.0</span></span>\n<span><span class=\"co\">##  [5] Biobase_2.62.0              GenomicRanges_1.54.1       </span></span>\n<span><span class=\"co\">##  [7] GenomeInfoDb_1.38.8         IRanges_2.36.0             </span></span>\n<span><span class=\"co\">##  [9] S4Vectors_0.40.2            BiocGenerics_0.48.1        </span></span>\n<span><span class=\"co\">## [11] MatrixGenerics_1.14.0       matrixStats_1.2.0          </span></span>\n<span><span class=\"co\">## [13] BiocStyle_2.30.0           </span></span>\n<span><span class=\"co\">## </span></span>\n<span><span class=\"co\">## loaded via a namespace (and not attached):</span></span>\n<span><span class=\"co\">##  [1] bitops_1.0-7            gridExtra_2.3           rlang_1.1.3            </span></span>\n<span><span class=\"co\">##  [4] magrittr_2.0.3          clue_0.3-65             GetoptLong_1.0.5       </span></span>\n<span><span class=\"co\">##  [7] compiler_4.3.3          png_0.1-8               systemfonts_1.0.6      </span></span>\n<span><span class=\"co\">## [10] vctrs_0.6.5             reshape2_1.4.4          combinat_0.0-8         </span></span>\n<span><span class=\"co\">## [13] stringr_1.5.1           shape_1.4.6.1           pkgconfig_2.0.3        </span></span>\n<span><span class=\"co\">## [16] crayon_1.5.2            fastmap_1.1.1           magick_2.8.2           </span></span>\n<span><span class=\"co\">## [19] XVector_0.42.0          labeling_0.4.3          utf8_1.2.4             </span></span>\n<span><span class=\"co\">## [22] rmarkdown_2.25          ragg_1.3.0              purrr_1.0.2            </span></span>\n<span><span class=\"co\">## [25] xfun_0.41               WriteXLS_6.5.0          zlibbioc_1.48.2        </span></span>\n<span><span class=\"co\">## [28] cachem_1.0.8            jsonlite_1.8.8          highr_0.10             </span></span>\n<span><span class=\"co\">## [31] DelayedArray_0.28.0     cluster_2.1.6           irlba_2.3.5.1          </span></span>\n<span><span class=\"co\">## [34] parallel_4.3.3          R6_2.5.1                bslib_0.6.1            </span></span>\n<span><span class=\"co\">## [37] stringi_1.8.3           RColorBrewer_1.1-3      MCMCprecision_0.4.0    </span></span>\n<span><span class=\"co\">## [40] jquerylib_0.1.4         Rcpp_1.0.12             bookdown_0.37          </span></span>\n<span><span class=\"co\">## [43] iterators_1.0.14        knitr_1.45              FNN_1.1.4              </span></span>\n<span><span class=\"co\">## [46] tidyselect_1.2.0        rstudioapi_0.15.0       abind_1.4-5            </span></span>\n<span><span class=\"co\">## [49] yaml_2.3.8              enrichR_3.2             doParallel_1.0.17      </span></span>\n<span><span class=\"co\">## [52] codetools_0.2-19        curl_5.2.1              lattice_0.22-5         </span></span>\n<span><span class=\"co\">## [55] tibble_3.2.1            plyr_1.8.9              withr_3.0.0            </span></span>\n<span><span class=\"co\">## [58] evaluate_0.23           Rtsne_0.17              desc_1.4.3             </span></span>\n<span><span class=\"co\">## [61] circlize_0.4.16         RcppEigen_0.3.4.0.0     pillar_1.9.0           </span></span>\n<span><span class=\"co\">## [64] BiocManager_1.30.22     foreach_1.5.2           generics_0.1.3         </span></span>\n<span><span class=\"co\">## [67] RCurl_1.98-1.14         ggplot2_3.5.0           munsell_0.5.1          </span></span>\n<span><span class=\"co\">## [70] scales_1.3.0            glue_1.7.0              tools_4.3.3            </span></span>\n<span><span class=\"co\">## [73] data.table_1.15.4       fs_1.6.3                Cairo_1.6-2            </span></span>\n<span><span class=\"co\">## [76] grid_4.3.3              colorspace_2.1-0        GenomeInfoDbData_1.2.11</span></span>\n<span><span class=\"co\">## [79] cli_3.6.2               textshaping_0.3.7       fansi_1.0.6            </span></span>\n<span><span class=\"co\">## [82] S4Arrays_1.2.1          ComplexHeatmap_2.18.0   dplyr_1.1.4            </span></span>\n<span><span class=\"co\">## [85] uwot_0.1.16             gtable_0.3.4            sass_0.4.8             </span></span>\n<span><span class=\"co\">## [88] digest_0.6.35           SparseArray_1.2.4       ggrepel_0.9.5          </span></span>\n<span><span class=\"co\">## [91] rjson_0.2.21            farver_2.1.1            memoise_2.0.1          </span></span>\n<span><span class=\"co\">## [94] htmltools_0.5.7         pkgdown_2.0.7           lifecycle_1.0.4        </span></span>\n<span><span class=\"co\">## [97] httr_1.4.7              GlobalOptions_0.1.2</span></span></code></pre>\n</div>\n  </div>\n\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n\n        <nav id=\"toc\" data-toggle=\"toc\"><h2 data-toc-skip>Contents</h2>\n    </nav>\n</div>\n\n</div>\n\n\n\n      <footer><div class=\"copyright\">\n  <p></p>\n<p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p>\n<p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer>\n</div>\n\n  \n\n\n  \n\n  </body>\n</html>\n"
  },
  {
    "path": "docs/articles/celda_files/accessible-code-block-0.0.1/empty-anchor.js",
    "content": "// Hide empty <a> tag within highlighted CodeBlock for screen reader accessibility (see https://github.com/jgm/pandoc/issues/6352#issuecomment-626106786) -->\n// v0.0.1\n// Written by JooYoung Seo (jooyoung@psu.edu) and Atsushi Yasumoto on June 1st, 2020.\n\ndocument.addEventListener('DOMContentLoaded', function() {\n  const codeList = document.getElementsByClassName(\"sourceCode\");\n  for (var i = 0; i < codeList.length; i++) {\n    var linkList = codeList[i].getElementsByTagName('a');\n    for (var j = 0; j < linkList.length; j++) {\n      if (linkList[j].innerHTML === \"\") {\n        linkList[j].setAttribute('aria-hidden', 'true');\n      }\n    }\n  }\n});\n"
  },
  {
    "path": "docs/articles/celda_files/header-attrs-2.7/header-attrs.js",
    "content": "// Pandoc 2.9 adds attributes on both header and div. We remove the former (to\n// be compatible with the behavior of Pandoc < 2.8).\ndocument.addEventListener('DOMContentLoaded', function(e) {\n  var hs = document.querySelectorAll(\"div.section[class*='level'] > :first-child\");\n  var i, h, a;\n  for (i = 0; i < hs.length; i++) {\n    h = hs[i];\n    if (!/^h[1-6]$/i.test(h.tagName)) continue;  // it should be a header h1-h6\n    a = h.attributes;\n    while (a.length > 0) h.removeAttribute(a[0].name);\n  }\n});\n"
  },
  {
    "path": "docs/articles/celda_pbmc3k.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<meta charset=\"utf-8\">\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Celda - Analysis of PBMC3K • celda</title>\n<!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\">\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\">\n<script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\">\n<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\">\n<!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\">\n<script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Celda - Analysis of PBMC3K\">\n<meta property=\"og:description\" content=\"celda\">\n<!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]-->\n</head>\n<body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-article\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\">\n<li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\">\n<li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul>\n</li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul>\n<ul class=\"nav navbar-nav navbar-right\">\n<li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul>\n</div>\n<!--/.nav-collapse -->\n  </div>\n<!--/.container -->\n</div>\n<!--/.navbar -->\n\n      \n\n      </header><script src=\"celda_pbmc3k_files/kePrint-0.0.1/kePrint.js\"></script><link href=\"celda_pbmc3k_files/lightable-0.0.1/lightable.css\" rel=\"stylesheet\">\n<div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header toc-ignore\">\n      <h1 data-toc-skip>Celda - Analysis of PBMC3K</h1>\n                        <h4 data-toc-skip class=\"author\">Joshua\nCampbell, Zhe Wang</h4>\n            \n            <h4 data-toc-skip class=\"date\">Compiled April 02, 2024</h4>\n      \n      <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/vignettes/articles/celda_pbmc3k.Rmd\" class=\"external-link\"><code>vignettes/articles/celda_pbmc3k.Rmd</code></a></small>\n      <div class=\"hidden name\"><code>celda_pbmc3k.Rmd</code></div>\n\n    </div>\n\n    \n    \n<div class=\"section level2\">\n<h2 id=\"introduction\">Introduction<a class=\"anchor\" aria-label=\"anchor\" href=\"#introduction\"></a>\n</h2>\n<p>Celda is a Bayesian hierarchical model that can perform bi-clustering\nof features into modules and observations into subpopulations. In this\ntutorial, we will apply Celda to a real-world single-cell RNA sequencing\n(scRNA-seq) dataset of 2,700 Peripheral Blood Mononuclear Cells (PBMCs)\ncollected from a healthy donor. This dataset (PBMC3K) is available from\n10X Genomics and can be found on the <a href=\"https://support.10xgenomics.com/single-cell-gene-expression/datasets/1.1.0/pbmc3k\" target=\"_blank\" class=\"external-link\">10X website</a>.</p>\n<p>The <code>celda</code> package uses the <a href=\"https://bioconductor.org/packages/release/bioc/html/SingleCellExperiment.html\" target=\"_blank\" class=\"external-link\">SingleCellExperiment</a> (SCE) object for management of\nexpression matrices, feature/cell annotation data, and metadata. All of\nthe functions have an SCE object as the first input parameter. The\nfunctions operate on a matrix stored in the <code>assay</code> slot of\nthe SCE object. The parameter <code>useAssay</code> can be used to\nspecify which matrix to use (the default is <code>\"counts\"</code>).\nMatrices can be of class <code>matrix</code> or <code>dgCMatrix</code>\nfrom the <a href=\"https://cran.r-project.org/web/packages/Matrix/index.html\" class=\"external-link\">Matrix</a>\npackage. While the primary clustering is performed with functions from\nthe celda package, the <a href=\"https://bioconductor.org/packages/release/bioc/html/singleCellTK.html\" class=\"external-link\">singleCellTK</a>\npackage is used for some other tasks such as importing data, quality\ncontrol, and marker identification with differential expression.</p>\n</div>\n<div class=\"section level2\">\n<h2 id=\"importing-data\">Importing data<a class=\"anchor\" aria-label=\"anchor\" href=\"#importing-data\"></a>\n</h2>\n<p>The PBMC3K data can be easily loaded via the Bioconductor package <a href=\"https://bioconductor.org/packages/release/data/experiment/html/TENxPBMCData.html\" target=\"_blank\" class=\"external-link\">TENxPBMCData</a>. <code>TENxPBMCData</code> is an\nexperiment package that provides resources for various PBMC datasets\ngenerated by 10X Genomics. When using this package, the column names of\nreturned SCE object are <code>NULL</code> by default. For this example,\nwe paste together the name of the sample with the cell barcode to\ngenerate column names for the SCE object. Additionally, the count matrix\nwithin <code>sce</code> object is converted from a\n<code>DelayedMatrix</code> object to a sparse matrix\n<code>dgCMatrix</code> object.</p>\n<div class=\"sourceCode\" id=\"cb1\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\">TENxPBMCData</span><span class=\"op\">)</span></span>\n<span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/TENxPBMCData/man/TENxPBMCData.html\" class=\"external-link\">TENxPBMCData</a></span><span class=\"op\">(</span><span class=\"st\">\"pbmc3k\"</span><span class=\"op\">)</span></span>\n<span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/colnames.html\" class=\"external-link\">colnames</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/paste.html\" class=\"external-link\">paste0</a></span><span class=\"op\">(</span><span class=\"st\">\"pbmc3k_\"</span>, <span class=\"fu\"><a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">colData</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span><span class=\"op\">$</span><span class=\"va\">Sequence</span><span class=\"op\">)</span></span>\n<span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/BiocGenerics/man/dge.html\" class=\"external-link\">counts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">as</span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/BiocGenerics/man/dge.html\" class=\"external-link\">counts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span>, <span class=\"st\">\"dgCMatrix\"</span><span class=\"op\">)</span></span></code></pre></div>\n<p>If you have the <a href=\"https://bioconductor.org/packages/release/bioc/html/singleCellTK.html\" target=\"_blank\" class=\"external-link\">singleCellTK</a> package installed, then this dataset\ncan be imported and converted with a single command:</p>\n<div class=\"sourceCode\" id=\"cb2\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://www.camplab.net/sctk/\" class=\"external-link\">singleCellTK</a></span><span class=\"op\">)</span></span>\n<span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/singleCellTK/man/importExampleData.html\" class=\"external-link\">importExampleData</a></span><span class=\"op\">(</span><span class=\"st\">\"pbmc3k\"</span><span class=\"op\">)</span></span></code></pre></div>\n<p>To get your own data into a <code>SingleCellExperiment</code> object,\nthe <code>singleCellTK</code> package has several importing functions\nfor different preprocessing tools including CellRanger, STARsolo,\nBUStools, Optimus, DropEST, SEQC, and Alevin/Salmon. For example, the\nfollowing code can be used as a template to read in multiple samples\nprocessed with CellRanger:</p>\n<div class=\"sourceCode\" id=\"cb3\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://www.camplab.net/sctk/\" class=\"external-link\">singleCellTK</a></span><span class=\"op\">)</span></span>\n<span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/singleCellTK/man/importCellRanger.html\" class=\"external-link\">importCellRanger</a></span><span class=\"op\">(</span>sampleDirs <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"path/to/sample1/\"</span>, <span class=\"st\">\"path/to/sample2/\"</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n<p><strong>Note:</strong> As a reminder, you can view the assays, column\nannotation, and row annotation stored in the SCE with the commands\n<code>assays(sce)</code>, <code>colData(sce)</code>, and\n<code>rowData(sce)</code>, respectively.</p>\n<p>Finally, we set the <code>rownames</code> of the SCE to the gene\nsymbol:</p>\n<div class=\"sourceCode\" id=\"cb4\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/colnames.html\" class=\"external-link\">rownames</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">rowData</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span><span class=\"op\">$</span><span class=\"va\">Symbol_TENx</span></span></code></pre></div>\n</div>\n<div class=\"section level2\">\n<h2 id=\"quality-control\">Quality Control<a class=\"anchor\" aria-label=\"anchor\" href=\"#quality-control\"></a>\n</h2>\n<p>Quality control and filtering of cells is often needed before\ndown-stream analyses such as dimensionality reduction and clustering.\nTypical filtering procedures include exclusion of poor quality cells\nwith low numbers of counts/UMIs, estimation and removal of ambient RNA,\nand identification of potential doublet/multiplets. Many tools and\npackages are available to perform these operations and users are free to\napply their tool(s) of choice as the celda clustering functions will\nwork with any matrix stored in an SCE object. The celda package does\ncontain a Bayesian method called <a href=\"https://doi.org/10.1186/s13059-020-1950-6\" target=\"_blank\" class=\"external-link\">decontX</a> to estimate and remove transcript\ncontamination in individual cells in a scRNA-seq dataset.</p>\n<p>To perform QC, we suggest using the <code>runCellQC</code> function\nin <code>singleCellTK</code> package. This is a wrapper for several\nmethods for calculation of QC metrics, doublet detection, and estimation\nof ambient RNA (including decontX). Below is a quick example of how to\nperform standard QC before applying celda. If you have another preferred\napproach or your data has already been QC’ed, you can move to <a href=\"#featureselection\">Feature selection</a> section. For this\ntutorial, we will only run one doublet detection algorithm and one\ndecontamination algorithms. For a full list of algorithms that this\nfunction runs by default, see <code><a href=\"https://rdrr.io/pkg/singleCellTK/man/runCellQC.html\" class=\"external-link\">?runCellQC</a></code>. We will also\nquantify the percentage of mitochondrial genes in each cell as this is\noften used as a measure of cell viability.</p>\n<div class=\"sourceCode\" id=\"cb5\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://www.camplab.net/sctk/\" class=\"external-link\">singleCellTK</a></span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># Get list of mitochondrial genes</span></span>\n<span><span class=\"va\">mito.genes</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/grep.html\" class=\"external-link\">grep</a></span><span class=\"op\">(</span><span class=\"st\">\"^MT-\"</span>, <span class=\"fu\"><a href=\"https://rdrr.io/r/base/colnames.html\" class=\"external-link\">rownames</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span>, value <span class=\"op\">=</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># Run QC</span></span>\n<span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/singleCellTK/man/runCellQC.html\" class=\"external-link\">runCellQC</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, sample <span class=\"op\">=</span> <span class=\"cn\">NULL</span>, algorithms <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"QCMetrics\"</span>, <span class=\"st\">\"scDblFinder\"</span>, <span class=\"st\">\"decontX\"</span><span class=\"op\">)</span>, geneSetList <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>mito<span class=\"op\">=</span><span class=\"va\">mito.genes</span><span class=\"op\">)</span>, geneSetListLocation <span class=\"op\">=</span> <span class=\"st\">\"rownames\"</span><span class=\"op\">)</span></span></code></pre></div>\n<p><strong>Note:</strong> If you have cells from multiple samples stored\nin the SCE object, make sure to supply the <code>sample</code> parameter\nas the QC tools need to be applied to cells from each sample\nindividually.</p>\n<p>Individual sets of QC metrics can be plotted with specific functions.\nFor example to plot distributions of total numbers of UMIs derived from\n<code>runPerCellQC</code>, doublet scores from\n<code>runScDblFinder</code>, and contamination scores from\n<code>runDecontX</code> (all of which were run by the\n<code>runCellQC</code> function), the following plotting functions can\nbe used:</p>\n<div class=\"sourceCode\" id=\"cb6\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/singleCellTK/man/plotRunPerCellQCResults.html\" class=\"external-link\">plotRunPerCellQCResults</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/sctk_qc_plot-1.png\" width=\"700\"></p>\n<div class=\"sourceCode\" id=\"cb7\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/singleCellTK/man/plotScDblFinderResults.html\" class=\"external-link\">plotScDblFinderResults</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, reducedDimName <span class=\"op\">=</span> <span class=\"st\">\"decontX_UMAP\"</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/sctk_qc_plot-2.png\" width=\"700\"></p>\n<div class=\"sourceCode\" id=\"cb8\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/singleCellTK/man/plotDecontXResults.html\" class=\"external-link\">plotDecontXResults</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, reducedDimName <span class=\"op\">=</span> <span class=\"st\">\"decontX_UMAP\"</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/sctk_qc_plot-3.png\" width=\"700\"></p>\n<p>An comprehensive HTML report can be generated to visualize and\nexplore the QC metrics in greater detail:</p>\n<div class=\"sourceCode\" id=\"cb9\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/singleCellTK/man/reportCellQC.html\" class=\"external-link\">reportCellQC</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span></span></code></pre></div>\n<p>After examining the distributions of various QC metrics, poor quality\ncells will need to be removed. Typically, thresholds for QC metrics\nshould exclude cells that are outliers of the distribution (i.e. long\ntails in the violin or density plots). Cells can be removed using the\n<code>subsetSCECols</code> function. Metrics stored in the\n<code>colData</code> of the SCE object can be filtered using the\n<code>colData</code> parameter. Here we will limit to cells with at\nleast 600 counts and 300 genes detected:</p>\n<div class=\"sourceCode\" id=\"cb10\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"co\"># Filter SCE</span></span>\n<span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/singleCellTK/man/subsetSCECols.html\" class=\"external-link\">subsetSCECols</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, colData <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"total &gt; 600\"</span>, <span class=\"st\">\"detected &gt; 300\"</span><span class=\"op\">)</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># See number of cells after filtering</span></span>\n<span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/nrow.html\" class=\"external-link\">ncol</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span></span></code></pre></div>\n<pre><code><span><span class=\"co\">## [1] 2675</span></span></code></pre>\n<p>Other common metrics to filter on include\n<code>subsets_mito_percent</code> for removal of cells with high\nmitochondrial percentage, <code>decontX_contamination</code> for removal\nof cells with higher levels of contamination from ambient RNA,\n<code>scDblFinder_class</code> to remove doublets (or calls from any of\nthe other doublet detection algorithms). See the\n<code>singleCellTK</code> <a href=\"sctk.camplab.net\">documentation</a>\nFor more information on performing comprehensive QC and filtering.</p>\n</div>\n<div class=\"section level2\">\n<h2 id=\"featureselection\">Feature selection<a class=\"anchor\" aria-label=\"anchor\" href=\"#featureselection\"></a>\n</h2>\n<p>In general, removing features with low numbers of counts across all\ncells is recommended to reduce computational run time. A simple\nselection can be performed by removing features with a minimum number of\ncounts in a minimum number of cells using the\n<code>selectFeatures</code> function:</p>\n<div class=\"sourceCode\" id=\"cb12\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"co\"># Select features with at least 3 counts in at least 3 cells</span></span>\n<span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\">celda</span><span class=\"op\">)</span></span>\n<span><span class=\"va\">useAssay</span> <span class=\"op\">&lt;-</span> <span class=\"st\">\"counts\"</span></span>\n<span><span class=\"va\">altExpName</span> <span class=\"op\">&lt;-</span> <span class=\"st\">\"featureSubset\"</span></span>\n<span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/selectFeatures.html\">selectFeatures</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, minCount <span class=\"op\">=</span> <span class=\"fl\">3</span>, minCell <span class=\"op\">=</span> <span class=\"fl\">3</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># See number of features after filtering</span></span>\n<span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/nrow.html\" class=\"external-link\">nrow</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, <span class=\"va\">altExpName</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n<pre><code><span><span class=\"co\">## [1] 2639</span></span></code></pre>\n<p>The <code>useAssay</code> parameter is used to denote which\nassay/matrix within the SCE to use for filtering. The default raw counts\nmatrix is traditionally stored in the <code>\"counts\"</code> assay. If\n<code>decontX</code> was previously run during QC, then the\ndecontaminated counts can be used by setting this parameter to\n<code>\"decontXcounts\"</code>. We will save this parameter in a variable\ncalled <code>useAssay</code> which will be used as input in several\ndownstream functions.</p>\n<p><strong>Note:</strong> The subsetted matrix is stored in the\n“alternative experiment” slot (<code>altExp</code>) within the SCE. This\nallows for a matrix with a different number of rows to be stored within\nthe same SCE object (rather than creating two SCE objects). The celda\nfunctions described in the next several sections operate on a matrix\nstored in the <code>altExp</code> slot. The default name given to the\nalternative experiment and used in all downstream celda functions is\n<code>\"featureSubset\"</code>. If the <code>altExpName</code> parameter\nis changed here, then it will need to be supplied to downstream plotting\nfunctions as well. The list of alternative experiments in an SCE can be\nview with <code>altExpNames(sce)</code>. If you have already have an SCE\nwith selected features or do not want to perform feature selection, then\nyou need to set the alternative experiment directly with a command like\n<code>altExp(sce, \"featureSubset\") &lt;- assay(sce, \"counts\")</code>. In\nthe future, this will be updated to be more simple by utilizing the\n<code>ExperimentSubset</code> package.</p>\n<p>If the number of features is still relatively large (e.g. &gt;5000),\nan alternative approach is to select highly variable features that can\nbe used in the downstream clustering. The advantage of this approach is\nthat it can greatly speed up celda and can improve with module detection\namong highly variable features with overall lower expression. The\ndisadvantage of this approach is that features that do not fall into the\nhighly variable group will not be clustered into modules. The celda\npackage does not include methods for selection of highly variable genes\n(HVGs). However, the <code>singleCellTK</code> provides wrappers for\nmethods used in <a href=\"https://doi.org/10.1016/j.cell.2019.05.031\" target=\"_blank\" class=\"external-link\">Seurat</a> and <a href=\"https://bioconductor.org/packages/release/bioc/html/scran.html\" class=\"external-link\">Scran</a>.\nWe recommend keeping at least 2,000-5,000 HVGs for clustering. Here is\nsome example code of how to select the top 5,000 most variable genes and\nstore it back in the SCE as an <code>altExp</code>:</p>\n<div class=\"sourceCode\" id=\"cb14\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://www.camplab.net/sctk/\" class=\"external-link\">singleCellTK</a></span><span class=\"op\">)</span></span>\n<span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">seuratFindHVG</span><span class=\"op\">(</span><span class=\"va\">sce</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, hvgMethod <span class=\"op\">=</span> <span class=\"st\">\"vst\"</span><span class=\"op\">)</span></span>\n<span><span class=\"va\">g</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/singleCellTK/man/getTopHVG.html\" class=\"external-link\">getTopHVG</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, method <span class=\"op\">=</span> <span class=\"st\">\"vst\"</span>, n <span class=\"op\">=</span> <span class=\"fl\">5000</span><span class=\"op\">)</span></span>\n<span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, <span class=\"va\">altExpName</span><span class=\"op\">)</span> <span class=\"op\">&lt;-</span> <span class=\"va\">sce</span><span class=\"op\">[</span><span class=\"va\">g</span>, <span class=\"op\">]</span></span></code></pre></div>\n<p>For the rest of the analysis with the PBMC3K data, we will use the\nfirst approach where features with at least 3 counts in 3 cells were\nincluded.</p>\n</div>\n<div class=\"section level2\">\n<h2 id=\"analysis-with-celda\">Analysis with Celda<a class=\"anchor\" aria-label=\"anchor\" href=\"#analysis-with-celda\"></a>\n</h2>\n<div class=\"section level3\">\n<h3 id=\"bi-clustering-with-known-numbers-of-clusters\">Bi-clustering with known numbers of clusters<a class=\"anchor\" aria-label=\"anchor\" href=\"#bi-clustering-with-known-numbers-of-clusters\"></a>\n</h3>\n<p>As mentioned earlier, celda is discrete Bayesian model that is able\nto simultaneously bi-cluster features into modules and cells into cell\nclusters. The primary bi-clustering model can be accessed with the\nfunction <code>celda_CG</code>. This function operates on a matrix\nstored as an alternative experiment in the <code>altExp</code> slot. If\nyou did not perform feature selection as recommended in the previous\nsection and your matrix of interest is not currently located in an\n<code>altExp</code> slot, the following code can be used to copy a\nmatrix in the main assay slot to the <code>altExp</code> slot:</p>\n<div class=\"sourceCode\" id=\"cb15\"><pre class=\"sourceCode r\"><code class=\"sourceCode r\"><span id=\"cb15-1\"><a href=\"#cb15-1\" tabindex=\"-1\"></a>useAssay <span class=\"ot\">&lt;-</span> <span class=\"st\">\"counts\"</span></span>\n<span id=\"cb15-2\"><a href=\"#cb15-2\" tabindex=\"-1\"></a>altExpName <span class=\"ot\">&lt;-</span> <span class=\"st\">\"featureSubset\"</span></span>\n<span id=\"cb15-3\"><a href=\"#cb15-3\" tabindex=\"-1\"></a><span class=\"fu\">altExp</span>(sce, altExpName) <span class=\"ot\">&lt;-</span> <span class=\"fu\">assay</span>(sce, useAssay)<span class=\"st\">`</span><span class=\"at\">. </span></span></code></pre></div>\n<p>The two major adjustable parameters in this model are <code>L</code>,\nthe number of modules, and <code>K</code>, the number of cell\npopulations. The following code bi-clusters the PBMC3K dataset into 100\nmodules and 15 cell populations:</p>\n<div class=\"sourceCode\" id=\"cb16\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/celda_CG.html\">celda_CG</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, L <span class=\"op\">=</span> <span class=\"fl\">100</span>, K <span class=\"op\">=</span> <span class=\"fl\">15</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span><span class=\"op\">)</span></span></code></pre></div>\n<p>However, in most cases, the number of feature modules\n(<code>L</code>) and the number of cell clusters (<code>K</code>) are\nnot known beforehand. In the next sections, we outline procedures that\ncan be used suggest reasonable choices for these parameters. If the data\nis clustered with the code above by supplying K and L directly to the\n<code>celda_CG</code> function, then you can skip the next section and\nproceed to <a href=\"#embed\">Creating 2-D embeddings</a>.</p>\n</div>\n<div class=\"section level3\">\n<h3 id=\"finding-the-number-of-modules\">Finding the number of modules<a class=\"anchor\" aria-label=\"anchor\" href=\"#finding-the-number-of-modules\"></a>\n</h3>\n<p>In order to help choose a reasonable solutions for L and K, celda\nprovides step-wise splitting procedures along with measurements of\nperplexity to suggest reasonable choices for <code>L</code> and\n<code>K</code>. First, the function <code>recursiveSplitModule</code>\ncan be used to cluster features into modules for a range of\n<code>L</code>. Within each step, the best split of an existing module\ninto 2 new modules is chosen to create the L-th module. The module\nlabels of the previous model with <span class=\"math inline\">\\(L-1\\)</span> modules are used as the initial\nstarting values in the next model with <span class=\"math inline\">\\(L\\)</span> modules. Note that the initialization\nstep may take longer with larger numbers of cells in the dataset and the\nsplitting procedure will take longer with larger numbers features in the\ndataset. Celda models with a L range between <code>initialL = 10</code>\nand <code>maxL = 150</code> are tested in the example below.</p>\n<div class=\"sourceCode\" id=\"cb17\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">moduleSplit</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/recursiveSplitModule.html\">recursiveSplitModule</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span>, initialL <span class=\"op\">=</span> <span class=\"fl\">10</span>, maxL <span class=\"op\">=</span> <span class=\"fl\">150</span><span class=\"op\">)</span></span></code></pre></div>\n<p>Perplexity has been commonly used in the topic models to measure how\nwell a probabilistic model predicts observed samples (<a href=\"https://dl.acm.org/doi/10.5555/944919.944937\" target=\"_blank\" class=\"external-link\">Blei\net al., 2003</a>). Here, we use perplexity to evaluate the performance\nof individual models by calculating the probability of observing\nexpression counts given an estimated Celda model. Rather than performing\ncross-validation which is computationally expensive, a series of test\nsets are created by sampling the counts from each cell according to a\nmultinomial distribution defined by dividing the counts for each gene in\nthe cell by the total number of counts for that cell. Perplexity is then\ncalculated on each test set and can be visualized using function\n<code>plotGridSearchPerplexity</code>. A lower perplexity indicates a\nbetter model fit.</p>\n<div class=\"sourceCode\" id=\"cb18\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/plotGridSearchPerplexity.html\">plotGridSearchPerplexity</a></span><span class=\"op\">(</span><span class=\"va\">moduleSplit</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span>, sep <span class=\"op\">=</span> <span class=\"fl\">10</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/module_split_perplexity-1.png\" width=\"700\"></p>\n<p>The perplexity alone often does not show a clear elbow or “leveling\noff”. However, the rate of perplexity change (RPC) can be more\ninformative to determine when adding new modules does not add much\nadditional information <a href=\"https://doi.org/10.1186/1471-2105-16-S13-S8\" target=\"_blank\" class=\"external-link\">Zhao\net al., 2015</a>). An RPC closer to zero indicates that the addition of\nnew modules or cell clusters is not substantially decreasing the\nperplexity. The RPC of models can be visualized using function\n<code>plotRPC</code>:</p>\n<div class=\"sourceCode\" id=\"cb19\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/plotRPC.html\">plotRPC</a></span><span class=\"op\">(</span><span class=\"va\">moduleSplit</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/module_split_rpc-1.png\" width=\"700\"></p>\n<p>In this case, we will choose an <code>L</code> of 80 as the RPC curve\ntends to level off at this point:</p>\n<div class=\"sourceCode\" id=\"cb20\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">L</span> <span class=\"op\">&lt;-</span> <span class=\"fl\">80</span></span></code></pre></div>\n<div class=\"line-block\">\n<strong>Note:</strong> Perplexity and RPC are\nmeant to be guides to give a sense of a possible starting point for\n<code>L</code>. However, they may not always give a clear “leveling off”\ndepending of the complexity and quality of the dataset. <strong>Do not\ngive up if the choice of L is unclear or imperfect!</strong> If the\n<code>L</code> to choose is unclear from these, then you can set a\nsomewhat high number (e.g. 75) and move to the next step of selecting\n<code>K</code>. Later on, manual review of modules using functions such\nas <code>moduleHeatmap</code> can give a sense of whether individual\nmodules should be further split up by selecting higher <code>L</code>.\nFor example, you can start exploring the cell populations and modules\nwith <code>L = 75</code>. If some modules need to be further split, you\ncan then try <code>L = 100</code>, <code>L = 125</code>, and so\non.</div>\n</div>\n<div class=\"section level3\">\n<h3 id=\"finding-the-number-of-cell-subpopulations\">Finding the number of cell subpopulations<a class=\"anchor\" aria-label=\"anchor\" href=\"#finding-the-number-of-cell-subpopulations\"></a>\n</h3>\n<p>Now we extract the Celda model of <code>L =</code><span class=\"math inline\">\\(L\\)</span> with function\n<code>subsetCeldaList</code> and run <code>recursiveSplitCell</code> to\nfit models with a range of <code>K</code> between 3 and 25:</p>\n<div class=\"sourceCode\" id=\"cb21\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">temp</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/subsetCeldaList.html\">subsetCeldaList</a></span><span class=\"op\">(</span><span class=\"va\">moduleSplit</span>, <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>L <span class=\"op\">=</span> <span class=\"va\">L</span><span class=\"op\">)</span><span class=\"op\">)</span></span>\n<span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/recursiveSplitCell.html\">recursiveSplitCell</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span>, initialK <span class=\"op\">=</span> <span class=\"fl\">3</span>, maxK <span class=\"op\">=</span> <span class=\"fl\">25</span>, yInit <span class=\"op\">=</span> <span class=\"fu\"><a href=\"../reference/celdaModules.html\">celdaModules</a></span><span class=\"op\">(</span><span class=\"va\">temp</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n<p>The perplexities and RPC of models can be visualized using the same\nfunctions <code>plotGridSearchPerplexity</code> and\n<code>plotRPC</code>.</p>\n<div class=\"sourceCode\" id=\"cb22\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/plotGridSearchPerplexity.html\">plotGridSearchPerplexity</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/cell_split_perplexity-1.png\" width=\"700\"></p>\n<div class=\"sourceCode\" id=\"cb23\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/plotRPC.html\">plotRPC</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, , altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/cell_split_perplexity-2.png\" width=\"700\"></p>\n<p>The perplexity continues to decrease with larger values of\n<code>K</code>. The RPC generally levels off between 13 and 16 and we\nchoose the model with <code>K = 14</code> for downstream analysis. The\nfollow code selects the final <code>celda_CG</code> model with\n<code>L = 80</code> and <code>K = 14</code>:</p>\n<div class=\"sourceCode\" id=\"cb24\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">K</span> <span class=\"op\">&lt;-</span> <span class=\"fl\">14</span></span>\n<span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/subsetCeldaList.html\">subsetCeldaList</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>L <span class=\"op\">=</span> <span class=\"va\">L</span>, K <span class=\"op\">=</span> <span class=\"va\">K</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n<p><strong>Note:</strong> Similar to choosing <code>L</code>, you can\nguess an initial value of <code>K</code> based off of the perplexity and\nRPC plots and then move to the downstream exploratory analyses described\nin the next several sections. After reviewing the cell clusters on 2-D\nembeddings and module heatmaps, you may have to come back to tweak the\nchoice of <code>K</code> until you have something that captures the\ncellular heterogeneity within the data without “over-clustering” cells\ninto too many subpopulations. This may be an iterative procedure of\ngoing back-and-forth between choices of <code>K</code> and plotting the\nresults. So do not let imperfect perplexity/PRC plots prevent you from\nmoving on to the rest of the analysis. Often times, using an initial\nguess for <code>K</code> will allow you to move on in the analysis to\nget a sense of the major sources of biological heterogeneity present in\nthe data.</p>\n</div>\n</div>\n<div class=\"section level2\">\n<h2 id=\"exploring-cell-populations\">Exploring cell populations<a class=\"anchor\" aria-label=\"anchor\" href=\"#exploring-cell-populations\"></a>\n</h2>\n<div class=\"section level3\">\n<h3 id=\"embed\">Creating 2-D embeddings<a class=\"anchor\" aria-label=\"anchor\" href=\"#embed\"></a>\n</h3>\n<p>After selecting a celda model with specific values of <code>L</code>\nand <code>K</code>, we can then perform additional exploratory and\ndownstream analyses to understand the biology of the transcriptional\nmodules and cell populations. We can start by generating a dimension\nreduction plot with the Uniform Manifold Approximation and Projection\n(UMAP) method to visualize the relationships between the cells in a 2-D\nembedding. This can be done with function <code>celdaUmap</code>.</p>\n<div class=\"sourceCode\" id=\"cb25\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/celdaUmap.html\">celdaUmap</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span><span class=\"op\">)</span></span></code></pre></div>\n<p>Alternatively, a t-distributed stochastic neighbor embedding (t-SNE)\ncan be generated using function <code>celdaTsne</code>. The UMAP and\nt-SNE plots generated by <code>celdaUmap</code> and\n<code>celdaTsne</code> are computed based on the module probabilities\n(analogous to using PCs from PCA). The calculated dimension reduction\ncoordinates for the cells are stored under the <code>reducedDim</code>\nslot of the <code>altExp</code> slot in the original SCE object. The\nfollow command lists the names of the dimensionality reductions that can\nbe used in downstream plotting functions in the next few sections:</p>\n<div class=\"sourceCode\" id=\"cb26\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/reducedDims.html\" class=\"external-link\">reducedDimNames</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, <span class=\"va\">altExpName</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n<pre><code><span><span class=\"co\">## [1] \"decontX_UMAP\" \"celda_UMAP\"</span></span></code></pre>\n</div>\n<div class=\"section level3\">\n<h3 id=\"plotting-cell-population-cluster-labels\">Plotting cell population cluster labels<a class=\"anchor\" aria-label=\"anchor\" href=\"#plotting-cell-population-cluster-labels\"></a>\n</h3>\n<p>The function <code>plotDimReduceCluster</code> can be used to plot\nthe cluster labels for cell populations identified by celda on the\nUMAP:</p>\n<div class=\"sourceCode\" id=\"cb28\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/plotDimReduceCluster.html\">plotDimReduceCluster</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, reducedDimName <span class=\"op\">=</span> <span class=\"st\">\"celda_UMAP\"</span>, labelClusters <span class=\"op\">=</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/cell_clusters-1.png\" width=\"700\"></p>\n</div>\n<div class=\"section level3\">\n<h3 id=\"plotting-expression-of-specific-features\">Plotting expression of specific features<a class=\"anchor\" aria-label=\"anchor\" href=\"#plotting-expression-of-specific-features\"></a>\n</h3>\n<p>Usually, biological features of some cell populations are known <em>a\npriori</em> and can be identified with known marker genes. The\nexpression of selected marker genes can be plotted on the UMAP with the\nfunction <code>plotDimReduceFeature</code>.</p>\n<div class=\"sourceCode\" id=\"cb29\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">markers</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"CD3D\"</span>, <span class=\"st\">\"IL7R\"</span>, <span class=\"st\">\"CD4\"</span>, <span class=\"st\">\"CD8B\"</span>, <span class=\"st\">\"CD19\"</span>, <span class=\"st\">\"FCGR3A\"</span>, <span class=\"st\">\"CD14\"</span>, <span class=\"st\">\"FCER1A\"</span>, <span class=\"st\">\"PF4\"</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"fu\"><a href=\"../reference/plotDimReduceFeature.html\">plotDimReduceFeature</a></span><span class=\"op\">(</span>x <span class=\"op\">=</span> <span class=\"va\">sce</span>, features <span class=\"op\">=</span> <span class=\"va\">markers</span>, reducedDimName <span class=\"op\">=</span> <span class=\"st\">\"celda_UMAP\"</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span>, normalize <span class=\"op\">=</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/cell_marker_umap-1.png\" width=\"700\"></p>\n<p>The parameter <code>displayName</code> can be used to switch between\nIDs stored in the <code>rownames</code> of the SCE and columns of the\n<code>rowData</code> of the SCE. If the assay denoted by\n<code>useAssay</code> is a raw counts matrix, then setting\n<code>normalize = TRUE</code> is recommended (otherwise the z-score of\nthe raw counts will be plotted). When set to <code>TRUE</code>, each\ncount will be normalized by dividing by the total number of counts in\neach cell. An alternative approach is to perform normalization with\nanother method and then point to the normalized assay with the\n<code>useAssay</code> parameter. For example, normalization can be\nperformed with the scater package:</p>\n<div class=\"sourceCode\" id=\"cb30\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"http://bioconductor.org/packages/scater/\" class=\"external-link\">scater</a></span><span class=\"op\">)</span></span>\n<span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/scuttle/man/logNormCounts.html\" class=\"external-link\">logNormCounts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, exprs_values <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, name <span class=\"op\">=</span> <span class=\"st\">\"logcounts\"</span><span class=\"op\">)</span></span>\n<span><span class=\"fu\"><a href=\"../reference/plotDimReduceFeature.html\">plotDimReduceFeature</a></span><span class=\"op\">(</span>x <span class=\"op\">=</span> <span class=\"va\">sce</span>, features <span class=\"op\">=</span> <span class=\"va\">markers</span>, reducedDimName <span class=\"op\">=</span> <span class=\"st\">\"celda_UMAP\"</span>, useAssay <span class=\"op\">=</span> <span class=\"st\">\"logcounts\"</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span>, normalize <span class=\"op\">=</span> <span class=\"cn\">FALSE</span><span class=\"op\">)</span></span></code></pre></div>\n<p>This second approach may be faster if plotting a lot of marker genes\nor if the dataset is relatively large.</p>\n</div>\n<div class=\"section level3\">\n<h3 id=\"plotting-cell-subpopulations-with-labels\">Plotting cell subpopulations with labels<a class=\"anchor\" aria-label=\"anchor\" href=\"#plotting-cell-subpopulations-with-labels\"></a>\n</h3>\n<p>Once we identify of various cell subpopulations using the known\nmarker genes, these custom labels can be added on the UMAP colored by\ncluster:</p>\n<div class=\"sourceCode\" id=\"cb31\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">g</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/plotDimReduceCluster.html\">plotDimReduceCluster</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, reducedDimName <span class=\"op\">=</span> <span class=\"st\">\"celda_UMAP\"</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span>, labelClusters <span class=\"op\">=</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"va\">labels</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"1: Megakaryocytes\"</span>,</span>\n<span>    <span class=\"st\">\"2: CD14+ Monocytes 1\"</span>,</span>\n<span>    <span class=\"st\">\"3: CD14+ Monocytes 2\"</span>,</span>\n<span>    <span class=\"st\">\"4: FCGR3A (CD16+) Monocytes\"</span>,</span>\n<span>    <span class=\"st\">\"5: CD14+ Monocytes 3\"</span>,</span>\n<span>    <span class=\"st\">\"6: CD8+ Cytotoxic T-cells\"</span>,</span>\n<span>    <span class=\"st\">\"7: CD4+ T-cells\"</span>,</span>\n<span>    <span class=\"st\">\"8: CD8+ Cytotoxic T-cells\"</span>,</span>\n<span>    <span class=\"st\">\"9: B-cells\"</span>,</span>\n<span>    <span class=\"st\">\"10: Naive CD8+ T-cells\"</span>,</span>\n<span>    <span class=\"st\">\"11: Naive CD4+ T-cells\"</span>,</span>\n<span>    <span class=\"st\">\"12: NK-cells\"</span>,</span>\n<span>    <span class=\"st\">\"13: Unknown T-cells\"</span>,</span>\n<span>    <span class=\"st\">\"14: Dendritic cells\"</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://ggplot2.tidyverse.org\" class=\"external-link\">ggplot2</a></span><span class=\"op\">)</span></span>\n<span><span class=\"va\">g</span> <span class=\"op\">&lt;-</span> <span class=\"va\">g</span> <span class=\"op\">+</span> <span class=\"fu\"><a href=\"https://ggplot2.tidyverse.org/reference/scale_manual.html\" class=\"external-link\">scale_color_manual</a></span><span class=\"op\">(</span>labels <span class=\"op\">=</span> <span class=\"va\">labels</span>,</span>\n<span>    values <span class=\"op\">=</span> <span class=\"fu\"><a href=\"../reference/distinctColors.html\">distinctColors</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/length.html\" class=\"external-link\">length</a></span><span class=\"op\">(</span><span class=\"va\">labels</span><span class=\"op\">)</span><span class=\"op\">)</span><span class=\"op\">)</span></span>\n<span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/print.html\" class=\"external-link\">print</a></span><span class=\"op\">(</span><span class=\"va\">g</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/cell_identities-1.png\" width=\"700\"></p>\n</div>\n</div>\n<div class=\"section level2\">\n<h2 id=\"probmap\">Exploring relationship between modules and cell populations<a class=\"anchor\" aria-label=\"anchor\" href=\"#probmap\"></a>\n</h2>\n<p>Celda has the ability to identify modules of co-expressed features\nand quantify the probability of these modules in each cell population.\nAn overview of the relationships between modules and cell subpopulations\ncan be explored with the function <code>celdaProbabilityMap</code>. The\n“Absolute probability” heatmap on the left shows the proportion of\ncounts in each module for each cell population. The “Absolute\nprobability” map gives insights into the absolute abundance of a module\nwithin a given cell subpopulation. The absolute heatmap can be used to\nexplore which modules are higher than other modules <strong>within a\ncell population</strong>. The “Relative expression” map shows the\nstandardized (z-scored) module probabilities across cell subpopulations.\nThe relative heatmap can be used to explore which modules are relatively\nhigher than other modules <strong>across cell populations</strong>.</p>\n<div class=\"sourceCode\" id=\"cb32\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/celdaProbabilityMap.html\">celdaProbabilityMap</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/celdaProbabilityMap-1.png\" width=\"960\"></p>\n<p>In this plot, we can see a variety of patterns. Modules 15 - 20 are\nhighly expressed across most cell populations indicating that they may\ncontain housekeeping genes (e.g. ribosomal). Other modules are specific\nto a cell population or groups of cell populations. For example, module\n35 is only on in population 1 while module 70 is expressed across\npopulations 2, 3, and to some degree in population 5. The unknown T-cell\npopulation 13 has highly specific levels of modules 30. In the next\nsection, we can look at the genes in these modules to gain insights into\nthe biological properties of each of these cell populations.</p>\n</div>\n<div class=\"section level2\">\n<h2 id=\"exploring-feature-modules\">Exploring feature modules<a class=\"anchor\" aria-label=\"anchor\" href=\"#exploring-feature-modules\"></a>\n</h2>\n<p>The primary advantage of celda over other tools is that it can\ncluster features that are co-expressed across cells into modules. These\nmodules are often more biologically coherent than features correlated\nwith principal components from PCA. Below are several ways in which\nmodules can be explored and visualized.</p>\n<div class=\"section level3\">\n<h3 id=\"table-of-features-in-each-module\">Table of features in each module<a class=\"anchor\" aria-label=\"anchor\" href=\"#table-of-features-in-each-module\"></a>\n</h3>\n<p>The function <code>featureModuleTable</code> can be used to get the\nnames of all features in each module into a <code>data.frame</code>.</p>\n<div class=\"sourceCode\" id=\"cb33\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"co\"># Save to a data.frame</span></span>\n<span><span class=\"va\">ta</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/featureModuleTable.html\">featureModuleTable</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span><span class=\"op\">)</span></span>\n<span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/dim.html\" class=\"external-link\">dim</a></span><span class=\"op\">(</span><span class=\"va\">ta</span><span class=\"op\">)</span></span></code></pre></div>\n<pre><code><span><span class=\"co\">## [1] 154  80</span></span></code></pre>\n<div class=\"sourceCode\" id=\"cb35\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/head.html\" class=\"external-link\">head</a></span><span class=\"op\">(</span><span class=\"va\">ta</span><span class=\"op\">[</span>,<span class=\"st\">\"L70\"</span><span class=\"op\">]</span><span class=\"op\">)</span></span></code></pre></div>\n<pre><code><span><span class=\"co\">## [1] \"S100A9\"   \"S100A8\"   \"S100A12\"  \"RBP7\"     \"FOLR3\"    \"C19orf59\"</span></span></code></pre>\n<p>The parameter <code>displayName</code> can be used to switch between\nIDs stored in the <code>rownames</code> of the SCE and columns of the\n<code>rowData</code> of the SCE. The the <code>outputFile</code>\nparameter is set, the table will be saved to a tab-delimited text file\ninstead of to a <code>data.frame</code>:</p>\n<div class=\"sourceCode\" id=\"cb37\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"co\"># Save to file called \"modules.txt\"</span></span>\n<span><span class=\"fu\"><a href=\"../reference/featureModuleTable.html\">featureModuleTable</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span>, outputFile <span class=\"op\">=</span> <span class=\"st\">\"modules.txt\"</span><span class=\"op\">)</span></span></code></pre></div>\n<p>The modules for this model are shown below:</p>\n<div style=\"border: 1px solid #ddd; padding: 0px; overflow-y: scroll; height:550px; overflow-x: scroll; width:100%; \">\n<table class=\"table table table-striped table-condensed\" style=\"margin-left: auto; margin-right: auto;\">\n<thead><tr>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL1\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL2\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL3\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL4\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL5\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL6\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL7\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL8\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL9\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL10\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL11\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL12\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL13\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL14\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL15\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL16\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL17\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL18\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL19\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL20\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL21\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL22\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL23\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL24\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL25\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL26\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL27\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL28\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL29\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL30\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL31\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL32\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL33\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL34\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL35\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL36\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL37\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL38\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL39\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL40\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL41\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL42\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL43\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL44\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL45\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL46\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL47\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL48\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL49\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL50\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL51\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL52\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL53\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL54\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL55\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL56\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL57\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL58\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL59\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL60\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL61\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL62\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL63\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL64\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL65\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL66\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL67\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL68\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL69\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL70\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL71\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL72\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL73\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL74\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL75\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL76\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL77\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL78\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL79\n</th>\n<th style=\"text-align:left;position: sticky; top:0; background-color: #FFFFFF;\">\nL80\n</th>\n</tr></thead>\n<tbody>\n<tr>\n<td style=\"text-align:left;\">\nCCL3\n</td>\n<td style=\"text-align:left;\">\nGNLY\n</td>\n<td style=\"text-align:left;\">\nCTSW\n</td>\n<td style=\"text-align:left;\">\nNKG7\n</td>\n<td style=\"text-align:left;\">\nRPS19\n</td>\n<td style=\"text-align:left;\">\nMT-CO2\n</td>\n<td style=\"text-align:left;\">\nMT-CO3\n</td>\n<td style=\"text-align:left;\">\nDDX5\n</td>\n<td style=\"text-align:left;\">\nRPL28\n</td>\n<td style=\"text-align:left;\">\nRPL18A\n</td>\n<td style=\"text-align:left;\">\nFOS\n</td>\n<td style=\"text-align:left;\">\nEIF1\n</td>\n<td style=\"text-align:left;\">\nJUNB\n</td>\n<td style=\"text-align:left;\">\nGIMAP7\n</td>\n<td style=\"text-align:left;\">\nRPL13A\n</td>\n<td style=\"text-align:left;\">\nRPS6\n</td>\n<td style=\"text-align:left;\">\nRPS2\n</td>\n<td style=\"text-align:left;\">\nRPL10\n</td>\n<td style=\"text-align:left;\">\nRPL13\n</td>\n<td style=\"text-align:left;\">\nRPS14\n</td>\n<td style=\"text-align:left;\">\nRPSA\n</td>\n<td style=\"text-align:left;\">\nRPS27\n</td>\n<td style=\"text-align:left;\">\nLTB\n</td>\n<td style=\"text-align:left;\">\nPTPRCAP\n</td>\n<td style=\"text-align:left;\">\nMALAT1\n</td>\n<td style=\"text-align:left;\">\nLDHB\n</td>\n<td style=\"text-align:left;\">\nIL32\n</td>\n<td style=\"text-align:left;\">\nCD79B\n</td>\n<td style=\"text-align:left;\">\nCD37\n</td>\n<td style=\"text-align:left;\">\nTUBA1B\n</td>\n<td style=\"text-align:left;\">\nGAPDH\n</td>\n<td style=\"text-align:left;\">\nPPIA\n</td>\n<td style=\"text-align:left;\">\nACTG1\n</td>\n<td style=\"text-align:left;\">\nCCL5\n</td>\n<td style=\"text-align:left;\">\nPPBP\n</td>\n<td style=\"text-align:left;\">\nRGS10\n</td>\n<td style=\"text-align:left;\">\nOAZ1\n</td>\n<td style=\"text-align:left;\">\nTAGLN2\n</td>\n<td style=\"text-align:left;\">\nMT-ND1\n</td>\n<td style=\"text-align:left;\">\nMT-CO1\n</td>\n<td style=\"text-align:left;\">\nARPC3\n</td>\n<td style=\"text-align:left;\">\nSH3BGRL3\n</td>\n<td style=\"text-align:left;\">\nCYBA\n</td>\n<td style=\"text-align:left;\">\nPTMA\n</td>\n<td style=\"text-align:left;\">\nTMSB10\n</td>\n<td style=\"text-align:left;\">\nLAPTM5\n</td>\n<td style=\"text-align:left;\">\nARHGDIB\n</td>\n<td style=\"text-align:left;\">\nHLA-B\n</td>\n<td style=\"text-align:left;\">\nCFL1\n</td>\n<td style=\"text-align:left;\">\nSRGN\n</td>\n<td style=\"text-align:left;\">\nACTB\n</td>\n<td style=\"text-align:left;\">\nTMSB4X\n</td>\n<td style=\"text-align:left;\">\nC9orf142\n</td>\n<td style=\"text-align:left;\">\nANXA1\n</td>\n<td style=\"text-align:left;\">\nUBB\n</td>\n<td style=\"text-align:left;\">\nB2M\n</td>\n<td style=\"text-align:left;\">\nMYL12A\n</td>\n<td style=\"text-align:left;\">\nHLA-A\n</td>\n<td style=\"text-align:left;\">\nFCGR3A\n</td>\n<td style=\"text-align:left;\">\nIFITM2\n</td>\n<td style=\"text-align:left;\">\nFAM26F\n</td>\n<td style=\"text-align:left;\">\nFCER1G\n</td>\n<td style=\"text-align:left;\">\nAIF1\n</td>\n<td style=\"text-align:left;\">\nFTH1\n</td>\n<td style=\"text-align:left;\">\nFCER1A\n</td>\n<td style=\"text-align:left;\">\nHLA-DQA1\n</td>\n<td style=\"text-align:left;\">\nHLA-DPB1\n</td>\n<td style=\"text-align:left;\">\nCD74\n</td>\n<td style=\"text-align:left;\">\nHLA-DRA\n</td>\n<td style=\"text-align:left;\">\nS100A9\n</td>\n<td style=\"text-align:left;\">\nLYZ\n</td>\n<td style=\"text-align:left;\">\nCST3\n</td>\n<td style=\"text-align:left;\">\nVIM\n</td>\n<td style=\"text-align:left;\">\nNEAT1\n</td>\n<td style=\"text-align:left;\">\nS100A4\n</td>\n<td style=\"text-align:left;\">\nGSTP1\n</td>\n<td style=\"text-align:left;\">\nLGALS1\n</td>\n<td style=\"text-align:left;\">\nGABARAP\n</td>\n<td style=\"text-align:left;\">\nTYROBP\n</td>\n<td style=\"text-align:left;\">\nFTL\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\nIGFBP7\n</td>\n<td style=\"text-align:left;\">\nGZMB\n</td>\n<td style=\"text-align:left;\">\nCD247\n</td>\n<td style=\"text-align:left;\">\nGZMA\n</td>\n<td style=\"text-align:left;\">\nNACA\n</td>\n<td style=\"text-align:left;\">\nCD52\n</td>\n<td style=\"text-align:left;\">\nMT-ND4\n</td>\n<td style=\"text-align:left;\">\nTSC22D3\n</td>\n<td style=\"text-align:left;\">\nRPS9\n</td>\n<td style=\"text-align:left;\">\nRPL12\n</td>\n<td style=\"text-align:left;\">\nFXYD5\n</td>\n<td style=\"text-align:left;\">\nH3F3B\n</td>\n<td style=\"text-align:left;\">\nTMEM66\n</td>\n<td style=\"text-align:left;\">\nGIMAP4\n</td>\n<td style=\"text-align:left;\">\nRPS18\n</td>\n<td style=\"text-align:left;\">\nRPS3\n</td>\n<td style=\"text-align:left;\">\nRPL19\n</td>\n<td style=\"text-align:left;\">\nRPL11\n</td>\n<td style=\"text-align:left;\">\nRPL32\n</td>\n<td style=\"text-align:left;\">\nEEF1A1\n</td>\n<td style=\"text-align:left;\">\nJUN\n</td>\n<td style=\"text-align:left;\">\nRPL21\n</td>\n<td style=\"text-align:left;\">\nMYC\n</td>\n<td style=\"text-align:left;\">\nCXCR4\n</td>\n<td style=\"text-align:left;\">\nMYLIP\n</td>\n<td style=\"text-align:left;\">\nIL7R\n</td>\n<td style=\"text-align:left;\">\nCD3D\n</td>\n<td style=\"text-align:left;\">\nCD79A\n</td>\n<td style=\"text-align:left;\">\nSNHG7\n</td>\n<td style=\"text-align:left;\">\nHMGB2\n</td>\n<td style=\"text-align:left;\">\nEIF4A1\n</td>\n<td style=\"text-align:left;\">\nHNRNPA2B1\n</td>\n<td style=\"text-align:left;\">\nCORO1A\n</td>\n<td style=\"text-align:left;\">\nGZMK\n</td>\n<td style=\"text-align:left;\">\nPF4\n</td>\n<td style=\"text-align:left;\">\nTUBA4A\n</td>\n<td style=\"text-align:left;\">\nFKBP1A\n</td>\n<td style=\"text-align:left;\">\nGDI2\n</td>\n<td style=\"text-align:left;\">\nPFDN5\n</td>\n<td style=\"text-align:left;\">\nLSP1\n</td>\n<td style=\"text-align:left;\">\nYBX1\n</td>\n<td style=\"text-align:left;\">\nSERF2\n</td>\n<td style=\"text-align:left;\">\nCLIC1\n</td>\n<td style=\"text-align:left;\">\nHNRNPA1\n</td>\n<td style=\"text-align:left;\">\nEIF3K\n</td>\n<td style=\"text-align:left;\">\nSNX3\n</td>\n<td style=\"text-align:left;\">\nUBC\n</td>\n<td style=\"text-align:left;\">\nSRP14\n</td>\n<td style=\"text-align:left;\">\nPSMB9\n</td>\n<td style=\"text-align:left;\">\nITGB2\n</td>\n<td style=\"text-align:left;\">\nPFN1\n</td>\n<td style=\"text-align:left;\">\nGMFG\n</td>\n<td style=\"text-align:left;\">\nAPOBEC3G\n</td>\n<td style=\"text-align:left;\">\nHCST\n</td>\n<td style=\"text-align:left;\">\nRAC2\n</td>\n<td style=\"text-align:left;\">\nHLA-C\n</td>\n<td style=\"text-align:left;\">\nHSPA8\n</td>\n<td style=\"text-align:left;\">\nCALM1\n</td>\n<td style=\"text-align:left;\">\nRHOC\n</td>\n<td style=\"text-align:left;\">\nCTSC\n</td>\n<td style=\"text-align:left;\">\nNCF1\n</td>\n<td style=\"text-align:left;\">\nFGR\n</td>\n<td style=\"text-align:left;\">\nLST1\n</td>\n<td style=\"text-align:left;\">\nCOTL1\n</td>\n<td style=\"text-align:left;\">\nCLEC10A\n</td>\n<td style=\"text-align:left;\">\nHLA-DQB1\n</td>\n<td style=\"text-align:left;\">\nHLA-DPA1\n</td>\n<td style=\"text-align:left;\">\nIRF8\n</td>\n<td style=\"text-align:left;\">\nHLA-DMA\n</td>\n<td style=\"text-align:left;\">\nS100A8\n</td>\n<td style=\"text-align:left;\">\nLGALS2\n</td>\n<td style=\"text-align:left;\">\nCFP\n</td>\n<td style=\"text-align:left;\">\nS100A10\n</td>\n<td style=\"text-align:left;\">\nISG15\n</td>\n<td style=\"text-align:left;\">\nS100A6\n</td>\n<td style=\"text-align:left;\">\nGPX1\n</td>\n<td style=\"text-align:left;\">\nTYMP\n</td>\n<td style=\"text-align:left;\">\nTSPO\n</td>\n<td style=\"text-align:left;\">\nFCN1\n</td>\n<td style=\"text-align:left;\">\nCTSS\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\nHAVCR2\n</td>\n<td style=\"text-align:left;\">\nFGFBP2\n</td>\n<td style=\"text-align:left;\">\nGZMM\n</td>\n<td style=\"text-align:left;\">\nCST7\n</td>\n<td style=\"text-align:left;\">\nNAP1L1\n</td>\n<td style=\"text-align:left;\">\nPPDPF\n</td>\n<td style=\"text-align:left;\">\nMT-CYB\n</td>\n<td style=\"text-align:left;\">\nTXNIP\n</td>\n<td style=\"text-align:left;\">\nFAU\n</td>\n<td style=\"text-align:left;\">\nRPL8\n</td>\n<td style=\"text-align:left;\">\nCD48\n</td>\n<td style=\"text-align:left;\">\nDUSP1\n</td>\n<td style=\"text-align:left;\">\nZFP36L2\n</td>\n<td style=\"text-align:left;\">\nFYB\n</td>\n<td style=\"text-align:left;\">\nRPS8\n</td>\n<td style=\"text-align:left;\">\nRPS12\n</td>\n<td style=\"text-align:left;\">\nRPLP1\n</td>\n<td style=\"text-align:left;\">\nRPL6\n</td>\n<td style=\"text-align:left;\">\nRPLP2\n</td>\n<td style=\"text-align:left;\">\nRPS4X\n</td>\n<td style=\"text-align:left;\">\nNPM1\n</td>\n<td style=\"text-align:left;\">\nRPS3A\n</td>\n<td style=\"text-align:left;\">\nSIT1\n</td>\n<td style=\"text-align:left;\">\nISG20\n</td>\n<td style=\"text-align:left;\">\nATM\n</td>\n<td style=\"text-align:left;\">\nNOSIP\n</td>\n<td style=\"text-align:left;\">\nCD3E\n</td>\n<td style=\"text-align:left;\">\nMS4A1\n</td>\n<td style=\"text-align:left;\">\nSNX2\n</td>\n<td style=\"text-align:left;\">\nEIF1AY\n</td>\n<td style=\"text-align:left;\">\nSLC25A5\n</td>\n<td style=\"text-align:left;\">\nHMGB1\n</td>\n<td style=\"text-align:left;\">\nCHCHD2\n</td>\n<td style=\"text-align:left;\">\nLAG3\n</td>\n<td style=\"text-align:left;\">\nHIST1H2AC\n</td>\n<td style=\"text-align:left;\">\nCDC42SE2\n</td>\n<td style=\"text-align:left;\">\nTALDO1\n</td>\n<td style=\"text-align:left;\">\nATP5C1\n</td>\n<td style=\"text-align:left;\">\nSLC25A6\n</td>\n<td style=\"text-align:left;\">\nATP6V0E1\n</td>\n<td style=\"text-align:left;\">\nLY6E\n</td>\n<td style=\"text-align:left;\">\nARPC1B\n</td>\n<td style=\"text-align:left;\">\nSUPT4H1\n</td>\n<td style=\"text-align:left;\">\nRPL36AL\n</td>\n<td style=\"text-align:left;\">\nATP5E\n</td>\n<td style=\"text-align:left;\">\nUQCRH\n</td>\n<td style=\"text-align:left;\">\nMYL12B\n</td>\n<td style=\"text-align:left;\">\nPSME1\n</td>\n<td style=\"text-align:left;\">\nPPP1CA\n</td>\n<td style=\"text-align:left;\">\nCD63\n</td>\n<td style=\"text-align:left;\">\nMYL6\n</td>\n<td style=\"text-align:left;\">\nCAPZB\n</td>\n<td style=\"text-align:left;\">\nCDC37\n</td>\n<td style=\"text-align:left;\">\nID2\n</td>\n<td style=\"text-align:left;\">\nUCP2\n</td>\n<td style=\"text-align:left;\">\nHLA-E\n</td>\n<td style=\"text-align:left;\">\nEVL\n</td>\n<td style=\"text-align:left;\">\nCD99\n</td>\n<td style=\"text-align:left;\">\nCDKN1C\n</td>\n<td style=\"text-align:left;\">\nMYO1G\n</td>\n<td style=\"text-align:left;\">\nLYN\n</td>\n<td style=\"text-align:left;\">\nCD86\n</td>\n<td style=\"text-align:left;\">\nIFITM3\n</td>\n<td style=\"text-align:left;\">\nSAT1\n</td>\n<td style=\"text-align:left;\">\nENHO\n</td>\n<td style=\"text-align:left;\">\nHLA-DQA2\n</td>\n<td style=\"text-align:left;\">\nHLA-DRB1\n</td>\n<td style=\"text-align:left;\">\nLAT2\n</td>\n<td style=\"text-align:left;\">\nLY86\n</td>\n<td style=\"text-align:left;\">\nS100A12\n</td>\n<td style=\"text-align:left;\">\nMS4A6A\n</td>\n<td style=\"text-align:left;\">\nCPVL\n</td>\n<td style=\"text-align:left;\">\nNFKBIA\n</td>\n<td style=\"text-align:left;\">\nANXA2\n</td>\n<td style=\"text-align:left;\">\nS100A11\n</td>\n<td style=\"text-align:left;\">\nAP1S2\n</td>\n<td style=\"text-align:left;\">\nLGALS3\n</td>\n<td style=\"text-align:left;\">\nRAC1\n</td>\n<td style=\"text-align:left;\">\nNCF2\n</td>\n<td style=\"text-align:left;\">\nNPC2\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\nCCL4L1\n</td>\n<td style=\"text-align:left;\">\nCCL4\n</td>\n<td style=\"text-align:left;\">\nLYAR\n</td>\n<td style=\"text-align:left;\">\nPRF1\n</td>\n<td style=\"text-align:left;\">\nSOD1\n</td>\n<td style=\"text-align:left;\">\nATP6V1G1\n</td>\n<td style=\"text-align:left;\">\nMT-ND2\n</td>\n<td style=\"text-align:left;\">\nCIRBP\n</td>\n<td style=\"text-align:left;\">\nUBA52\n</td>\n<td style=\"text-align:left;\">\nRPL29\n</td>\n<td style=\"text-align:left;\">\nAPRT\n</td>\n<td style=\"text-align:left;\">\nITM2B\n</td>\n<td style=\"text-align:left;\">\nTMEM123\n</td>\n<td style=\"text-align:left;\">\nGIMAP1\n</td>\n<td style=\"text-align:left;\">\nRPL10A\n</td>\n<td style=\"text-align:left;\">\nRPL3\n</td>\n<td style=\"text-align:left;\">\nRPL15\n</td>\n<td style=\"text-align:left;\">\nRPL26\n</td>\n<td style=\"text-align:left;\">\nRPS16\n</td>\n<td style=\"text-align:left;\">\nRPL27A\n</td>\n<td style=\"text-align:left;\">\nRPSAP58\n</td>\n<td style=\"text-align:left;\">\nRPS27A\n</td>\n<td style=\"text-align:left;\">\nBIRC3\n</td>\n<td style=\"text-align:left;\">\nCD69\n</td>\n<td style=\"text-align:left;\">\nANKRD44\n</td>\n<td style=\"text-align:left;\">\nGIMAP5\n</td>\n<td style=\"text-align:left;\">\nCD7\n</td>\n<td style=\"text-align:left;\">\nTCL1A\n</td>\n<td style=\"text-align:left;\">\nPRKCB\n</td>\n<td style=\"text-align:left;\">\nMANF\n</td>\n<td style=\"text-align:left;\">\nTPI1\n</td>\n<td style=\"text-align:left;\">\nHSP90AA1\n</td>\n<td style=\"text-align:left;\">\nENO1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSDPR\n</td>\n<td style=\"text-align:left;\">\nFERMT3\n</td>\n<td style=\"text-align:left;\">\nH3F3A\n</td>\n<td style=\"text-align:left;\">\nPRDX6\n</td>\n<td style=\"text-align:left;\">\nATP5G2\n</td>\n<td style=\"text-align:left;\">\nBRK1\n</td>\n<td style=\"text-align:left;\">\nRHOA\n</td>\n<td style=\"text-align:left;\">\nALDOA\n</td>\n<td style=\"text-align:left;\">\nIFI35\n</td>\n<td style=\"text-align:left;\">\nCOX7C\n</td>\n<td style=\"text-align:left;\">\nATP5L\n</td>\n<td style=\"text-align:left;\">\nGABARAPL2\n</td>\n<td style=\"text-align:left;\">\nYWHAB\n</td>\n<td style=\"text-align:left;\">\nRBM3\n</td>\n<td style=\"text-align:left;\">\nPSMB8\n</td>\n<td style=\"text-align:left;\">\nCTSD\n</td>\n<td style=\"text-align:left;\">\nARPC2\n</td>\n<td style=\"text-align:left;\">\nTUBA1A\n</td>\n<td style=\"text-align:left;\">\nARGLU1\n</td>\n<td style=\"text-align:left;\">\nRNF181\n</td>\n<td style=\"text-align:left;\">\nCD53\n</td>\n<td style=\"text-align:left;\">\nARL6IP5\n</td>\n<td style=\"text-align:left;\">\nIFITM1\n</td>\n<td style=\"text-align:left;\">\nSEPT7\n</td>\n<td style=\"text-align:left;\">\nCKB\n</td>\n<td style=\"text-align:left;\">\nABI3\n</td>\n<td style=\"text-align:left;\">\nPOU2F2\n</td>\n<td style=\"text-align:left;\">\nCD300C\n</td>\n<td style=\"text-align:left;\">\nCFD\n</td>\n<td style=\"text-align:left;\">\nPSAP\n</td>\n<td style=\"text-align:left;\">\nDNASE1L3\n</td>\n<td style=\"text-align:left;\">\nCD1C\n</td>\n<td style=\"text-align:left;\">\nHLA-DRB5\n</td>\n<td style=\"text-align:left;\">\nEAF2\n</td>\n<td style=\"text-align:left;\">\nHLA-DMB\n</td>\n<td style=\"text-align:left;\">\nRBP7\n</td>\n<td style=\"text-align:left;\">\nCD14\n</td>\n<td style=\"text-align:left;\">\nIGSF6\n</td>\n<td style=\"text-align:left;\">\nAMICA1\n</td>\n<td style=\"text-align:left;\">\nPRELID1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGRN\n</td>\n<td style=\"text-align:left;\">\nTNFSF13B\n</td>\n<td style=\"text-align:left;\">\nPYCARD\n</td>\n<td style=\"text-align:left;\">\nCDA\n</td>\n<td style=\"text-align:left;\">\nBRI3\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSPON2\n</td>\n<td style=\"text-align:left;\">\nHOPX\n</td>\n<td style=\"text-align:left;\">\nGZMH\n</td>\n<td style=\"text-align:left;\">\nCYTIP\n</td>\n<td style=\"text-align:left;\">\nPRR13\n</td>\n<td style=\"text-align:left;\">\nMT-ATP6\n</td>\n<td style=\"text-align:left;\">\nLIMD2\n</td>\n<td style=\"text-align:left;\">\nRPS24\n</td>\n<td style=\"text-align:left;\">\nGNB2L1\n</td>\n<td style=\"text-align:left;\">\nGSTK1\n</td>\n<td style=\"text-align:left;\">\nKLF6\n</td>\n<td style=\"text-align:left;\">\nBTG2\n</td>\n<td style=\"text-align:left;\">\nCITED2\n</td>\n<td style=\"text-align:left;\">\nRPS5\n</td>\n<td style=\"text-align:left;\">\nRPS15A\n</td>\n<td style=\"text-align:left;\">\nRPS15\n</td>\n<td style=\"text-align:left;\">\nRPL14\n</td>\n<td style=\"text-align:left;\">\nRPS28\n</td>\n<td style=\"text-align:left;\">\nTPT1\n</td>\n<td style=\"text-align:left;\">\nHINT1\n</td>\n<td style=\"text-align:left;\">\nRPL9\n</td>\n<td style=\"text-align:left;\">\nRIC3\n</td>\n<td style=\"text-align:left;\">\nSTK17A\n</td>\n<td style=\"text-align:left;\">\nCARS\n</td>\n<td style=\"text-align:left;\">\nC12orf57\n</td>\n<td style=\"text-align:left;\">\nCD2\n</td>\n<td style=\"text-align:left;\">\nIGLL5\n</td>\n<td style=\"text-align:left;\">\nARL4A\n</td>\n<td style=\"text-align:left;\">\nHMGA1\n</td>\n<td style=\"text-align:left;\">\nPKM\n</td>\n<td style=\"text-align:left;\">\nHMGN1\n</td>\n<td style=\"text-align:left;\">\nSLC25A3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTSC22D1\n</td>\n<td style=\"text-align:left;\">\nDNAJB6\n</td>\n<td style=\"text-align:left;\">\nGSTO1\n</td>\n<td style=\"text-align:left;\">\nDNAJC8\n</td>\n<td style=\"text-align:left;\">\nZFP36\n</td>\n<td style=\"text-align:left;\">\nC11orf31\n</td>\n<td style=\"text-align:left;\">\nCALM2\n</td>\n<td style=\"text-align:left;\">\nLAMTOR4\n</td>\n<td style=\"text-align:left;\">\nIRF7\n</td>\n<td style=\"text-align:left;\">\nCNBP\n</td>\n<td style=\"text-align:left;\">\nPSMA7\n</td>\n<td style=\"text-align:left;\">\nPOLD4\n</td>\n<td style=\"text-align:left;\">\nOST4\n</td>\n<td style=\"text-align:left;\">\nC19orf43\n</td>\n<td style=\"text-align:left;\">\nTPM3\n</td>\n<td style=\"text-align:left;\">\nMYO1F\n</td>\n<td style=\"text-align:left;\">\nEMP3\n</td>\n<td style=\"text-align:left;\">\nPGK1\n</td>\n<td style=\"text-align:left;\">\nTMCO1\n</td>\n<td style=\"text-align:left;\">\nCKLF\n</td>\n<td style=\"text-align:left;\">\nPLAC8\n</td>\n<td style=\"text-align:left;\">\nBIN2\n</td>\n<td style=\"text-align:left;\">\nAES\n</td>\n<td style=\"text-align:left;\">\nPDIA3\n</td>\n<td style=\"text-align:left;\">\nLYPD2\n</td>\n<td style=\"text-align:left;\">\nATP1B3\n</td>\n<td style=\"text-align:left;\">\nSCPEP1\n</td>\n<td style=\"text-align:left;\">\nFAM49A\n</td>\n<td style=\"text-align:left;\">\nSERPINA1\n</td>\n<td style=\"text-align:left;\">\nTIMP1\n</td>\n<td style=\"text-align:left;\">\nSERPINF1\n</td>\n<td style=\"text-align:left;\">\nFCGR2B\n</td>\n<td style=\"text-align:left;\">\nPLD4\n</td>\n<td style=\"text-align:left;\">\nMEF2C\n</td>\n<td style=\"text-align:left;\">\nRNASE6\n</td>\n<td style=\"text-align:left;\">\nFOLR3\n</td>\n<td style=\"text-align:left;\">\nALDH2\n</td>\n<td style=\"text-align:left;\">\nRAB32\n</td>\n<td style=\"text-align:left;\">\nMYADM\n</td>\n<td style=\"text-align:left;\">\nIFI6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCEBPD\n</td>\n<td style=\"text-align:left;\">\nRNF130\n</td>\n<td style=\"text-align:left;\">\nTKT\n</td>\n<td style=\"text-align:left;\">\nSLC7A7\n</td>\n<td style=\"text-align:left;\">\nCTSB\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCLIC3\n</td>\n<td style=\"text-align:left;\">\nC12orf75\n</td>\n<td style=\"text-align:left;\">\nKLRD1\n</td>\n<td style=\"text-align:left;\">\nCLNS1A\n</td>\n<td style=\"text-align:left;\">\nSYF2\n</td>\n<td style=\"text-align:left;\">\nSSR2\n</td>\n<td style=\"text-align:left;\">\nKLF2\n</td>\n<td style=\"text-align:left;\">\nCOX4I1\n</td>\n<td style=\"text-align:left;\">\nRPS11\n</td>\n<td style=\"text-align:left;\">\nCD44\n</td>\n<td style=\"text-align:left;\">\nIER2\n</td>\n<td style=\"text-align:left;\">\nNDFIP1\n</td>\n<td style=\"text-align:left;\">\nSEPW1\n</td>\n<td style=\"text-align:left;\">\nRPS23\n</td>\n<td style=\"text-align:left;\">\nRPL23A\n</td>\n<td style=\"text-align:left;\">\nRPS7\n</td>\n<td style=\"text-align:left;\">\nRPL27\n</td>\n<td style=\"text-align:left;\">\nRPL36\n</td>\n<td style=\"text-align:left;\">\nRPL7\n</td>\n<td style=\"text-align:left;\">\nEIF4A2\n</td>\n<td style=\"text-align:left;\">\nBTG1\n</td>\n<td style=\"text-align:left;\">\nSTMN3\n</td>\n<td style=\"text-align:left;\">\nACAP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDNAJB1\n</td>\n<td style=\"text-align:left;\">\nLCK\n</td>\n<td style=\"text-align:left;\">\nIGJ\n</td>\n<td style=\"text-align:left;\">\nHVCN1\n</td>\n<td style=\"text-align:left;\">\nSTMN1\n</td>\n<td style=\"text-align:left;\">\nCOX8A\n</td>\n<td style=\"text-align:left;\">\nSRSF7\n</td>\n<td style=\"text-align:left;\">\nLDHA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNRGN\n</td>\n<td style=\"text-align:left;\">\nLIMS1\n</td>\n<td style=\"text-align:left;\">\nSOD2\n</td>\n<td style=\"text-align:left;\">\nYWHAH\n</td>\n<td style=\"text-align:left;\">\nSERP1\n</td>\n<td style=\"text-align:left;\">\nCOPE\n</td>\n<td style=\"text-align:left;\">\nRNASET2\n</td>\n<td style=\"text-align:left;\">\nCOX5B\n</td>\n<td style=\"text-align:left;\">\nMIR142\n</td>\n<td style=\"text-align:left;\">\nTMA7\n</td>\n<td style=\"text-align:left;\">\nCOX6B1\n</td>\n<td style=\"text-align:left;\">\nSEP15\n</td>\n<td style=\"text-align:left;\">\nNDUFA4\n</td>\n<td style=\"text-align:left;\">\nSUMO2\n</td>\n<td style=\"text-align:left;\">\nCOX6A1\n</td>\n<td style=\"text-align:left;\">\nFLNA\n</td>\n<td style=\"text-align:left;\">\nPSME2\n</td>\n<td style=\"text-align:left;\">\nARF1\n</td>\n<td style=\"text-align:left;\">\nADRM1\n</td>\n<td style=\"text-align:left;\">\nIL10RA\n</td>\n<td style=\"text-align:left;\">\nCD164\n</td>\n<td style=\"text-align:left;\">\nRAP1B\n</td>\n<td style=\"text-align:left;\">\nRARRES3\n</td>\n<td style=\"text-align:left;\">\nLITAF\n</td>\n<td style=\"text-align:left;\">\nVMO1\n</td>\n<td style=\"text-align:left;\">\nSPN\n</td>\n<td style=\"text-align:left;\">\nSYNGR2\n</td>\n<td style=\"text-align:left;\">\nARRB1\n</td>\n<td style=\"text-align:left;\">\nCD68\n</td>\n<td style=\"text-align:left;\">\nCEBPB\n</td>\n<td style=\"text-align:left;\">\nLILRA4\n</td>\n<td style=\"text-align:left;\">\nPPP1R14A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCDC50\n</td>\n<td style=\"text-align:left;\">\nGAPT\n</td>\n<td style=\"text-align:left;\">\nC19orf59\n</td>\n<td style=\"text-align:left;\">\nIL8\n</td>\n<td style=\"text-align:left;\">\nCD33\n</td>\n<td style=\"text-align:left;\">\nPPT1\n</td>\n<td style=\"text-align:left;\">\nC1orf162\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFCGRT\n</td>\n<td style=\"text-align:left;\">\nSTX11\n</td>\n<td style=\"text-align:left;\">\nAP2S1\n</td>\n<td style=\"text-align:left;\">\nFPR1\n</td>\n<td style=\"text-align:left;\">\nBLVRA\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nXCL2\n</td>\n<td style=\"text-align:left;\">\nCD8A\n</td>\n<td style=\"text-align:left;\">\nCD160\n</td>\n<td style=\"text-align:left;\">\nCCT7\n</td>\n<td style=\"text-align:left;\">\nEVI2B\n</td>\n<td style=\"text-align:left;\">\nTMEM14B\n</td>\n<td style=\"text-align:left;\">\nHNRNPDL\n</td>\n<td style=\"text-align:left;\">\nBTF3\n</td>\n<td style=\"text-align:left;\">\nRPL23\n</td>\n<td style=\"text-align:left;\">\nPPP1R15A\n</td>\n<td style=\"text-align:left;\">\nGPSM3\n</td>\n<td style=\"text-align:left;\">\nRWDD1\n</td>\n<td style=\"text-align:left;\">\nGIMAP2\n</td>\n<td style=\"text-align:left;\">\nRPL18\n</td>\n<td style=\"text-align:left;\">\nRPL30\n</td>\n<td style=\"text-align:left;\">\nRPL7A\n</td>\n<td style=\"text-align:left;\">\nEEF1D\n</td>\n<td style=\"text-align:left;\">\nRPL22\n</td>\n<td style=\"text-align:left;\">\nRPL35A\n</td>\n<td style=\"text-align:left;\">\nSNRPD2\n</td>\n<td style=\"text-align:left;\">\nGLTSCR2\n</td>\n<td style=\"text-align:left;\">\nCRIP2\n</td>\n<td style=\"text-align:left;\">\nRHOH\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPRDX2\n</td>\n<td style=\"text-align:left;\">\nLAT\n</td>\n<td style=\"text-align:left;\">\nLINC00926\n</td>\n<td style=\"text-align:left;\">\nSYPL1\n</td>\n<td style=\"text-align:left;\">\nPRDX4\n</td>\n<td style=\"text-align:left;\">\nPSMB3\n</td>\n<td style=\"text-align:left;\">\nRAN\n</td>\n<td style=\"text-align:left;\">\nPPIB\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTUBB1\n</td>\n<td style=\"text-align:left;\">\nMAX\n</td>\n<td style=\"text-align:left;\">\nPOLE4\n</td>\n<td style=\"text-align:left;\">\nMRPL14\n</td>\n<td style=\"text-align:left;\">\nGPX4\n</td>\n<td style=\"text-align:left;\">\nCOX5A\n</td>\n<td style=\"text-align:left;\">\nDRAP1\n</td>\n<td style=\"text-align:left;\">\nTCEB2\n</td>\n<td style=\"text-align:left;\">\nLAP3\n</td>\n<td style=\"text-align:left;\">\nEIF3F\n</td>\n<td style=\"text-align:left;\">\nVAMP8\n</td>\n<td style=\"text-align:left;\">\nLSM7\n</td>\n<td style=\"text-align:left;\">\nSKP1\n</td>\n<td style=\"text-align:left;\">\nEIF3G\n</td>\n<td style=\"text-align:left;\">\nGUK1\n</td>\n<td style=\"text-align:left;\">\nGLIPR2\n</td>\n<td style=\"text-align:left;\">\nARPC5\n</td>\n<td style=\"text-align:left;\">\nLRRFIP1\n</td>\n<td style=\"text-align:left;\">\nPPP2CA\n</td>\n<td style=\"text-align:left;\">\nCMTM3\n</td>\n<td style=\"text-align:left;\">\nPPP1R18\n</td>\n<td style=\"text-align:left;\">\nHLA-F\n</td>\n<td style=\"text-align:left;\">\nTRAF3IP3\n</td>\n<td style=\"text-align:left;\">\nXBP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nADA\n</td>\n<td style=\"text-align:left;\">\nLYST\n</td>\n<td style=\"text-align:left;\">\nTCF7L2\n</td>\n<td style=\"text-align:left;\">\nSPI1\n</td>\n<td style=\"text-align:left;\">\nSTXBP2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPHACTR1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCSF3R\n</td>\n<td style=\"text-align:left;\">\nCD302\n</td>\n<td style=\"text-align:left;\">\nCORO1B\n</td>\n<td style=\"text-align:left;\">\nRHOG\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCTSH\n</td>\n<td style=\"text-align:left;\">\nMNDA\n</td>\n<td style=\"text-align:left;\">\nATP6V0B\n</td>\n<td style=\"text-align:left;\">\nMAFB\n</td>\n<td style=\"text-align:left;\">\nRHOB\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTTC38\n</td>\n<td style=\"text-align:left;\">\nKLRG1\n</td>\n<td style=\"text-align:left;\">\nFCRL6\n</td>\n<td style=\"text-align:left;\">\nATP1A1\n</td>\n<td style=\"text-align:left;\">\nYPEL5\n</td>\n<td style=\"text-align:left;\">\nC19orf24\n</td>\n<td style=\"text-align:left;\">\nANAPC16\n</td>\n<td style=\"text-align:left;\">\nPABPC1\n</td>\n<td style=\"text-align:left;\">\nEEF2\n</td>\n<td style=\"text-align:left;\">\nPLP2\n</td>\n<td style=\"text-align:left;\">\nEDF1\n</td>\n<td style=\"text-align:left;\">\nSOCS3\n</td>\n<td style=\"text-align:left;\">\nDGCR6L\n</td>\n<td style=\"text-align:left;\">\nRPL5\n</td>\n<td style=\"text-align:left;\">\nRPS25\n</td>\n<td style=\"text-align:left;\">\nRPL35\n</td>\n<td style=\"text-align:left;\">\nRPL24\n</td>\n<td style=\"text-align:left;\">\nC6orf48\n</td>\n<td style=\"text-align:left;\">\nRPL34\n</td>\n<td style=\"text-align:left;\">\nSELL\n</td>\n<td style=\"text-align:left;\">\nFOXP1\n</td>\n<td style=\"text-align:left;\">\nTNFRSF4\n</td>\n<td style=\"text-align:left;\">\nBIN1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCD27\n</td>\n<td style=\"text-align:left;\">\nCD3G\n</td>\n<td style=\"text-align:left;\">\nBANK1\n</td>\n<td style=\"text-align:left;\">\nADK\n</td>\n<td style=\"text-align:left;\">\nCHTF8\n</td>\n<td style=\"text-align:left;\">\nGNB2\n</td>\n<td style=\"text-align:left;\">\nHNRNPK\n</td>\n<td style=\"text-align:left;\">\nSRSF3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGNG11\n</td>\n<td style=\"text-align:left;\">\nAP3S1\n</td>\n<td style=\"text-align:left;\">\nRAB10\n</td>\n<td style=\"text-align:left;\">\nSPINT2\n</td>\n<td style=\"text-align:left;\">\nATP5D\n</td>\n<td style=\"text-align:left;\">\nWDR83OS\n</td>\n<td style=\"text-align:left;\">\nSH3BGRL\n</td>\n<td style=\"text-align:left;\">\nBST2\n</td>\n<td style=\"text-align:left;\">\nTMEM179B\n</td>\n<td style=\"text-align:left;\">\nUBE2D3\n</td>\n<td style=\"text-align:left;\">\nARL6IP4\n</td>\n<td style=\"text-align:left;\">\nRASGRP2\n</td>\n<td style=\"text-align:left;\">\nCOX6C\n</td>\n<td style=\"text-align:left;\">\nTMBIM6\n</td>\n<td style=\"text-align:left;\">\nTRAPPC1\n</td>\n<td style=\"text-align:left;\">\nEFHD2\n</td>\n<td style=\"text-align:left;\">\nATP5B\n</td>\n<td style=\"text-align:left;\">\nCALM3\n</td>\n<td style=\"text-align:left;\">\nPDHB\n</td>\n<td style=\"text-align:left;\">\nFYN\n</td>\n<td style=\"text-align:left;\">\nSCP2\n</td>\n<td style=\"text-align:left;\">\nDHRS7\n</td>\n<td style=\"text-align:left;\">\nIL2RG\n</td>\n<td style=\"text-align:left;\">\nANXA6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSH3BP1\n</td>\n<td style=\"text-align:left;\">\nLYL1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIFI30\n</td>\n<td style=\"text-align:left;\">\nASAH1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPLBD1\n</td>\n<td style=\"text-align:left;\">\nLILRB4\n</td>\n<td style=\"text-align:left;\">\nTMEM14C\n</td>\n<td style=\"text-align:left;\">\nMT2A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nBLVRB\n</td>\n<td style=\"text-align:left;\">\nFGL2\n</td>\n<td style=\"text-align:left;\">\nRGS2\n</td>\n<td style=\"text-align:left;\">\nFCGR2A\n</td>\n<td style=\"text-align:left;\">\nPLAUR\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAKR1C3\n</td>\n<td style=\"text-align:left;\">\nZAP70\n</td>\n<td style=\"text-align:left;\">\nXCL1\n</td>\n<td style=\"text-align:left;\">\nARID4B\n</td>\n<td style=\"text-align:left;\">\nDAZAP2\n</td>\n<td style=\"text-align:left;\">\nMPC2\n</td>\n<td style=\"text-align:left;\">\nVAMP2\n</td>\n<td style=\"text-align:left;\">\nEIF3H\n</td>\n<td style=\"text-align:left;\">\nNBEAL1\n</td>\n<td style=\"text-align:left;\">\nKHDRBS1\n</td>\n<td style=\"text-align:left;\">\nUQCR11\n</td>\n<td style=\"text-align:left;\">\nTRADD\n</td>\n<td style=\"text-align:left;\">\nTMEM173\n</td>\n<td style=\"text-align:left;\">\nRPS10\n</td>\n<td style=\"text-align:left;\">\nRPL31\n</td>\n<td style=\"text-align:left;\">\nRPL4\n</td>\n<td style=\"text-align:left;\">\nRPL38\n</td>\n<td style=\"text-align:left;\">\nC21orf33\n</td>\n<td style=\"text-align:left;\">\nRPL17\n</td>\n<td style=\"text-align:left;\">\nPEBP1\n</td>\n<td style=\"text-align:left;\">\nRP11-796E2.4\n</td>\n<td style=\"text-align:left;\">\nRP11-706O15.1\n</td>\n<td style=\"text-align:left;\">\nOCIAD2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLEPROTL1\n</td>\n<td style=\"text-align:left;\">\nCD8B\n</td>\n<td style=\"text-align:left;\">\nVPREB3\n</td>\n<td style=\"text-align:left;\">\nSMIM14\n</td>\n<td style=\"text-align:left;\">\nSP140\n</td>\n<td style=\"text-align:left;\">\nUQCRFS1\n</td>\n<td style=\"text-align:left;\">\nMIF\n</td>\n<td style=\"text-align:left;\">\nPARK7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRGS18\n</td>\n<td style=\"text-align:left;\">\nCTSA\n</td>\n<td style=\"text-align:left;\">\nPTPN18\n</td>\n<td style=\"text-align:left;\">\nH2AFJ\n</td>\n<td style=\"text-align:left;\">\nHIGD2A\n</td>\n<td style=\"text-align:left;\">\nFIS1\n</td>\n<td style=\"text-align:left;\">\nBLOC1S1\n</td>\n<td style=\"text-align:left;\">\nSF3B5\n</td>\n<td style=\"text-align:left;\">\nPLSCR1\n</td>\n<td style=\"text-align:left;\">\nERP29\n</td>\n<td style=\"text-align:left;\">\nNEDD8\n</td>\n<td style=\"text-align:left;\">\nMX1\n</td>\n<td style=\"text-align:left;\">\nPTPRC\n</td>\n<td style=\"text-align:left;\">\nSAP18\n</td>\n<td style=\"text-align:left;\">\nCAP1\n</td>\n<td style=\"text-align:left;\">\nPLEK\n</td>\n<td style=\"text-align:left;\">\nMSN\n</td>\n<td style=\"text-align:left;\">\nFKBP8\n</td>\n<td style=\"text-align:left;\">\nTPST2\n</td>\n<td style=\"text-align:left;\">\nETHE1\n</td>\n<td style=\"text-align:left;\">\nTMEM9B\n</td>\n<td style=\"text-align:left;\">\nTMEM50A\n</td>\n<td style=\"text-align:left;\">\nCCND3\n</td>\n<td style=\"text-align:left;\">\nYWHAQ\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGUSB\n</td>\n<td style=\"text-align:left;\">\nSTX7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAPOBEC3A\n</td>\n<td style=\"text-align:left;\">\nBID\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nASGR1\n</td>\n<td style=\"text-align:left;\">\nRAB31\n</td>\n<td style=\"text-align:left;\">\nDHRS4L2\n</td>\n<td style=\"text-align:left;\">\nCSTB\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNUP214\n</td>\n<td style=\"text-align:left;\">\nKLF4\n</td>\n<td style=\"text-align:left;\">\nLINC00936\n</td>\n<td style=\"text-align:left;\">\nTMEM176B\n</td>\n<td style=\"text-align:left;\">\nCTSZ\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPRSS23\n</td>\n<td style=\"text-align:left;\">\nAPMAP\n</td>\n<td style=\"text-align:left;\">\nKLRC1\n</td>\n<td style=\"text-align:left;\">\nTHYN1\n</td>\n<td style=\"text-align:left;\">\nSP110\n</td>\n<td style=\"text-align:left;\">\nTMED4\n</td>\n<td style=\"text-align:left;\">\nUBE2D2\n</td>\n<td style=\"text-align:left;\">\nPNRC1\n</td>\n<td style=\"text-align:left;\">\nEIF3L\n</td>\n<td style=\"text-align:left;\">\nSURF1\n</td>\n<td style=\"text-align:left;\">\nSSR4\n</td>\n<td style=\"text-align:left;\">\nCHURC1\n</td>\n<td style=\"text-align:left;\">\nGBP1\n</td>\n<td style=\"text-align:left;\">\nRPS13\n</td>\n<td style=\"text-align:left;\">\nRPS20\n</td>\n<td style=\"text-align:left;\">\nRPL37A\n</td>\n<td style=\"text-align:left;\">\nRPS4Y1\n</td>\n<td style=\"text-align:left;\">\nC1orf228\n</td>\n<td style=\"text-align:left;\">\nRPL36A\n</td>\n<td style=\"text-align:left;\">\nCMPK1\n</td>\n<td style=\"text-align:left;\">\nKCNQ1OT1\n</td>\n<td style=\"text-align:left;\">\nKRT1\n</td>\n<td style=\"text-align:left;\">\nFAIM3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPIK3IP1\n</td>\n<td style=\"text-align:left;\">\nOPTN\n</td>\n<td style=\"text-align:left;\">\nFCER2\n</td>\n<td style=\"text-align:left;\">\nMYCBP2\n</td>\n<td style=\"text-align:left;\">\nHIST1H4C\n</td>\n<td style=\"text-align:left;\">\nANAPC11\n</td>\n<td style=\"text-align:left;\">\nSRSF2\n</td>\n<td style=\"text-align:left;\">\nPSMB1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCLU\n</td>\n<td style=\"text-align:left;\">\nNCOA4\n</td>\n<td style=\"text-align:left;\">\nGLUL\n</td>\n<td style=\"text-align:left;\">\nTPM4\n</td>\n<td style=\"text-align:left;\">\nFOSB\n</td>\n<td style=\"text-align:left;\">\nPSMB7\n</td>\n<td style=\"text-align:left;\">\nRNH1\n</td>\n<td style=\"text-align:left;\">\nGLRX\n</td>\n<td style=\"text-align:left;\">\nTMEM205\n</td>\n<td style=\"text-align:left;\">\nGTF3A\n</td>\n<td style=\"text-align:left;\">\nNDUFA13\n</td>\n<td style=\"text-align:left;\">\nMAF1\n</td>\n<td style=\"text-align:left;\">\nPTGES3\n</td>\n<td style=\"text-align:left;\">\nJTB\n</td>\n<td style=\"text-align:left;\">\nLCP1\n</td>\n<td style=\"text-align:left;\">\nCD300A\n</td>\n<td style=\"text-align:left;\">\nHN1\n</td>\n<td style=\"text-align:left;\">\nATRAID\n</td>\n<td style=\"text-align:left;\">\nPPP6C\n</td>\n<td style=\"text-align:left;\">\nPTGER2\n</td>\n<td style=\"text-align:left;\">\nZNF207\n</td>\n<td style=\"text-align:left;\">\nSIGIRR\n</td>\n<td style=\"text-align:left;\">\nSRP9\n</td>\n<td style=\"text-align:left;\">\nALOX5AP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFAM110A\n</td>\n<td style=\"text-align:left;\">\nYBX3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMS4A7\n</td>\n<td style=\"text-align:left;\">\nWARS\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTNFAIP2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCD4\n</td>\n<td style=\"text-align:left;\">\nC10orf54\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIL1B\n</td>\n<td style=\"text-align:left;\">\nODF3B\n</td>\n<td style=\"text-align:left;\">\nCNPY3\n</td>\n<td style=\"text-align:left;\">\nVSTM1\n</td>\n<td style=\"text-align:left;\">\nTBXAS1\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGPR56\n</td>\n<td style=\"text-align:left;\">\nSAMD3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRP11-347P5.1\n</td>\n<td style=\"text-align:left;\">\nCCDC12\n</td>\n<td style=\"text-align:left;\">\nMRPL21\n</td>\n<td style=\"text-align:left;\">\nUXT\n</td>\n<td style=\"text-align:left;\">\nUBXN1\n</td>\n<td style=\"text-align:left;\">\nZFAS1\n</td>\n<td style=\"text-align:left;\">\nSTAT1\n</td>\n<td style=\"text-align:left;\">\nMT-ND5\n</td>\n<td style=\"text-align:left;\">\nSTAT3\n</td>\n<td style=\"text-align:left;\">\nDNAJA2\n</td>\n<td style=\"text-align:left;\">\nRPLP0\n</td>\n<td style=\"text-align:left;\">\nRPS29\n</td>\n<td style=\"text-align:left;\">\nRPL37\n</td>\n<td style=\"text-align:left;\">\nTOMM7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCOMMD6\n</td>\n<td style=\"text-align:left;\">\nPPA1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLBH\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRGCC\n</td>\n<td style=\"text-align:left;\">\nITM2A\n</td>\n<td style=\"text-align:left;\">\nPDLIM1\n</td>\n<td style=\"text-align:left;\">\nCYB561A3\n</td>\n<td style=\"text-align:left;\">\nPCNA\n</td>\n<td style=\"text-align:left;\">\nPGAM1\n</td>\n<td style=\"text-align:left;\">\nHNRNPC\n</td>\n<td style=\"text-align:left;\">\nH2AFZ\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCD9\n</td>\n<td style=\"text-align:left;\">\nRHEB\n</td>\n<td style=\"text-align:left;\">\nRNPEP\n</td>\n<td style=\"text-align:left;\">\nCOMMD3\n</td>\n<td style=\"text-align:left;\">\nNDUFA11\n</td>\n<td style=\"text-align:left;\">\nSRSF9\n</td>\n<td style=\"text-align:left;\">\nPTPN6\n</td>\n<td style=\"text-align:left;\">\nSERPINB1\n</td>\n<td style=\"text-align:left;\">\nTLN1\n</td>\n<td style=\"text-align:left;\">\nPCBP2\n</td>\n<td style=\"text-align:left;\">\nATP5G3\n</td>\n<td style=\"text-align:left;\">\nRCSD1\n</td>\n<td style=\"text-align:left;\">\nACTR3\n</td>\n<td style=\"text-align:left;\">\nEID1\n</td>\n<td style=\"text-align:left;\">\nHCLS1\n</td>\n<td style=\"text-align:left;\">\nAOAH\n</td>\n<td style=\"text-align:left;\">\nDOK2\n</td>\n<td style=\"text-align:left;\">\nM6PR\n</td>\n<td style=\"text-align:left;\">\nATXN10\n</td>\n<td style=\"text-align:left;\">\nCDC42EP3\n</td>\n<td style=\"text-align:left;\">\nNDUFS2\n</td>\n<td style=\"text-align:left;\">\nSH3KBP1\n</td>\n<td style=\"text-align:left;\">\nFUS\n</td>\n<td style=\"text-align:left;\">\nTMED9\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nASB8\n</td>\n<td style=\"text-align:left;\">\nSNX10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHCK\n</td>\n<td style=\"text-align:left;\">\nNINJ1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nBST1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUBE2Q1\n</td>\n<td style=\"text-align:left;\">\nANXA5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPGD\n</td>\n<td style=\"text-align:left;\">\nSMCO4\n</td>\n<td style=\"text-align:left;\">\nCAPG\n</td>\n<td style=\"text-align:left;\">\nRETN\n</td>\n<td style=\"text-align:left;\">\nG0S2\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHBA1\n</td>\n<td style=\"text-align:left;\">\nNCR3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTTC3\n</td>\n<td style=\"text-align:left;\">\nSTUB1\n</td>\n<td style=\"text-align:left;\">\nTMEM165\n</td>\n<td style=\"text-align:left;\">\nPNISR\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRPL39\n</td>\n<td style=\"text-align:left;\">\nHPCAL1\n</td>\n<td style=\"text-align:left;\">\nPCBP1\n</td>\n<td style=\"text-align:left;\">\nTNFAIP3\n</td>\n<td style=\"text-align:left;\">\nSORL1\n</td>\n<td style=\"text-align:left;\">\nEEF1B2\n</td>\n<td style=\"text-align:left;\">\nRPS26\n</td>\n<td style=\"text-align:left;\">\nEIF3D\n</td>\n<td style=\"text-align:left;\">\nSRSF5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nST13\n</td>\n<td style=\"text-align:left;\">\nANKRD12\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGPR183\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTCF7\n</td>\n<td style=\"text-align:left;\">\nRORA\n</td>\n<td style=\"text-align:left;\">\nP2RX5\n</td>\n<td style=\"text-align:left;\">\nMBD4\n</td>\n<td style=\"text-align:left;\">\nNME1\n</td>\n<td style=\"text-align:left;\">\nTIMM13\n</td>\n<td style=\"text-align:left;\">\nSPCS1\n</td>\n<td style=\"text-align:left;\">\nGHITM\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nACRBP\n</td>\n<td style=\"text-align:left;\">\nODC1\n</td>\n<td style=\"text-align:left;\">\nFAM45A\n</td>\n<td style=\"text-align:left;\">\nETFA\n</td>\n<td style=\"text-align:left;\">\nMCL1\n</td>\n<td style=\"text-align:left;\">\nARF5\n</td>\n<td style=\"text-align:left;\">\nZNF706\n</td>\n<td style=\"text-align:left;\">\nATP6V1F\n</td>\n<td style=\"text-align:left;\">\nANXA4\n</td>\n<td style=\"text-align:left;\">\nHSP90AB1\n</td>\n<td style=\"text-align:left;\">\nUBL5\n</td>\n<td style=\"text-align:left;\">\nDDT\n</td>\n<td style=\"text-align:left;\">\nCOX7A2\n</td>\n<td style=\"text-align:left;\">\nNDUFB8\n</td>\n<td style=\"text-align:left;\">\nATP5F1\n</td>\n<td style=\"text-align:left;\">\nCX3CR1\n</td>\n<td style=\"text-align:left;\">\nPTP4A2\n</td>\n<td style=\"text-align:left;\">\nC1orf43\n</td>\n<td style=\"text-align:left;\">\nTMX2\n</td>\n<td style=\"text-align:left;\">\nGYG1\n</td>\n<td style=\"text-align:left;\">\nPSMC4\n</td>\n<td style=\"text-align:left;\">\nRASSF5\n</td>\n<td style=\"text-align:left;\">\nDUSP2\n</td>\n<td style=\"text-align:left;\">\nSUN2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUTRN\n</td>\n<td style=\"text-align:left;\">\nNOTCH2NL\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRP11-290F20.3\n</td>\n<td style=\"text-align:left;\">\nCPPED1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFCGR1A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nH2AFY\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMSRB1\n</td>\n<td style=\"text-align:left;\">\nTGFBI\n</td>\n<td style=\"text-align:left;\">\nLGALS9\n</td>\n<td style=\"text-align:left;\">\nMTMR11\n</td>\n<td style=\"text-align:left;\">\nC5AR1\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPTGDS\n</td>\n<td style=\"text-align:left;\">\nCHST12\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRBM4\n</td>\n<td style=\"text-align:left;\">\nC19orf70\n</td>\n<td style=\"text-align:left;\">\nLYPLA1\n</td>\n<td style=\"text-align:left;\">\nRBMX\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nZFP36L1\n</td>\n<td style=\"text-align:left;\">\nRBMS1\n</td>\n<td style=\"text-align:left;\">\nICAM3\n</td>\n<td style=\"text-align:left;\">\nUBAC2\n</td>\n<td style=\"text-align:left;\">\nPTGER4\n</td>\n<td style=\"text-align:left;\">\nRPS21\n</td>\n<td style=\"text-align:left;\">\nZFAND1\n</td>\n<td style=\"text-align:left;\">\nMZT2B\n</td>\n<td style=\"text-align:left;\">\nCCNI\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCDC109B\n</td>\n<td style=\"text-align:left;\">\nSLC2A3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRCN2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSPOCK2\n</td>\n<td style=\"text-align:left;\">\nSH2D1A\n</td>\n<td style=\"text-align:left;\">\nBLK\n</td>\n<td style=\"text-align:left;\">\nIFT57\n</td>\n<td style=\"text-align:left;\">\nSNRNP25\n</td>\n<td style=\"text-align:left;\">\nMOB1A\n</td>\n<td style=\"text-align:left;\">\nC1QBP\n</td>\n<td style=\"text-align:left;\">\nPRDX1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMMD\n</td>\n<td style=\"text-align:left;\">\nRBBP6\n</td>\n<td style=\"text-align:left;\">\nMPP1\n</td>\n<td style=\"text-align:left;\">\nCIR1\n</td>\n<td style=\"text-align:left;\">\nLAMTOR1\n</td>\n<td style=\"text-align:left;\">\nPPP4C\n</td>\n<td style=\"text-align:left;\">\nGNG5\n</td>\n<td style=\"text-align:left;\">\nUBE2L6\n</td>\n<td style=\"text-align:left;\">\nLAIR1\n</td>\n<td style=\"text-align:left;\">\nATP5O\n</td>\n<td style=\"text-align:left;\">\nCOX7A2L\n</td>\n<td style=\"text-align:left;\">\nHERPUD1\n</td>\n<td style=\"text-align:left;\">\nCIB1\n</td>\n<td style=\"text-align:left;\">\nC9orf16\n</td>\n<td style=\"text-align:left;\">\nVPS28\n</td>\n<td style=\"text-align:left;\">\nMIR4435-1HG\n</td>\n<td style=\"text-align:left;\">\nCAPZA2\n</td>\n<td style=\"text-align:left;\">\nGBP2\n</td>\n<td style=\"text-align:left;\">\nRPL7L1\n</td>\n<td style=\"text-align:left;\">\nIFI44\n</td>\n<td style=\"text-align:left;\">\nSRP72\n</td>\n<td style=\"text-align:left;\">\nSYTL1\n</td>\n<td style=\"text-align:left;\">\nGYPC\n</td>\n<td style=\"text-align:left;\">\nTAP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTMEM18\n</td>\n<td style=\"text-align:left;\">\nBTK\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLILRA5\n</td>\n<td style=\"text-align:left;\">\nDUSP6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nQPCT\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPGLS\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nVCAN\n</td>\n<td style=\"text-align:left;\">\nNUDT16\n</td>\n<td style=\"text-align:left;\">\nSAT2\n</td>\n<td style=\"text-align:left;\">\nCSTA\n</td>\n<td style=\"text-align:left;\">\nMPEG1\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPTPN7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDSCR3\n</td>\n<td style=\"text-align:left;\">\nTNFRSF14\n</td>\n<td style=\"text-align:left;\">\nPCSK7\n</td>\n<td style=\"text-align:left;\">\nSON\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAPEX1\n</td>\n<td style=\"text-align:left;\">\nUSP3\n</td>\n<td style=\"text-align:left;\">\nNDUFB11\n</td>\n<td style=\"text-align:left;\">\nHSPB1\n</td>\n<td style=\"text-align:left;\">\nMT1X\n</td>\n<td style=\"text-align:left;\">\nSNHG8\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFBL\n</td>\n<td style=\"text-align:left;\">\nRPL41\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAIMP1\n</td>\n<td style=\"text-align:left;\">\nARHGAP15\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPPM1K\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCR7\n</td>\n<td style=\"text-align:left;\">\nETS1\n</td>\n<td style=\"text-align:left;\">\nFCRLA\n</td>\n<td style=\"text-align:left;\">\nPPAPDC1B\n</td>\n<td style=\"text-align:left;\">\nAHCY\n</td>\n<td style=\"text-align:left;\">\nCYC1\n</td>\n<td style=\"text-align:left;\">\nTRMT112\n</td>\n<td style=\"text-align:left;\">\nSNRPB\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCA2\n</td>\n<td style=\"text-align:left;\">\nAMD1\n</td>\n<td style=\"text-align:left;\">\nPLEKHO1\n</td>\n<td style=\"text-align:left;\">\nADIPOR1\n</td>\n<td style=\"text-align:left;\">\nSCAND1\n</td>\n<td style=\"text-align:left;\">\nEIF5\n</td>\n<td style=\"text-align:left;\">\nVASP\n</td>\n<td style=\"text-align:left;\">\nPOLR2L\n</td>\n<td style=\"text-align:left;\">\nDDAH2\n</td>\n<td style=\"text-align:left;\">\nHNRNPA0\n</td>\n<td style=\"text-align:left;\">\nCRIP1\n</td>\n<td style=\"text-align:left;\">\nPAPOLA\n</td>\n<td style=\"text-align:left;\">\nTMEM59\n</td>\n<td style=\"text-align:left;\">\nUFC1\n</td>\n<td style=\"text-align:left;\">\nDBI\n</td>\n<td style=\"text-align:left;\">\nACTN4\n</td>\n<td style=\"text-align:left;\">\nRAB8A\n</td>\n<td style=\"text-align:left;\">\nVPS29\n</td>\n<td style=\"text-align:left;\">\nCLEC2B\n</td>\n<td style=\"text-align:left;\">\nSMIM12\n</td>\n<td style=\"text-align:left;\">\nZFAND6\n</td>\n<td style=\"text-align:left;\">\nRASAL3\n</td>\n<td style=\"text-align:left;\">\nPPP2R5C\n</td>\n<td style=\"text-align:left;\">\nBTN3A2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nINSIG1\n</td>\n<td style=\"text-align:left;\">\nUNC93B1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPILRA\n</td>\n<td style=\"text-align:left;\">\nTESC\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPID1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCARD16\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nID1\n</td>\n<td style=\"text-align:left;\">\nPRAM1\n</td>\n<td style=\"text-align:left;\">\nIFNGR2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCYBB\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTIGIT\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nBAZ1A\n</td>\n<td style=\"text-align:left;\">\nPOLR2I\n</td>\n<td style=\"text-align:left;\">\nTBC1D10C\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEIF2S3\n</td>\n<td style=\"text-align:left;\">\nACTR1B\n</td>\n<td style=\"text-align:left;\">\nCHMP4A\n</td>\n<td style=\"text-align:left;\">\nMRPS33\n</td>\n<td style=\"text-align:left;\">\nRCBTB2\n</td>\n<td style=\"text-align:left;\">\nEEF1G\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEBPL\n</td>\n<td style=\"text-align:left;\">\nCUTA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTNFAIP8\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nARID5B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAQP3\n</td>\n<td style=\"text-align:left;\">\nCDC25B\n</td>\n<td style=\"text-align:left;\">\nMZB1\n</td>\n<td style=\"text-align:left;\">\nNAT9\n</td>\n<td style=\"text-align:left;\">\nMCM5\n</td>\n<td style=\"text-align:left;\">\nSNF8\n</td>\n<td style=\"text-align:left;\">\nERH\n</td>\n<td style=\"text-align:left;\">\nUBE2I\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPTCRA\n</td>\n<td style=\"text-align:left;\">\nGRAP2\n</td>\n<td style=\"text-align:left;\">\nMTHFD2\n</td>\n<td style=\"text-align:left;\">\nFDFT1\n</td>\n<td style=\"text-align:left;\">\nGNAS\n</td>\n<td style=\"text-align:left;\">\nLAMTOR5\n</td>\n<td style=\"text-align:left;\">\nRBX1\n</td>\n<td style=\"text-align:left;\">\nSEC11A\n</td>\n<td style=\"text-align:left;\">\nPARP14\n</td>\n<td style=\"text-align:left;\">\nANP32B\n</td>\n<td style=\"text-align:left;\">\nATP5H\n</td>\n<td style=\"text-align:left;\">\nRTFDC1\n</td>\n<td style=\"text-align:left;\">\nHNRNPF\n</td>\n<td style=\"text-align:left;\">\nARF6\n</td>\n<td style=\"text-align:left;\">\nDYNLL1\n</td>\n<td style=\"text-align:left;\">\nASCL2\n</td>\n<td style=\"text-align:left;\">\nIDH2\n</td>\n<td style=\"text-align:left;\">\nMKRN1\n</td>\n<td style=\"text-align:left;\">\nEMG1\n</td>\n<td style=\"text-align:left;\">\nFLOT1\n</td>\n<td style=\"text-align:left;\">\nPMAIP1\n</td>\n<td style=\"text-align:left;\">\nMAEA\n</td>\n<td style=\"text-align:left;\">\nDDIT4\n</td>\n<td style=\"text-align:left;\">\nPRMT2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCUX1\n</td>\n<td style=\"text-align:left;\">\nSCIMP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLRRC25\n</td>\n<td style=\"text-align:left;\">\nSLC16A3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCXCL2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCASP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCD1D\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAPLP2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSLC11A1\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPRR5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMRPL18\n</td>\n<td style=\"text-align:left;\">\nARF4\n</td>\n<td style=\"text-align:left;\">\nFAM65B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMED30\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSSU72\n</td>\n<td style=\"text-align:left;\">\nRP11-51J9.5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHNRNPH3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEIF3E\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPCNP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPPP3CC\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFLT3LG\n</td>\n<td style=\"text-align:left;\">\nBCL11B\n</td>\n<td style=\"text-align:left;\">\nCD72\n</td>\n<td style=\"text-align:left;\">\nRBM5\n</td>\n<td style=\"text-align:left;\">\nFABP5\n</td>\n<td style=\"text-align:left;\">\nFIBP\n</td>\n<td style=\"text-align:left;\">\nCNN2\n</td>\n<td style=\"text-align:left;\">\nSEC61B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSPARC\n</td>\n<td style=\"text-align:left;\">\nRSU1\n</td>\n<td style=\"text-align:left;\">\nSNN\n</td>\n<td style=\"text-align:left;\">\nGRSF1\n</td>\n<td style=\"text-align:left;\">\nHSD17B11\n</td>\n<td style=\"text-align:left;\">\nREEP5\n</td>\n<td style=\"text-align:left;\">\nRGS19\n</td>\n<td style=\"text-align:left;\">\nCASP4\n</td>\n<td style=\"text-align:left;\">\nLMO4\n</td>\n<td style=\"text-align:left;\">\nATP5A1\n</td>\n<td style=\"text-align:left;\">\nNDUFB10\n</td>\n<td style=\"text-align:left;\">\nLSM10\n</td>\n<td style=\"text-align:left;\">\nC11orf58\n</td>\n<td style=\"text-align:left;\">\nHNRNPM\n</td>\n<td style=\"text-align:left;\">\nPSMB10\n</td>\n<td style=\"text-align:left;\">\nMPST\n</td>\n<td style=\"text-align:left;\">\nCLTB\n</td>\n<td style=\"text-align:left;\">\nMYH9\n</td>\n<td style=\"text-align:left;\">\nDPM1\n</td>\n<td style=\"text-align:left;\">\nPSTPIP1\n</td>\n<td style=\"text-align:left;\">\nRAB11B\n</td>\n<td style=\"text-align:left;\">\nRAB37\n</td>\n<td style=\"text-align:left;\">\nTERF2IP\n</td>\n<td style=\"text-align:left;\">\nBUB3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUBLCP1\n</td>\n<td style=\"text-align:left;\">\nALOX5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLILRB2\n</td>\n<td style=\"text-align:left;\">\nCTSL\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEREG\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nARRB2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNCOR2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nJUND\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCLEC7A\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nKLRB1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSMIM7\n</td>\n<td style=\"text-align:left;\">\nN4BP2L1\n</td>\n<td style=\"text-align:left;\">\nPPP1R2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRP11-349A22.5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRAP1A\n</td>\n<td style=\"text-align:left;\">\nIL27RA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEPB41L4A-AS1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRSL1D1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMZT2A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLY9\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTRAT1\n</td>\n<td style=\"text-align:left;\">\nGATA3\n</td>\n<td style=\"text-align:left;\">\nTSPAN13\n</td>\n<td style=\"text-align:left;\">\nTPD52\n</td>\n<td style=\"text-align:left;\">\nPTTG1\n</td>\n<td style=\"text-align:left;\">\nTMEM208\n</td>\n<td style=\"text-align:left;\">\nDAD1\n</td>\n<td style=\"text-align:left;\">\nNDUFA1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMYL9\n</td>\n<td style=\"text-align:left;\">\nNT5C3A\n</td>\n<td style=\"text-align:left;\">\nTAX1BP3\n</td>\n<td style=\"text-align:left;\">\nILK\n</td>\n<td style=\"text-align:left;\">\nCHMP1B\n</td>\n<td style=\"text-align:left;\">\nATP5EP2\n</td>\n<td style=\"text-align:left;\">\nRTN4\n</td>\n<td style=\"text-align:left;\">\nNOP10\n</td>\n<td style=\"text-align:left;\">\nSKAP2\n</td>\n<td style=\"text-align:left;\">\nNDUFB9\n</td>\n<td style=\"text-align:left;\">\nUQCR10\n</td>\n<td style=\"text-align:left;\">\nRPL22L1\n</td>\n<td style=\"text-align:left;\">\nRBM39\n</td>\n<td style=\"text-align:left;\">\nHNRNPA3\n</td>\n<td style=\"text-align:left;\">\nPRDX5\n</td>\n<td style=\"text-align:left;\">\nTMEM140\n</td>\n<td style=\"text-align:left;\">\nPSMA4\n</td>\n<td style=\"text-align:left;\">\nNMI\n</td>\n<td style=\"text-align:left;\">\nVPS25\n</td>\n<td style=\"text-align:left;\">\nLINC00152\n</td>\n<td style=\"text-align:left;\">\nNT5C\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSEPT1\n</td>\n<td style=\"text-align:left;\">\nHSPA5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCDIP1\n</td>\n<td style=\"text-align:left;\">\nHHEX\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC19orf38\n</td>\n<td style=\"text-align:left;\">\nNAGA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTNFSF10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGSN\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC4orf48\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSULT1A1\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMATK\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTRIM22\n</td>\n<td style=\"text-align:left;\">\nGMPR2\n</td>\n<td style=\"text-align:left;\">\nNCOR1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nKIAA0040\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPOLR1D\n</td>\n<td style=\"text-align:left;\">\nPRMT10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIMPDH2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCNL1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDDX24\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRP1-313I6.12\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPRKCQ-AS1\n</td>\n<td style=\"text-align:left;\">\nSIRPG\n</td>\n<td style=\"text-align:left;\">\nHLA-DOB\n</td>\n<td style=\"text-align:left;\">\nITM2C\n</td>\n<td style=\"text-align:left;\">\nMCM7\n</td>\n<td style=\"text-align:left;\">\nMX2\n</td>\n<td style=\"text-align:left;\">\nSERBP1\n</td>\n<td style=\"text-align:left;\">\nABRACL\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGP9\n</td>\n<td style=\"text-align:left;\">\nR3HDM4\n</td>\n<td style=\"text-align:left;\">\nMFSD1\n</td>\n<td style=\"text-align:left;\">\nCNDP2\n</td>\n<td style=\"text-align:left;\">\nERGIC3\n</td>\n<td style=\"text-align:left;\">\nPOLR2J\n</td>\n<td style=\"text-align:left;\">\nCHCHD10\n</td>\n<td style=\"text-align:left;\">\nC20orf24\n</td>\n<td style=\"text-align:left;\">\nEPN1\n</td>\n<td style=\"text-align:left;\">\nC19orf53\n</td>\n<td style=\"text-align:left;\">\nATP5J2\n</td>\n<td style=\"text-align:left;\">\nZC3H15\n</td>\n<td style=\"text-align:left;\">\nCDC42\n</td>\n<td style=\"text-align:left;\">\nEIF3I\n</td>\n<td style=\"text-align:left;\">\nCSNK2B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nOASL\n</td>\n<td style=\"text-align:left;\">\nMPC1\n</td>\n<td style=\"text-align:left;\">\nCRELD2\n</td>\n<td style=\"text-align:left;\">\nDNAJC1\n</td>\n<td style=\"text-align:left;\">\nATF6B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nARL4C\n</td>\n<td style=\"text-align:left;\">\nWIPF1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPPM1N\n</td>\n<td style=\"text-align:left;\">\nSYK\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSLC31A2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGNAI2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRASSF4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAGTRAP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGNS\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIL2RB\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGRK6\n</td>\n<td style=\"text-align:left;\">\nC10orf32\n</td>\n<td style=\"text-align:left;\">\nSP100\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIFI44L\n</td>\n<td style=\"text-align:left;\">\nUBE2K\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTAF1D\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNSA2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTSTD1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPITPNA-AS1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLEF1\n</td>\n<td style=\"text-align:left;\">\nGPR171\n</td>\n<td style=\"text-align:left;\">\nSPIB\n</td>\n<td style=\"text-align:left;\">\nCXXC5\n</td>\n<td style=\"text-align:left;\">\nFEN1\n</td>\n<td style=\"text-align:left;\">\nTXNDC17\n</td>\n<td style=\"text-align:left;\">\nTUBB\n</td>\n<td style=\"text-align:left;\">\nMDH2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nF13A1\n</td>\n<td style=\"text-align:left;\">\nNGFRAP1\n</td>\n<td style=\"text-align:left;\">\nMARCH2\n</td>\n<td style=\"text-align:left;\">\nHIST1H2BK\n</td>\n<td style=\"text-align:left;\">\nIDH3G\n</td>\n<td style=\"text-align:left;\">\nSUMO3\n</td>\n<td style=\"text-align:left;\">\nNDUFB5\n</td>\n<td style=\"text-align:left;\">\nTMEM219\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nU2AF1\n</td>\n<td style=\"text-align:left;\">\nMRPL23\n</td>\n<td style=\"text-align:left;\">\nLSM2\n</td>\n<td style=\"text-align:left;\">\nYWHAZ\n</td>\n<td style=\"text-align:left;\">\nRABAC1\n</td>\n<td style=\"text-align:left;\">\nNDUFB2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUBE2B\n</td>\n<td style=\"text-align:left;\">\nMOB2\n</td>\n<td style=\"text-align:left;\">\nSMARCA4\n</td>\n<td style=\"text-align:left;\">\nFDPS\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTECR\n</td>\n<td style=\"text-align:left;\">\nARPC5L\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCD83\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHMOX1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDYNLT1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nENTPD1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGCA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nADAP2\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nS100B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC1orf63\n</td>\n<td style=\"text-align:left;\">\nMESDC2\n</td>\n<td style=\"text-align:left;\">\nMEAF6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIGBP1\n</td>\n<td style=\"text-align:left;\">\nLGALS3BP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nZNF331\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nILF3-AS1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSBDS\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNUP54\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMAL\n</td>\n<td style=\"text-align:left;\">\nAC092580.4\n</td>\n<td style=\"text-align:left;\">\nPKIG\n</td>\n<td style=\"text-align:left;\">\nMAP3K8\n</td>\n<td style=\"text-align:left;\">\nMAD2L1\n</td>\n<td style=\"text-align:left;\">\nTIMM8B\n</td>\n<td style=\"text-align:left;\">\nSUB1\n</td>\n<td style=\"text-align:left;\">\nPSMB6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTMEM40\n</td>\n<td style=\"text-align:left;\">\nCD82\n</td>\n<td style=\"text-align:left;\">\nPARVB\n</td>\n<td style=\"text-align:left;\">\nTHOC6\n</td>\n<td style=\"text-align:left;\">\nMT-ND3\n</td>\n<td style=\"text-align:left;\">\nDBNL\n</td>\n<td style=\"text-align:left;\">\nOAS1\n</td>\n<td style=\"text-align:left;\">\nCLTA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nISCU\n</td>\n<td style=\"text-align:left;\">\nATP5I\n</td>\n<td style=\"text-align:left;\">\nEIF1B\n</td>\n<td style=\"text-align:left;\">\nC4orf3\n</td>\n<td style=\"text-align:left;\">\nENSA\n</td>\n<td style=\"text-align:left;\">\nRAB7A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRNF149\n</td>\n<td style=\"text-align:left;\">\nCMC1\n</td>\n<td style=\"text-align:left;\">\nCTD-2035E11.3\n</td>\n<td style=\"text-align:left;\">\nGNG2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSEPT6\n</td>\n<td style=\"text-align:left;\">\nLAMP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIFIT2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLILRA3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNAAA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nOSM\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC20orf27\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCD320\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPPCS\n</td>\n<td style=\"text-align:left;\">\nPOLR3K\n</td>\n<td style=\"text-align:left;\">\nRNPS1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMETTL9\n</td>\n<td style=\"text-align:left;\">\nCAMK2G\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nYME1L1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPSIP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCHI3L2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSUSD3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nBLNK\n</td>\n<td style=\"text-align:left;\">\nIL4R\n</td>\n<td style=\"text-align:left;\">\nTYMS\n</td>\n<td style=\"text-align:left;\">\nMRPL28\n</td>\n<td style=\"text-align:left;\">\nC14orf166\n</td>\n<td style=\"text-align:left;\">\nATP5J\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTREML1\n</td>\n<td style=\"text-align:left;\">\nPTTG1IP\n</td>\n<td style=\"text-align:left;\">\nCORO1C\n</td>\n<td style=\"text-align:left;\">\nPOP7\n</td>\n<td style=\"text-align:left;\">\nOXA1L\n</td>\n<td style=\"text-align:left;\">\nSNX17\n</td>\n<td style=\"text-align:left;\">\nATG3\n</td>\n<td style=\"text-align:left;\">\nNDUFS7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMORF4L1\n</td>\n<td style=\"text-align:left;\">\nNDUFA2\n</td>\n<td style=\"text-align:left;\">\nEZR\n</td>\n<td style=\"text-align:left;\">\nSEPT9\n</td>\n<td style=\"text-align:left;\">\nTMEM258\n</td>\n<td style=\"text-align:left;\">\nFAM49B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSQRDL\n</td>\n<td style=\"text-align:left;\">\nRAB9A\n</td>\n<td style=\"text-align:left;\">\nRAB27A\n</td>\n<td style=\"text-align:left;\">\nPHF14\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPIM1\n</td>\n<td style=\"text-align:left;\">\nARL6IP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSIGLEC10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCSF1R\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEPSTI1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSULF2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSCO2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSH2D2A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nADAR\n</td>\n<td style=\"text-align:left;\">\nTLE4\n</td>\n<td style=\"text-align:left;\">\nKRT10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMRFAP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTMC8\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDDX18\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAAK1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nKIAA0125\n</td>\n<td style=\"text-align:left;\">\nSWAP70\n</td>\n<td style=\"text-align:left;\">\nEZH2\n</td>\n<td style=\"text-align:left;\">\nSPCS3\n</td>\n<td style=\"text-align:left;\">\nCYCS\n</td>\n<td style=\"text-align:left;\">\nUQCRQ\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nITGA2B\n</td>\n<td style=\"text-align:left;\">\nACTN1\n</td>\n<td style=\"text-align:left;\">\nH1F0\n</td>\n<td style=\"text-align:left;\">\nLMNA\n</td>\n<td style=\"text-align:left;\">\nTMEM147\n</td>\n<td style=\"text-align:left;\">\nEIF6\n</td>\n<td style=\"text-align:left;\">\nCD55\n</td>\n<td style=\"text-align:left;\">\nAHNAK\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNDUFS5\n</td>\n<td style=\"text-align:left;\">\nALKBH7\n</td>\n<td style=\"text-align:left;\">\nDECR1\n</td>\n<td style=\"text-align:left;\">\nPAIP2\n</td>\n<td style=\"text-align:left;\">\nRBM8A\n</td>\n<td style=\"text-align:left;\">\nOSTF1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUPP1\n</td>\n<td style=\"text-align:left;\">\nMRPL19\n</td>\n<td style=\"text-align:left;\">\nRRAGC\n</td>\n<td style=\"text-align:left;\">\nTMEM109\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nADD3\n</td>\n<td style=\"text-align:left;\">\nMRPS6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRELT\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAPOBEC3B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nOAZ2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMGST2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNAPRT1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPLEKHF1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDNAJC15\n</td>\n<td style=\"text-align:left;\">\nMORF4L2\n</td>\n<td style=\"text-align:left;\">\nEIF4B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNDUFA3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nADSL\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNDNL2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLDLRAP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPOU2AF1\n</td>\n<td style=\"text-align:left;\">\nNXT2\n</td>\n<td style=\"text-align:left;\">\nKIAA0101\n</td>\n<td style=\"text-align:left;\">\nEIF3A\n</td>\n<td style=\"text-align:left;\">\nXRCC6\n</td>\n<td style=\"text-align:left;\">\nCALR\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCMTM5\n</td>\n<td style=\"text-align:left;\">\nHIST1H1C\n</td>\n<td style=\"text-align:left;\">\nSOX4\n</td>\n<td style=\"text-align:left;\">\nSLC39A3\n</td>\n<td style=\"text-align:left;\">\nC1orf86\n</td>\n<td style=\"text-align:left;\">\nXAF1\n</td>\n<td style=\"text-align:left;\">\nMARCKSL1\n</td>\n<td style=\"text-align:left;\">\nZNHIT1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNHP2L1\n</td>\n<td style=\"text-align:left;\">\nRNF7\n</td>\n<td style=\"text-align:left;\">\nMRPL43\n</td>\n<td style=\"text-align:left;\">\nDNAJA1\n</td>\n<td style=\"text-align:left;\">\nAP2M1\n</td>\n<td style=\"text-align:left;\">\nARPC4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMGAT1\n</td>\n<td style=\"text-align:left;\">\nDHX36\n</td>\n<td style=\"text-align:left;\">\nFAM105A\n</td>\n<td style=\"text-align:left;\">\nMAPK1IP1L\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHDAC1\n</td>\n<td style=\"text-align:left;\">\nLSM14A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nKYNU\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGPBAR1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHSBP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIER3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEIF4EBP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nZNHIT3\n</td>\n<td style=\"text-align:left;\">\nSF3A1\n</td>\n<td style=\"text-align:left;\">\nARHGEF1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCMTM7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCT2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTTC39C\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAL928768.3\n</td>\n<td style=\"text-align:left;\">\nHELQ\n</td>\n<td style=\"text-align:left;\">\nRRM2\n</td>\n<td style=\"text-align:left;\">\nISOC2\n</td>\n<td style=\"text-align:left;\">\nEIF4G2\n</td>\n<td style=\"text-align:left;\">\nPSMD8\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCLDN5\n</td>\n<td style=\"text-align:left;\">\nRUFY1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDAPP1\n</td>\n<td style=\"text-align:left;\">\nC14orf2\n</td>\n<td style=\"text-align:left;\">\nWAS\n</td>\n<td style=\"text-align:left;\">\nENY2\n</td>\n<td style=\"text-align:left;\">\nVAMP5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSMDT1\n</td>\n<td style=\"text-align:left;\">\nMRPL54\n</td>\n<td style=\"text-align:left;\">\nRNASEH2B\n</td>\n<td style=\"text-align:left;\">\nVAPA\n</td>\n<td style=\"text-align:left;\">\nIRF1\n</td>\n<td style=\"text-align:left;\">\nARHGDIA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMMP24-AS1\n</td>\n<td style=\"text-align:left;\">\nGFER\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCYB561D2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nANXA2R\n</td>\n<td style=\"text-align:left;\">\nRNF167\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPIK3AP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRXRA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nATP6V0D1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGMPR\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNAGK\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPRKAR1A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSRSF11\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSQSTM1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFAM107B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMGAT4A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRP5-887A10.1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCENPN\n</td>\n<td style=\"text-align:left;\">\nGGCT\n</td>\n<td style=\"text-align:left;\">\nATPIF1\n</td>\n<td style=\"text-align:left;\">\nAURKAIP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nERV3-1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRIOK3\n</td>\n<td style=\"text-align:left;\">\nPQBP1\n</td>\n<td style=\"text-align:left;\">\nPFDN2\n</td>\n<td style=\"text-align:left;\">\nCOX17\n</td>\n<td style=\"text-align:left;\">\nSDCBP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCDC85B\n</td>\n<td style=\"text-align:left;\">\nVDAC1\n</td>\n<td style=\"text-align:left;\">\nYPEL3\n</td>\n<td style=\"text-align:left;\">\nC9orf78\n</td>\n<td style=\"text-align:left;\">\nTMEM230\n</td>\n<td style=\"text-align:left;\">\nTBCB\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nANAPC13\n</td>\n<td style=\"text-align:left;\">\nCXXC1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCELF1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHMOX2\n</td>\n<td style=\"text-align:left;\">\nC19orf66\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nKIAA0930\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nOSCAR\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEIF4E2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSRA1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAPBB1IP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTAF7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDPP7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFGFR1OP2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nOXNAD1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTNFRSF13B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGMNN\n</td>\n<td style=\"text-align:left;\">\nYIF1B\n</td>\n<td style=\"text-align:left;\">\nSPCS2\n</td>\n<td style=\"text-align:left;\">\nMTDH\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTUBA1C\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nZNF263\n</td>\n<td style=\"text-align:left;\">\nDNAJC7\n</td>\n<td style=\"text-align:left;\">\nACTR2\n</td>\n<td style=\"text-align:left;\">\nLYSMD2\n</td>\n<td style=\"text-align:left;\">\nSAMHD1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEIF3M\n</td>\n<td style=\"text-align:left;\">\nHADHA\n</td>\n<td style=\"text-align:left;\">\nCCT6A\n</td>\n<td style=\"text-align:left;\">\nDYNLRB1\n</td>\n<td style=\"text-align:left;\">\nKRTCAP2\n</td>\n<td style=\"text-align:left;\">\nBAX\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPLIN2\n</td>\n<td style=\"text-align:left;\">\nSTX18\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDTNBP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRPA2\n</td>\n<td style=\"text-align:left;\">\nSLC9A3R1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHES1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLILRB1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nZYX\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMIR24-2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIKZF1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nKMT2E\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFNBP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPIM2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNUCB2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTNFRSF17\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTK1\n</td>\n<td style=\"text-align:left;\">\nHAUS4\n</td>\n<td style=\"text-align:left;\">\nPSMC5\n</td>\n<td style=\"text-align:left;\">\nPSMA5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nBBC3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDERA\n</td>\n<td style=\"text-align:left;\">\nBNIP3L\n</td>\n<td style=\"text-align:left;\">\nERP44\n</td>\n<td style=\"text-align:left;\">\nGRB2\n</td>\n<td style=\"text-align:left;\">\nSDHB\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCSDE1\n</td>\n<td style=\"text-align:left;\">\nPSMG2\n</td>\n<td style=\"text-align:left;\">\nDRAM2\n</td>\n<td style=\"text-align:left;\">\nSELK\n</td>\n<td style=\"text-align:left;\">\nPDCD6\n</td>\n<td style=\"text-align:left;\">\nSELT\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIFIT1\n</td>\n<td style=\"text-align:left;\">\nPGM1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nBAZ2A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNDUFA5\n</td>\n<td style=\"text-align:left;\">\nTSC22D4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHES4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTNFRSF1B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNR4A1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSNAP23\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTAPSAR1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMGST3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDNAJB9\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRGL4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGINS2\n</td>\n<td style=\"text-align:left;\">\nHDGF\n</td>\n<td style=\"text-align:left;\">\nRANBP1\n</td>\n<td style=\"text-align:left;\">\nH2AFV\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPLA2G12A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPICALM\n</td>\n<td style=\"text-align:left;\">\nNENF\n</td>\n<td style=\"text-align:left;\">\nTWF2\n</td>\n<td style=\"text-align:left;\">\nLSM6\n</td>\n<td style=\"text-align:left;\">\nLAMTOR2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSF1\n</td>\n<td style=\"text-align:left;\">\nETFB\n</td>\n<td style=\"text-align:left;\">\nCAPZA1\n</td>\n<td style=\"text-align:left;\">\nPYURF\n</td>\n<td style=\"text-align:left;\">\nVDAC2\n</td>\n<td style=\"text-align:left;\">\nTMBIM4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nARRDC1\n</td>\n<td style=\"text-align:left;\">\nDYNLL2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHSH2D\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDENND2D\n</td>\n<td style=\"text-align:left;\">\nBZW1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCAMK1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCAPNS1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCECR1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nBEST1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTCEA1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNUCB1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDEGS1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCD40LG\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nZWINT\n</td>\n<td style=\"text-align:left;\">\nPGP\n</td>\n<td style=\"text-align:left;\">\nDUT\n</td>\n<td style=\"text-align:left;\">\nTOMM22\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPGRMC1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAPP\n</td>\n<td style=\"text-align:left;\">\nAKR1A1\n</td>\n<td style=\"text-align:left;\">\nEMC7\n</td>\n<td style=\"text-align:left;\">\nZFAND5\n</td>\n<td style=\"text-align:left;\">\nNDUFS6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTRA2B\n</td>\n<td style=\"text-align:left;\">\nCOX14\n</td>\n<td style=\"text-align:left;\">\nSMAP2\n</td>\n<td style=\"text-align:left;\">\nS1PR4\n</td>\n<td style=\"text-align:left;\">\nFAM96B\n</td>\n<td style=\"text-align:left;\">\nPSMD4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIFI27\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAPOBEC3C\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTBCC\n</td>\n<td style=\"text-align:left;\">\nDEF6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCD300E\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUBE2D1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMIDN\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTAOK3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUBXN4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTGOLN2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nXXbac-BPG299F13.17\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTRABD2A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nBIK\n</td>\n<td style=\"text-align:left;\">\nREEP3\n</td>\n<td style=\"text-align:left;\">\nTBCA\n</td>\n<td style=\"text-align:left;\">\nNDUFC2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFHL1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMID1IP1\n</td>\n<td style=\"text-align:left;\">\nNDUFS3\n</td>\n<td style=\"text-align:left;\">\nCHMP4B\n</td>\n<td style=\"text-align:left;\">\nCD97\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNDUFV2\n</td>\n<td style=\"text-align:left;\">\nPSMB4\n</td>\n<td style=\"text-align:left;\">\nPLEKHJ1\n</td>\n<td style=\"text-align:left;\">\nBCAP31\n</td>\n<td style=\"text-align:left;\">\nLMAN2\n</td>\n<td style=\"text-align:left;\">\nWDR1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRSAD2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nZBP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPBXIP1\n</td>\n<td style=\"text-align:left;\">\nC5orf56\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCD300LF\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTHEMIS2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGRINA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCARD8\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMED10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPTPN2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPARP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCD6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCNA2\n</td>\n<td style=\"text-align:left;\">\nLMNB1\n</td>\n<td style=\"text-align:left;\">\nHSP90B1\n</td>\n<td style=\"text-align:left;\">\nLSM4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSLC40A1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHADHB\n</td>\n<td style=\"text-align:left;\">\nBAG1\n</td>\n<td style=\"text-align:left;\">\nSMS\n</td>\n<td style=\"text-align:left;\">\nTGFB1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUQCRC2\n</td>\n<td style=\"text-align:left;\">\nPSMD9\n</td>\n<td style=\"text-align:left;\">\nTMEM256\n</td>\n<td style=\"text-align:left;\">\nICAM2\n</td>\n<td style=\"text-align:left;\">\nTAPBP\n</td>\n<td style=\"text-align:left;\">\nNDUFB7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nATP5SL\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nABHD14B\n</td>\n<td style=\"text-align:left;\">\nRSRC2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nARHGEF40\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNANS\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPTPRE\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nKLF3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSEC62\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEVI2A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTOB1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSH3YL1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nBIRC5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nECH1\n</td>\n<td style=\"text-align:left;\">\nPDIA6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPNMA1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTREX1\n</td>\n<td style=\"text-align:left;\">\nLRPAP1\n</td>\n<td style=\"text-align:left;\">\nCAT\n</td>\n<td style=\"text-align:left;\">\nGLIPR1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEIF2S2\n</td>\n<td style=\"text-align:left;\">\nADI1\n</td>\n<td style=\"text-align:left;\">\nBLOC1S2\n</td>\n<td style=\"text-align:left;\">\nTMED2\n</td>\n<td style=\"text-align:left;\">\nSUMO1\n</td>\n<td style=\"text-align:left;\">\nRAB5C\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCOMMD10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRGS1\n</td>\n<td style=\"text-align:left;\">\nHDDC2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCXCL16\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nATOX1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCARS2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLIPA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCT4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTNIP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSVIP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCAMK4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nXRCC5\n</td>\n<td style=\"text-align:left;\">\nTUFM\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTPM1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPARL\n</td>\n<td style=\"text-align:left;\">\nSHKBP1\n</td>\n<td style=\"text-align:left;\">\nLTA4H\n</td>\n<td style=\"text-align:left;\">\nRILPL2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMINOS1\n</td>\n<td style=\"text-align:left;\">\nNAA10\n</td>\n<td style=\"text-align:left;\">\nWBP2\n</td>\n<td style=\"text-align:left;\">\nSSBP1\n</td>\n<td style=\"text-align:left;\">\nGADD45B\n</td>\n<td style=\"text-align:left;\">\nCHMP2A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCD38\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIFRD1\n</td>\n<td style=\"text-align:left;\">\nSMARCE1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTPPP3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMAPKAPK3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDNTTIP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nZNF394\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nKIF5B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEMC10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTMEM261\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSATB1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHNRNPU\n</td>\n<td style=\"text-align:left;\">\nP4HB\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCDC69\n</td>\n<td style=\"text-align:left;\">\nTRAPPC2L\n</td>\n<td style=\"text-align:left;\">\nFAM32A\n</td>\n<td style=\"text-align:left;\">\nSSR3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMRPL20\n</td>\n<td style=\"text-align:left;\">\nTXN2\n</td>\n<td style=\"text-align:left;\">\nEIF5B\n</td>\n<td style=\"text-align:left;\">\nANXA11\n</td>\n<td style=\"text-align:left;\">\nGADD45GIP1\n</td>\n<td style=\"text-align:left;\">\nSRI\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nITGB7\n</td>\n<td style=\"text-align:left;\">\nDDX6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLILRA2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCBR1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMYO9B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCLK3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSTK4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMTIF3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nBEX4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFHIT\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNCL\n</td>\n<td style=\"text-align:left;\">\nDEK\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHTATIP2\n</td>\n<td style=\"text-align:left;\">\nC7orf50\n</td>\n<td style=\"text-align:left;\">\nPMVK\n</td>\n<td style=\"text-align:left;\">\nUQCRC1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTOMM20\n</td>\n<td style=\"text-align:left;\">\nMRPL41\n</td>\n<td style=\"text-align:left;\">\nMMADHC\n</td>\n<td style=\"text-align:left;\">\nCD47\n</td>\n<td style=\"text-align:left;\">\nACP1\n</td>\n<td style=\"text-align:left;\">\nSIVA1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDNAJC19\n</td>\n<td style=\"text-align:left;\">\nSDF4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEMR2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTNFRSF1A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUBE2R2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSNX9\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPOLR3GL\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFRG1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCYLD\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUSP10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNHP2\n</td>\n<td style=\"text-align:left;\">\nUBE2L3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nARHGAP4\n</td>\n<td style=\"text-align:left;\">\nBNIP2\n</td>\n<td style=\"text-align:left;\">\nYWHAE\n</td>\n<td style=\"text-align:left;\">\nSERPINB6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC19orf60\n</td>\n<td style=\"text-align:left;\">\nNDUFA7\n</td>\n<td style=\"text-align:left;\">\nSLTM\n</td>\n<td style=\"text-align:left;\">\nNDUFB4\n</td>\n<td style=\"text-align:left;\">\nPSMA1\n</td>\n<td style=\"text-align:left;\">\nRALY\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRNF139\n</td>\n<td style=\"text-align:left;\">\nDERL1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMS4A4A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nADRBK1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLACTB\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nOCIAD1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCSRNP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nASF1A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUXS1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPA2G4\n</td>\n<td style=\"text-align:left;\">\nC19orf10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMRPL40\n</td>\n<td style=\"text-align:left;\">\nMRPS23\n</td>\n<td style=\"text-align:left;\">\nPARVG\n</td>\n<td style=\"text-align:left;\">\nLSMD1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIDS\n</td>\n<td style=\"text-align:left;\">\nRNF187\n</td>\n<td style=\"text-align:left;\">\nHAGH\n</td>\n<td style=\"text-align:left;\">\nNDUFA12\n</td>\n<td style=\"text-align:left;\">\nRPS19BP1\n</td>\n<td style=\"text-align:left;\">\nBSG\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFKBP11\n</td>\n<td style=\"text-align:left;\">\nPRPF31\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCTD-2006K23.1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTCIRG1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCDKN1A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMPHOSPH8\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSLC38A1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCISH\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNOL7\n</td>\n<td style=\"text-align:left;\">\nMYEOV2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMTHFS\n</td>\n<td style=\"text-align:left;\">\nFAM173A\n</td>\n<td style=\"text-align:left;\">\nACAA1\n</td>\n<td style=\"text-align:left;\">\nPHPT1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nATF4\n</td>\n<td style=\"text-align:left;\">\nOLA1\n</td>\n<td style=\"text-align:left;\">\nCOQ7\n</td>\n<td style=\"text-align:left;\">\nPSMA2\n</td>\n<td style=\"text-align:left;\">\nRPN2\n</td>\n<td style=\"text-align:left;\">\nTCF25\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSKAP1\n</td>\n<td style=\"text-align:left;\">\nSPSB3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC1QA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNAMPT\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCREG1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCRBN\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCDKN1B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPASK\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMDH1\n</td>\n<td style=\"text-align:left;\">\nPSMB2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDNAJC4\n</td>\n<td style=\"text-align:left;\">\nHBP1\n</td>\n<td style=\"text-align:left;\">\nNFKBIZ\n</td>\n<td style=\"text-align:left;\">\nNDUFB1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDGUOK\n</td>\n<td style=\"text-align:left;\">\nMRPL52\n</td>\n<td style=\"text-align:left;\">\nFBXW5\n</td>\n<td style=\"text-align:left;\">\nSSB\n</td>\n<td style=\"text-align:left;\">\nBANF1\n</td>\n<td style=\"text-align:left;\">\nPOLR2G\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNAP1L4\n</td>\n<td style=\"text-align:left;\">\nEBP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nZNF703\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nZNF106\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFUOM\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTMEM243\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLSM5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTNFRSF25\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCT8\n</td>\n<td style=\"text-align:left;\">\nMRPL51\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPRPF8\n</td>\n<td style=\"text-align:left;\">\nTIMMDC1\n</td>\n<td style=\"text-align:left;\">\nVMP1\n</td>\n<td style=\"text-align:left;\">\nSPG21\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMRPS21\n</td>\n<td style=\"text-align:left;\">\nMPG\n</td>\n<td style=\"text-align:left;\">\nPNKD\n</td>\n<td style=\"text-align:left;\">\nCELF2\n</td>\n<td style=\"text-align:left;\">\nHMGN3\n</td>\n<td style=\"text-align:left;\">\nNDUFS8\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nYTHDF2\n</td>\n<td style=\"text-align:left;\">\nGCHFR\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCEBPA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAP2A1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFBP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPPIG\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nG3BP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCDC104\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHSPE1\n</td>\n<td style=\"text-align:left;\">\nTXN\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nZNF581\n</td>\n<td style=\"text-align:left;\">\nABTB1\n</td>\n<td style=\"text-align:left;\">\nCYTH4\n</td>\n<td style=\"text-align:left;\">\nIFI27L2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCAMLG\n</td>\n<td style=\"text-align:left;\">\nNDUFA9\n</td>\n<td style=\"text-align:left;\">\nTINF2\n</td>\n<td style=\"text-align:left;\">\nRPS27L\n</td>\n<td style=\"text-align:left;\">\nKARS\n</td>\n<td style=\"text-align:left;\">\nBUD31\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSTT3B\n</td>\n<td style=\"text-align:left;\">\nMFSD10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nALDH3B1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC11orf21\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPDXK\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMED4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMPHOSPH10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nINTS12\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPHB\n</td>\n<td style=\"text-align:left;\">\nSNRPD1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nACAP2\n</td>\n<td style=\"text-align:left;\">\nZNF511\n</td>\n<td style=\"text-align:left;\">\nMTPN\n</td>\n<td style=\"text-align:left;\">\nVIMP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPPP1CC\n</td>\n<td style=\"text-align:left;\">\nEMC6\n</td>\n<td style=\"text-align:left;\">\nSMARCB1\n</td>\n<td style=\"text-align:left;\">\nNUDC\n</td>\n<td style=\"text-align:left;\">\nSHISA5\n</td>\n<td style=\"text-align:left;\">\nRNF213\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nREXO2\n</td>\n<td style=\"text-align:left;\">\nUBA2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC1QB\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNRROS\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPLIN3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUGP2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTHAP7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNELL2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCT3\n</td>\n<td style=\"text-align:left;\">\nSNRPC\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRPL26L1\n</td>\n<td style=\"text-align:left;\">\nTPP1\n</td>\n<td style=\"text-align:left;\">\nMYD88\n</td>\n<td style=\"text-align:left;\">\nCOMT\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNDUFAF3\n</td>\n<td style=\"text-align:left;\">\nMVP\n</td>\n<td style=\"text-align:left;\">\nSET\n</td>\n<td style=\"text-align:left;\">\nCAPN2\n</td>\n<td style=\"text-align:left;\">\nIMP3\n</td>\n<td style=\"text-align:left;\">\nATP6AP2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRBL2\n</td>\n<td style=\"text-align:left;\">\nALDH9A1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHCAR3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMANBA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nATF3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDCK\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nID3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAKTIP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEWSR1\n</td>\n<td style=\"text-align:left;\">\nMRPS34\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTRMT1\n</td>\n<td style=\"text-align:left;\">\nIFNGR1\n</td>\n<td style=\"text-align:left;\">\nAKIRIN2\n</td>\n<td style=\"text-align:left;\">\nMAP2K3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nANXA7\n</td>\n<td style=\"text-align:left;\">\nNDUFC1\n</td>\n<td style=\"text-align:left;\">\nLRCH4\n</td>\n<td style=\"text-align:left;\">\nIK\n</td>\n<td style=\"text-align:left;\">\nC16orf13\n</td>\n<td style=\"text-align:left;\">\nMAP1LC3B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNOP58\n</td>\n<td style=\"text-align:left;\">\nORAI1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCXCL3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMBOAT7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nWTAP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSLC25A45\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLINC00176\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHNRNPR\n</td>\n<td style=\"text-align:left;\">\nPSMD7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFAM195A\n</td>\n<td style=\"text-align:left;\">\nDOCK2\n</td>\n<td style=\"text-align:left;\">\nCOMMD9\n</td>\n<td style=\"text-align:left;\">\nCHCHD5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHAX1\n</td>\n<td style=\"text-align:left;\">\nCOX7B\n</td>\n<td style=\"text-align:left;\">\nSIAH2\n</td>\n<td style=\"text-align:left;\">\nEIF4H\n</td>\n<td style=\"text-align:left;\">\nCDC42SE1\n</td>\n<td style=\"text-align:left;\">\nRER1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCD96\n</td>\n<td style=\"text-align:left;\">\nSURF4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPRKCD\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nORMDL1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRP11-489E7.4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCD28\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCBX3\n</td>\n<td style=\"text-align:left;\">\nILF2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFAM192A\n</td>\n<td style=\"text-align:left;\">\nIFIT3\n</td>\n<td style=\"text-align:left;\">\nSTX10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMBNL1\n</td>\n<td style=\"text-align:left;\">\nMRPS16\n</td>\n<td style=\"text-align:left;\">\nUBE2J1\n</td>\n<td style=\"text-align:left;\">\nHMHA1\n</td>\n<td style=\"text-align:left;\">\nSPAG7\n</td>\n<td style=\"text-align:left;\">\nFMNL1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSH3BP5\n</td>\n<td style=\"text-align:left;\">\nB3GAT3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSGK1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCDC107\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGPATCH4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSCGB3A1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCACYBP\n</td>\n<td style=\"text-align:left;\">\nCCT5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCINP\n</td>\n<td style=\"text-align:left;\">\nERICH1\n</td>\n<td style=\"text-align:left;\">\nHM13\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNR4A2\n</td>\n<td style=\"text-align:left;\">\nZNRD1\n</td>\n<td style=\"text-align:left;\">\nC12orf10\n</td>\n<td style=\"text-align:left;\">\nJAK1\n</td>\n<td style=\"text-align:left;\">\nSDHC\n</td>\n<td style=\"text-align:left;\">\nDCTN3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEMB\n</td>\n<td style=\"text-align:left;\">\nPLGRKT\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRAB34\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTAGAP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTNRC6C\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nOSTC\n</td>\n<td style=\"text-align:left;\">\nATP5G1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nARPC1A\n</td>\n<td style=\"text-align:left;\">\nVKORC1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMRP63\n</td>\n<td style=\"text-align:left;\">\nMKKS\n</td>\n<td style=\"text-align:left;\">\nSMCHD1\n</td>\n<td style=\"text-align:left;\">\nTRAM1\n</td>\n<td style=\"text-align:left;\">\nEMC4\n</td>\n<td style=\"text-align:left;\">\nPCMT1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPRKCH\n</td>\n<td style=\"text-align:left;\">\nGBP5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPDCD4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRP11-291B21.2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTHOC7\n</td>\n<td style=\"text-align:left;\">\nSHFM1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRFXANK\n</td>\n<td style=\"text-align:left;\">\nECHDC1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSF3B2\n</td>\n<td style=\"text-align:left;\">\nSTRA13\n</td>\n<td style=\"text-align:left;\">\nTANK\n</td>\n<td style=\"text-align:left;\">\nCOPS6\n</td>\n<td style=\"text-align:left;\">\nAPH1A\n</td>\n<td style=\"text-align:left;\">\nCDKN2D\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNUDT16L1\n</td>\n<td style=\"text-align:left;\">\nPRKD2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTCP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHAPLN3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPRMT1\n</td>\n<td style=\"text-align:left;\">\nANP32A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPCGF5\n</td>\n<td style=\"text-align:left;\">\nSLA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRAD23A\n</td>\n<td style=\"text-align:left;\">\nGPI\n</td>\n<td style=\"text-align:left;\">\nSTX5\n</td>\n<td style=\"text-align:left;\">\nRAB2A\n</td>\n<td style=\"text-align:left;\">\nARL5A\n</td>\n<td style=\"text-align:left;\">\nRBCK1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nODF2L\n</td>\n<td style=\"text-align:left;\">\nTRPV2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCNG1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHSPD1\n</td>\n<td style=\"text-align:left;\">\nNDUFAB1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSNX5\n</td>\n<td style=\"text-align:left;\">\nSNAPIN\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTRAPPC6A\n</td>\n<td style=\"text-align:left;\">\nANAPC15\n</td>\n<td style=\"text-align:left;\">\nTHRAP3\n</td>\n<td style=\"text-align:left;\">\nDSTN\n</td>\n<td style=\"text-align:left;\">\nSF3B14\n</td>\n<td style=\"text-align:left;\">\nLAPTM4A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC14orf1\n</td>\n<td style=\"text-align:left;\">\nSTAMBP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNONO\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMATR3\n</td>\n<td style=\"text-align:left;\">\nNUTF2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nERCC1\n</td>\n<td style=\"text-align:left;\">\nRTN3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPHB2\n</td>\n<td style=\"text-align:left;\">\nKXD1\n</td>\n<td style=\"text-align:left;\">\nFAM96A\n</td>\n<td style=\"text-align:left;\">\nCCDC115\n</td>\n<td style=\"text-align:left;\">\nPIN1\n</td>\n<td style=\"text-align:left;\">\nCSK\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCYB5B\n</td>\n<td style=\"text-align:left;\">\nMLLT11\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIL16\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEIF5A\n</td>\n<td style=\"text-align:left;\">\nHSD17B10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNCKAP1L\n</td>\n<td style=\"text-align:left;\">\nPEPD\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRSL24D1\n</td>\n<td style=\"text-align:left;\">\nMRPL16\n</td>\n<td style=\"text-align:left;\">\nISCA2\n</td>\n<td style=\"text-align:left;\">\nRHOF\n</td>\n<td style=\"text-align:left;\">\nSRRM2\n</td>\n<td style=\"text-align:left;\">\nCHMP5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPSMD5-AS1\n</td>\n<td style=\"text-align:left;\">\nSYNE1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLUC7L3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPDCD5\n</td>\n<td style=\"text-align:left;\">\nPOLR2E\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIL10RB\n</td>\n<td style=\"text-align:left;\">\nSTK38\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSTK17B\n</td>\n<td style=\"text-align:left;\">\nSLIRP\n</td>\n<td style=\"text-align:left;\">\nAAMP\n</td>\n<td style=\"text-align:left;\">\nEAPP\n</td>\n<td style=\"text-align:left;\">\nCFLAR\n</td>\n<td style=\"text-align:left;\">\nSSNA1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nORMDL3\n</td>\n<td style=\"text-align:left;\">\nTFDP2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFNTA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUBE2N\n</td>\n<td style=\"text-align:left;\">\nPPP1R7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPFKL\n</td>\n<td style=\"text-align:left;\">\nC9orf89\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLINC00493\n</td>\n<td style=\"text-align:left;\">\nUQCRB\n</td>\n<td style=\"text-align:left;\">\nCHPT1\n</td>\n<td style=\"text-align:left;\">\nCOPS5\n</td>\n<td style=\"text-align:left;\">\nCCNDBP1\n</td>\n<td style=\"text-align:left;\">\nWASF2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCDC167\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nN4BP2L2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMAGOH\n</td>\n<td style=\"text-align:left;\">\nSEC11C\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUNC119\n</td>\n<td style=\"text-align:left;\">\nCDV3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGGNBP2\n</td>\n<td style=\"text-align:left;\">\nCTNNBL1\n</td>\n<td style=\"text-align:left;\">\nREL\n</td>\n<td style=\"text-align:left;\">\nSNX6\n</td>\n<td style=\"text-align:left;\">\nCOPZ1\n</td>\n<td style=\"text-align:left;\">\nKDELR2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGIMAP6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTPR\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPPHLN1\n</td>\n<td style=\"text-align:left;\">\nSNRPD3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nATP2B1\n</td>\n<td style=\"text-align:left;\">\nHEXB\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNSMCE1\n</td>\n<td style=\"text-align:left;\">\nFAM50A\n</td>\n<td style=\"text-align:left;\">\nITGAE\n</td>\n<td style=\"text-align:left;\">\nSARS\n</td>\n<td style=\"text-align:left;\">\nTMED10\n</td>\n<td style=\"text-align:left;\">\nCOX6A1P2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPYCR2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nG3BP2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nVDAC3\n</td>\n<td style=\"text-align:left;\">\nPSMC3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRABGAP1L\n</td>\n<td style=\"text-align:left;\">\nZNF524\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCWC15\n</td>\n<td style=\"text-align:left;\">\nKDELR1\n</td>\n<td style=\"text-align:left;\">\nUSF2\n</td>\n<td style=\"text-align:left;\">\nFBXO7\n</td>\n<td style=\"text-align:left;\">\nDDOST\n</td>\n<td style=\"text-align:left;\">\nSELPLG\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRNF115\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nELOVL5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNUCKS1\n</td>\n<td style=\"text-align:left;\">\nOTUB1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNFYC\n</td>\n<td style=\"text-align:left;\">\nVMA21\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPDCD2\n</td>\n<td style=\"text-align:left;\">\nIRF2BP2\n</td>\n<td style=\"text-align:left;\">\nITGA4\n</td>\n<td style=\"text-align:left;\">\nGNAI3\n</td>\n<td style=\"text-align:left;\">\nSDHD\n</td>\n<td style=\"text-align:left;\">\nWSB1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPTPN4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSCAF11\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAIP\n</td>\n<td style=\"text-align:left;\">\nMRPS7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMTSS1\n</td>\n<td style=\"text-align:left;\">\nPLD3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMRPS18B\n</td>\n<td style=\"text-align:left;\">\nPSMD11\n</td>\n<td style=\"text-align:left;\">\nNSFL1C\n</td>\n<td style=\"text-align:left;\">\nCCM2\n</td>\n<td style=\"text-align:left;\">\nMRPL34\n</td>\n<td style=\"text-align:left;\">\nC7orf73\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSYNE2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPRPF38B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRBM17\n</td>\n<td style=\"text-align:left;\">\nPSMA3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRALB\n</td>\n<td style=\"text-align:left;\">\nATP6V1B2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPRRC2C\n</td>\n<td style=\"text-align:left;\">\nHARS\n</td>\n<td style=\"text-align:left;\">\nGRPEL1\n</td>\n<td style=\"text-align:left;\">\nSNHG15\n</td>\n<td style=\"text-align:left;\">\nTMEM160\n</td>\n<td style=\"text-align:left;\">\nCMTM6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTMEM87A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSLC3A2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGTF2A2\n</td>\n<td style=\"text-align:left;\">\nCDK2AP2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDPEP2\n</td>\n<td style=\"text-align:left;\">\nCHIC2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCNPY2\n</td>\n<td style=\"text-align:left;\">\nSEC13\n</td>\n<td style=\"text-align:left;\">\nSAMD9L\n</td>\n<td style=\"text-align:left;\">\nABT1\n</td>\n<td style=\"text-align:left;\">\nZMAT2\n</td>\n<td style=\"text-align:left;\">\nSUCLG1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRBM38\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDPY30\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSTRAP\n</td>\n<td style=\"text-align:left;\">\nSRM\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSNAP29\n</td>\n<td style=\"text-align:left;\">\nOAS3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRP11-1143G9.4\n</td>\n<td style=\"text-align:left;\">\nFAM89B\n</td>\n<td style=\"text-align:left;\">\nCCS\n</td>\n<td style=\"text-align:left;\">\nRNF5\n</td>\n<td style=\"text-align:left;\">\nIFI16\n</td>\n<td style=\"text-align:left;\">\nPRDX3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTHAP11\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCYTH1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSNRPE\n</td>\n<td style=\"text-align:left;\">\nUFD1L\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGCH1\n</td>\n<td style=\"text-align:left;\">\nCEBPG\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNECAP2\n</td>\n<td style=\"text-align:left;\">\nNIT2\n</td>\n<td style=\"text-align:left;\">\nACO2\n</td>\n<td style=\"text-align:left;\">\nFAM162A\n</td>\n<td style=\"text-align:left;\">\nTRAPPC3\n</td>\n<td style=\"text-align:left;\">\nMIEN1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nOBFC1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCDC59\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEPC1\n</td>\n<td style=\"text-align:left;\">\nPOMP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGINM1\n</td>\n<td style=\"text-align:left;\">\nCBWD1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDDX17\n</td>\n<td style=\"text-align:left;\">\nFLYWCH2\n</td>\n<td style=\"text-align:left;\">\nMRPL12\n</td>\n<td style=\"text-align:left;\">\nCCNH\n</td>\n<td style=\"text-align:left;\">\nC17orf62\n</td>\n<td style=\"text-align:left;\">\nRNASEH2C\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCD59\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nWHSC1L1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRNF126\n</td>\n<td style=\"text-align:left;\">\nMRPL11\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRIPK2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTXNL1\n</td>\n<td style=\"text-align:left;\">\nPTOV1\n</td>\n<td style=\"text-align:left;\">\nSTARD7\n</td>\n<td style=\"text-align:left;\">\nKTN1\n</td>\n<td style=\"text-align:left;\">\nPDAP1\n</td>\n<td style=\"text-align:left;\">\nSH3GLB1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCND2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSF3B1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nADH5\n</td>\n<td style=\"text-align:left;\">\nGTF3C6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUTP6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nH1FX\n</td>\n<td style=\"text-align:left;\">\nFH\n</td>\n<td style=\"text-align:left;\">\nTRIM38\n</td>\n<td style=\"text-align:left;\">\nLCP2\n</td>\n<td style=\"text-align:left;\">\nRNF166\n</td>\n<td style=\"text-align:left;\">\nAKAP13\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPHACTR4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRBM23\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPPM1G\n</td>\n<td style=\"text-align:left;\">\nSDF2L1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPACSIN2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMED28\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTRA2A\n</td>\n<td style=\"text-align:left;\">\nBCL7B\n</td>\n<td style=\"text-align:left;\">\nTXNDC12\n</td>\n<td style=\"text-align:left;\">\nELOF1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGOLT1B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nBBX\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSNRPF\n</td>\n<td style=\"text-align:left;\">\nPSMC2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLINC01003\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSRRM1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCOMMD5\n</td>\n<td style=\"text-align:left;\">\nGLUD1\n</td>\n<td style=\"text-align:left;\">\nIDH3B\n</td>\n<td style=\"text-align:left;\">\nNDUFA6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMTFP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNAA38\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nWBSCR22\n</td>\n<td style=\"text-align:left;\">\nNDUFB3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRBM25\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCKS1B\n</td>\n<td style=\"text-align:left;\">\nELF1\n</td>\n<td style=\"text-align:left;\">\nMRPL55\n</td>\n<td style=\"text-align:left;\">\nATP6V1E1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCXCR3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIRF9\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMAPRE1\n</td>\n<td style=\"text-align:left;\">\nTUBB4B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDCXR\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDUSP22\n</td>\n<td style=\"text-align:left;\">\nCOMMD8\n</td>\n<td style=\"text-align:left;\">\nPOLR2F\n</td>\n<td style=\"text-align:left;\">\nFKBP2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGALM\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMAT2B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMETTL23\n</td>\n<td style=\"text-align:left;\">\nXRN2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSFPQ\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPTPN1\n</td>\n<td style=\"text-align:left;\">\nDCTN2\n</td>\n<td style=\"text-align:left;\">\nARHGAP30\n</td>\n<td style=\"text-align:left;\">\nCAST\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nACD\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGPBP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSNRPA1\n</td>\n<td style=\"text-align:left;\">\nCARHSP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCHMP3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSRSF6\n</td>\n<td style=\"text-align:left;\">\nTMEM126B\n</td>\n<td style=\"text-align:left;\">\nDDX46\n</td>\n<td style=\"text-align:left;\">\nSFT2D1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTNFRSF18\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCHD2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAKR1B1\n</td>\n<td style=\"text-align:left;\">\nC11orf48\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDAP3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTEN1\n</td>\n<td style=\"text-align:left;\">\nNME4\n</td>\n<td style=\"text-align:left;\">\nCOMMD7\n</td>\n<td style=\"text-align:left;\">\nCISD3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEGLN2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPPP1R12A\n</td>\n<td style=\"text-align:left;\">\nNDUFS4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMRPS15\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCOMMD4\n</td>\n<td style=\"text-align:left;\">\nCCZ1\n</td>\n<td style=\"text-align:left;\">\nPPP1R11\n</td>\n<td style=\"text-align:left;\">\nNDUFB6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nARL2BP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSTOML2\n</td>\n<td style=\"text-align:left;\">\nTCEB1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEIF2A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTSSC1\n</td>\n<td style=\"text-align:left;\">\nRPF1\n</td>\n<td style=\"text-align:left;\">\nAUP1\n</td>\n<td style=\"text-align:left;\">\nUBE2F\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRBBP7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMRPL9\n</td>\n<td style=\"text-align:left;\">\nIMP4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMFNG\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCWC25\n</td>\n<td style=\"text-align:left;\">\nYY1\n</td>\n<td style=\"text-align:left;\">\nPPP2R1A\n</td>\n<td style=\"text-align:left;\">\nPSENEN\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRPAIN\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMFF\n</td>\n<td style=\"text-align:left;\">\nMRPS18C\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPSMF1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCEPT1\n</td>\n<td style=\"text-align:left;\">\nRAB11A\n</td>\n<td style=\"text-align:left;\">\nPSMD13\n</td>\n<td style=\"text-align:left;\">\nFAM204A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNKTR\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPITHD1\n</td>\n<td style=\"text-align:left;\">\nSEC61G\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPHF5A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCHD9\n</td>\n<td style=\"text-align:left;\">\nKPNB1\n</td>\n<td style=\"text-align:left;\">\nPET100\n</td>\n<td style=\"text-align:left;\">\nSCAMP2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPNN\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nANAPC5\n</td>\n<td style=\"text-align:left;\">\nZDHHC12\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTAF9\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCD81\n</td>\n<td style=\"text-align:left;\">\nPDCL3\n</td>\n<td style=\"text-align:left;\">\nITGB1BP1\n</td>\n<td style=\"text-align:left;\">\nNAPA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDARS\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCDC123\n</td>\n<td style=\"text-align:left;\">\nPTBP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNDUFA10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRFC2\n</td>\n<td style=\"text-align:left;\">\nGLG1\n</td>\n<td style=\"text-align:left;\">\nTEX264\n</td>\n<td style=\"text-align:left;\">\nOS9\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNCBP2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSNRPG\n</td>\n<td style=\"text-align:left;\">\nHNRNPD\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSNW1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nACP5\n</td>\n<td style=\"text-align:left;\">\nMETTL5\n</td>\n<td style=\"text-align:left;\">\nCSNK1A1\n</td>\n<td style=\"text-align:left;\">\nASNA1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAATF\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLYRM4\n</td>\n<td style=\"text-align:left;\">\nNUDT1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFDX1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUROS\n</td>\n<td style=\"text-align:left;\">\nLSM1\n</td>\n<td style=\"text-align:left;\">\nMLX\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRSF1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGLRX3\n</td>\n<td style=\"text-align:left;\">\nPAK2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nECHS1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMAGED2\n</td>\n<td style=\"text-align:left;\">\nGSDMD\n</td>\n<td style=\"text-align:left;\">\nMEA1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCHCHD7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSRP19\n</td>\n<td style=\"text-align:left;\">\nSEPT2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMT-ND4L\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nZCRB1\n</td>\n<td style=\"text-align:left;\">\nRTF1\n</td>\n<td style=\"text-align:left;\">\nUBE2A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAL592183.1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC17orf89\n</td>\n<td style=\"text-align:left;\">\nAK2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDHPS\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCDC53\n</td>\n<td style=\"text-align:left;\">\nNME3\n</td>\n<td style=\"text-align:left;\">\nEMC3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nBTF3L4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSNRNP70\n</td>\n<td style=\"text-align:left;\">\nRPS6KB2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPMF1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAPOL3\n</td>\n<td style=\"text-align:left;\">\nTAF12\n</td>\n<td style=\"text-align:left;\">\nSTK10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFLI1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPSMD6\n</td>\n<td style=\"text-align:left;\">\nTIMM17A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSUCLG2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSHARPIN\n</td>\n<td style=\"text-align:left;\">\nPUF60\n</td>\n<td style=\"text-align:left;\">\nTPGS1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNR3C1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNUDT5\n</td>\n<td style=\"text-align:left;\">\nDCTPP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPRKCSH\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPPA2\n</td>\n<td style=\"text-align:left;\">\nIAH1\n</td>\n<td style=\"text-align:left;\">\nTMEM141\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nITSN2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDDX39A\n</td>\n<td style=\"text-align:left;\">\nHMGN2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nBABAM1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nZFAND2B\n</td>\n<td style=\"text-align:left;\">\nPDLIM2\n</td>\n<td style=\"text-align:left;\">\nPKN1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nZC3HAV1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHSPA9\n</td>\n<td style=\"text-align:left;\">\nMTCH2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPABPC4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSLFN5\n</td>\n<td style=\"text-align:left;\">\nMGMT\n</td>\n<td style=\"text-align:left;\">\nUBE2E3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMTERFD2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nVCP\n</td>\n<td style=\"text-align:left;\">\nMRPL47\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nATG12\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCDC90B\n</td>\n<td style=\"text-align:left;\">\nMRPS12\n</td>\n<td style=\"text-align:left;\">\nCCDC124\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGRAMD1A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSRSF1\n</td>\n<td style=\"text-align:left;\">\nUQCC2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNXT1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTMBIM1\n</td>\n<td style=\"text-align:left;\">\nBRD2\n</td>\n<td style=\"text-align:left;\">\nCOA3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nZNF24\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEIF4A3\n</td>\n<td style=\"text-align:left;\">\nMRPL36\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPPIE\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTSNAX\n</td>\n<td style=\"text-align:left;\">\nCANX\n</td>\n<td style=\"text-align:left;\">\nRPN1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUSE1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCLPP\n</td>\n<td style=\"text-align:left;\">\nNKAP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPIH1D1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSEPHS2\n</td>\n<td style=\"text-align:left;\">\nNAA20\n</td>\n<td style=\"text-align:left;\">\nRAB4A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUSP16\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTTC1\n</td>\n<td style=\"text-align:left;\">\nDAZAP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUBE2E1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSLC44A2\n</td>\n<td style=\"text-align:left;\">\nNOP56\n</td>\n<td style=\"text-align:left;\">\nTADA3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nARFGAP2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIDI1\n</td>\n<td style=\"text-align:left;\">\nMRPL15\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nQARS\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nASCC2\n</td>\n<td style=\"text-align:left;\">\nFUNDC2\n</td>\n<td style=\"text-align:left;\">\nMRPS11\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFRG1B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMRPS26\n</td>\n<td style=\"text-align:left;\">\nTIMM10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGID8\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nBFAR\n</td>\n<td style=\"text-align:left;\">\nMTCH1\n</td>\n<td style=\"text-align:left;\">\nDNAJC2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTIMM9\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHNRNPUL1\n</td>\n<td style=\"text-align:left;\">\nDTYMK\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMRPL3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCDC25\n</td>\n<td style=\"text-align:left;\">\nTXNL4A\n</td>\n<td style=\"text-align:left;\">\nFKBP5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMARCH7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHINT2\n</td>\n<td style=\"text-align:left;\">\nTOP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUSP15\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNRBP1\n</td>\n<td style=\"text-align:left;\">\nPTRHD1\n</td>\n<td style=\"text-align:left;\">\nRRP7A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLENG1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSLBP\n</td>\n<td style=\"text-align:left;\">\nPSMG3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMRPL32\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPHF3\n</td>\n<td style=\"text-align:left;\">\nSLC25A11\n</td>\n<td style=\"text-align:left;\">\nDNAJB11\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCYB5A\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPSMD14\n</td>\n<td style=\"text-align:left;\">\nDLD\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMAPKAPK5-AS1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSYS1\n</td>\n<td style=\"text-align:left;\">\nCOX16\n</td>\n<td style=\"text-align:left;\">\nYIPF3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSMIM19\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFKBP3\n</td>\n<td style=\"text-align:left;\">\nDCPS\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPTP4A1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPPM1B\n</td>\n<td style=\"text-align:left;\">\nNDUFV1\n</td>\n<td style=\"text-align:left;\">\nDIAPH1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLINC-PINT\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSDHA\n</td>\n<td style=\"text-align:left;\">\nTFDP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEIF1AX\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nYAF2\n</td>\n<td style=\"text-align:left;\">\nARHGAP9\n</td>\n<td style=\"text-align:left;\">\nHNRNPH2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nOARD1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNCBP2-AS2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRP11-139H15.1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLNPEP\n</td>\n<td style=\"text-align:left;\">\nLSM3\n</td>\n<td style=\"text-align:left;\">\nPFDN6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTTC14\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSNRNP40\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFXR1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPEX16\n</td>\n<td style=\"text-align:left;\">\nGPAA1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTMEM242\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRAD21\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEIF2B1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSRSF4\n</td>\n<td style=\"text-align:left;\">\nMAPK1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDDIT3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nVBP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nESD\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPHF11\n</td>\n<td style=\"text-align:left;\">\nACAA2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSAFB2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC14orf119\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSF3A3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nVTI1B\n</td>\n<td style=\"text-align:left;\">\nPANK2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCEBPZ-AS1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFAM177A1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMCTS1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAKR7A2\n</td>\n<td style=\"text-align:left;\">\nIFNAR2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nBRD9\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHPRT1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCCNC\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nURM1\n</td>\n<td style=\"text-align:left;\">\nMAD2L2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPRDM2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSLC25A39\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCOA6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAHSA1\n</td>\n<td style=\"text-align:left;\">\nCCDC88C\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCD84\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRPA3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPHYKPL\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nJAGN1\n</td>\n<td style=\"text-align:left;\">\nRAB4B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEGR1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSNRPA\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCAMTA1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGRHPR\n</td>\n<td style=\"text-align:left;\">\nG6PD\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGLRX5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC19orf25\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nROMO1\n</td>\n<td style=\"text-align:left;\">\nARFGAP3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTIAL1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCHCHD1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPFDN1\n</td>\n<td style=\"text-align:left;\">\nBCCIP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEXOSC8\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEIF4E\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSTX8\n</td>\n<td style=\"text-align:left;\">\nRABL6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLBR\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC11orf83\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRNPEPL1\n</td>\n<td style=\"text-align:left;\">\nSMC4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nILF3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSREK1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTMEM248\n</td>\n<td style=\"text-align:left;\">\nMVD\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSAP30BP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nANKRD11\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGGA1\n</td>\n<td style=\"text-align:left;\">\nMRPS28\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nACTR10\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTMEM138\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nIFT20\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNUDT21\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPTGES2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAKAP9\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUBE2G1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLGALS8\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC18orf32\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLARP7\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMLEC\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nBRMS1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPPIH\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC5orf15\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCAPN1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEBNA1BP2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFEM1B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDDRGK1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nVOPP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRAD23B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nGNL3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nWDR33\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCISD2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nWDR61\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSSRP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSUGT1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPDIA4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLAGE3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSYNCRIP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRBBP4\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC1orf35\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nESYT1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMAP7D1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nAPOA1BP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDNAJC9\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMIF4GD\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHAUS1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCFDP1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nILKAP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUBE2J2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRPUSD3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMRPS5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCDKN2AIPNL\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSRPK2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPOLD2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nFAM200B\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nHNRNPAB\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC17orf49\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTMEM106C\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNUBP2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCBX1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPRKAG1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nNAA50\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSURF2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nMCM3\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nSSSCA1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCISD1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nEI24\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTFPT\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nCSNK1D\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nUBA5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDCTD\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nLMAN1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPEX2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPGRMC2\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPNKP\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC19orf48\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nTMEM70\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nC14orf142\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nJMJD6\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nPAICS\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nDCAF5\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n<tr>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\nRCE1\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n<td style=\"text-align:left;\">\n</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div>\n<div class=\"section level3\">\n<h3 id=\"module-lookup\">Module lookup<a class=\"anchor\" aria-label=\"anchor\" href=\"#module-lookup\"></a>\n</h3>\n<p>If you want to quickly find which module a particular feature was\nassigned to, the <code>featureModuleLookup</code> function can be used.\nHere will will look up a marker gene for T-cells called “CD3E”:</p>\n<div class=\"sourceCode\" id=\"cb38\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">mod</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/featureModuleLookup.html\">featureModuleLookup</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, feature <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"CD3E\"</span>, <span class=\"st\">\"S100A8\"</span><span class=\"op\">)</span><span class=\"op\">)</span></span>\n<span><span class=\"va\">mod</span></span></code></pre></div>\n<pre><code><span><span class=\"co\">##   CD3E S100A8 </span></span>\n<span><span class=\"co\">##     27     70</span></span></code></pre>\n</div>\n<div class=\"section level3\">\n<h3 id=\"module-heatmaps\">Module heatmaps<a class=\"anchor\" aria-label=\"anchor\" href=\"#module-heatmaps\"></a>\n</h3>\n<p>The function <code>moduleHeatmap</code> can be used to view the\nexpression of features across cells for a specific module. The\n<code>featureModule</code> parameter denotes the module(s) to be\ndisplayed. Cells are ordered from those with the lowest probability of\nthe module on the left to the highest probability on the right.\nSimilarly, features are ordered from those with the highest probability\nwithin the module on the top to the lowest probability on the\nbottom.</p>\n<div class=\"sourceCode\" id=\"cb40\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/moduleHeatmap.html\">moduleHeatmap</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, featureModule <span class=\"op\">=</span> <span class=\"fl\">27</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/module_heatmap-1.png\" width=\"700\"></p>\n<p>The parameter <code>topCells</code> can be used to control the number\nof cells included in the heatmap. By default, only the 100 cells with\nthe lowest probabilities and the 100 cells with the highest\nprobabilities for each selected module are included\n(i.e. <code>topCells = 100</code> by default). To display all cells,\nthis parameter can be set to <code>NULL</code>:</p>\n<div class=\"sourceCode\" id=\"cb41\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/moduleHeatmap.html\">moduleHeatmap</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, featureModule <span class=\"op\">=</span> <span class=\"fl\">27</span>, topCells <span class=\"op\">=</span> <span class=\"cn\">NULL</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/module_heatmap_topcells-1.png\" width=\"700\"></p>\n<p><strong>Note:</strong> Multiple modules can be displayed by giving a\nvector of module indices to the parameter <code>featureModule</code>. If\n<code>featureModule</code> is not specified, then all modules will be\nplotted.</p>\n</div>\n<div class=\"section level3\">\n<h3 id=\"module-probabilities-on-2-d-embeddings\">Module probabilities on 2-D embeddings<a class=\"anchor\" aria-label=\"anchor\" href=\"#module-probabilities-on-2-d-embeddings\"></a>\n</h3>\n<p>The function <code>plotDimReduceModule</code> can be used visualize\nthe probabilities of a particular module or sets of modules on a reduced\ndimensional plot such as a UMAP. This can be another quick method to see\nhow modules are expressed across various cells in 2-D space. As an\nexample, we can look at module 70 which contained S100A8:</p>\n<div class=\"sourceCode\" id=\"cb42\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/plotDimReduceModule.html\">plotDimReduceModule</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, modules <span class=\"op\">=</span> <span class=\"fl\">70</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span>, reducedDimName <span class=\"op\">=</span> <span class=\"st\">\"celda_UMAP\"</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/module_umaps-1.png\" width=\"700\"></p>\n<p>Similarly, multiple modules can be plotting in a grid of UMAPs:</p>\n<div class=\"sourceCode\" id=\"cb43\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/plotDimReduceModule.html\">plotDimReduceModule</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, modules <span class=\"op\">=</span> <span class=\"fl\">70</span><span class=\"op\">:</span><span class=\"fl\">78</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span>, reducedDimName <span class=\"op\">=</span> <span class=\"st\">\"celda_UMAP\"</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/module_umaps_grid-1.png\" width=\"700\"></p>\n<p>In this grid, we can see that module 70 (which has high levels of\nS100A8 and S100A9) is highly expressed in cell populations 2 and 3,\nmodule 71 (which contains CD14) can be used to identify all CD14+\nmonocytes, module 72 (which contains CST3) is expressed across both CD14\nand FCGR3A (CD16) expressing monocytes, and module 73 (which contains\nCD4) is expressed broadly across both monocytes and dendritic cells as\nwell as some T-cell populations. If we were interesting in defining\ntranscriptional programs active across all monocytes, we could examine\nthe genes found in module 72. If we were interested in defining\ntranscriptional programs for all CD14+ monocytes, we could examine the\ngenes in module 71. These patterns can also be observed in the <a href=\"#probmap\">Probability Map</a></p>\n<p>In the celda probability map, we saw that the unknown T-cell\npopulation 13 had high levels of module 30. We can examine both module\nheatmaps and module probability maps to further explore this:</p>\n<div class=\"sourceCode\" id=\"cb44\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/moduleHeatmap.html\">moduleHeatmap</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, featureModule <span class=\"op\">=</span> <span class=\"fl\">30</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/module_Tcell_prolif-1.png\" width=\"700\"></p>\n<div class=\"sourceCode\" id=\"cb45\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/plotDimReduceModule.html\">plotDimReduceModule</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, modules <span class=\"op\">=</span> <span class=\"fl\">30</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span>, reducedDimName <span class=\"op\">=</span> <span class=\"st\">\"celda_UMAP\"</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/module_Tcell_prolif-2.png\" width=\"700\"></p>\n<p>Module 30 has high levels of genes associated with proliferation\nincluding HMGA1, STMN1, PCNA, HMGB2, and TUBA1B. We can therefore\nre-label these cells as “Proliferating T-cells”.</p>\n</div>\n</div>\n<div class=\"section level2\">\n<h2 id=\"identification-and-plotting-of-marker-genes\">Identification and plotting of marker genes<a class=\"anchor\" aria-label=\"anchor\" href=\"#identification-and-plotting-of-marker-genes\"></a>\n</h2>\n<p>In addition to examining modules, differential expression can be used\nto identify potential marker genes up-regulated in specific cell\npopulations. The function <code>findMarkerDiffExp</code> in the\n<code>singleCellTK</code> package will find markers up-regulated in each\ncell population compared to all the others.</p>\n<div class=\"section level3\">\n<h3 id=\"differential-expression-to-identify-marker-genes\">Differential expression to identify marker genes<a class=\"anchor\" aria-label=\"anchor\" href=\"#differential-expression-to-identify-marker-genes\"></a>\n</h3>\n<div class=\"sourceCode\" id=\"cb46\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"co\"># Normalize counts (if not performed previously)</span></span>\n<span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"http://bioconductor.org/packages/scater/\" class=\"external-link\">scater</a></span><span class=\"op\">)</span></span>\n<span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/scuttle/man/logNormCounts.html\" class=\"external-link\">logNormCounts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, exprs_values <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, name <span class=\"op\">=</span> <span class=\"st\">\"logcounts\"</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># Run differential expression analysis</span></span>\n<span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/singleCellTK/man/runFindMarker.html\" class=\"external-link\">findMarkerDiffExp</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, useAssay <span class=\"op\">=</span> <span class=\"st\">\"logcounts\"</span>, method <span class=\"op\">=</span> <span class=\"st\">\"wilcox\"</span>, cluster <span class=\"op\">=</span> <span class=\"fu\"><a href=\"../reference/celdaClusters.html\">celdaClusters</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span>, minMeanExpr <span class=\"op\">=</span> <span class=\"fl\">0</span>, fdrThreshold <span class=\"op\">=</span> <span class=\"fl\">0.05</span>, log2fcThreshold <span class=\"op\">=</span> <span class=\"fl\">0</span>, minClustExprPerc <span class=\"op\">=</span> <span class=\"fl\">0</span>, maxCtrlExprPerc <span class=\"op\">=</span> <span class=\"fl\">1</span><span class=\"op\">)</span></span></code></pre></div>\n<pre><code><span><span class=\"co\">## Warning: 'findMarkerDiffExp' is deprecated.</span></span>\n<span><span class=\"co\">## Use 'runFindMarker' instead.</span></span>\n<span><span class=\"co\">## See help(\"Deprecated\")</span></span></code></pre>\n<p>The function <code>plotMarkerDiffExp</code> can be used to plot the\nresults in a heatmap. The <code>topN</code> parameter will plot the top\nN ranked genes for each cluster.</p>\n<div class=\"sourceCode\" id=\"cb48\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"co\"># Plot differentially expressed genes that pass additional thresholds 'minClustExprPerc' and 'maxCtrlExprPerc'</span></span>\n<span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/singleCellTK/man/plotFindMarkerHeatmap.html\" class=\"external-link\">plotMarkerDiffExp</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, topN <span class=\"op\">=</span> <span class=\"fl\">5</span>, log2fcThreshold <span class=\"op\">=</span> <span class=\"fl\">0</span>, rowLabel <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>, fdrThreshold <span class=\"op\">=</span> <span class=\"fl\">0.05</span>, minClustExprPerc <span class=\"op\">=</span> <span class=\"fl\">0.6</span>, maxCtrlExprPerc <span class=\"op\">=</span> <span class=\"fl\">0.4</span>, minMeanExpr <span class=\"op\">=</span> <span class=\"fl\">0</span><span class=\"op\">)</span></span></code></pre></div>\n<pre><code><span><span class=\"co\">## Warning: 'plotMarkerDiffExp' is deprecated.</span></span>\n<span><span class=\"co\">## Use 'plotFindMarkerHeatmap' instead.</span></span>\n<span><span class=\"co\">## See help(\"Deprecated\")</span></span></code></pre>\n<p><img src=\"celda_pbmc3k_files/figure-html/diffExp_plot-1.png\" width=\"700\"></p>\n<p>Other parameters such as <code>minClustExprPerc</code> (the minimum\nnumber of cells expressing the marker gene in the cluster) and\n<code>maxCtrlExprPerc</code> (the maximum number of cells expression the\nmarker gene in other clusters) can be used to control how specific each\nmarker gene is to each cell populations. Similarly, adding a log2\nfold-change cutoff (e.g. 1) can select for markers that are more\nstrongly up-regulated in a cell population.</p>\n</div>\n<div class=\"section level3\">\n<h3 id=\"violin-plots-for-marker-genes\">Violin plots for marker genes<a class=\"anchor\" aria-label=\"anchor\" href=\"#violin-plots-for-marker-genes\"></a>\n</h3>\n<p>The <code>plotCeldaViolin</code> function can be used to examine the\ndistribution of expression of various features across cell population\nclusters derived from celda. Here we can see that the gene CD79A has\nhigh expression in the B-cell cluster and HMGB2 has high expression in\nthe proliferating T-cell population.</p>\n<div class=\"sourceCode\" id=\"cb50\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"co\"># Normalize counts if not performed in previous steps</span></span>\n<span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"http://bioconductor.org/packages/scater/\" class=\"external-link\">scater</a></span><span class=\"op\">)</span></span>\n<span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/scuttle/man/logNormCounts.html\" class=\"external-link\">logNormCounts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, exprs_values <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, name <span class=\"op\">=</span> <span class=\"st\">\"logcounts\"</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># Make violin plots for marker genes</span></span>\n<span><span class=\"fu\"><a href=\"../reference/plotCeldaViolin.html\">plotCeldaViolin</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, useAssay <span class=\"op\">=</span> <span class=\"st\">\"logcounts\"</span>, features <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"CD79A\"</span>, <span class=\"st\">\"HMGB2\"</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/violin-1.png\" width=\"700\"></p>\n</div>\n</div>\n<div class=\"section level2\">\n<h2 id=\"generating-html-reports\">Generating HTML reports<a class=\"anchor\" aria-label=\"anchor\" href=\"#generating-html-reports\"></a>\n</h2>\n<p>The celda package comes with two functions for generating\ncomprehensive HTML reports that 1) capture the process of selecting K/L\nfor a <code>celda_CG</code> model and 2) plot the results from the\ndownstream analysis. The first report runs both\n<code>recursiveSplitModule</code> and <code>recursiveSplitCell</code>\nfor selection of <code>L</code> and <code>K</code>, respectively. To\nrecapitulate the complete analysis presented in this tutorial in the\nHTML report, the following command can be used:</p>\n<div class=\"sourceCode\" id=\"cb51\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/reportceldaCG.html\">reportCeldaCGRun</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, sampleLabel <span class=\"op\">=</span> <span class=\"cn\">NULL</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span>, minCell <span class=\"op\">=</span> <span class=\"fl\">3</span>, minCount <span class=\"op\">=</span> <span class=\"fl\">3</span>, initialL <span class=\"op\">=</span> <span class=\"fl\">10</span>, maxL <span class=\"op\">=</span> <span class=\"fl\">150</span>, initialK <span class=\"op\">=</span> <span class=\"fl\">3</span>, maxK <span class=\"op\">=</span> <span class=\"fl\">25</span>, L <span class=\"op\">=</span> <span class=\"fl\">80</span>, K <span class=\"op\">=</span> <span class=\"fl\">14</span><span class=\"op\">)</span></span></code></pre></div>\n<p>All of the parameters in this function are the same that were used\nthroughout this tutorial in the <code>selectFeatures</code>,\n<code>recursiveSplitModule</code>, and <code>recursiveSplitCell</code>\nfunctions. Note that this report does <strong>not</strong> do cell\nfiltering, so that must be completed before running this function. The\nreturned SCE object will have the <code>celda_CG</code> model with\nselected <code>K</code> and <code>L</code> which can be used in any of\nthe downstream plotting functions as well as input into the second\nplotting report described next.</p>\n<p>The second report takes in as input an SCE object with a fitted\n<code>celda_CG</code> model and systematically generates several plots\nthat facilitate exploratory analysis including cell subpopulation\ncluster labels on 2-D embeddings, user-specified annotations on 2-D\nembeddings, module heatmaps, module probabilities, expression of marker\ngenes on 2-D embeddings, and the celda probability map. The report can\nbe generated with the following code:</p>\n<div class=\"sourceCode\" id=\"cb52\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/reportceldaCG.html\">reportCeldaCGPlotResults</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, reducedDimName <span class=\"op\">=</span> <span class=\"st\">\"celda_UMAP\"</span>, features <span class=\"op\">=</span> <span class=\"va\">markers</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span>, cellAnnot <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"total\"</span>, <span class=\"st\">\"detected\"</span>, <span class=\"st\">\"decontX_contamination\"</span>, <span class=\"st\">\"subsets_mito_percent\"</span><span class=\"op\">)</span>, cellAnnotLabel <span class=\"op\">=</span> <span class=\"st\">\"scDblFinder_doublet_call\"</span><span class=\"op\">)</span></span></code></pre></div>\n<p>User-supplied annotations to plot on the 2-D embedding can be\nspecified through the <code>cellAnnot</code> and\n<code>cellAnnotLabel</code> variables. Both parameters will allow for\nplotting of variables stored in the colData of the SCE on the 2-D\nembedding plot specified by <code>reducedDimName</code> parameter. For\n<code>cellAnnot</code>, integer and numeric variables will be plotted as\nas continuous variables while factors and characters will be plotted as\ncategorical variables. For <code>cellAnnotLabel</code>, all variables\nwill be coerced to a factor and the labels of the categories will be\nplotted on the scatter plot.</p>\n</div>\n<div class=\"section level2\">\n<h2 id=\"other-useful-functions\">Other useful functions<a class=\"anchor\" aria-label=\"anchor\" href=\"#other-useful-functions\"></a>\n</h2>\n<div class=\"section level3\">\n<h3 id=\"matrix-factorization\">Matrix factorization<a class=\"anchor\" aria-label=\"anchor\" href=\"#matrix-factorization\"></a>\n</h3>\n<p>The celda model factorizes the original matrix into three\nmatrices:</p>\n<p><strong>1) module -</strong> The probability of each feature in each\nmodule (Psi)</p>\n<p><strong>2) cellPopulation -</strong> The probability of each module\nin each cell population (Phi)</p>\n<p><strong>3) sample -</strong> The probability of each cell population\nin each sample (Theta)</p>\n<p>Additionally, we can calculate the probability of each module within\neach cell (cell). The cell matrix can essentially be used to replace PCs\nfrom PCA and is useful for downstream visualization (e.g. generating 2-D\nembeddings). All of these matrices can be retrieved with the\n<code>factorizeMatrix</code> function. The matrices are returned in\nthree different versions: unnormalized counts, proportions (normalized\nby the total), or posterior estimates (where the Dirichlet concentration\nparameter is added in before normalization).</p>\n<div class=\"sourceCode\" id=\"cb53\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"co\"># Factorize the original counts matrix</span></span>\n<span><span class=\"va\">fm</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/factorizeMatrix.html\">factorizeMatrix</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># Three different version of each matrix:</span></span>\n<span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/names.html\" class=\"external-link\">names</a></span><span class=\"op\">(</span><span class=\"va\">fm</span><span class=\"op\">)</span></span></code></pre></div>\n<pre><code><span><span class=\"co\">## [1] \"counts\"      \"proportions\" \"posterior\"</span></span></code></pre>\n<div class=\"sourceCode\" id=\"cb55\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"co\"># Get normalized proportional matrices</span></span>\n<span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/dim.html\" class=\"external-link\">dim</a></span><span class=\"op\">(</span><span class=\"va\">fm</span><span class=\"op\">$</span><span class=\"va\">proportions</span><span class=\"op\">$</span><span class=\"va\">cell</span><span class=\"op\">)</span> <span class=\"co\"># Matrix of module probabilities for each cell</span></span></code></pre></div>\n<pre><code><span><span class=\"co\">## [1]   80 2675</span></span></code></pre>\n<div class=\"sourceCode\" id=\"cb57\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/dim.html\" class=\"external-link\">dim</a></span><span class=\"op\">(</span><span class=\"va\">fm</span><span class=\"op\">$</span><span class=\"va\">proportions</span><span class=\"op\">$</span><span class=\"va\">module</span><span class=\"op\">)</span> <span class=\"co\"># Matrix of feature probabilities for each module</span></span></code></pre></div>\n<pre><code><span><span class=\"co\">## [1] 2639   80</span></span></code></pre>\n<div class=\"sourceCode\" id=\"cb59\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/dim.html\" class=\"external-link\">dim</a></span><span class=\"op\">(</span><span class=\"va\">fm</span><span class=\"op\">$</span><span class=\"va\">proportions</span><span class=\"op\">$</span><span class=\"va\">cellPopulation</span><span class=\"op\">)</span> <span class=\"co\"># Matrix of module probabilities for each cell population</span></span></code></pre></div>\n<pre><code><span><span class=\"co\">## [1] 80 14</span></span></code></pre>\n<div class=\"sourceCode\" id=\"cb61\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/dim.html\" class=\"external-link\">dim</a></span><span class=\"op\">(</span><span class=\"va\">fm</span><span class=\"op\">$</span><span class=\"va\">proportions</span><span class=\"op\">$</span><span class=\"va\">sample</span><span class=\"op\">)</span> <span class=\"co\"># Matrix of cell population probabilities in each sample</span></span></code></pre></div>\n<pre><code><span><span class=\"co\">## [1] 14  1</span></span></code></pre>\n</div>\n<div class=\"section level3\">\n<h3 id=\"changing-the-feature-display-name\">Changing the feature display name<a class=\"anchor\" aria-label=\"anchor\" href=\"#changing-the-feature-display-name\"></a>\n</h3>\n<p>The parameter <code>displayName</code> can be used to change the\nlabels of the rows from the <code>rownames</code> to a column in the\n<code>rowData</code> of the SCE object. The function is available in\n<code>plotDimReduceFeature</code> and <code>moduleHeatmap</code>. For\nexample, if we did not change the <code>rownames</code> to\n<code>Symbol_TENx</code> in the beginning of the tutorial, the following\ncode still could be run in <code>moduleHeatmap</code> to display the\ngene symbol even if the <code>rownames</code> were set to the original\nEnsembl IDs:</p>\n<div class=\"sourceCode\" id=\"cb63\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/moduleHeatmap.html\">moduleHeatmap</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, featureModule <span class=\"op\">=</span> <span class=\"fl\">27</span>, useAssay <span class=\"op\">=</span> <span class=\"va\">useAssay</span>, altExpName <span class=\"op\">=</span> <span class=\"va\">altExpName</span>, displayName <span class=\"op\">=</span> <span class=\"st\">\"Symbol_TENx\"</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"celda_pbmc3k_files/figure-html/module_heatmap_with_display-1.png\" width=\"700\"></p>\n</div>\n</div>\n<div class=\"section level2\">\n<h2 id=\"session-information\">Session information<a class=\"anchor\" aria-label=\"anchor\" href=\"#session-information\"></a>\n</h2>\n<details><summary>\nsessionInfo()\n</summary><pre><code><span><span class=\"co\">## R version 4.3.3 (2024-02-29)</span></span>\n<span><span class=\"co\">## Platform: x86_64-apple-darwin20 (64-bit)</span></span>\n<span><span class=\"co\">## Running under: macOS Sonoma 14.4.1</span></span>\n<span><span class=\"co\">## </span></span>\n<span><span class=\"co\">## Matrix products: default</span></span>\n<span><span class=\"co\">## BLAS:   /Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/lib/libRblas.0.dylib </span></span>\n<span><span class=\"co\">## LAPACK: /Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/lib/libRlapack.dylib;  LAPACK version 3.11.0</span></span>\n<span><span class=\"co\">## </span></span>\n<span><span class=\"co\">## locale:</span></span>\n<span><span class=\"co\">## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8</span></span>\n<span><span class=\"co\">## </span></span>\n<span><span class=\"co\">## time zone: America/New_York</span></span>\n<span><span class=\"co\">## tzcode source: internal</span></span>\n<span><span class=\"co\">## </span></span>\n<span><span class=\"co\">## attached base packages:</span></span>\n<span><span class=\"co\">## [1] stats4    stats     graphics  grDevices utils     datasets  methods  </span></span>\n<span><span class=\"co\">## [8] base     </span></span>\n<span><span class=\"co\">## </span></span>\n<span><span class=\"co\">## other attached packages:</span></span>\n<span><span class=\"co\">##  [1] scater_1.30.1               scuttle_1.12.0             </span></span>\n<span><span class=\"co\">##  [3] kableExtra_1.4.0            knitr_1.45                 </span></span>\n<span><span class=\"co\">##  [5] ggplot2_3.5.0               celda_1.18.2               </span></span>\n<span><span class=\"co\">##  [7] singleCellTK_2.12.2         TENxPBMCData_1.20.0        </span></span>\n<span><span class=\"co\">##  [9] HDF5Array_1.30.0            rhdf5_2.46.1               </span></span>\n<span><span class=\"co\">## [11] DelayedArray_0.28.0         SparseArray_1.2.4          </span></span>\n<span><span class=\"co\">## [13] S4Arrays_1.2.1              abind_1.4-5                </span></span>\n<span><span class=\"co\">## [15] Matrix_1.6-5                SingleCellExperiment_1.24.0</span></span>\n<span><span class=\"co\">## [17] SummarizedExperiment_1.32.0 Biobase_2.62.0             </span></span>\n<span><span class=\"co\">## [19] GenomicRanges_1.54.1        GenomeInfoDb_1.38.8        </span></span>\n<span><span class=\"co\">## [21] IRanges_2.36.0              S4Vectors_0.40.2           </span></span>\n<span><span class=\"co\">## [23] BiocGenerics_0.48.1         MatrixGenerics_1.14.0      </span></span>\n<span><span class=\"co\">## [25] matrixStats_1.2.0          </span></span>\n<span><span class=\"co\">## </span></span>\n<span><span class=\"co\">## loaded via a namespace (and not attached):</span></span>\n<span><span class=\"co\">##   [1] later_1.3.2                   BiocIO_1.12.0                </span></span>\n<span><span class=\"co\">##   [3] bitops_1.0-7                  filelock_1.0.3               </span></span>\n<span><span class=\"co\">##   [5] tibble_3.2.1                  R.oo_1.26.0                  </span></span>\n<span><span class=\"co\">##   [7] graph_1.80.0                  XML_3.99-0.16.1              </span></span>\n<span><span class=\"co\">##   [9] lifecycle_1.0.4               scDblFinder_1.16.0           </span></span>\n<span><span class=\"co\">##  [11] doParallel_1.0.17             edgeR_4.0.16                 </span></span>\n<span><span class=\"co\">##  [13] lattice_0.22-5                MASS_7.3-60.0.1              </span></span>\n<span><span class=\"co\">##  [15] magrittr_2.0.3                limma_3.58.1                 </span></span>\n<span><span class=\"co\">##  [17] sass_0.4.8                    rmarkdown_2.25               </span></span>\n<span><span class=\"co\">##  [19] jquerylib_0.1.4               yaml_2.3.8                   </span></span>\n<span><span class=\"co\">##  [21] metapod_1.10.1                httpuv_1.6.14                </span></span>\n<span><span class=\"co\">##  [23] reticulate_1.34.0             cowplot_1.1.3                </span></span>\n<span><span class=\"co\">##  [25] RColorBrewer_1.1-3            DBI_1.2.1                    </span></span>\n<span><span class=\"co\">##  [27] zlibbioc_1.48.2               Rtsne_0.17                   </span></span>\n<span><span class=\"co\">##  [29] purrr_1.0.2                   R.utils_2.12.3               </span></span>\n<span><span class=\"co\">##  [31] RCurl_1.98-1.14               WriteXLS_6.5.0               </span></span>\n<span><span class=\"co\">##  [33] rappdirs_0.3.3                circlize_0.4.16              </span></span>\n<span><span class=\"co\">##  [35] GenomeInfoDbData_1.2.11       ggrepel_0.9.5                </span></span>\n<span><span class=\"co\">##  [37] irlba_2.3.5.1                 eds_1.4.0                    </span></span>\n<span><span class=\"co\">##  [39] annotate_1.80.0               dqrng_0.3.2                  </span></span>\n<span><span class=\"co\">##  [41] svglite_2.1.3                 pkgdown_2.0.7                </span></span>\n<span><span class=\"co\">##  [43] DelayedMatrixStats_1.24.0     codetools_0.2-19             </span></span>\n<span><span class=\"co\">##  [45] DropletUtils_1.22.0           xml2_1.3.6                   </span></span>\n<span><span class=\"co\">##  [47] shape_1.4.6.1                 tidyselect_1.2.0             </span></span>\n<span><span class=\"co\">##  [49] farver_2.1.1                  ScaledMatrix_1.10.0          </span></span>\n<span><span class=\"co\">##  [51] viridis_0.6.5                 BiocFileCache_2.10.1         </span></span>\n<span><span class=\"co\">##  [53] GenomicAlignments_1.38.2      jsonlite_1.8.8               </span></span>\n<span><span class=\"co\">##  [55] GetoptLong_1.0.5              BiocNeighbors_1.20.2         </span></span>\n<span><span class=\"co\">##  [57] ellipsis_0.3.2                iterators_1.0.14             </span></span>\n<span><span class=\"co\">##  [59] systemfonts_1.0.6             dbscan_1.1-12                </span></span>\n<span><span class=\"co\">##  [61] foreach_1.5.2                 tools_4.3.3                  </span></span>\n<span><span class=\"co\">##  [63] ragg_1.3.0                    Rcpp_1.0.12                  </span></span>\n<span><span class=\"co\">##  [65] glue_1.7.0                    gridExtra_2.3                </span></span>\n<span><span class=\"co\">##  [67] xfun_0.41                     dplyr_1.1.4                  </span></span>\n<span><span class=\"co\">##  [69] withr_3.0.0                   combinat_0.0-8               </span></span>\n<span><span class=\"co\">##  [71] BiocManager_1.30.22           fastmap_1.1.1                </span></span>\n<span><span class=\"co\">##  [73] MCMCprecision_0.4.0           rhdf5filters_1.14.1          </span></span>\n<span><span class=\"co\">##  [75] bluster_1.12.0                fansi_1.0.6                  </span></span>\n<span><span class=\"co\">##  [77] digest_0.6.35                 rsvd_1.0.5                   </span></span>\n<span><span class=\"co\">##  [79] R6_2.5.1                      mime_0.12                    </span></span>\n<span><span class=\"co\">##  [81] textshaping_0.3.7             colorspace_2.1-0             </span></span>\n<span><span class=\"co\">##  [83] Cairo_1.6-2                   RSQLite_2.3.5                </span></span>\n<span><span class=\"co\">##  [85] R.methodsS3_1.8.2             utf8_1.2.4                   </span></span>\n<span><span class=\"co\">##  [87] generics_0.1.3                data.table_1.15.4            </span></span>\n<span><span class=\"co\">##  [89] FNN_1.1.4                     rtracklayer_1.62.0           </span></span>\n<span><span class=\"co\">##  [91] httr_1.4.7                    uwot_0.1.16                  </span></span>\n<span><span class=\"co\">##  [93] pkgconfig_2.0.3               gtable_0.3.4                 </span></span>\n<span><span class=\"co\">##  [95] blob_1.2.4                    ComplexHeatmap_2.18.0        </span></span>\n<span><span class=\"co\">##  [97] XVector_0.42.0                htmltools_0.5.7              </span></span>\n<span><span class=\"co\">##  [99] clue_0.3-65                   GSEABase_1.64.0              </span></span>\n<span><span class=\"co\">## [101] scales_1.3.0                  png_0.1-8                    </span></span>\n<span><span class=\"co\">## [103] enrichR_3.2                   scran_1.30.2                 </span></span>\n<span><span class=\"co\">## [105] rstudioapi_0.15.0             reshape2_1.4.4               </span></span>\n<span><span class=\"co\">## [107] rjson_0.2.21                  curl_5.2.1                   </span></span>\n<span><span class=\"co\">## [109] GlobalOptions_0.1.2           cachem_1.0.8                 </span></span>\n<span><span class=\"co\">## [111] stringr_1.5.1                 BiocVersion_3.18.1           </span></span>\n<span><span class=\"co\">## [113] parallel_4.3.3                vipor_0.4.7                  </span></span>\n<span><span class=\"co\">## [115] AnnotationDbi_1.64.1          restfulr_0.0.15              </span></span>\n<span><span class=\"co\">## [117] desc_1.4.3                    pillar_1.9.0                 </span></span>\n<span><span class=\"co\">## [119] grid_4.3.3                    vctrs_0.6.5                  </span></span>\n<span><span class=\"co\">## [121] promises_1.2.1                BiocSingular_1.18.0          </span></span>\n<span><span class=\"co\">## [123] dbplyr_2.4.0                  beachmat_2.18.1              </span></span>\n<span><span class=\"co\">## [125] xtable_1.8-4                  cluster_2.1.6                </span></span>\n<span><span class=\"co\">## [127] beeswarm_0.4.0                evaluate_0.23                </span></span>\n<span><span class=\"co\">## [129] magick_2.8.2                  cli_3.6.2                    </span></span>\n<span><span class=\"co\">## [131] locfit_1.5-9.9                compiler_4.3.3               </span></span>\n<span><span class=\"co\">## [133] Rsamtools_2.18.0              rlang_1.1.3                  </span></span>\n<span><span class=\"co\">## [135] crayon_1.5.2                  labeling_0.4.3               </span></span>\n<span><span class=\"co\">## [137] plyr_1.8.9                    fs_1.6.3                     </span></span>\n<span><span class=\"co\">## [139] ggbeeswarm_0.7.2              stringi_1.8.3                </span></span>\n<span><span class=\"co\">## [141] viridisLite_0.4.2             BiocParallel_1.36.0          </span></span>\n<span><span class=\"co\">## [143] munsell_0.5.1                 Biostrings_2.70.1            </span></span>\n<span><span class=\"co\">## [145] ExperimentHub_2.10.0          RcppEigen_0.3.4.0.0          </span></span>\n<span><span class=\"co\">## [147] GSVAdata_1.38.0               sparseMatrixStats_1.14.0     </span></span>\n<span><span class=\"co\">## [149] bit64_4.0.5                   Rhdf5lib_1.24.1              </span></span>\n<span><span class=\"co\">## [151] KEGGREST_1.42.0               statmod_1.5.0                </span></span>\n<span><span class=\"co\">## [153] shiny_1.8.0                   highr_0.10                   </span></span>\n<span><span class=\"co\">## [155] interactiveDisplayBase_1.40.0 AnnotationHub_3.10.0         </span></span>\n<span><span class=\"co\">## [157] igraph_2.0.3                  memoise_2.0.1                </span></span>\n<span><span class=\"co\">## [159] bslib_0.6.1                   bit_4.0.5                    </span></span>\n<span><span class=\"co\">## [161] xgboost_1.7.7.1</span></span></code></pre>\n</details>\n</div>\n  </div>\n\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n\n        <nav id=\"toc\" data-toggle=\"toc\"><h2 data-toc-skip>Contents</h2>\n    </nav>\n</div>\n\n</div>\n\n\n\n      <footer><div class=\"copyright\">\n  <p></p>\n<p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p>\n<p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer>\n</div>\n\n  \n\n\n  \n\n  </body>\n</html>\n"
  },
  {
    "path": "docs/articles/celda_pbmc3k_files/accessible-code-block-0.0.1/empty-anchor.js",
    "content": "// Hide empty <a> tag within highlighted CodeBlock for screen reader accessibility (see https://github.com/jgm/pandoc/issues/6352#issuecomment-626106786) -->\n// v0.0.1\n// Written by JooYoung Seo (jooyoung@psu.edu) and Atsushi Yasumoto on June 1st, 2020.\n\ndocument.addEventListener('DOMContentLoaded', function() {\n  const codeList = document.getElementsByClassName(\"sourceCode\");\n  for (var i = 0; i < codeList.length; i++) {\n    var linkList = codeList[i].getElementsByTagName('a');\n    for (var j = 0; j < linkList.length; j++) {\n      if (linkList[j].innerHTML === \"\") {\n        linkList[j].setAttribute('aria-hidden', 'true');\n      }\n    }\n  }\n});\n"
  },
  {
    "path": "docs/articles/celda_pbmc3k_files/kePrint-0.0.1/kePrint.js",
    "content": "$(document).ready(function(){\n    if (typeof $('[data-toggle=\"tooltip\"]').tooltip === 'function') {\n        $('[data-toggle=\"tooltip\"]').tooltip();\n    }\n    if ($('[data-toggle=\"popover\"]').popover === 'function') {\n        $('[data-toggle=\"popover\"]').popover();\n    }\n});\n"
  },
  {
    "path": "docs/articles/celda_pbmc3k_files/lightable-0.0.1/lightable.css",
    "content": "/*!\n * lightable v0.0.1\n * Copyright 2020 Hao Zhu\n * Licensed under MIT (https://github.com/haozhu233/kableExtra/blob/master/LICENSE)\n */\n\n.lightable-minimal {\n  border-collapse: separate;\n  border-spacing: 16px 1px;\n  width: 100%;\n  margin-bottom: 10px;\n}\n\n.lightable-minimal td {\n  margin-left: 5px;\n  margin-right: 5px;\n}\n\n.lightable-minimal th {\n  margin-left: 5px;\n  margin-right: 5px;\n}\n\n.lightable-minimal thead tr:last-child th {\n  border-bottom: 2px solid #00000050;\n  empty-cells: hide;\n\n}\n\n.lightable-minimal tbody tr:first-child td {\n  padding-top: 0.5em;\n}\n\n.lightable-minimal.lightable-hover tbody tr:hover {\n  background-color: #f5f5f5;\n}\n\n.lightable-minimal.lightable-striped tbody tr:nth-child(even) {\n  background-color: #f5f5f5;\n}\n\n.lightable-classic {\n  border-top: 0.16em solid #111111;\n  border-bottom: 0.16em solid #111111;\n  width: 100%;\n  margin-bottom: 10px;\n  margin: 10px 5px;\n}\n\n.lightable-classic tfoot tr td {\n  border: 0;\n}\n\n.lightable-classic tfoot tr:first-child td {\n  border-top: 0.14em solid #111111;\n}\n\n.lightable-classic caption {\n  color: #222222;\n}\n\n.lightable-classic td {\n  padding-left: 5px;\n  padding-right: 5px;\n  color: #222222;\n}\n\n.lightable-classic th {\n  padding-left: 5px;\n  padding-right: 5px;\n  font-weight: normal;\n  color: #222222;\n}\n\n.lightable-classic thead tr:last-child th {\n  border-bottom: 0.10em solid #111111;\n}\n\n.lightable-classic.lightable-hover tbody tr:hover {\n  background-color: #F9EEC1;\n}\n\n.lightable-classic.lightable-striped tbody tr:nth-child(even) {\n  background-color: #f5f5f5;\n}\n\n.lightable-classic-2 {\n  border-top: 3px double #111111;\n  border-bottom: 3px double #111111;\n  width: 100%;\n  margin-bottom: 10px;\n}\n\n.lightable-classic-2 tfoot tr td {\n  border: 0;\n}\n\n.lightable-classic-2 tfoot tr:first-child td {\n  border-top: 3px double #111111;\n}\n\n.lightable-classic-2 caption {\n  color: #222222;\n}\n\n.lightable-classic-2 td {\n  padding-left: 5px;\n  padding-right: 5px;\n  color: #222222;\n}\n\n.lightable-classic-2 th {\n  padding-left: 5px;\n  padding-right: 5px;\n  font-weight: normal;\n  color: #222222;\n}\n\n.lightable-classic-2 tbody tr:last-child td {\n  border-bottom: 3px double #111111;\n}\n\n.lightable-classic-2 thead tr:last-child th {\n  border-bottom: 1px solid #111111;\n}\n\n.lightable-classic-2.lightable-hover tbody tr:hover {\n  background-color: #F9EEC1;\n}\n\n.lightable-classic-2.lightable-striped tbody tr:nth-child(even) {\n  background-color: #f5f5f5;\n}\n\n.lightable-material {\n  min-width: 100%;\n  white-space: nowrap;\n  table-layout: fixed;\n  font-family: Roboto, sans-serif;\n  border: 1px solid #EEE;\n  border-collapse: collapse;\n  margin-bottom: 10px;\n}\n\n.lightable-material tfoot tr td {\n  border: 0;\n}\n\n.lightable-material tfoot tr:first-child td {\n  border-top: 1px solid #EEE;\n}\n\n.lightable-material th {\n  height: 56px;\n  padding-left: 16px;\n  padding-right: 16px;\n}\n\n.lightable-material td {\n  height: 52px;\n  padding-left: 16px;\n  padding-right: 16px;\n  border-top: 1px solid #eeeeee;\n}\n\n.lightable-material.lightable-hover tbody tr:hover {\n  background-color: #f5f5f5;\n}\n\n.lightable-material.lightable-striped tbody tr:nth-child(even) {\n  background-color: #f5f5f5;\n}\n\n.lightable-material.lightable-striped tbody td {\n  border: 0;\n}\n\n.lightable-material.lightable-striped thead tr:last-child th {\n  border-bottom: 1px solid #ddd;\n}\n\n.lightable-material-dark {\n  min-width: 100%;\n  white-space: nowrap;\n  table-layout: fixed;\n  font-family: Roboto, sans-serif;\n  border: 1px solid #FFFFFF12;\n  border-collapse: collapse;\n  margin-bottom: 10px;\n  background-color: #363640;\n}\n\n.lightable-material-dark tfoot tr td {\n  border: 0;\n}\n\n.lightable-material-dark tfoot tr:first-child td {\n  border-top: 1px solid #FFFFFF12;\n}\n\n.lightable-material-dark th {\n  height: 56px;\n  padding-left: 16px;\n  padding-right: 16px;\n  color: #FFFFFF60;\n}\n\n.lightable-material-dark td {\n  height: 52px;\n  padding-left: 16px;\n  padding-right: 16px;\n  color: #FFFFFF;\n  border-top: 1px solid #FFFFFF12;\n}\n\n.lightable-material-dark.lightable-hover tbody tr:hover {\n  background-color: #FFFFFF12;\n}\n\n.lightable-material-dark.lightable-striped tbody tr:nth-child(even) {\n  background-color: #FFFFFF12;\n}\n\n.lightable-material-dark.lightable-striped tbody td {\n  border: 0;\n}\n\n.lightable-material-dark.lightable-striped thead tr:last-child th {\n  border-bottom: 1px solid #FFFFFF12;\n}\n\n.lightable-paper {\n  width: 100%;\n  margin-bottom: 10px;\n  color: #444;\n}\n\n.lightable-paper tfoot tr td {\n  border: 0;\n}\n\n.lightable-paper tfoot tr:first-child td {\n  border-top: 1px solid #00000020;\n}\n\n.lightable-paper thead tr:last-child th {\n  color: #666;\n  vertical-align: bottom;\n  border-bottom: 1px solid #00000020;\n  line-height: 1.15em;\n  padding: 10px 5px;\n}\n\n.lightable-paper td {\n  vertical-align: middle;\n  border-bottom: 1px solid #00000010;\n  line-height: 1.15em;\n  padding: 7px 5px;\n}\n\n.lightable-paper.lightable-hover tbody tr:hover {\n  background-color: #F9EEC1;\n}\n\n.lightable-paper.lightable-striped tbody tr:nth-child(even) {\n  background-color: #00000008;\n}\n\n.lightable-paper.lightable-striped tbody td {\n  border: 0;\n}\n\n"
  },
  {
    "path": "docs/articles/decontX.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<meta charset=\"utf-8\">\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Decontamination of ambient RNA in single-cell genomic data with DecontX • celda</title>\n<!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\">\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\">\n<script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\">\n<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\">\n<!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\">\n<script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Decontamination of ambient RNA in single-cell genomic data with DecontX\">\n<meta property=\"og:description\" content=\"celda\">\n<!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]-->\n</head>\n<body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-article\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\">\n<li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\">\n<li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul>\n</li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul>\n<ul class=\"nav navbar-nav navbar-right\">\n<li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul>\n</div>\n<!--/.nav-collapse -->\n  </div>\n<!--/.container -->\n</div>\n<!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header toc-ignore\">\n      <h1 data-toc-skip>Decontamination of ambient RNA in single-cell\ngenomic data with DecontX</h1>\n                        <h4 data-toc-skip class=\"author\">Shiyi (Iris)\nYang</h4>\n            <address class=\"author_afil\">\n      Boston University School of\nMedicine<br><h4 data-toc-skip class=\"author\">Zhe\nWang</h4>\n            <address class=\"author_afil\">\n      Boston University School of\nMedicine<br><h4 data-toc-skip class=\"author\">Yuan\nYin</h4>\n            <address class=\"author_afil\">\n      Boston University School of\nMedicine<br><h4 data-toc-skip class=\"author\">Joshua\nCampbell</h4>\n            <address class=\"author_afil\">\n      Boston University School of\nMedicine<br><a class=\"author_email\" href=\"mailto:#\"></a><a href=\"mailto:camp@bu.edu\" class=\"email\">camp@bu.edu</a>\n      </address>\n                  \n            <h4 data-toc-skip class=\"date\">2024-04-02</h4>\n      \n      <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/vignettes/decontX.Rmd\" class=\"external-link\"><code>vignettes/decontX.Rmd</code></a></small>\n      <div class=\"hidden name\"><code>decontX.Rmd</code></div>\n\n    </address>\n</address>\n</address>\n</div>\n\n    \n    \n<div class=\"section level2\">\n<h2 id=\"introduction\">Introduction<a class=\"anchor\" aria-label=\"anchor\" href=\"#introduction\"></a>\n</h2>\n<p>Droplet-based microfluidic devices have become widely used to perform\nsingle-cell RNA sequencing (scRNA-seq). However, ambient RNA present in\nthe cell suspension can be aberrantly counted along with a cell’s native\nmRNA and result in cross-contamination of transcripts between different\ncell populations. DecontX is a Bayesian method to estimate and remove\ncontamination in individual cells. DecontX assumes the observed\nexpression of a cell is a mixture of counts from two multinomial\ndistributions: (1) a distribution of native transcript counts from the\ncell’s actual population and (2) a distribution of contaminating\ntranscript counts from all other cell populations captured in the assay.\nOverall, computational decontamination of single cell counts can aid in\ndownstream clustering and visualization.</p>\n<p>The package can be loaded using the <code>library</code> command.</p>\n<div class=\"sourceCode\" id=\"cb1\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\">celda</span><span class=\"op\">)</span></span></code></pre></div>\n</div>\n<div class=\"section level2\">\n<h2 id=\"importing-data\">Importing data<a class=\"anchor\" aria-label=\"anchor\" href=\"#importing-data\"></a>\n</h2>\n<p>DecontX can take either a <a href=\"https://bioconductor.org/packages/release/bioc/html/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a>\nobject or a counts matrix as input. <code>decontX</code> will attempt to\nconvert any input matrix to class <code>dgCMatrix</code> from package <a href=\"https://cran.r-project.org/web/packages/Matrix/index.html\" class=\"external-link\">Matrix</a>\nbefore starting the analysis.</p>\n<p>To import datasets directly into an SCE object, the <a href=\"https://bioconductor.org/packages/release/bioc/html/singleCellTK.html\" class=\"external-link\">singleCellTK</a>\npackage has several importing functions for different preprocessing\ntools including CellRanger, STARsolo, BUStools, Optimus, DropEST, SEQC,\nand Alevin/Salmon. For example, the following code can be used as a\ntemplate to read in the filtered and raw matrices for multiple samples\nprocessed with CellRanger:</p>\n<div class=\"sourceCode\" id=\"cb2\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://www.camplab.net/sctk/\" class=\"external-link\">singleCellTK</a></span><span class=\"op\">)</span></span>\n<span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/singleCellTK/man/importCellRanger.html\" class=\"external-link\">importCellRanger</a></span><span class=\"op\">(</span>sampleDirs <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"path/to/sample1/\"</span>, <span class=\"st\">\"path/to/sample2/\"</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n<p>Within each sample directory, there should be subfolders called\n<code>\"outs/filtered_feature_bc_matrix/\"</code> or\n<code>\"outs/raw_feature_bc_matrix/\"</code> with files called\n<code>matrix.mtx.gz</code>, <code>features.tsv.gz</code> and\n<code>barcodes.tsv.gz</code>. If these files are in different\nsubdirectories, the <code>importCellRangerV3Sample</code> function can\nbe used to import data from a different directory instead.</p>\n<p>Optionally, the “raw” or “droplet” matrix can also be easily imported\nby setting the <code>dataType</code> argument to “raw”:</p>\n<div class=\"sourceCode\" id=\"cb3\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">sce.raw</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/singleCellTK/man/importCellRanger.html\" class=\"external-link\">importCellRanger</a></span><span class=\"op\">(</span>sampleDirs <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"path/to/sample1/\"</span>, <span class=\"st\">\"path/to/sample2/\"</span><span class=\"op\">)</span>, dataType <span class=\"op\">=</span> <span class=\"st\">\"raw\"</span><span class=\"op\">)</span></span></code></pre></div>\n<p>The raw matrix can be passed to the <code>background</code> parameter\nin <code>decontX</code> as described below. If using Seurat, go to the\n<a href=\"#seurat\">Working with Seurat</a> section for details on how to\nconvert between SCE and Seurat objects.</p>\n</div>\n<div class=\"section level2\">\n<h2 id=\"load-pbmc4k-data-from-10x\">Load PBMC4k data from 10X<a class=\"anchor\" aria-label=\"anchor\" href=\"#load-pbmc4k-data-from-10x\"></a>\n</h2>\n<p>We will utilize the 10X PBMC 4K dataset as an example in this\nvignette. This data can be easily retrieved from the package <a href=\"http://bioconductor.org/packages/release/data/experiment/html/TENxPBMCData.html\" class=\"external-link\">TENxPBMCData</a>.\nMake sure the the column names are set before running decontX.</p>\n<div class=\"sourceCode\" id=\"cb4\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"co\"># Load PBMC data</span></span>\n<span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\">TENxPBMCData</span><span class=\"op\">)</span></span>\n<span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/TENxPBMCData/man/TENxPBMCData.html\" class=\"external-link\">TENxPBMCData</a></span><span class=\"op\">(</span><span class=\"st\">\"pbmc4k\"</span><span class=\"op\">)</span></span>\n<span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/colnames.html\" class=\"external-link\">colnames</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/paste.html\" class=\"external-link\">paste</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">$</span><span class=\"va\">Sample</span>, <span class=\"va\">sce</span><span class=\"op\">$</span><span class=\"va\">Barcode</span>, sep <span class=\"op\">=</span> <span class=\"st\">\"_\"</span><span class=\"op\">)</span></span>\n<span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/colnames.html\" class=\"external-link\">rownames</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">rowData</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span><span class=\"op\">$</span><span class=\"va\">Symbol_TENx</span></span>\n<span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/BiocGenerics/man/dge.html\" class=\"external-link\">counts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/methods/as.html\" class=\"external-link\">as</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/BiocGenerics/man/dge.html\" class=\"external-link\">counts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span>, <span class=\"st\">\"dgCMatrix\"</span><span class=\"op\">)</span></span></code></pre></div>\n</div>\n<div class=\"section level2\">\n<h2 id=\"running-decontx\">Running decontX<a class=\"anchor\" aria-label=\"anchor\" href=\"#running-decontx\"></a>\n</h2>\n<p>A SingleCellExperiment (SCE) object or a sparse matrix containing the\ncounts for filtered cells can be passed to decontX via the\n<code>x</code> parameter. The matrix to use in an SCE object can be\nspecified with the <code>assayName</code> parameter, which is set to\n<code>\"counts\"</code> by default. There are two major ways to run\ndecontX: with and without the raw/droplet matrix containing empty\ndroplets. Here is an example of running decontX without supplying the\nbackground:</p>\n<div class=\"sourceCode\" id=\"cb5\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/decontX.html\">decontX</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span></span></code></pre></div>\n<p>In this scenario, <code>decontX</code> will estimate the\ncontamination distribution for each cell cluster based on the profiles\nof the other cell clusters in the filtered dataset. The estimated\ncontamination results can be found in the\n<code>colData(sce)$decontX_contamination</code> and the decontaminated\ncounts can be accessed with <code>decontXcounts(sce)</code>.\n<code>decontX</code> will perform heuristic clustering to quickly define\nmajor cell clusters. However if you have your own cell cluster labels,\nthey can be specified with the <code>z</code> parameter. These results\nwill be used throughout the rest of the vignette.</p>\n<p>The raw/droplet matrix can be used to empirically estimate the\ndistribution of ambient RNA, which is especially useful when cells that\ncontributed to the ambient RNA are not accurately represented in the\nfiltered count matrix containing the cells. For example, cells that were\nremoved via flow cytometry or that were more sensitive to lysis during\ndissociation may have contributed to the ambient RNA but were not\nmeasured in the filtered/cell matrix. The raw/droplet matrix can be\ninput as an SCE object or a sparse matrix using the\n<code>background</code> parameter:</p>\n<div class=\"sourceCode\" id=\"cb6\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/decontX.html\">decontX</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, background <span class=\"op\">=</span> <span class=\"va\">sce.raw</span><span class=\"op\">)</span></span></code></pre></div>\n<p>Only empty droplets in the background matrix should be used to\nestimate the ambient RNA. If any cell ids (i.e. <code>colnames</code>)\nin the raw/droplet matrix supplied to the <code>background</code>\nparameter are also found in the filtered counts matrix (<code>x</code>),\ndecontX will automatically remove them from the raw matrix. However, if\nthe cell ids are not available for the input matrices, decontX will\ntreat the entire <code>background</code> input as empty droplets. All of\nthe outputs are the same as when running decontX without setting the\n<code>background</code> parameter.</p>\n<blockquote>\n<p>Note: If the input object is just a matrix and not an SCE object,\nmake sure to save the output into a variable with a different name\n(e.g. <code>result &lt;- decontX(mat)</code>). The result object will be\na list with contamination in <code>result$contamination</code> and the\ndecontaminated counts in <code>result$decontXcounts</code>.</p>\n</blockquote>\n</div>\n<div class=\"section level2\">\n<h2 id=\"plotting-decontx-results\">Plotting DecontX results<a class=\"anchor\" aria-label=\"anchor\" href=\"#plotting-decontx-results\"></a>\n</h2>\n<div class=\"section level3\">\n<h3 id=\"cluster-labels-on-umap\">Cluster labels on UMAP<a class=\"anchor\" aria-label=\"anchor\" href=\"#cluster-labels-on-umap\"></a>\n</h3>\n<p>DecontX creates a UMAP which we can use to plot the cluster labels\nautomatically identified in the analysis. Note that the clustering\napproach used here is designed to find “broad” cell types rather than\nindividual cell subpopulations within a cell type.</p>\n<div class=\"sourceCode\" id=\"cb7\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">umap</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/reducedDims.html\" class=\"external-link\">reducedDim</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, <span class=\"st\">\"decontX_UMAP\"</span><span class=\"op\">)</span></span>\n<span><span class=\"fu\"><a href=\"../reference/plotDimReduceCluster.html\">plotDimReduceCluster</a></span><span class=\"op\">(</span>x <span class=\"op\">=</span> <span class=\"va\">sce</span><span class=\"op\">$</span><span class=\"va\">decontX_clusters</span>,</span>\n<span>    dim1 <span class=\"op\">=</span> <span class=\"va\">umap</span><span class=\"op\">[</span>, <span class=\"fl\">1</span><span class=\"op\">]</span>, dim2 <span class=\"op\">=</span> <span class=\"va\">umap</span><span class=\"op\">[</span>, <span class=\"fl\">2</span><span class=\"op\">]</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"decontX_files/figure-html/UMAP_Clusters-1.png\" width=\"700\"></p>\n</div>\n<div class=\"section level3\">\n<h3 id=\"contamination-on-umap\">Contamination on UMAP<a class=\"anchor\" aria-label=\"anchor\" href=\"#contamination-on-umap\"></a>\n</h3>\n<p>The percentage of contamination in each cell can be plotting on the\nUMAP to visualize what what clusters may have higher levels of ambient\nRNA.</p>\n<div class=\"sourceCode\" id=\"cb8\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/plotDecontXContamination.html\">plotDecontXContamination</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"decontX_files/figure-html/plot_decon-1.png\" width=\"700\"></p>\n</div>\n<div class=\"section level3\">\n<h3 id=\"expression-of-markers-on-umap\">Expression of markers on UMAP<a class=\"anchor\" aria-label=\"anchor\" href=\"#expression-of-markers-on-umap\"></a>\n</h3>\n<p>Known marker genes can also be plotted on the UMAP to identify the\ncell types for each cluster. We will use CD3D and CD3E for T-cells, LYZ,\nS100A8, and S100A9 for monocytes, CD79A, CD79B, and MS4A1 for B-cells,\nGNLY for NK-cells, and PPBP for megakaryocytes.</p>\n<div class=\"sourceCode\" id=\"cb9\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"http://bioconductor.org/packages/scater/\" class=\"external-link\">scater</a></span><span class=\"op\">)</span></span>\n<span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/scuttle/man/logNormCounts.html\" class=\"external-link\">logNormCounts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span></span>\n<span><span class=\"fu\"><a href=\"../reference/plotDimReduceFeature.html\">plotDimReduceFeature</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/matrix.html\" class=\"external-link\">as.matrix</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/assays.html\" class=\"external-link\">logcounts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span><span class=\"op\">)</span>,</span>\n<span>    dim1 <span class=\"op\">=</span> <span class=\"va\">umap</span><span class=\"op\">[</span>, <span class=\"fl\">1</span><span class=\"op\">]</span>,</span>\n<span>    dim2 <span class=\"op\">=</span> <span class=\"va\">umap</span><span class=\"op\">[</span>, <span class=\"fl\">2</span><span class=\"op\">]</span>,</span>\n<span>    features <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"CD3D\"</span>, <span class=\"st\">\"CD3E\"</span>, <span class=\"st\">\"GNLY\"</span>,</span>\n<span>        <span class=\"st\">\"LYZ\"</span>, <span class=\"st\">\"S100A8\"</span>, <span class=\"st\">\"S100A9\"</span>,</span>\n<span>        <span class=\"st\">\"CD79A\"</span>, <span class=\"st\">\"CD79B\"</span>, <span class=\"st\">\"MS4A1\"</span><span class=\"op\">)</span>,</span>\n<span>    exactMatch <span class=\"op\">=</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span></span></code></pre></div>\n<pre><code><span><span class=\"co\">## Warning in asMethod(object): sparse-&gt;dense coercion: allocating vector of size</span></span>\n<span><span class=\"co\">## 1.1 GiB</span></span></code></pre>\n<p><img src=\"decontX_files/figure-html/plot_feature-1.png\" width=\"700\"></p>\n</div>\n<div class=\"section level3\">\n<h3 id=\"barplot-of-markers-detected-in-cell-clusters\">Barplot of markers detected in cell clusters<a class=\"anchor\" aria-label=\"anchor\" href=\"#barplot-of-markers-detected-in-cell-clusters\"></a>\n</h3>\n<p>The percetage of cells within a cluster that have detectable\nexpression of marker genes can be displayed in a barplot. Markers for\ncell types need to be supplied in a named list. First, the detection of\nmarker genes in the original <code>counts</code> assay is shown:</p>\n<div class=\"sourceCode\" id=\"cb11\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">markers</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>Tcell_Markers <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"CD3E\"</span>, <span class=\"st\">\"CD3D\"</span><span class=\"op\">)</span>,</span>\n<span>    Bcell_Markers <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"CD79A\"</span>, <span class=\"st\">\"CD79B\"</span>, <span class=\"st\">\"MS4A1\"</span><span class=\"op\">)</span>,</span>\n<span>    Monocyte_Markers <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"S100A8\"</span>, <span class=\"st\">\"S100A9\"</span>, <span class=\"st\">\"LYZ\"</span><span class=\"op\">)</span>,</span>\n<span>    NKcell_Markers <span class=\"op\">=</span> <span class=\"st\">\"GNLY\"</span><span class=\"op\">)</span></span>\n<span><span class=\"va\">cellTypeMappings</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>Tcells <span class=\"op\">=</span> <span class=\"fl\">2</span>, Bcells <span class=\"op\">=</span> <span class=\"fl\">5</span>, Monocytes <span class=\"op\">=</span> <span class=\"fl\">1</span>, NKcells <span class=\"op\">=</span> <span class=\"fl\">6</span><span class=\"op\">)</span></span>\n<span><span class=\"fu\"><a href=\"../reference/plotDecontXMarkerPercentage.html\">plotDecontXMarkerPercentage</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>,</span>\n<span>    markers <span class=\"op\">=</span> <span class=\"va\">markers</span>,</span>\n<span>    groupClusters <span class=\"op\">=</span> <span class=\"va\">cellTypeMappings</span>,</span>\n<span>    assayName <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"decontX_files/figure-html/barplotCounts-1.png\" width=\"700\"></p>\n<p>We can then look to see how much decontX removed aberrant expression\nof marker genes in each cell type by changing the <code>assayName</code>\nto <code>decontXcounts</code>:</p>\n<div class=\"sourceCode\" id=\"cb12\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/plotDecontXMarkerPercentage.html\">plotDecontXMarkerPercentage</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>,</span>\n<span>    markers <span class=\"op\">=</span> <span class=\"va\">markers</span>,</span>\n<span>    groupClusters <span class=\"op\">=</span> <span class=\"va\">cellTypeMappings</span>,</span>\n<span>    assayName <span class=\"op\">=</span> <span class=\"st\">\"decontXcounts\"</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"decontX_files/figure-html/barplotDecontCounts-1.png\" width=\"700\"></p>\n<p>Percentages of marker genes detected in other cell types were reduced\nor completely removed. For example, the percentage of cells that\nexpressed Monocyte marker genes was greatly reduced in T-cells, B-cells,\nand NK-cells. The original counts and decontamined counts can be plotted\nside-by-side by listing multiple assays in the <code>assayName</code>\nparameter. This option is only available if the data is stored in\n<code>SingleCellExperiment</code> object.</p>\n<div class=\"sourceCode\" id=\"cb13\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/plotDecontXMarkerPercentage.html\">plotDecontXMarkerPercentage</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>,</span>\n<span>    markers <span class=\"op\">=</span> <span class=\"va\">markers</span>,</span>\n<span>    groupClusters <span class=\"op\">=</span> <span class=\"va\">cellTypeMappings</span>,</span>\n<span>    assayName <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"counts\"</span>, <span class=\"st\">\"decontXcounts\"</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"decontX_files/figure-html/barplotBoth-1.png\" width=\"700\"></p>\n<p>Some helpful hints when using\n<code>plotDecontXMarkerPercentage</code>:</p>\n<ol style=\"list-style-type: decimal\">\n<li>Cell clusters can be renamed and re-grouped using the\n<code>groupCluster</code> parameter, which also needs to be a named\nlist. If <code>groupCluster</code> is used, cell clusters not included\nin the list will be excluded in the barplot. For example, if we wanted\nto group T-cells and NK-cells together, we could set\n<code>cellTypeMappings &lt;- list(NK_Tcells = c(2,6), Bcells = 5, Monocytes = 1)</code>\n</li>\n<li>The level a gene that needs to be expressed to be considered\ndetected in a cell can be adjusted using the <code>threshold</code>\nparameter.</li>\n<li>If you are not using a <code>SingleCellExperiment</code>, then you\nwill need to supply the original counts matrix or the decontaminated\ncounts matrix as the first argument to generate the barplots.</li>\n</ol>\n</div>\n<div class=\"section level3\">\n<h3 id=\"violin-plot-to-compare-the-distributions-of-original-and-decontaminated-counts\">Violin plot to compare the distributions of original and\ndecontaminated counts<a class=\"anchor\" aria-label=\"anchor\" href=\"#violin-plot-to-compare-the-distributions-of-original-and-decontaminated-counts\"></a>\n</h3>\n<p>Another useful way to assess the amount of decontamination is to view\nthe expression of marker genes before and after <code>decontX</code>\nacross cell types. Here we view the monocyte markers in each cell type.\nThe violin plot shows that the markers have been removed from T-cells,\nB-cells, and NK-cells, but are largely unaffected in monocytes.</p>\n<div class=\"sourceCode\" id=\"cb14\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/plotDecontXMarkerExpression.html\">plotDecontXMarkerExpression</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>,</span>\n<span>    markers <span class=\"op\">=</span> <span class=\"va\">markers</span><span class=\"op\">[[</span><span class=\"st\">\"Monocyte_Markers\"</span><span class=\"op\">]</span><span class=\"op\">]</span>,</span>\n<span>    groupClusters <span class=\"op\">=</span> <span class=\"va\">cellTypeMappings</span>,</span>\n<span>    ncol <span class=\"op\">=</span> <span class=\"fl\">3</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"decontX_files/figure-html/plotDecontXMarkerExpression-1.png\" width=\"700\"></p>\n<p>Some helpful hints when using\n<code>plotDecontXMarkerExpression</code>:</p>\n<ol style=\"list-style-type: decimal\">\n<li>\n<code>groupClusters</code> works the same way as in\n<code>plotDecontXMarkerPercentage</code>.</li>\n<li>This function will plot each pair of markers and clusters (or cell\ntype specified by <code>groupClusters</code>). Therefore, you may want\nto keep the number of markers small in each plot and call the function\nmultiple times for different sets of marker genes.</li>\n<li>You can also plot the individual points by setting\n<code>plotDots = TRUE</code> and/or log transform the points on the fly\nby setting <code>log1p = TRUE</code>.</li>\n<li>This function can plot any assay in a\n<code>SingleCellExperiment</code>. Therefore you could also examine\nnormalized expression of the original and decontaminated counts. For\nexample:</li>\n</ol>\n<div class=\"sourceCode\" id=\"cb15\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"http://bioconductor.org/packages/scater/\" class=\"external-link\">scater</a></span><span class=\"op\">)</span></span>\n<span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/scuttle/man/logNormCounts.html\" class=\"external-link\">logNormCounts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>,</span>\n<span>    exprs_values <span class=\"op\">=</span> <span class=\"st\">\"decontXcounts\"</span>,</span>\n<span>    name <span class=\"op\">=</span> <span class=\"st\">\"decontXlogcounts\"</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"fu\"><a href=\"../reference/plotDecontXMarkerExpression.html\">plotDecontXMarkerExpression</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>,</span>\n<span>    markers <span class=\"op\">=</span> <span class=\"va\">markers</span><span class=\"op\">[[</span><span class=\"st\">\"Monocyte_Markers\"</span><span class=\"op\">]</span><span class=\"op\">]</span>,</span>\n<span>    groupClusters <span class=\"op\">=</span> <span class=\"va\">cellTypeMappings</span>,</span>\n<span>    ncol <span class=\"op\">=</span> <span class=\"fl\">3</span>,</span>\n<span>    assayName <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"logcounts\"</span>, <span class=\"st\">\"decontXlogcounts\"</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"decontX_files/figure-html/plot_norm_counts-1.png\" width=\"700\"></p>\n</div>\n</div>\n<div class=\"section level2\">\n<h2 id=\"other-important-notes\">Other important notes<a class=\"anchor\" aria-label=\"anchor\" href=\"#other-important-notes\"></a>\n</h2>\n<div class=\"section level3\">\n<h3 id=\"choosing-appropriate-cell-clusters\">Choosing appropriate cell clusters<a class=\"anchor\" aria-label=\"anchor\" href=\"#choosing-appropriate-cell-clusters\"></a>\n</h3>\n<p>The ability of DecontX to accurately identify contamination is\ndependent on the cell cluster labels. DecontX assumes that contamination\nfor a cell cluster comes from combination of counts from all other\nclusters. The default clustering approach used by DecontX tends to\nselect fewer clusters that represent broader cell types. For example,\nall T-cells tend to be clustered together rather than splitting naive\nand cytotoxic T-cells into separate clusters. Custom cell type labels\ncan be suppled via the <code>z</code> parameter if some cells are not\nbeing clustered appropriately by the default method.</p>\n</div>\n<div class=\"section level3\">\n<h3 id=\"adjusting-the-priors-to-influence-contamination-estimates\">Adjusting the priors to influence contamination estimates<a class=\"anchor\" aria-label=\"anchor\" href=\"#adjusting-the-priors-to-influence-contamination-estimates\"></a>\n</h3>\n<p>There are ways to force <code>decontX</code> to estimate more or less\ncontamination across a dataset by manipulating the priors. The\n<code>delta</code> parameter is a numeric vector of length two. It is\nthe concentration parameter for the Dirichlet distribution which serves\nas the prior for the proportions of native and contamination counts in\neach cell. The first element is the prior for the proportion of native\ncounts while the second element is the prior for the proportion of\ncontamination counts. These essentially act as pseudocounts for the\nnative and contamination in each cell. If\n<code>estimateDelta = TRUE</code>, <code>delta</code> is only used to\nproduce a random sample of proportions for an initial value of\ncontamination in each cell. Then <code>delta</code> is updated in each\niteration. If <code>estimateDelta = FALSE</code>, then\n<code>delta</code> is fixed with these values for the entire inference\nprocedure. Fixing <code>delta</code> and setting a high number in the\nsecond element will force <code>decontX</code> to be more aggressive and\nestimate higher levels of contamination in each cell at the expense of\npotentially removing native expression. For example, in the previous\nPBMC example, we can see what the estimated <code>delta</code> was by\nlooking in the estimates:</p>\n<div class=\"sourceCode\" id=\"cb16\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\">metadata</span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span><span class=\"op\">$</span><span class=\"va\">decontX</span><span class=\"op\">$</span><span class=\"va\">estimates</span><span class=\"op\">$</span><span class=\"va\">all_cells</span><span class=\"op\">$</span><span class=\"va\">delta</span></span></code></pre></div>\n<pre><code><span><span class=\"co\">## [1] 9.280108 1.038000</span></span></code></pre>\n<p>Setting a higher value in the second element of delta and\n<code>estimateDelta = FALSE</code> will force <code>decontX</code> to\nestimate higher levels of contamination per cell:</p>\n<div class=\"sourceCode\" id=\"cb18\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">sce.delta</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/decontX.html\">decontX</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, delta <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"fl\">9</span>, <span class=\"fl\">20</span><span class=\"op\">)</span>, estimateDelta <span class=\"op\">=</span> <span class=\"cn\">FALSE</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"fu\"><a href=\"https://rdrr.io/r/graphics/plot.default.html\" class=\"external-link\">plot</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">$</span><span class=\"va\">decontX_contamination</span>, <span class=\"va\">sce.delta</span><span class=\"op\">$</span><span class=\"va\">decontX_contamination</span>,</span>\n<span>     xlab <span class=\"op\">=</span> <span class=\"st\">\"DecontX estimated priors\"</span>,</span>\n<span>     ylab <span class=\"op\">=</span> <span class=\"st\">\"Setting priors to estimate higher contamination\"</span><span class=\"op\">)</span></span>\n<span><span class=\"fu\"><a href=\"https://rdrr.io/r/graphics/abline.html\" class=\"external-link\">abline</a></span><span class=\"op\">(</span><span class=\"fl\">0</span>, <span class=\"fl\">1</span>, col <span class=\"op\">=</span> <span class=\"st\">\"red\"</span>, lwd <span class=\"op\">=</span> <span class=\"fl\">2</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"decontX_files/figure-html/newDecontX-1.png\" width=\"700\"></p>\n</div>\n<div class=\"section level3\">\n<h3 id=\"seurat\">Working with Seurat<a class=\"anchor\" aria-label=\"anchor\" href=\"#seurat\"></a>\n</h3>\n<p>If you are using the <a href=\"https://cran.r-project.org/web/packages/Seurat/index.html\" class=\"external-link\">Seurat</a>\npackage for downstream analysis, the following code can be used to read\nin a matrix and convert between Seurat and SCE objects:</p>\n<div class=\"sourceCode\" id=\"cb19\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"co\"># Read counts from CellRanger output</span></span>\n<span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://satijalab.org/seurat\" class=\"external-link\">Seurat</a></span><span class=\"op\">)</span></span>\n<span><span class=\"va\">counts</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://satijalab.org/seurat/reference/Read10X.html\" class=\"external-link\">Read10X</a></span><span class=\"op\">(</span><span class=\"st\">\"sample/outs/filtered_feature_bc_matrix/\"</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># Create a SingleCellExperiment object and run decontX</span></span>\n<span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>counts <span class=\"op\">=</span> <span class=\"va\">counts</span><span class=\"op\">)</span><span class=\"op\">)</span></span>\n<span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/decontX.html\">decontX</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># Create a Seurat object from a SCE with decontX results</span></span>\n<span><span class=\"va\">seuratObject</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/SeuratObject/man/CreateSeuratObject.html\" class=\"external-link\">CreateSeuratObject</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/Round.html\" class=\"external-link\">round</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"../reference/decontXcounts.html\">decontXcounts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n<p>Optionally, the “raw” matrix can be also be imported and used as the\nbackground:</p>\n<div class=\"sourceCode\" id=\"cb20\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">counts.raw</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://satijalab.org/seurat/reference/Read10X.html\" class=\"external-link\">Read10X</a></span><span class=\"op\">(</span><span class=\"st\">\"sample/outs/raw_feature_bc_matrix/\"</span><span class=\"op\">)</span></span>\n<span><span class=\"va\">sce.raw</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>counts <span class=\"op\">=</span> <span class=\"va\">counts.raw</span><span class=\"op\">)</span><span class=\"op\">)</span></span>\n<span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/decontX.html\">decontX</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, background <span class=\"op\">=</span> <span class=\"va\">sce.raw</span><span class=\"op\">)</span></span></code></pre></div>\n<p>Note that the decontaminated matrix of decontX consists of floating\npoint numbers and must be rounded to integers before adding it to a\nSeurat object. If you already have a Seurat object containing the counts\nmatrix and would like to run decontX, you can retrieve the count matrix,\ncreate a SCE object, and run decontX, and then add it back to the Seurat\nobject:</p>\n<div class=\"sourceCode\" id=\"cb21\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">counts</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/SeuratObject/man/AssayData.html\" class=\"external-link\">GetAssayData</a></span><span class=\"op\">(</span>object <span class=\"op\">=</span> <span class=\"va\">seuratObject</span>, slot <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span><span class=\"op\">)</span></span>\n<span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>counts <span class=\"op\">=</span> <span class=\"va\">counts</span><span class=\"op\">)</span><span class=\"op\">)</span></span>\n<span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/decontX.html\">decontX</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span></span>\n<span><span class=\"va\">seuratObj</span><span class=\"op\">[[</span><span class=\"st\">\"decontXcounts\"</span><span class=\"op\">]</span><span class=\"op\">]</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/SeuratObject/man/CreateAssayObject.html\" class=\"external-link\">CreateAssayObject</a></span><span class=\"op\">(</span>counts <span class=\"op\">=</span> <span class=\"fu\"><a href=\"../reference/decontXcounts.html\">decontXcounts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n</div>\n</div>\n<div class=\"section level2\">\n<h2 id=\"session-information\">Session Information<a class=\"anchor\" aria-label=\"anchor\" href=\"#session-information\"></a>\n</h2>\n<div class=\"sourceCode\" id=\"cb22\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/sessionInfo.html\" class=\"external-link\">sessionInfo</a></span><span class=\"op\">(</span><span class=\"op\">)</span></span></code></pre></div>\n<pre><code><span><span class=\"co\">## R version 4.3.3 (2024-02-29)</span></span>\n<span><span class=\"co\">## Platform: x86_64-apple-darwin20 (64-bit)</span></span>\n<span><span class=\"co\">## Running under: macOS Sonoma 14.4.1</span></span>\n<span><span class=\"co\">## </span></span>\n<span><span class=\"co\">## Matrix products: default</span></span>\n<span><span class=\"co\">## BLAS:   /Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/lib/libRblas.0.dylib </span></span>\n<span><span class=\"co\">## LAPACK: /Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/lib/libRlapack.dylib;  LAPACK version 3.11.0</span></span>\n<span><span class=\"co\">## </span></span>\n<span><span class=\"co\">## locale:</span></span>\n<span><span class=\"co\">## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8</span></span>\n<span><span class=\"co\">## </span></span>\n<span><span class=\"co\">## time zone: America/New_York</span></span>\n<span><span class=\"co\">## tzcode source: internal</span></span>\n<span><span class=\"co\">## </span></span>\n<span><span class=\"co\">## attached base packages:</span></span>\n<span><span class=\"co\">## [1] stats4    stats     graphics  grDevices utils     datasets  methods  </span></span>\n<span><span class=\"co\">## [8] base     </span></span>\n<span><span class=\"co\">## </span></span>\n<span><span class=\"co\">## other attached packages:</span></span>\n<span><span class=\"co\">##  [1] scater_1.30.1               ggplot2_3.5.0              </span></span>\n<span><span class=\"co\">##  [3] scuttle_1.12.0              TENxPBMCData_1.20.0        </span></span>\n<span><span class=\"co\">##  [5] HDF5Array_1.30.0            rhdf5_2.46.1               </span></span>\n<span><span class=\"co\">##  [7] DelayedArray_0.28.0         SparseArray_1.2.4          </span></span>\n<span><span class=\"co\">##  [9] S4Arrays_1.2.1              abind_1.4-5                </span></span>\n<span><span class=\"co\">## [11] celda_1.18.2                Matrix_1.6-5               </span></span>\n<span><span class=\"co\">## [13] SingleCellExperiment_1.24.0 SummarizedExperiment_1.32.0</span></span>\n<span><span class=\"co\">## [15] Biobase_2.62.0              GenomicRanges_1.54.1       </span></span>\n<span><span class=\"co\">## [17] GenomeInfoDb_1.38.8         IRanges_2.36.0             </span></span>\n<span><span class=\"co\">## [19] S4Vectors_0.40.2            BiocGenerics_0.48.1        </span></span>\n<span><span class=\"co\">## [21] MatrixGenerics_1.14.0       matrixStats_1.2.0          </span></span>\n<span><span class=\"co\">## [23] BiocStyle_2.30.0           </span></span>\n<span><span class=\"co\">## </span></span>\n<span><span class=\"co\">## loaded via a namespace (and not attached):</span></span>\n<span><span class=\"co\">##   [1] RColorBrewer_1.1-3            rstudioapi_0.15.0            </span></span>\n<span><span class=\"co\">##   [3] jsonlite_1.8.8                magrittr_2.0.3               </span></span>\n<span><span class=\"co\">##   [5] ggbeeswarm_0.7.2              farver_2.1.1                 </span></span>\n<span><span class=\"co\">##   [7] rmarkdown_2.25                fs_1.6.3                     </span></span>\n<span><span class=\"co\">##   [9] zlibbioc_1.48.2               ragg_1.3.0                   </span></span>\n<span><span class=\"co\">##  [11] vctrs_0.6.5                   memoise_2.0.1                </span></span>\n<span><span class=\"co\">##  [13] DelayedMatrixStats_1.24.0     RCurl_1.98-1.14              </span></span>\n<span><span class=\"co\">##  [15] htmltools_0.5.7               AnnotationHub_3.10.0         </span></span>\n<span><span class=\"co\">##  [17] curl_5.2.1                    BiocNeighbors_1.20.2         </span></span>\n<span><span class=\"co\">##  [19] Rhdf5lib_1.24.1               sass_0.4.8                   </span></span>\n<span><span class=\"co\">##  [21] bslib_0.6.1                   desc_1.4.3                   </span></span>\n<span><span class=\"co\">##  [23] plyr_1.8.9                    cachem_1.0.8                 </span></span>\n<span><span class=\"co\">##  [25] mime_0.12                     lifecycle_1.0.4              </span></span>\n<span><span class=\"co\">##  [27] iterators_1.0.14              pkgconfig_2.0.3              </span></span>\n<span><span class=\"co\">##  [29] rsvd_1.0.5                    R6_2.5.1                     </span></span>\n<span><span class=\"co\">##  [31] fastmap_1.1.1                 GenomeInfoDbData_1.2.11      </span></span>\n<span><span class=\"co\">##  [33] shiny_1.8.0                   digest_0.6.35                </span></span>\n<span><span class=\"co\">##  [35] colorspace_2.1-0              AnnotationDbi_1.64.1         </span></span>\n<span><span class=\"co\">##  [37] irlba_2.3.5.1                 ExperimentHub_2.10.0         </span></span>\n<span><span class=\"co\">##  [39] textshaping_0.3.7             RSQLite_2.3.5                </span></span>\n<span><span class=\"co\">##  [41] beachmat_2.18.1               labeling_0.4.3               </span></span>\n<span><span class=\"co\">##  [43] filelock_1.0.3                WriteXLS_6.5.0               </span></span>\n<span><span class=\"co\">##  [45] fansi_1.0.6                   httr_1.4.7                   </span></span>\n<span><span class=\"co\">##  [47] compiler_4.3.3                bit64_4.0.5                  </span></span>\n<span><span class=\"co\">##  [49] withr_3.0.0                   doParallel_1.0.17            </span></span>\n<span><span class=\"co\">##  [51] BiocParallel_1.36.0           viridis_0.6.5                </span></span>\n<span><span class=\"co\">##  [53] DBI_1.2.1                     highr_0.10                   </span></span>\n<span><span class=\"co\">##  [55] rappdirs_0.3.3                rjson_0.2.21                 </span></span>\n<span><span class=\"co\">##  [57] tools_4.3.3                   vipor_0.4.7                  </span></span>\n<span><span class=\"co\">##  [59] beeswarm_0.4.0                interactiveDisplayBase_1.40.0</span></span>\n<span><span class=\"co\">##  [61] httpuv_1.6.14                 MCMCprecision_0.4.0          </span></span>\n<span><span class=\"co\">##  [63] glue_1.7.0                    dbscan_1.1-12                </span></span>\n<span><span class=\"co\">##  [65] rhdf5filters_1.14.1           promises_1.2.1               </span></span>\n<span><span class=\"co\">##  [67] grid_4.3.3                    Rtsne_0.17                   </span></span>\n<span><span class=\"co\">##  [69] reshape2_1.4.4                generics_0.1.3               </span></span>\n<span><span class=\"co\">##  [71] gtable_0.3.4                  data.table_1.15.4            </span></span>\n<span><span class=\"co\">##  [73] ScaledMatrix_1.10.0           BiocSingular_1.18.0          </span></span>\n<span><span class=\"co\">##  [75] utf8_1.2.4                    XVector_0.42.0               </span></span>\n<span><span class=\"co\">##  [77] RcppAnnoy_0.0.22              ggrepel_0.9.5                </span></span>\n<span><span class=\"co\">##  [79] BiocVersion_3.18.1            foreach_1.5.2                </span></span>\n<span><span class=\"co\">##  [81] pillar_1.9.0                  stringr_1.5.1                </span></span>\n<span><span class=\"co\">##  [83] later_1.3.2                   dplyr_1.1.4                  </span></span>\n<span><span class=\"co\">##  [85] BiocFileCache_2.10.1          lattice_0.22-5               </span></span>\n<span><span class=\"co\">##  [87] bit_4.0.5                     tidyselect_1.2.0             </span></span>\n<span><span class=\"co\">##  [89] Biostrings_2.70.1             knitr_1.45                   </span></span>\n<span><span class=\"co\">##  [91] gridExtra_2.3                 bookdown_0.37                </span></span>\n<span><span class=\"co\">##  [93] xfun_0.41                     stringi_1.8.3                </span></span>\n<span><span class=\"co\">##  [95] yaml_2.3.8                    evaluate_0.23                </span></span>\n<span><span class=\"co\">##  [97] codetools_0.2-19              RcppEigen_0.3.4.0.0          </span></span>\n<span><span class=\"co\">##  [99] tibble_3.2.1                  BiocManager_1.30.22          </span></span>\n<span><span class=\"co\">## [101] cli_3.6.2                     uwot_0.1.16                  </span></span>\n<span><span class=\"co\">## [103] xtable_1.8-4                  systemfonts_1.0.6            </span></span>\n<span><span class=\"co\">## [105] munsell_0.5.1                 jquerylib_0.1.4              </span></span>\n<span><span class=\"co\">## [107] enrichR_3.2                   Rcpp_1.0.12                  </span></span>\n<span><span class=\"co\">## [109] dbplyr_2.4.0                  png_0.1-8                    </span></span>\n<span><span class=\"co\">## [111] parallel_4.3.3                ellipsis_0.3.2               </span></span>\n<span><span class=\"co\">## [113] pkgdown_2.0.7                 blob_1.2.4                   </span></span>\n<span><span class=\"co\">## [115] sparseMatrixStats_1.14.0      bitops_1.0-7                 </span></span>\n<span><span class=\"co\">## [117] viridisLite_0.4.2             scales_1.3.0                 </span></span>\n<span><span class=\"co\">## [119] purrr_1.0.2                   crayon_1.5.2                 </span></span>\n<span><span class=\"co\">## [121] combinat_0.0-8                rlang_1.1.3                  </span></span>\n<span><span class=\"co\">## [123] KEGGREST_1.42.0</span></span></code></pre>\n</div>\n  </div>\n\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n\n        <nav id=\"toc\" data-toggle=\"toc\"><h2 data-toc-skip>Contents</h2>\n    </nav>\n</div>\n\n</div>\n\n\n\n      <footer><div class=\"copyright\">\n  <p></p>\n<p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p>\n<p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer>\n</div>\n\n  \n\n\n  \n\n  </body>\n</html>\n"
  },
  {
    "path": "docs/articles/decontX_files/accessible-code-block-0.0.1/empty-anchor.js",
    "content": "// Hide empty <a> tag within highlighted CodeBlock for screen reader accessibility (see https://github.com/jgm/pandoc/issues/6352#issuecomment-626106786) -->\n// v0.0.1\n// Written by JooYoung Seo (jooyoung@psu.edu) and Atsushi Yasumoto on June 1st, 2020.\n\ndocument.addEventListener('DOMContentLoaded', function() {\n  const codeList = document.getElementsByClassName(\"sourceCode\");\n  for (var i = 0; i < codeList.length; i++) {\n    var linkList = codeList[i].getElementsByTagName('a');\n    for (var j = 0; j < linkList.length; j++) {\n      if (linkList[j].innerHTML === \"\") {\n        linkList[j].setAttribute('aria-hidden', 'true');\n      }\n    }\n  }\n});\n"
  },
  {
    "path": "docs/articles/decontX_files/header-attrs-2.7/header-attrs.js",
    "content": "// Pandoc 2.9 adds attributes on both header and div. We remove the former (to\n// be compatible with the behavior of Pandoc < 2.8).\ndocument.addEventListener('DOMContentLoaded', function(e) {\n  var hs = document.querySelectorAll(\"div.section[class*='level'] > :first-child\");\n  var i, h, a;\n  for (i = 0; i < hs.length; i++) {\n    h = hs[i];\n    if (!/^h[1-6]$/i.test(h.tagName)) continue;  // it should be a header h1-h6\n    a = h.attributes;\n    while (a.length > 0) h.removeAttribute(a[0].name);\n  }\n});\n"
  },
  {
    "path": "docs/articles/decontX_pbmc4k.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<meta charset=\"utf-8\">\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Decontamination of ambient RNA in single-cell genomic data with DecontX • celda</title>\n<!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\">\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\">\n<script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\">\n<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\">\n<!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\">\n<script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Decontamination of ambient RNA in single-cell genomic data with DecontX\">\n<meta property=\"og:description\" content=\"celda\">\n<!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]-->\n</head>\n<body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-article\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\">\n<li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\">\n<li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul>\n</li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul>\n<ul class=\"nav navbar-nav navbar-right\">\n<li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul>\n</div>\n<!--/.nav-collapse -->\n  </div>\n<!--/.container -->\n</div>\n<!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header toc-ignore\">\n      <h1 data-toc-skip>Decontamination of ambient RNA in single-cell\ngenomic data with DecontX</h1>\n                        <h4 data-toc-skip class=\"author\">Shiyi (Iris)\nYang</h4>\n            <address class=\"author_afil\">\n      Boston University School of\nMedicine<br><h4 data-toc-skip class=\"author\">Zhe\nWang</h4>\n            <address class=\"author_afil\">\n      Boston University School of\nMedicine<br><h4 data-toc-skip class=\"author\">Yuan\nYin</h4>\n            <address class=\"author_afil\">\n      Boston University School of\nMedicine<br><h4 data-toc-skip class=\"author\">Joshua\nCampbell</h4>\n            <address class=\"author_afil\">\n      Boston University School of\nMedicine<br><a class=\"author_email\" href=\"mailto:#\"></a><a href=\"mailto:camp@bu.edu\" class=\"email\">camp@bu.edu</a>\n      </address>\n                  \n            <h4 data-toc-skip class=\"date\">2024-04-02</h4>\n      \n      <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/vignettes/articles/decontX_pbmc4k.Rmd\" class=\"external-link\"><code>vignettes/articles/decontX_pbmc4k.Rmd</code></a></small>\n      <div class=\"hidden name\"><code>decontX_pbmc4k.Rmd</code></div>\n\n    </address>\n</address>\n</address>\n</div>\n\n    \n    \n<div class=\"section level2\">\n<h2 id=\"introduction\">Introduction<a class=\"anchor\" aria-label=\"anchor\" href=\"#introduction\"></a>\n</h2>\n<p>Droplet-based microfluidic devices have become widely used to perform\nsingle-cell RNA sequencing (scRNA-seq). However, ambient RNA present in\nthe cell suspension can be aberrantly counted along with a cell’s native\nmRNA and result in cross-contamination of transcripts between different\ncell populations. DecontX is a Bayesian method to estimate and remove\ncontamination in individual cells. DecontX assumes the observed\nexpression of a cell is a mixture of counts from two multinomial\ndistributions: (1) a distribution of native transcript counts from the\ncell’s actual population and (2) a distribution of contaminating\ntranscript counts from all other cell populations captured in the assay.\nOverall, computational decontamination of single cell counts can aid in\ndownstream clustering and visualization.</p>\n<p>The package can be loaded using the <code>library</code> command.</p>\n<div class=\"sourceCode\" id=\"cb1\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\">celda</span><span class=\"op\">)</span></span></code></pre></div>\n</div>\n<div class=\"section level2\">\n<h2 id=\"importing-data\">Importing data<a class=\"anchor\" aria-label=\"anchor\" href=\"#importing-data\"></a>\n</h2>\n<p>DecontX can take either a <a href=\"https://bioconductor.org/packages/release/bioc/html/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a>\nobject or a counts matrix as input. <code>decontX</code> will attempt to\nconvert any input matrix to class <code>dgCMatrix</code> from package <a href=\"https://cran.r-project.org/web/packages/Matrix/index.html\" class=\"external-link\">Matrix</a>\nbefore starting the analysis.</p>\n<p>To import datasets directly into an SCE object, the <a href=\"https://bioconductor.org/packages/release/bioc/html/singleCellTK.html\" class=\"external-link\">singleCellTK</a>\npackage has several importing functions for different preprocessing\ntools including CellRanger, STARsolo, BUStools, Optimus, DropEST, SEQC,\nand Alevin/Salmon. For example, the following code can be used as a\ntemplate to read in the filtered and raw matrices for multiple samples\nprocessed with CellRanger:</p>\n<div class=\"sourceCode\" id=\"cb2\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://www.camplab.net/sctk/\" class=\"external-link\">singleCellTK</a></span><span class=\"op\">)</span></span>\n<span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/singleCellTK/man/importCellRanger.html\" class=\"external-link\">importCellRanger</a></span><span class=\"op\">(</span>sampleDirs <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"path/to/sample1/\"</span>, <span class=\"st\">\"path/to/sample2/\"</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n<p>Within each sample directory, there should be subfolders called\n<code>\"outs/filtered_feature_bc_matrix/\"</code> or\n<code>\"outs/raw_feature_bc_matrix/\"</code> with files called\n<code>matrix.mtx.gz</code>, <code>features.tsv.gz</code> and\n<code>barcodes.tsv.gz</code>. If these files are in different\nsubdirectories, the <code>importCellRangerV3Sample</code> function can\nbe used to import data from a different directory instead.</p>\n<p>Optionally, the “raw” or “droplet” matrix can also be easily imported\nby setting the <code>dataType</code> argument to “raw”:</p>\n<div class=\"sourceCode\" id=\"cb3\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">sce.raw</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/singleCellTK/man/importCellRanger.html\" class=\"external-link\">importCellRanger</a></span><span class=\"op\">(</span>sampleDirs <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"path/to/sample1/\"</span>, <span class=\"st\">\"path/to/sample2/\"</span><span class=\"op\">)</span>, dataType <span class=\"op\">=</span> <span class=\"st\">\"raw\"</span><span class=\"op\">)</span></span></code></pre></div>\n<p>The raw matrix can be passed to the <code>background</code> parameter\nin <code>decontX</code> as described below. If using Seurat, go to the\n<a href=\"#seurat\">Working with Seurat</a> section for details on how to\nconvert between SCE and Seurat objects.</p>\n</div>\n<div class=\"section level2\">\n<h2 id=\"load-pbmc4k-data-from-10x\">Load PBMC4k data from 10X<a class=\"anchor\" aria-label=\"anchor\" href=\"#load-pbmc4k-data-from-10x\"></a>\n</h2>\n<p>We will utilize the 10X PBMC 4K dataset as an example in this\nvignette. This data can be easily retrieved from the package <a href=\"http://bioconductor.org/packages/release/data/experiment/html/TENxPBMCData.html\" class=\"external-link\">TENxPBMCData</a>.\nMake sure the the column names are set before running decontX.</p>\n<div class=\"sourceCode\" id=\"cb4\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"co\"># Load PBMC data</span></span>\n<span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\">TENxPBMCData</span><span class=\"op\">)</span></span>\n<span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/TENxPBMCData/man/TENxPBMCData.html\" class=\"external-link\">TENxPBMCData</a></span><span class=\"op\">(</span><span class=\"st\">\"pbmc4k\"</span><span class=\"op\">)</span></span>\n<span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/colnames.html\" class=\"external-link\">colnames</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/paste.html\" class=\"external-link\">paste</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">$</span><span class=\"va\">Sample</span>, <span class=\"va\">sce</span><span class=\"op\">$</span><span class=\"va\">Barcode</span>, sep <span class=\"op\">=</span> <span class=\"st\">\"_\"</span><span class=\"op\">)</span></span>\n<span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/colnames.html\" class=\"external-link\">rownames</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">rowData</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span><span class=\"op\">$</span><span class=\"va\">Symbol_TENx</span></span>\n<span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/BiocGenerics/man/dge.html\" class=\"external-link\">counts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">as</span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/BiocGenerics/man/dge.html\" class=\"external-link\">counts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span>, <span class=\"st\">\"dgCMatrix\"</span><span class=\"op\">)</span></span></code></pre></div>\n</div>\n<div class=\"section level2\">\n<h2 id=\"running-decontx\">Running decontX<a class=\"anchor\" aria-label=\"anchor\" href=\"#running-decontx\"></a>\n</h2>\n<p>A SingleCellExperiment (SCE) object or a sparse matrix containing the\ncounts for filtered cells can be passed to decontX via the\n<code>x</code> parameter. The matrix to use in an SCE object can be\nspecified with the <code>assayName</code> parameter, which is set to\n<code>\"counts\"</code> by default. There are two major ways to run\ndecontX: with and without the raw/droplet matrix containing empty\ndroplets. Here is an example of running decontX without supplying the\nbackground:</p>\n<div class=\"sourceCode\" id=\"cb5\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/decontX.html\">decontX</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span></span></code></pre></div>\n<p>In this scenario, <code>decontX</code> will estimate the\ncontamination distribution for each cell cluster based on the profiles\nof the other cell clusters in the filtered dataset. The estimated\ncontamination results can be found in the\n<code>colData(sce)$decontX_contamination</code> and the decontaminated\ncounts can be accessed with <code>decontXcounts(sce)</code>.\n<code>decontX</code> will perform heuristic clustering to quickly define\nmajor cell clusters. However if you have your own cell cluster labels,\nthey can be specified with the <code>z</code> parameter. These results\nwill be used throughout the rest of the vignette.</p>\n<p>The raw/droplet matrix can be used to empirically estimate the\ndistribution of ambient RNA, which is especially useful when cells that\ncontributed to the ambient RNA are not accurately represented in the\nfiltered count matrix containing the cells. For example, cells that were\nremoved via flow cytometry or that were more sensitive to lysis during\ndissociation may have contributed to the ambient RNA but were not\nmeasured in the filtered/cell matrix. The raw/droplet matrix can be\ninput as an SCE object or a sparse matrix using the\n<code>background</code> parameter:</p>\n<div class=\"sourceCode\" id=\"cb6\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/decontX.html\">decontX</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, background <span class=\"op\">=</span> <span class=\"va\">sce.raw</span><span class=\"op\">)</span></span></code></pre></div>\n<p>Only empty droplets in the background matrix should be used to\nestimate the ambient RNA. If any cell ids (i.e. <code>colnames</code>)\nin the raw/droplet matrix supplied to the <code>background</code>\nparameter are also found in the filtered counts matrix (<code>x</code>),\ndecontX will automatically remove them from the raw matrix. However, if\nthe cell ids are not available for the input matrices, decontX will\ntreat the entire <code>background</code> input as empty droplets. All of\nthe outputs are the same as when running decontX without setting the\n<code>background</code> parameter.</p>\n<blockquote>\n<p>Note: If the input object is just a matrix and not an SCE object,\nmake sure to save the output into a variable with a different name\n(e.g. <code>result &lt;- decontX(mat)</code>). The result object will be\na list with contamination in <code>result$contamination</code> and the\ndecontaminated counts in <code>result$decontXcounts</code>.</p>\n</blockquote>\n</div>\n<div class=\"section level2\">\n<h2 id=\"plotting-decontx-results\">Plotting DecontX results<a class=\"anchor\" aria-label=\"anchor\" href=\"#plotting-decontx-results\"></a>\n</h2>\n<div class=\"section level3\">\n<h3 id=\"cluster-labels-on-umap\">Cluster labels on UMAP<a class=\"anchor\" aria-label=\"anchor\" href=\"#cluster-labels-on-umap\"></a>\n</h3>\n<p>DecontX creates a UMAP which we can use to plot the cluster labels\nautomatically identified in the analysis. Note that the clustering\napproach used here is designed to find “broad” cell types rather than\nindividual cell subpopulations within a cell type.</p>\n<div class=\"sourceCode\" id=\"cb7\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">umap</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/reducedDims.html\" class=\"external-link\">reducedDim</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, <span class=\"st\">\"decontX_UMAP\"</span><span class=\"op\">)</span></span>\n<span><span class=\"fu\"><a href=\"../reference/plotDimReduceCluster.html\">plotDimReduceCluster</a></span><span class=\"op\">(</span>x <span class=\"op\">=</span> <span class=\"va\">sce</span><span class=\"op\">$</span><span class=\"va\">decontX_clusters</span>,</span>\n<span>    dim1 <span class=\"op\">=</span> <span class=\"va\">umap</span><span class=\"op\">[</span>, <span class=\"fl\">1</span><span class=\"op\">]</span>, dim2 <span class=\"op\">=</span> <span class=\"va\">umap</span><span class=\"op\">[</span>, <span class=\"fl\">2</span><span class=\"op\">]</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"decontX_pbmc4k_files/figure-html/UMAP_Clusters-1.png\" width=\"700\"></p>\n</div>\n<div class=\"section level3\">\n<h3 id=\"contamination-on-umap\">Contamination on UMAP<a class=\"anchor\" aria-label=\"anchor\" href=\"#contamination-on-umap\"></a>\n</h3>\n<p>The percentage of contamination in each cell can be plotting on the\nUMAP to visualize what what clusters may have higher levels of ambient\nRNA.</p>\n<div class=\"sourceCode\" id=\"cb8\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/plotDecontXContamination.html\">plotDecontXContamination</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"decontX_pbmc4k_files/figure-html/plot_decon-1.png\" width=\"700\"></p>\n</div>\n<div class=\"section level3\">\n<h3 id=\"expression-of-markers-on-umap\">Expression of markers on UMAP<a class=\"anchor\" aria-label=\"anchor\" href=\"#expression-of-markers-on-umap\"></a>\n</h3>\n<p>Known marker genes can also be plotted on the UMAP to identify the\ncell types for each cluster. We will use CD3D and CD3E for T-cells, LYZ,\nS100A8, and S100A9 for monocytes, CD79A, CD79B, and MS4A1 for B-cells,\nGNLY for NK-cells, and PPBP for megakaryocytes.</p>\n<div class=\"sourceCode\" id=\"cb9\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"http://bioconductor.org/packages/scater/\" class=\"external-link\">scater</a></span><span class=\"op\">)</span></span>\n<span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/scuttle/man/logNormCounts.html\" class=\"external-link\">logNormCounts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span></span>\n<span><span class=\"fu\"><a href=\"../reference/plotDimReduceFeature.html\">plotDimReduceFeature</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/matrix.html\" class=\"external-link\">as.matrix</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/assays.html\" class=\"external-link\">logcounts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span><span class=\"op\">)</span>,</span>\n<span>    dim1 <span class=\"op\">=</span> <span class=\"va\">umap</span><span class=\"op\">[</span>, <span class=\"fl\">1</span><span class=\"op\">]</span>,</span>\n<span>    dim2 <span class=\"op\">=</span> <span class=\"va\">umap</span><span class=\"op\">[</span>, <span class=\"fl\">2</span><span class=\"op\">]</span>,</span>\n<span>    features <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"CD3D\"</span>, <span class=\"st\">\"CD3E\"</span>, <span class=\"st\">\"GNLY\"</span>,</span>\n<span>        <span class=\"st\">\"LYZ\"</span>, <span class=\"st\">\"S100A8\"</span>, <span class=\"st\">\"S100A9\"</span>,</span>\n<span>        <span class=\"st\">\"CD79A\"</span>, <span class=\"st\">\"CD79B\"</span>, <span class=\"st\">\"MS4A1\"</span><span class=\"op\">)</span>,</span>\n<span>    exactMatch <span class=\"op\">=</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span></span></code></pre></div>\n<pre><code><span><span class=\"co\">## Warning in asMethod(object): sparse-&gt;dense coercion: allocating vector of size</span></span>\n<span><span class=\"co\">## 1.1 GiB</span></span></code></pre>\n<p><img src=\"decontX_pbmc4k_files/figure-html/plot_feature-1.png\" width=\"700\"></p>\n</div>\n<div class=\"section level3\">\n<h3 id=\"barplot-of-markers-detected-in-cell-clusters\">Barplot of markers detected in cell clusters<a class=\"anchor\" aria-label=\"anchor\" href=\"#barplot-of-markers-detected-in-cell-clusters\"></a>\n</h3>\n<p>The percetage of cells within a cluster that have detectable\nexpression of marker genes can be displayed in a barplot. Markers for\ncell types need to be supplied in a named list. First, the detection of\nmarker genes in the original <code>counts</code> assay is shown:</p>\n<div class=\"sourceCode\" id=\"cb11\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">markers</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>Tcell_Markers <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"CD3E\"</span>, <span class=\"st\">\"CD3D\"</span><span class=\"op\">)</span>,</span>\n<span>    Bcell_Markers <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"CD79A\"</span>, <span class=\"st\">\"CD79B\"</span>, <span class=\"st\">\"MS4A1\"</span><span class=\"op\">)</span>,</span>\n<span>    Monocyte_Markers <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"S100A8\"</span>, <span class=\"st\">\"S100A9\"</span>, <span class=\"st\">\"LYZ\"</span><span class=\"op\">)</span>,</span>\n<span>    NKcell_Markers <span class=\"op\">=</span> <span class=\"st\">\"GNLY\"</span><span class=\"op\">)</span></span>\n<span><span class=\"va\">cellTypeMappings</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>Tcells <span class=\"op\">=</span> <span class=\"fl\">2</span>, Bcells <span class=\"op\">=</span> <span class=\"fl\">5</span>, Monocytes <span class=\"op\">=</span> <span class=\"fl\">1</span>, NKcells <span class=\"op\">=</span> <span class=\"fl\">6</span><span class=\"op\">)</span></span>\n<span><span class=\"fu\"><a href=\"../reference/plotDecontXMarkerPercentage.html\">plotDecontXMarkerPercentage</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>,</span>\n<span>    markers <span class=\"op\">=</span> <span class=\"va\">markers</span>,</span>\n<span>    groupClusters <span class=\"op\">=</span> <span class=\"va\">cellTypeMappings</span>,</span>\n<span>    assayName <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"decontX_pbmc4k_files/figure-html/barplotCounts-1.png\" width=\"700\"></p>\n<p>We can then look to see how much decontX removed aberrant expression\nof marker genes in each cell type by changing the <code>assayName</code>\nto <code>decontXcounts</code>:</p>\n<div class=\"sourceCode\" id=\"cb12\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/plotDecontXMarkerPercentage.html\">plotDecontXMarkerPercentage</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>,</span>\n<span>    markers <span class=\"op\">=</span> <span class=\"va\">markers</span>,</span>\n<span>    groupClusters <span class=\"op\">=</span> <span class=\"va\">cellTypeMappings</span>,</span>\n<span>    assayName <span class=\"op\">=</span> <span class=\"st\">\"decontXcounts\"</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"decontX_pbmc4k_files/figure-html/barplotDecontCounts-1.png\" width=\"700\"></p>\n<p>Percentages of marker genes detected in other cell types were reduced\nor completely removed. For example, the percentage of cells that\nexpressed Monocyte marker genes was greatly reduced in T-cells, B-cells,\nand NK-cells. The original counts and decontamined counts can be plotted\nside-by-side by listing multiple assays in the <code>assayName</code>\nparameter. This option is only available if the data is stored in\n<code>SingleCellExperiment</code> object.</p>\n<div class=\"sourceCode\" id=\"cb13\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/plotDecontXMarkerPercentage.html\">plotDecontXMarkerPercentage</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>,</span>\n<span>    markers <span class=\"op\">=</span> <span class=\"va\">markers</span>,</span>\n<span>    groupClusters <span class=\"op\">=</span> <span class=\"va\">cellTypeMappings</span>,</span>\n<span>    assayName <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"counts\"</span>, <span class=\"st\">\"decontXcounts\"</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"decontX_pbmc4k_files/figure-html/barplotBoth-1.png\" width=\"700\"></p>\n<p>Some helpful hints when using\n<code>plotDecontXMarkerPercentage</code>:</p>\n<ol style=\"list-style-type: decimal\">\n<li>Cell clusters can be renamed and re-grouped using the\n<code>groupCluster</code> parameter, which also needs to be a named\nlist. If <code>groupCluster</code> is used, cell clusters not included\nin the list will be excluded in the barplot. For example, if we wanted\nto group T-cells and NK-cells together, we could set\n<code>cellTypeMappings &lt;- list(NK_Tcells = c(2,6), Bcells = 5, Monocytes = 1)</code>\n</li>\n<li>The level a gene that needs to be expressed to be considered\ndetected in a cell can be adjusted using the <code>threshold</code>\nparameter.</li>\n<li>If you are not using a <code>SingleCellExperiment</code>, then you\nwill need to supply the original counts matrix or the decontaminated\ncounts matrix as the first argument to generate the barplots.</li>\n</ol>\n</div>\n<div class=\"section level3\">\n<h3 id=\"violin-plot-to-compare-the-distributions-of-original-and-decontaminated-counts\">Violin plot to compare the distributions of original and\ndecontaminated counts<a class=\"anchor\" aria-label=\"anchor\" href=\"#violin-plot-to-compare-the-distributions-of-original-and-decontaminated-counts\"></a>\n</h3>\n<p>Another useful way to assess the amount of decontamination is to view\nthe expression of marker genes before and after <code>decontX</code>\nacross cell types. Here we view the monocyte markers in each cell type.\nThe violin plot shows that the markers have been removed from T-cells,\nB-cells, and NK-cells, but are largely unaffected in monocytes.</p>\n<div class=\"sourceCode\" id=\"cb14\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"../reference/plotDecontXMarkerExpression.html\">plotDecontXMarkerExpression</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>,</span>\n<span>    markers <span class=\"op\">=</span> <span class=\"va\">markers</span><span class=\"op\">[[</span><span class=\"st\">\"Monocyte_Markers\"</span><span class=\"op\">]</span><span class=\"op\">]</span>,</span>\n<span>    groupClusters <span class=\"op\">=</span> <span class=\"va\">cellTypeMappings</span>,</span>\n<span>    ncol <span class=\"op\">=</span> <span class=\"fl\">3</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"decontX_pbmc4k_files/figure-html/plotDecontXMarkerExpression-1.png\" width=\"700\"></p>\n<p>Some helpful hints when using\n<code>plotDecontXMarkerExpression</code>:</p>\n<ol style=\"list-style-type: decimal\">\n<li>\n<code>groupClusters</code> works the same way as in\n<code>plotDecontXMarkerPercentage</code>.</li>\n<li>This function will plot each pair of markers and clusters (or cell\ntype specified by <code>groupClusters</code>). Therefore, you may want\nto keep the number of markers small in each plot and call the function\nmultiple times for different sets of marker genes.</li>\n<li>You can also plot the individual points by setting\n<code>plotDots = TRUE</code> and/or log transform the points on the fly\nby setting <code>log1p = TRUE</code>.</li>\n<li>This function can plot any assay in a\n<code>SingleCellExperiment</code>. Therefore you could also examine\nnormalized expression of the original and decontaminated counts. For\nexample:</li>\n</ol>\n<div class=\"sourceCode\" id=\"cb15\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"http://bioconductor.org/packages/scater/\" class=\"external-link\">scater</a></span><span class=\"op\">)</span></span>\n<span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/scuttle/man/logNormCounts.html\" class=\"external-link\">logNormCounts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>,</span>\n<span>    exprs_values <span class=\"op\">=</span> <span class=\"st\">\"decontXcounts\"</span>,</span>\n<span>    name <span class=\"op\">=</span> <span class=\"st\">\"decontXlogcounts\"</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"fu\"><a href=\"../reference/plotDecontXMarkerExpression.html\">plotDecontXMarkerExpression</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>,</span>\n<span>    markers <span class=\"op\">=</span> <span class=\"va\">markers</span><span class=\"op\">[[</span><span class=\"st\">\"Monocyte_Markers\"</span><span class=\"op\">]</span><span class=\"op\">]</span>,</span>\n<span>    groupClusters <span class=\"op\">=</span> <span class=\"va\">cellTypeMappings</span>,</span>\n<span>    ncol <span class=\"op\">=</span> <span class=\"fl\">3</span>,</span>\n<span>    assayName <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"logcounts\"</span>, <span class=\"st\">\"decontXlogcounts\"</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"decontX_pbmc4k_files/figure-html/plot_norm_counts-1.png\" width=\"700\"></p>\n</div>\n</div>\n<div class=\"section level2\">\n<h2 id=\"other-important-notes\">Other important notes<a class=\"anchor\" aria-label=\"anchor\" href=\"#other-important-notes\"></a>\n</h2>\n<div class=\"section level3\">\n<h3 id=\"choosing-appropriate-cell-clusters\">Choosing appropriate cell clusters<a class=\"anchor\" aria-label=\"anchor\" href=\"#choosing-appropriate-cell-clusters\"></a>\n</h3>\n<p>The ability of DecontX to accurately identify contamination is\ndependent on the cell cluster labels. DecontX assumes that contamination\nfor a cell cluster comes from combination of counts from all other\nclusters. The default clustering approach used by DecontX tends to\nselect fewer clusters that represent broader cell types. For example,\nall T-cells tend to be clustered together rather than splitting naive\nand cytotoxic T-cells into separate clusters. Custom cell type labels\ncan be suppled via the <code>z</code> parameter if some cells are not\nbeing clustered appropriately by the default method.</p>\n</div>\n<div class=\"section level3\">\n<h3 id=\"adjusting-the-priors-to-influence-contamination-estimates\">Adjusting the priors to influence contamination estimates<a class=\"anchor\" aria-label=\"anchor\" href=\"#adjusting-the-priors-to-influence-contamination-estimates\"></a>\n</h3>\n<p>There are ways to force <code>decontX</code> to estimate more or less\ncontamination across a dataset by manipulating the priors. The\n<code>delta</code> parameter is a numeric vector of length two. It is\nthe concentration parameter for the Dirichlet distribution which serves\nas the prior for the proportions of native and contamination counts in\neach cell. The first element is the prior for the proportion of native\ncounts while the second element is the prior for the proportion of\ncontamination counts. These essentially act as pseudocounts for the\nnative and contamination in each cell. If\n<code>estimateDelta = TRUE</code>, <code>delta</code> is only used to\nproduce a random sample of proportions for an initial value of\ncontamination in each cell. Then <code>delta</code> is updated in each\niteration. If <code>estimateDelta = FALSE</code>, then\n<code>delta</code> is fixed with these values for the entire inference\nprocedure. Fixing <code>delta</code> and setting a high number in the\nsecond element will force <code>decontX</code> to be more aggressive and\nestimate higher levels of contamination in each cell at the expense of\npotentially removing native expression. For example, in the previous\nPBMC example, we can see what the estimated <code>delta</code> was by\nlooking in the estimates:</p>\n<div class=\"sourceCode\" id=\"cb16\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\">metadata</span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span><span class=\"op\">$</span><span class=\"va\">decontX</span><span class=\"op\">$</span><span class=\"va\">estimates</span><span class=\"op\">$</span><span class=\"va\">all_cells</span><span class=\"op\">$</span><span class=\"va\">delta</span></span></code></pre></div>\n<pre><code><span><span class=\"co\">## [1] 9.280108 1.038000</span></span></code></pre>\n<p>Setting a higher value in the second element of delta and\n<code>estimateDelta = FALSE</code> will force <code>decontX</code> to\nestimate higher levels of contamination per cell:</p>\n<div class=\"sourceCode\" id=\"cb18\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">sce.delta</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/decontX.html\">decontX</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, delta <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"fl\">9</span>, <span class=\"fl\">20</span><span class=\"op\">)</span>, estimateDelta <span class=\"op\">=</span> <span class=\"cn\">FALSE</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"fu\"><a href=\"https://rdrr.io/r/graphics/plot.default.html\" class=\"external-link\">plot</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">$</span><span class=\"va\">decontX_contamination</span>, <span class=\"va\">sce.delta</span><span class=\"op\">$</span><span class=\"va\">decontX_contamination</span>,</span>\n<span>     xlab <span class=\"op\">=</span> <span class=\"st\">\"DecontX estimated priors\"</span>,</span>\n<span>     ylab <span class=\"op\">=</span> <span class=\"st\">\"Setting priors to estimate higher contamination\"</span><span class=\"op\">)</span></span>\n<span><span class=\"fu\"><a href=\"https://rdrr.io/r/graphics/abline.html\" class=\"external-link\">abline</a></span><span class=\"op\">(</span><span class=\"fl\">0</span>, <span class=\"fl\">1</span>, col <span class=\"op\">=</span> <span class=\"st\">\"red\"</span>, lwd <span class=\"op\">=</span> <span class=\"fl\">2</span><span class=\"op\">)</span></span></code></pre></div>\n<p><img src=\"decontX_pbmc4k_files/figure-html/newDecontX-1.png\" width=\"700\"></p>\n</div>\n<div class=\"section level3\">\n<h3 id=\"seurat\">Working with Seurat<a class=\"anchor\" aria-label=\"anchor\" href=\"#seurat\"></a>\n</h3>\n<p>If you are using the <a href=\"https://cran.r-project.org/web/packages/Seurat/index.html\" class=\"external-link\">Seurat</a>\npackage for downstream analysis, the following code can be used to read\nin a matrix and convert between Seurat and SCE objects:</p>\n<div class=\"sourceCode\" id=\"cb19\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"co\"># Read counts from CellRanger output</span></span>\n<span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://satijalab.org/seurat\" class=\"external-link\">Seurat</a></span><span class=\"op\">)</span></span>\n<span><span class=\"va\">counts</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://satijalab.org/seurat/reference/Read10X.html\" class=\"external-link\">Read10X</a></span><span class=\"op\">(</span><span class=\"st\">\"sample/outs/filtered_feature_bc_matrix/\"</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># Create a SingleCellExperiment object and run decontX</span></span>\n<span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>counts <span class=\"op\">=</span> <span class=\"va\">counts</span><span class=\"op\">)</span><span class=\"op\">)</span></span>\n<span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/decontX.html\">decontX</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># Create a Seurat object from a SCE with decontX results</span></span>\n<span><span class=\"va\">seuratObject</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/SeuratObject/man/CreateSeuratObject.html\" class=\"external-link\">CreateSeuratObject</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/Round.html\" class=\"external-link\">round</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"../reference/decontXcounts.html\">decontXcounts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n<p>Optionally, the “raw” matrix can be also be imported and used as the\nbackground:</p>\n<div class=\"sourceCode\" id=\"cb20\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">counts.raw</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://satijalab.org/seurat/reference/Read10X.html\" class=\"external-link\">Read10X</a></span><span class=\"op\">(</span><span class=\"st\">\"sample/outs/raw_feature_bc_matrix/\"</span><span class=\"op\">)</span></span>\n<span><span class=\"va\">sce.raw</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>counts <span class=\"op\">=</span> <span class=\"va\">counts.raw</span><span class=\"op\">)</span><span class=\"op\">)</span></span>\n<span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/decontX.html\">decontX</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, background <span class=\"op\">=</span> <span class=\"va\">sce.raw</span><span class=\"op\">)</span></span></code></pre></div>\n<p>Note that the decontaminated matrix of decontX consists of floating\npoint numbers and must be rounded to integers before adding it to a\nSeurat object. If you already have a Seurat object containing the counts\nmatrix and would like to run decontX, you can retrieve the count matrix,\ncreate a SCE object, and run decontX, and then add it back to the Seurat\nobject:</p>\n<div class=\"sourceCode\" id=\"cb21\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"va\">counts</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/SeuratObject/man/AssayData.html\" class=\"external-link\">GetAssayData</a></span><span class=\"op\">(</span>object <span class=\"op\">=</span> <span class=\"va\">seuratObject</span>, slot <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span><span class=\"op\">)</span></span>\n<span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>counts <span class=\"op\">=</span> <span class=\"va\">counts</span><span class=\"op\">)</span><span class=\"op\">)</span></span>\n<span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"../reference/decontX.html\">decontX</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span></span>\n<span><span class=\"va\">seuratObj</span><span class=\"op\">[[</span><span class=\"st\">\"decontXcounts\"</span><span class=\"op\">]</span><span class=\"op\">]</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/SeuratObject/man/CreateAssayObject.html\" class=\"external-link\">CreateAssayObject</a></span><span class=\"op\">(</span>counts <span class=\"op\">=</span> <span class=\"fu\"><a href=\"../reference/decontXcounts.html\">decontXcounts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n</div>\n</div>\n<div class=\"section level2\">\n<h2 id=\"session-information\">Session Information<a class=\"anchor\" aria-label=\"anchor\" href=\"#session-information\"></a>\n</h2>\n<div class=\"sourceCode\" id=\"cb22\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/sessionInfo.html\" class=\"external-link\">sessionInfo</a></span><span class=\"op\">(</span><span class=\"op\">)</span></span></code></pre></div>\n<pre><code><span><span class=\"co\">## R version 4.3.3 (2024-02-29)</span></span>\n<span><span class=\"co\">## Platform: x86_64-apple-darwin20 (64-bit)</span></span>\n<span><span class=\"co\">## Running under: macOS Sonoma 14.4.1</span></span>\n<span><span class=\"co\">## </span></span>\n<span><span class=\"co\">## Matrix products: default</span></span>\n<span><span class=\"co\">## BLAS:   /Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/lib/libRblas.0.dylib </span></span>\n<span><span class=\"co\">## LAPACK: /Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/lib/libRlapack.dylib;  LAPACK version 3.11.0</span></span>\n<span><span class=\"co\">## </span></span>\n<span><span class=\"co\">## locale:</span></span>\n<span><span class=\"co\">## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8</span></span>\n<span><span class=\"co\">## </span></span>\n<span><span class=\"co\">## time zone: America/New_York</span></span>\n<span><span class=\"co\">## tzcode source: internal</span></span>\n<span><span class=\"co\">## </span></span>\n<span><span class=\"co\">## attached base packages:</span></span>\n<span><span class=\"co\">## [1] stats4    stats     graphics  grDevices utils     datasets  methods  </span></span>\n<span><span class=\"co\">## [8] base     </span></span>\n<span><span class=\"co\">## </span></span>\n<span><span class=\"co\">## other attached packages:</span></span>\n<span><span class=\"co\">##  [1] scater_1.30.1               ggplot2_3.5.0              </span></span>\n<span><span class=\"co\">##  [3] scuttle_1.12.0              TENxPBMCData_1.20.0        </span></span>\n<span><span class=\"co\">##  [5] HDF5Array_1.30.0            rhdf5_2.46.1               </span></span>\n<span><span class=\"co\">##  [7] DelayedArray_0.28.0         SparseArray_1.2.4          </span></span>\n<span><span class=\"co\">##  [9] S4Arrays_1.2.1              abind_1.4-5                </span></span>\n<span><span class=\"co\">## [11] celda_1.18.2                Matrix_1.6-5               </span></span>\n<span><span class=\"co\">## [13] SingleCellExperiment_1.24.0 SummarizedExperiment_1.32.0</span></span>\n<span><span class=\"co\">## [15] Biobase_2.62.0              GenomicRanges_1.54.1       </span></span>\n<span><span class=\"co\">## [17] GenomeInfoDb_1.38.8         IRanges_2.36.0             </span></span>\n<span><span class=\"co\">## [19] S4Vectors_0.40.2            BiocGenerics_0.48.1        </span></span>\n<span><span class=\"co\">## [21] MatrixGenerics_1.14.0       matrixStats_1.2.0          </span></span>\n<span><span class=\"co\">## [23] BiocStyle_2.30.0           </span></span>\n<span><span class=\"co\">## </span></span>\n<span><span class=\"co\">## loaded via a namespace (and not attached):</span></span>\n<span><span class=\"co\">##   [1] RColorBrewer_1.1-3            rstudioapi_0.15.0            </span></span>\n<span><span class=\"co\">##   [3] jsonlite_1.8.8                magrittr_2.0.3               </span></span>\n<span><span class=\"co\">##   [5] ggbeeswarm_0.7.2              farver_2.1.1                 </span></span>\n<span><span class=\"co\">##   [7] rmarkdown_2.25                fs_1.6.3                     </span></span>\n<span><span class=\"co\">##   [9] zlibbioc_1.48.2               ragg_1.3.0                   </span></span>\n<span><span class=\"co\">##  [11] vctrs_0.6.5                   memoise_2.0.1                </span></span>\n<span><span class=\"co\">##  [13] DelayedMatrixStats_1.24.0     RCurl_1.98-1.14              </span></span>\n<span><span class=\"co\">##  [15] htmltools_0.5.7               AnnotationHub_3.10.0         </span></span>\n<span><span class=\"co\">##  [17] curl_5.2.1                    BiocNeighbors_1.20.2         </span></span>\n<span><span class=\"co\">##  [19] Rhdf5lib_1.24.1               sass_0.4.8                   </span></span>\n<span><span class=\"co\">##  [21] bslib_0.6.1                   desc_1.4.3                   </span></span>\n<span><span class=\"co\">##  [23] plyr_1.8.9                    cachem_1.0.8                 </span></span>\n<span><span class=\"co\">##  [25] mime_0.12                     lifecycle_1.0.4              </span></span>\n<span><span class=\"co\">##  [27] iterators_1.0.14              pkgconfig_2.0.3              </span></span>\n<span><span class=\"co\">##  [29] rsvd_1.0.5                    R6_2.5.1                     </span></span>\n<span><span class=\"co\">##  [31] fastmap_1.1.1                 GenomeInfoDbData_1.2.11      </span></span>\n<span><span class=\"co\">##  [33] shiny_1.8.0                   digest_0.6.35                </span></span>\n<span><span class=\"co\">##  [35] colorspace_2.1-0              AnnotationDbi_1.64.1         </span></span>\n<span><span class=\"co\">##  [37] irlba_2.3.5.1                 ExperimentHub_2.10.0         </span></span>\n<span><span class=\"co\">##  [39] textshaping_0.3.7             RSQLite_2.3.5                </span></span>\n<span><span class=\"co\">##  [41] beachmat_2.18.1               labeling_0.4.3               </span></span>\n<span><span class=\"co\">##  [43] filelock_1.0.3                WriteXLS_6.5.0               </span></span>\n<span><span class=\"co\">##  [45] fansi_1.0.6                   httr_1.4.7                   </span></span>\n<span><span class=\"co\">##  [47] compiler_4.3.3                bit64_4.0.5                  </span></span>\n<span><span class=\"co\">##  [49] withr_3.0.0                   doParallel_1.0.17            </span></span>\n<span><span class=\"co\">##  [51] BiocParallel_1.36.0           viridis_0.6.5                </span></span>\n<span><span class=\"co\">##  [53] DBI_1.2.1                     highr_0.10                   </span></span>\n<span><span class=\"co\">##  [55] rappdirs_0.3.3                rjson_0.2.21                 </span></span>\n<span><span class=\"co\">##  [57] tools_4.3.3                   vipor_0.4.7                  </span></span>\n<span><span class=\"co\">##  [59] beeswarm_0.4.0                interactiveDisplayBase_1.40.0</span></span>\n<span><span class=\"co\">##  [61] httpuv_1.6.14                 MCMCprecision_0.4.0          </span></span>\n<span><span class=\"co\">##  [63] glue_1.7.0                    dbscan_1.1-12                </span></span>\n<span><span class=\"co\">##  [65] rhdf5filters_1.14.1           promises_1.2.1               </span></span>\n<span><span class=\"co\">##  [67] grid_4.3.3                    Rtsne_0.17                   </span></span>\n<span><span class=\"co\">##  [69] reshape2_1.4.4                generics_0.1.3               </span></span>\n<span><span class=\"co\">##  [71] gtable_0.3.4                  data.table_1.15.4            </span></span>\n<span><span class=\"co\">##  [73] ScaledMatrix_1.10.0           BiocSingular_1.18.0          </span></span>\n<span><span class=\"co\">##  [75] utf8_1.2.4                    XVector_0.42.0               </span></span>\n<span><span class=\"co\">##  [77] RcppAnnoy_0.0.22              ggrepel_0.9.5                </span></span>\n<span><span class=\"co\">##  [79] BiocVersion_3.18.1            foreach_1.5.2                </span></span>\n<span><span class=\"co\">##  [81] pillar_1.9.0                  stringr_1.5.1                </span></span>\n<span><span class=\"co\">##  [83] later_1.3.2                   dplyr_1.1.4                  </span></span>\n<span><span class=\"co\">##  [85] BiocFileCache_2.10.1          lattice_0.22-5               </span></span>\n<span><span class=\"co\">##  [87] bit_4.0.5                     tidyselect_1.2.0             </span></span>\n<span><span class=\"co\">##  [89] Biostrings_2.70.1             knitr_1.45                   </span></span>\n<span><span class=\"co\">##  [91] gridExtra_2.3                 bookdown_0.37                </span></span>\n<span><span class=\"co\">##  [93] xfun_0.41                     stringi_1.8.3                </span></span>\n<span><span class=\"co\">##  [95] yaml_2.3.8                    evaluate_0.23                </span></span>\n<span><span class=\"co\">##  [97] codetools_0.2-19              RcppEigen_0.3.4.0.0          </span></span>\n<span><span class=\"co\">##  [99] tibble_3.2.1                  BiocManager_1.30.22          </span></span>\n<span><span class=\"co\">## [101] cli_3.6.2                     uwot_0.1.16                  </span></span>\n<span><span class=\"co\">## [103] xtable_1.8-4                  systemfonts_1.0.6            </span></span>\n<span><span class=\"co\">## [105] munsell_0.5.1                 jquerylib_0.1.4              </span></span>\n<span><span class=\"co\">## [107] enrichR_3.2                   Rcpp_1.0.12                  </span></span>\n<span><span class=\"co\">## [109] dbplyr_2.4.0                  png_0.1-8                    </span></span>\n<span><span class=\"co\">## [111] parallel_4.3.3                ellipsis_0.3.2               </span></span>\n<span><span class=\"co\">## [113] pkgdown_2.0.7                 blob_1.2.4                   </span></span>\n<span><span class=\"co\">## [115] sparseMatrixStats_1.14.0      bitops_1.0-7                 </span></span>\n<span><span class=\"co\">## [117] viridisLite_0.4.2             scales_1.3.0                 </span></span>\n<span><span class=\"co\">## [119] purrr_1.0.2                   crayon_1.5.2                 </span></span>\n<span><span class=\"co\">## [121] combinat_0.0-8                rlang_1.1.3                  </span></span>\n<span><span class=\"co\">## [123] KEGGREST_1.42.0</span></span></code></pre>\n</div>\n  </div>\n\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n\n        <nav id=\"toc\" data-toggle=\"toc\"><h2 data-toc-skip>Contents</h2>\n    </nav>\n</div>\n\n</div>\n\n\n\n      <footer><div class=\"copyright\">\n  <p></p>\n<p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p>\n<p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer>\n</div>\n\n  \n\n\n  \n\n  </body>\n</html>\n"
  },
  {
    "path": "docs/articles/decontX_pbmc4k_files/accessible-code-block-0.0.1/empty-anchor.js",
    "content": "// Hide empty <a> tag within highlighted CodeBlock for screen reader accessibility (see https://github.com/jgm/pandoc/issues/6352#issuecomment-626106786) -->\n// v0.0.1\n// Written by JooYoung Seo (jooyoung@psu.edu) and Atsushi Yasumoto on June 1st, 2020.\n\ndocument.addEventListener('DOMContentLoaded', function() {\n  const codeList = document.getElementsByClassName(\"sourceCode\");\n  for (var i = 0; i < codeList.length; i++) {\n    var linkList = codeList[i].getElementsByTagName('a');\n    for (var j = 0; j < linkList.length; j++) {\n      if (linkList[j].innerHTML === \"\") {\n        linkList[j].setAttribute('aria-hidden', 'true');\n      }\n    }\n  }\n});\n"
  },
  {
    "path": "docs/articles/index.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Articles • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Articles\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-article-index\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n      <h1>Articles</h1>\n    </div>\n\n    <div class=\"section \">\n      <h3>All vignettes</h3>\n      <p class=\"section-desc\"></p>\n\n      <dl><dt><a href=\"celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a></dt>\n        <dd>\n        </dd><dt><a href=\"decontX_pbmc4k.html\">Decontamination of ambient RNA in single-cell genomic data with DecontX</a></dt>\n        <dd>\n        </dd><dt><a href=\"installation.html\">UNKNOWN TITLE</a></dt>\n        <dd>\n        </dd><dt><a href=\"celda.html\">Analysis of single-cell genomic data with celda</a></dt>\n        <dd>\n        </dd><dt><a href=\"decontX.html\">Decontamination of ambient RNA in single-cell genomic data with DecontX</a></dt>\n        <dd>\n      </dd></dl></div>\n  </div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/articles/installation.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<meta charset=\"utf-8\">\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title> • celda</title>\n<!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\">\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\">\n<script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\">\n<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\">\n<!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\">\n<script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"\">\n<meta property=\"og:description\" content=\"celda\">\n<!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]-->\n</head>\n<body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-article\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\">\n<li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\">\n<li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul>\n</li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul>\n<ul class=\"nav navbar-nav navbar-right\">\n<li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul>\n</div>\n<!--/.nav-collapse -->\n  </div>\n<!--/.container -->\n</div>\n<!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header toc-ignore\">\n      <h1 data-toc-skip></h1>\n            \n      \n      <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/vignettes/articles/installation.Rmd\" class=\"external-link\"><code>vignettes/articles/installation.Rmd</code></a></small>\n      <div class=\"hidden name\"><code>installation.Rmd</code></div>\n\n    </div>\n\n    \n    \n<div class=\"section level2\">\n<h2 id=\"introduction\">Introduction<a class=\"anchor\" aria-label=\"anchor\" href=\"#introduction\"></a>\n</h2>\n<p>“celda” stands for “<strong>CE</strong>llular <strong>L</strong>atent\n<strong>D</strong>irichlet <strong>A</strong>llocation”. It is a suite\nof Bayesian hierarchical models and supporting functions to perform gene\nand cell clustering for count data generated by single cell RNA-seq\nplatforms. This algorithm is an extension of the Latent Dirichlet\nAllocation (LDA) topic modeling framework that has been popular in text\nmining applications. This package also includes a method called\n<strong>decontX</strong> which can be used to estimate and remove\ncontamination in single cell genomic data.</p>\n</div>\n<div class=\"section level2\">\n<h2 id=\"installation\">Installation<a class=\"anchor\" aria-label=\"anchor\" href=\"#installation\"></a>\n</h2>\n<p>To install the latest stable release of <strong>celda</strong> from\n<a href=\"http://bioconductor.org/packages/celda/\" class=\"external-link\">Bioconductor</a>\n(requires R version &gt;= 3.6):</p>\n<div class=\"sourceCode\" id=\"cb1\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"kw\">if</span> <span class=\"op\">(</span><span class=\"op\">!</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/ns-load.html\" class=\"external-link\">requireNamespace</a></span><span class=\"op\">(</span><span class=\"st\">\"BiocManager\"</span>, quietly <span class=\"op\">=</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span><span class=\"op\">)</span></span>\n<span>    <span class=\"fu\"><a href=\"https://rdrr.io/r/utils/install.packages.html\" class=\"external-link\">install.packages</a></span><span class=\"op\">(</span><span class=\"st\">\"BiocManager\"</span><span class=\"op\">)</span></span>\n<span><span class=\"fu\">BiocManager</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"https://bioconductor.github.io/BiocManager/reference/install.html\" class=\"external-link\">install</a></span><span class=\"op\">(</span><span class=\"st\">\"celda\"</span><span class=\"op\">)</span></span></code></pre></div>\n<p>The latest stable version of <strong>celda</strong> can be installed\nfrom GitHub using <code>devtools</code>:</p>\n<div class=\"sourceCode\" id=\"cb2\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://devtools.r-lib.org/\" class=\"external-link\">devtools</a></span><span class=\"op\">)</span></span>\n<span><span class=\"fu\"><a href=\"https://remotes.r-lib.org/reference/install_github.html\" class=\"external-link\">install_github</a></span><span class=\"op\">(</span><span class=\"st\">\"campbio/celda\"</span><span class=\"op\">)</span></span></code></pre></div>\n<p>The development version of <strong>celda</strong> can also be\ninstalled from GitHub using <code>devtools</code>:</p>\n<div class=\"sourceCode\" id=\"cb3\"><pre class=\"downlit sourceCode r\">\n<code class=\"sourceCode R\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://devtools.r-lib.org/\" class=\"external-link\">devtools</a></span><span class=\"op\">)</span></span>\n<span><span class=\"fu\"><a href=\"https://remotes.r-lib.org/reference/install_github.html\" class=\"external-link\">install_github</a></span><span class=\"op\">(</span><span class=\"st\">\"campbio/celda@devel\"</span><span class=\"op\">)</span></span></code></pre></div>\n<p><strong>NOTE</strong> For MAC OSX users,\n<code><a href=\"https://remotes.r-lib.org/reference/install_github.html\" class=\"external-link\">devtools::install_github()</a></code> requires installation of\n<strong>libgit2.</strong> This can be installed via homebrew:</p>\n<pre><code>brew install libgit2</code></pre>\n</div>\n<div class=\"section level2\">\n<h2 id=\"troubleshooting\">Troubleshooting<a class=\"anchor\" aria-label=\"anchor\" href=\"#troubleshooting\"></a>\n</h2>\n<ul>\n<li>If you receive installation errors when Rcpp is being installed and\ncompiled, try following the steps outlined <a href=\"https://thecoatlessprofessor.com/programming/cpp/r-compiler-tools-for-rcpp-on-macos/\" class=\"external-link\">here</a>\nto solve the issue</li>\n<li>If you are running R 4.0.0 or later version on MacOS Catalina and\nyou see error <code>'wchar.h' file not found</code>, you can try the\nmethod in <a href=\"https://discourse.mc-stan.org/t/dealing-with-catalina-iii/12731/5\" class=\"external-link\">this</a>\nlink:</li>\n<li>If you are trying to install <strong>celda</strong> using Rstudio\nand get this error:\n<code>could not find tools necessary to compile a package</code>, you\ncan try typing this before running the install command:</li>\n</ul>\n<pre><code><span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/options.html\" class=\"external-link\">options</a></span><span class=\"op\">(</span>buildtools.check <span class=\"op\">=</span> <span class=\"kw\">function</span><span class=\"op\">(</span><span class=\"va\">action</span><span class=\"op\">)</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span></span></code></pre>\n<p>Also, if you receive installation errors when Rcpp is being installed\nand compiled, try following the steps outlined here to solve the\nissue:</p>\n<p><a href=\"https://thecoatlessprofessor.com/programming/cpp/r-compiler-tools-for-rcpp-on-macos/\" class=\"external-link uri\">https://thecoatlessprofessor.com/programming/cpp/r-compiler-tools-for-rcpp-on-macos/</a></p>\n<p>If you are running R 4.0.0 or later version on MacOS Catalina and you\nsee error <code>'wchar.h' file not found</code>, you can try the method\nin this link:</p>\n<p><a href=\"https://discourse.mc-stan.org/t/dealing-with-catalina-iii/12731/5\" class=\"external-link uri\">https://discourse.mc-stan.org/t/dealing-with-catalina-iii/12731/5</a></p>\n<p>If you are trying to install on MacOS in an Apple Silicon computater\nand you see the following error:</p>\n<pre><code>ld: warning: directory not found for option '-L/opt/gfortran/lib/gcc/x86_64-apple-darwin20.0/12.2.0'\nld: warning: directory not found for option '-L/opt/gfortran/lib'\nld: library not found for -lgfortran\nclang: error: linker command failed with exit code 1 (use -v to see invocation)\nmake: *** [celda.so] Error 1\nERROR: compilation failed for package ‘celda’</code></pre>\n<p>You can solve this by downloading and installing the gfortran pkg\nlocated <a href=\"https://mac.r-project.org/tools/gfortran-12.2-universal.pkg\" class=\"external-link\">here</a>\nand then running the following command:</p>\n<p>You can solve this by downloading and installing the gfortran pkg\nlocated <a href=\"https://mac.r-project.org/tools/gfortran-12.2-universal.pkg\" class=\"external-link\">here</a>\nand then running the following command:</p>\n<pre><code><span><span class=\"va\">sudo</span> <span class=\"op\">/</span><span class=\"va\">opt</span><span class=\"op\">/</span><span class=\"va\">gfortran</span><span class=\"op\">/</span><span class=\"va\">bin</span><span class=\"op\">/</span><span class=\"va\">gfortran</span><span class=\"op\">-</span><span class=\"va\">update</span><span class=\"op\">-</span><span class=\"va\">sdk</span></span></code></pre>\n</div>\n<div class=\"section level2\">\n<h2 id=\"vignettes-and-examples\">Vignettes and examples<a class=\"anchor\" aria-label=\"anchor\" href=\"#vignettes-and-examples\"></a>\n</h2>\n<p>To build the vignettes for Celda and DecontX during installation from\nGitHub, use the following command:</p>\n<pre><code><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://devtools.r-lib.org/\" class=\"external-link\">devtools</a></span><span class=\"op\">)</span></span>\n<span><span class=\"fu\"><a href=\"https://remotes.r-lib.org/reference/install_github.html\" class=\"external-link\">install_github</a></span><span class=\"op\">(</span><span class=\"st\">\"campbio/celda\"</span>, build_vignettes <span class=\"op\">=</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span></span></code></pre>\n<p>Note that installation may take an extra 5-10 minutes for building of\nthe vignettes. The Celda and DecontX vignettes can then be accessed via\nthe following commands:</p>\n<pre><code><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/vignette.html\" class=\"external-link\">vignette</a></span><span class=\"op\">(</span><span class=\"st\">\"celda\"</span><span class=\"op\">)</span></span>\n<span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/vignette.html\" class=\"external-link\">vignette</a></span><span class=\"op\">(</span><span class=\"st\">\"decontX\"</span><span class=\"op\">)</span></span></code></pre>\n</div>\n  </div>\n\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n\n        <nav id=\"toc\" data-toggle=\"toc\"><h2 data-toc-skip>Contents</h2>\n    </nav>\n</div>\n\n</div>\n\n\n\n      <footer><div class=\"copyright\">\n  <p></p>\n<p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p>\n<p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer>\n</div>\n\n  \n\n\n  \n\n  </body>\n</html>\n"
  },
  {
    "path": "docs/articles/installation_files/accessible-code-block-0.0.1/empty-anchor.js",
    "content": "// Hide empty <a> tag within highlighted CodeBlock for screen reader accessibility (see https://github.com/jgm/pandoc/issues/6352#issuecomment-626106786) -->\n// v0.0.1\n// Written by JooYoung Seo (jooyoung@psu.edu) and Atsushi Yasumoto on June 1st, 2020.\n\ndocument.addEventListener('DOMContentLoaded', function() {\n  const codeList = document.getElementsByClassName(\"sourceCode\");\n  for (var i = 0; i < codeList.length; i++) {\n    var linkList = codeList[i].getElementsByTagName('a');\n    for (var j = 0; j < linkList.length; j++) {\n      if (linkList[j].innerHTML === \"\") {\n        linkList[j].setAttribute('aria-hidden', 'true');\n      }\n    }\n  }\n});\n"
  },
  {
    "path": "docs/authors.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Authors and Citation • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"bootstrap-toc.css\"><script src=\"bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"pkgdown.css\" rel=\"stylesheet\"><script src=\"pkgdown.js\"></script><meta property=\"og:title\" content=\"Authors and Citation\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-citation-authors\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"contents col-md-9\">\n    <div class=\"section level2 authors-section\">\n      <div class=\"page-header\">\n        <h1>Authors</h1>\n      </div>\n\n      \n      <ul class=\"list-unstyled\"><li>\n          <p><strong>Joshua Campbell</strong>. Author, maintainer. \n          </p>\n        </li>\n        <li>\n          <p><strong>Shiyi Yang</strong>. Author. \n          </p>\n        </li>\n        <li>\n          <p><strong>Zhe Wang</strong>. Author. \n          </p>\n        </li>\n        <li>\n          <p><strong>Sean Corbett</strong>. Author. \n          </p>\n        </li>\n        <li>\n          <p><strong>Yusuke Koga</strong>. Author. \n          </p>\n        </li>\n      </ul></div>\n    <div class=\"section level2 citation-section\">\n    <div>\n      <h1 id=\"citation\">Citation</h1>\n      <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/DESCRIPTION\" class=\"external-link\"><code>DESCRIPTION</code></a></small>\n    </div>\n    </div>\n\n\n    <p>Campbell J, Yang S, Wang Z, Corbett S, Koga Y (2024).\n<em>celda: CEllular Latent Dirichlet Allocation</em>.\nR package version 1.18.2. \n</p>\n    <pre>@Manual{,\n  title = {celda: CEllular Latent Dirichlet Allocation},\n  author = {Joshua Campbell and Shiyi Yang and Zhe Wang and Sean Corbett and Yusuke Koga},\n  year = {2024},\n  note = {R package version 1.18.2},\n}</pre>\n\n  </div>\n\n</div>\n\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/bootstrap-toc.css",
    "content": "/*!\n * Bootstrap Table of Contents v0.4.1 (http://afeld.github.io/bootstrap-toc/)\n * Copyright 2015 Aidan Feldman\n * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */\n\n/* modified from https://github.com/twbs/bootstrap/blob/94b4076dd2efba9af71f0b18d4ee4b163aa9e0dd/docs/assets/css/src/docs.css#L548-L601 */\n\n/* All levels of nav */\nnav[data-toggle='toc'] .nav > li > a {\n  display: block;\n  padding: 4px 20px;\n  font-size: 13px;\n  font-weight: 500;\n  color: #767676;\n}\nnav[data-toggle='toc'] .nav > li > a:hover,\nnav[data-toggle='toc'] .nav > li > a:focus {\n  padding-left: 19px;\n  color: #563d7c;\n  text-decoration: none;\n  background-color: transparent;\n  border-left: 1px solid #563d7c;\n}\nnav[data-toggle='toc'] .nav > .active > a,\nnav[data-toggle='toc'] .nav > .active:hover > a,\nnav[data-toggle='toc'] .nav > .active:focus > a {\n  padding-left: 18px;\n  font-weight: bold;\n  color: #563d7c;\n  background-color: transparent;\n  border-left: 2px solid #563d7c;\n}\n\n/* Nav: second level (shown on .active) */\nnav[data-toggle='toc'] .nav .nav {\n  display: none; /* Hide by default, but at >768px, show it */\n  padding-bottom: 10px;\n}\nnav[data-toggle='toc'] .nav .nav > li > a {\n  padding-top: 1px;\n  padding-bottom: 1px;\n  padding-left: 30px;\n  font-size: 12px;\n  font-weight: normal;\n}\nnav[data-toggle='toc'] .nav .nav > li > a:hover,\nnav[data-toggle='toc'] .nav .nav > li > a:focus {\n  padding-left: 29px;\n}\nnav[data-toggle='toc'] .nav .nav > .active > a,\nnav[data-toggle='toc'] .nav .nav > .active:hover > a,\nnav[data-toggle='toc'] .nav .nav > .active:focus > a {\n  padding-left: 28px;\n  font-weight: 500;\n}\n\n/* from https://github.com/twbs/bootstrap/blob/e38f066d8c203c3e032da0ff23cd2d6098ee2dd6/docs/assets/css/src/docs.css#L631-L634 */\nnav[data-toggle='toc'] .nav > .active > ul {\n  display: block;\n}\n"
  },
  {
    "path": "docs/bootstrap-toc.js",
    "content": "/*!\n * Bootstrap Table of Contents v0.4.1 (http://afeld.github.io/bootstrap-toc/)\n * Copyright 2015 Aidan Feldman\n * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */\n(function() {\n  'use strict';\n\n  window.Toc = {\n    helpers: {\n      // return all matching elements in the set, or their descendants\n      findOrFilter: function($el, selector) {\n        // http://danielnouri.org/notes/2011/03/14/a-jquery-find-that-also-finds-the-root-element/\n        // http://stackoverflow.com/a/12731439/358804\n        var $descendants = $el.find(selector);\n        return $el.filter(selector).add($descendants).filter(':not([data-toc-skip])');\n      },\n\n      generateUniqueIdBase: function(el) {\n        var text = $(el).text();\n        var anchor = text.trim().toLowerCase().replace(/[^A-Za-z0-9]+/g, '-');\n        return anchor || el.tagName.toLowerCase();\n      },\n\n      generateUniqueId: function(el) {\n        var anchorBase = this.generateUniqueIdBase(el);\n        for (var i = 0; ; i++) {\n          var anchor = anchorBase;\n          if (i > 0) {\n            // add suffix\n            anchor += '-' + i;\n          }\n          // check if ID already exists\n          if (!document.getElementById(anchor)) {\n            return anchor;\n          }\n        }\n      },\n\n      generateAnchor: function(el) {\n        if (el.id) {\n          return el.id;\n        } else {\n          var anchor = this.generateUniqueId(el);\n          el.id = anchor;\n          return anchor;\n        }\n      },\n\n      createNavList: function() {\n        return $('<ul class=\"nav\"></ul>');\n      },\n\n      createChildNavList: function($parent) {\n        var $childList = this.createNavList();\n        $parent.append($childList);\n        return $childList;\n      },\n\n      generateNavEl: function(anchor, text) {\n        var $a = $('<a></a>');\n        $a.attr('href', '#' + anchor);\n        $a.text(text);\n        var $li = $('<li></li>');\n        $li.append($a);\n        return $li;\n      },\n\n      generateNavItem: function(headingEl) {\n        var anchor = this.generateAnchor(headingEl);\n        var $heading = $(headingEl);\n        var text = $heading.data('toc-text') || $heading.text();\n        return this.generateNavEl(anchor, text);\n      },\n\n      // Find the first heading level (`<h1>`, then `<h2>`, etc.) that has more than one element. Defaults to 1 (for `<h1>`).\n      getTopLevel: function($scope) {\n        for (var i = 1; i <= 6; i++) {\n          var $headings = this.findOrFilter($scope, 'h' + i);\n          if ($headings.length > 1) {\n            return i;\n          }\n        }\n\n        return 1;\n      },\n\n      // returns the elements for the top level, and the next below it\n      getHeadings: function($scope, topLevel) {\n        var topSelector = 'h' + topLevel;\n\n        var secondaryLevel = topLevel + 1;\n        var secondarySelector = 'h' + secondaryLevel;\n\n        return this.findOrFilter($scope, topSelector + ',' + secondarySelector);\n      },\n\n      getNavLevel: function(el) {\n        return parseInt(el.tagName.charAt(1), 10);\n      },\n\n      populateNav: function($topContext, topLevel, $headings) {\n        var $context = $topContext;\n        var $prevNav;\n\n        var helpers = this;\n        $headings.each(function(i, el) {\n          var $newNav = helpers.generateNavItem(el);\n          var navLevel = helpers.getNavLevel(el);\n\n          // determine the proper $context\n          if (navLevel === topLevel) {\n            // use top level\n            $context = $topContext;\n          } else if ($prevNav && $context === $topContext) {\n            // create a new level of the tree and switch to it\n            $context = helpers.createChildNavList($prevNav);\n          } // else use the current $context\n\n          $context.append($newNav);\n\n          $prevNav = $newNav;\n        });\n      },\n\n      parseOps: function(arg) {\n        var opts;\n        if (arg.jquery) {\n          opts = {\n            $nav: arg\n          };\n        } else {\n          opts = arg;\n        }\n        opts.$scope = opts.$scope || $(document.body);\n        return opts;\n      }\n    },\n\n    // accepts a jQuery object, or an options object\n    init: function(opts) {\n      opts = this.helpers.parseOps(opts);\n\n      // ensure that the data attribute is in place for styling\n      opts.$nav.attr('data-toggle', 'toc');\n\n      var $topContext = this.helpers.createChildNavList(opts.$nav);\n      var topLevel = this.helpers.getTopLevel(opts.$scope);\n      var $headings = this.helpers.getHeadings(opts.$scope, topLevel);\n      this.helpers.populateNav($topContext, topLevel, $headings);\n    }\n  };\n\n  $(function() {\n    $('nav[data-toggle=\"toc\"]').each(function(i, el) {\n      var $nav = $(el);\n      Toc.init($nav);\n    });\n  });\n})();\n"
  },
  {
    "path": "docs/docsearch.css",
    "content": "/* Docsearch -------------------------------------------------------------- */\n/*\n  Source: https://github.com/algolia/docsearch/\n  License: MIT\n*/\n\n.algolia-autocomplete {\n  display: block;\n  -webkit-box-flex: 1;\n  -ms-flex: 1;\n  flex: 1\n}\n\n.algolia-autocomplete .ds-dropdown-menu {\n  width: 100%;\n  min-width: none;\n  max-width: none;\n  padding: .75rem 0;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, .1);\n  box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .175);\n}\n\n@media (min-width:768px) {\n  .algolia-autocomplete .ds-dropdown-menu {\n      width: 175%\n  }\n}\n\n.algolia-autocomplete .ds-dropdown-menu::before {\n  display: none\n}\n\n.algolia-autocomplete .ds-dropdown-menu [class^=ds-dataset-] {\n  padding: 0;\n  background-color: rgb(255,255,255);\n  border: 0;\n  max-height: 80vh;\n}\n\n.algolia-autocomplete .ds-dropdown-menu .ds-suggestions {\n  margin-top: 0\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion {\n  padding: 0;\n  overflow: visible\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion--category-header {\n  padding: .125rem 1rem;\n  margin-top: 0;\n  font-size: 1.3em;\n  font-weight: 500;\n  color: #00008B;\n  border-bottom: 0\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion--wrapper {\n    float: none;\n    padding-top: 0\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column {\n  float: none;\n  width: auto;\n  padding: 0;\n  text-align: left\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion--content {\n  float: none;\n  width: auto;\n  padding: 0\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion--content::before {\n  display: none\n}\n\n.algolia-autocomplete .ds-suggestion:not(:first-child) .algolia-docsearch-suggestion--category-header {\n  padding-top: .75rem;\n  margin-top: .75rem;\n  border-top: 1px solid rgba(0, 0, 0, .1)\n}\n\n.algolia-autocomplete .ds-suggestion .algolia-docsearch-suggestion--subcategory-column {\n  display: block;\n  padding: .1rem 1rem;\n  margin-bottom: 0.1;\n  font-size: 1.0em;\n  font-weight: 400\n  /* display: none */\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion--title {\n  display: block;\n  padding: .25rem 1rem;\n  margin-bottom: 0;\n  font-size: 0.9em;\n  font-weight: 400\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion--text {\n  padding: 0 1rem .5rem;\n  margin-top: -.25rem;\n  font-size: 0.8em;\n  font-weight: 400;\n  line-height: 1.25\n}\n\n.algolia-autocomplete .algolia-docsearch-footer {\n  width: 110px;\n  height: 20px;\n  z-index: 3;\n  margin-top: 10.66667px;\n  float: right;\n  font-size: 0;\n  line-height: 0;\n}\n\n.algolia-autocomplete .algolia-docsearch-footer--logo {\n  background-image: url(\"data:image/svg+xml;utf8,<svg viewBox='0 0 130 18' xmlns='http://www.w3.org/2000/svg'><defs><linearGradient x1='-36.868%' y1='134.936%' x2='129.432%' y2='-27.7%' id='a'><stop stop-color='%2300AEFF' offset='0%'/><stop stop-color='%233369E7' offset='100%'/></linearGradient></defs><g fill='none' fill-rule='evenodd'><path d='M59.399.022h13.299a2.372 2.372 0 0 1 2.377 2.364V15.62a2.372 2.372 0 0 1-2.377 2.364H59.399a2.372 2.372 0 0 1-2.377-2.364V2.381A2.368 2.368 0 0 1 59.399.022z' fill='url(%23a)'/><path d='M66.257 4.56c-2.815 0-5.1 2.272-5.1 5.078 0 2.806 2.284 5.072 5.1 5.072 2.815 0 5.1-2.272 5.1-5.078 0-2.806-2.279-5.072-5.1-5.072zm0 8.652c-1.983 0-3.593-1.602-3.593-3.574 0-1.972 1.61-3.574 3.593-3.574 1.983 0 3.593 1.602 3.593 3.574a3.582 3.582 0 0 1-3.593 3.574zm0-6.418v2.664c0 .076.082.131.153.093l2.377-1.226c.055-.027.071-.093.044-.147a2.96 2.96 0 0 0-2.465-1.487c-.055 0-.11.044-.11.104l.001-.001zm-3.33-1.956l-.312-.311a.783.783 0 0 0-1.106 0l-.372.37a.773.773 0 0 0 0 1.101l.307.305c.049.049.121.038.164-.011.181-.245.378-.479.597-.697.225-.223.455-.42.707-.599.055-.033.06-.109.016-.158h-.001zm5.001-.806v-.616a.781.781 0 0 0-.783-.779h-1.824a.78.78 0 0 0-.783.779v.632c0 .071.066.12.137.104a5.736 5.736 0 0 1 1.588-.223c.52 0 1.035.071 1.534.207a.106.106 0 0 0 .131-.104z' fill='%23FFF'/><path d='M102.162 13.762c0 1.455-.372 2.517-1.123 3.193-.75.676-1.895 1.013-3.44 1.013-.564 0-1.736-.109-2.673-.316l.345-1.689c.783.163 1.819.207 2.361.207.86 0 1.473-.174 1.84-.523.367-.349.548-.866.548-1.553v-.349a6.374 6.374 0 0 1-.838.316 4.151 4.151 0 0 1-1.194.158 4.515 4.515 0 0 1-1.616-.278 3.385 3.385 0 0 1-1.254-.817 3.744 3.744 0 0 1-.811-1.351c-.192-.539-.29-1.504-.29-2.212 0-.665.104-1.498.307-2.054a3.925 3.925 0 0 1 .904-1.433 4.124 4.124 0 0 1 1.441-.926 5.31 5.31 0 0 1 1.945-.365c.696 0 1.337.087 1.961.191a15.86 15.86 0 0 1 1.588.332v8.456h-.001zm-5.954-4.206c0 .893.197 1.885.592 2.299.394.414.904.621 1.528.621.34 0 .663-.049.964-.142a2.75 2.75 0 0 0 .734-.332v-5.29a8.531 8.531 0 0 0-1.413-.18c-.778-.022-1.369.294-1.786.801-.411.507-.619 1.395-.619 2.223zm16.12 0c0 .719-.104 1.264-.318 1.858a4.389 4.389 0 0 1-.904 1.52c-.389.42-.854.746-1.402.975-.548.229-1.391.36-1.813.36-.422-.005-1.26-.125-1.802-.36a4.088 4.088 0 0 1-1.397-.975 4.486 4.486 0 0 1-.909-1.52 5.037 5.037 0 0 1-.329-1.858c0-.719.099-1.411.318-1.999.219-.588.526-1.09.92-1.509.394-.42.865-.741 1.402-.97a4.547 4.547 0 0 1 1.786-.338 4.69 4.69 0 0 1 1.791.338c.548.229 1.019.55 1.402.97.389.42.69.921.909 1.509.23.588.345 1.28.345 1.999h.001zm-2.191.005c0-.921-.203-1.689-.597-2.223-.394-.539-.948-.806-1.654-.806-.707 0-1.26.267-1.654.806-.394.539-.586 1.302-.586 2.223 0 .932.197 1.558.592 2.098.394.545.948.812 1.654.812.707 0 1.26-.272 1.654-.812.394-.545.592-1.166.592-2.098h-.001zm6.962 4.707c-3.511.016-3.511-2.822-3.511-3.274L113.583.926l2.142-.338v10.003c0 .256 0 1.88 1.375 1.885v1.792h-.001zm3.774 0h-2.153V5.072l2.153-.338v9.534zm-1.079-10.542c.718 0 1.304-.578 1.304-1.291 0-.714-.581-1.291-1.304-1.291-.723 0-1.304.578-1.304 1.291 0 .714.586 1.291 1.304 1.291zm6.431 1.013c.707 0 1.304.087 1.786.262.482.174.871.42 1.156.73.285.311.488.735.608 1.182.126.447.186.937.186 1.476v5.481a25.24 25.24 0 0 1-1.495.251c-.668.098-1.419.147-2.251.147a6.829 6.829 0 0 1-1.517-.158 3.213 3.213 0 0 1-1.178-.507 2.455 2.455 0 0 1-.761-.904c-.181-.37-.274-.893-.274-1.438 0-.523.104-.855.307-1.215.208-.36.487-.654.838-.883a3.609 3.609 0 0 1 1.227-.49 7.073 7.073 0 0 1 2.202-.103c.263.027.537.076.833.147v-.349c0-.245-.027-.479-.088-.697a1.486 1.486 0 0 0-.307-.583c-.148-.169-.34-.3-.581-.392a2.536 2.536 0 0 0-.915-.163c-.493 0-.942.06-1.353.131-.411.071-.75.153-1.008.245l-.257-1.749c.268-.093.668-.185 1.183-.278a9.335 9.335 0 0 1 1.66-.142l-.001-.001zm.181 7.731c.657 0 1.145-.038 1.484-.104v-2.168a5.097 5.097 0 0 0-1.978-.104c-.241.033-.46.098-.652.191a1.167 1.167 0 0 0-.466.392c-.121.169-.175.267-.175.523 0 .501.175.79.493.981.323.196.75.289 1.293.289h.001zM84.109 4.794c.707 0 1.304.087 1.786.262.482.174.871.42 1.156.73.29.316.487.735.608 1.182.126.447.186.937.186 1.476v5.481a25.24 25.24 0 0 1-1.495.251c-.668.098-1.419.147-2.251.147a6.829 6.829 0 0 1-1.517-.158 3.213 3.213 0 0 1-1.178-.507 2.455 2.455 0 0 1-.761-.904c-.181-.37-.274-.893-.274-1.438 0-.523.104-.855.307-1.215.208-.36.487-.654.838-.883a3.609 3.609 0 0 1 1.227-.49 7.073 7.073 0 0 1 2.202-.103c.257.027.537.076.833.147v-.349c0-.245-.027-.479-.088-.697a1.486 1.486 0 0 0-.307-.583c-.148-.169-.34-.3-.581-.392a2.536 2.536 0 0 0-.915-.163c-.493 0-.942.06-1.353.131-.411.071-.75.153-1.008.245l-.257-1.749c.268-.093.668-.185 1.183-.278a8.89 8.89 0 0 1 1.66-.142l-.001-.001zm.186 7.736c.657 0 1.145-.038 1.484-.104v-2.168a5.097 5.097 0 0 0-1.978-.104c-.241.033-.46.098-.652.191a1.167 1.167 0 0 0-.466.392c-.121.169-.175.267-.175.523 0 .501.175.79.493.981.318.191.75.289 1.293.289h.001zm8.682 1.738c-3.511.016-3.511-2.822-3.511-3.274L89.461.926l2.142-.338v10.003c0 .256 0 1.88 1.375 1.885v1.792h-.001z' fill='%23182359'/><path d='M5.027 11.025c0 .698-.252 1.246-.757 1.644-.505.397-1.201.596-2.089.596-.888 0-1.615-.138-2.181-.414v-1.214c.358.168.739.301 1.141.397.403.097.778.145 1.125.145.508 0 .884-.097 1.125-.29a.945.945 0 0 0 .363-.779.978.978 0 0 0-.333-.747c-.222-.204-.68-.446-1.375-.725-.716-.29-1.221-.621-1.515-.994-.294-.372-.44-.82-.44-1.343 0-.655.233-1.171.698-1.547.466-.376 1.09-.564 1.875-.564.752 0 1.5.165 2.245.494l-.408 1.047c-.698-.294-1.321-.44-1.869-.44-.415 0-.73.09-.945.271a.89.89 0 0 0-.322.717c0 .204.043.379.129.524.086.145.227.282.424.411.197.129.551.299 1.063.51.577.24.999.464 1.268.671.269.208.466.442.591.704.125.261.188.569.188.924l-.001.002zm3.98 2.24c-.924 0-1.646-.269-2.167-.808-.521-.539-.782-1.281-.782-2.226 0-.97.242-1.733.725-2.288.483-.555 1.148-.833 1.993-.833.784 0 1.404.238 1.858.714.455.476.682 1.132.682 1.966v.682H7.357c.018.577.174 1.02.467 1.329.294.31.707.465 1.241.465.351 0 .678-.033.98-.099a5.1 5.1 0 0 0 .975-.33v1.026a3.865 3.865 0 0 1-.935.312 5.723 5.723 0 0 1-1.08.091l.002-.001zm-.231-5.199c-.401 0-.722.127-.964.381s-.386.625-.432 1.112h2.696c-.007-.491-.125-.862-.354-1.115-.229-.252-.544-.379-.945-.379l-.001.001zm7.692 5.092l-.252-.827h-.043c-.286.362-.575.608-.865.739-.29.131-.662.196-1.117.196-.584 0-1.039-.158-1.367-.473-.328-.315-.491-.761-.491-1.337 0-.612.227-1.074.682-1.386.455-.312 1.148-.482 2.079-.51l1.026-.032v-.317c0-.38-.089-.663-.266-.851-.177-.188-.452-.282-.824-.282-.304 0-.596.045-.876.134a6.68 6.68 0 0 0-.806.317l-.408-.902a4.414 4.414 0 0 1 1.058-.384 4.856 4.856 0 0 1 1.085-.132c.756 0 1.326.165 1.711.494.385.329.577.847.577 1.552v4.002h-.902l-.001-.001zm-1.88-.859c.458 0 .826-.128 1.104-.384.278-.256.416-.615.416-1.077v-.516l-.763.032c-.594.021-1.027.121-1.297.298s-.406.448-.406.814c0 .265.079.47.236.615.158.145.394.218.709.218h.001zm7.557-5.189c.254 0 .464.018.628.054l-.124 1.176a2.383 2.383 0 0 0-.559-.064c-.505 0-.914.165-1.227.494-.313.329-.47.757-.47 1.284v3.105h-1.262V7.218h.988l.167 1.047h.064c.197-.354.454-.636.771-.843a1.83 1.83 0 0 1 1.023-.312h.001zm4.125 6.155c-.899 0-1.582-.262-2.049-.787-.467-.525-.701-1.277-.701-2.259 0-.999.244-1.767.733-2.304.489-.537 1.195-.806 2.119-.806.627 0 1.191.116 1.692.349l-.381 1.015c-.534-.208-.974-.312-1.321-.312-1.028 0-1.542.682-1.542 2.046 0 .666.128 1.166.384 1.501.256.335.631.502 1.125.502a3.23 3.23 0 0 0 1.595-.419v1.101a2.53 2.53 0 0 1-.722.285 4.356 4.356 0 0 1-.932.086v.002zm8.277-.107h-1.268V9.506c0-.458-.092-.8-.277-1.026-.184-.226-.477-.338-.878-.338-.53 0-.919.158-1.168.475-.249.317-.373.848-.373 1.593v2.949h-1.262V4.801h1.262v2.122c0 .34-.021.704-.064 1.09h.081a1.76 1.76 0 0 1 .717-.666c.306-.158.663-.236 1.072-.236 1.439 0 2.159.725 2.159 2.175v3.873l-.001-.001zm7.649-6.048c.741 0 1.319.269 1.732.806.414.537.62 1.291.62 2.261 0 .974-.209 1.732-.628 2.275-.419.542-1.001.814-1.746.814-.752 0-1.336-.27-1.751-.811h-.086l-.231.704h-.945V4.801h1.262v1.987l-.021.655-.032.553h.054c.401-.591.992-.886 1.772-.886zm-.328 1.031c-.508 0-.875.149-1.098.448-.224.299-.339.799-.346 1.501v.086c0 .723.115 1.247.344 1.571.229.324.603.486 1.123.486.448 0 .787-.177 1.018-.532.231-.354.346-.867.346-1.536 0-1.35-.462-2.025-1.386-2.025l-.001.001zm3.244-.924h1.375l1.209 3.368c.183.48.304.931.365 1.354h.043c.032-.197.091-.436.177-.717.086-.281.541-1.616 1.364-4.004h1.364l-2.541 6.73c-.462 1.235-1.232 1.853-2.31 1.853-.279 0-.551-.03-.816-.091v-.999c.19.043.406.064.65.064.609 0 1.037-.353 1.284-1.058l.22-.559-2.385-5.941h.001z' fill='%231D3657'/></g></svg>\");\n  background-repeat: no-repeat;\n  background-position: 50%;\n  background-size: 100%;\n  overflow: hidden;\n  text-indent: -9000px;\n  width: 100%;\n  height: 100%;\n  display: block;\n  transform: translate(-8px);\n}\n\n.algolia-autocomplete .algolia-docsearch-suggestion--highlight {\n  color: #FF8C00;\n  background: rgba(232, 189, 54, 0.1)\n}\n\n\n.algolia-autocomplete .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight {\n  box-shadow: inset 0 -2px 0 0 rgba(105, 105, 105, .5)\n}\n\n.algolia-autocomplete .ds-suggestion.ds-cursor .algolia-docsearch-suggestion--content {\n  background-color: rgba(192, 192, 192, .15)\n}\n"
  },
  {
    "path": "docs/docsearch.js",
    "content": "$(function() {\n\n  // register a handler to move the focus to the search bar\n  // upon pressing shift + \"/\" (i.e. \"?\")\n  $(document).on('keydown', function(e) {\n    if (e.shiftKey && e.keyCode == 191) {\n      e.preventDefault();\n      $(\"#search-input\").focus();\n    }\n  });\n\n  $(document).ready(function() {\n    // do keyword highlighting\n    /* modified from https://jsfiddle.net/julmot/bL6bb5oo/ */\n    var mark = function() {\n\n      var referrer = document.URL ;\n      var paramKey = \"q\" ;\n\n      if (referrer.indexOf(\"?\") !== -1) {\n        var qs = referrer.substr(referrer.indexOf('?') + 1);\n        var qs_noanchor = qs.split('#')[0];\n        var qsa = qs_noanchor.split('&');\n        var keyword = \"\";\n\n        for (var i = 0; i < qsa.length; i++) {\n          var currentParam = qsa[i].split('=');\n\n          if (currentParam.length !== 2) {\n            continue;\n          }\n\n          if (currentParam[0] == paramKey) {\n            keyword = decodeURIComponent(currentParam[1].replace(/\\+/g, \"%20\"));\n          }\n        }\n\n        if (keyword !== \"\") {\n          $(\".contents\").unmark({\n            done: function() {\n              $(\".contents\").mark(keyword);\n            }\n          });\n        }\n      }\n    };\n\n    mark();\n  });\n});\n\n/* Search term highlighting ------------------------------*/\n\nfunction matchedWords(hit) {\n  var words = [];\n\n  var hierarchy = hit._highlightResult.hierarchy;\n  // loop to fetch from lvl0, lvl1, etc.\n  for (var idx in hierarchy) {\n    words = words.concat(hierarchy[idx].matchedWords);\n  }\n\n  var content = hit._highlightResult.content;\n  if (content) {\n    words = words.concat(content.matchedWords);\n  }\n\n  // return unique words\n  var words_uniq = [...new Set(words)];\n  return words_uniq;\n}\n\nfunction updateHitURL(hit) {\n\n  var words = matchedWords(hit);\n  var url = \"\";\n\n  if (hit.anchor) {\n    url = hit.url_without_anchor + '?q=' + escape(words.join(\" \")) + '#' + hit.anchor;\n  } else {\n    url = hit.url + '?q=' + escape(words.join(\" \"));\n  }\n\n  return url;\n}\n"
  },
  {
    "path": "docs/index.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<meta charset=\"utf-8\">\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>CEllular Latent Dirichlet Allocation • celda</title>\n<!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\">\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"bootstrap-toc.css\">\n<script src=\"bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\">\n<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\">\n<!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"pkgdown.css\" rel=\"stylesheet\">\n<script src=\"pkgdown.js\"></script><meta property=\"og:title\" content=\"CEllular Latent Dirichlet Allocation\">\n<meta property=\"og:description\" content='Celda is a suite of Bayesian hierarchical models for\n    clustering single-cell RNA-sequencing (scRNA-seq) data. It is able to\n    perform \"bi-clustering\" and simultaneously cluster genes into gene modules\n    and cells into cell subpopulations. It also contains DecontX, a novel\n    Bayesian method to computationally estimate and remove RNA contamination in\n    individual cells without empty droplet information. A variety of scRNA-seq\n    data visualization functions is also included.'>\n<!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]-->\n</head>\n<body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-home\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\">\n<li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\">\n<li>\n      <a href=\"articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul>\n</li>\n<li>\n  <a href=\"reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul>\n<ul class=\"nav navbar-nav navbar-right\">\n<li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul>\n</div>\n<!--/.nav-collapse -->\n  </div>\n<!--/.container -->\n</div>\n<!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"contents col-md-9\">\n\n\n<div class=\"section level1\">\n<div class=\"page-header\"><h1 id=\"celda-cellular-latent-dirichlet-allocation\">celda: CEllular Latent Dirichlet Allocation<a class=\"anchor\" aria-label=\"anchor\" href=\"#celda-cellular-latent-dirichlet-allocation\"></a>\n</h1></div>\n<p>“celda” stands for “<strong>CE</strong>llular <strong>L</strong>atent <strong>D</strong>irichlet <strong>A</strong>llocation”. It is a suite of Bayesian hierarchical models and supporting functions to perform gene and cell clustering for count data generated by single cell RNA-seq platforms. This algorithm is an extension of the Latent Dirichlet Allocation (LDA) topic modeling framework that has been popular in text mining applications. This package also includes a method called <strong>DecontX</strong> which can be used to estimate and remove contamination in single cell genomic data.</p>\n<div class=\"section level2\">\n<h2 id=\"installation-instructions\">Installation Instructions<a class=\"anchor\" aria-label=\"anchor\" href=\"#installation-instructions\"></a>\n</h2>\n<p>To install the latest stable release of <strong>celda</strong> from <a href=\"http://bioconductor.org/packages/celda/\" class=\"external-link\">Bioconductor</a> (requires R version &gt;= 3.6):</p>\n<pre><code><span><span class=\"kw\">if</span> <span class=\"op\">(</span><span class=\"op\">!</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/ns-load.html\" class=\"external-link\">requireNamespace</a></span><span class=\"op\">(</span><span class=\"st\">\"BiocManager\"</span>, quietly <span class=\"op\">=</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span><span class=\"op\">)</span></span>\n<span>    <span class=\"fu\"><a href=\"https://rdrr.io/r/utils/install.packages.html\" class=\"external-link\">install.packages</a></span><span class=\"op\">(</span><span class=\"st\">\"BiocManager\"</span><span class=\"op\">)</span></span>\n<span><span class=\"fu\">BiocManager</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"https://bioconductor.github.io/BiocManager/reference/install.html\" class=\"external-link\">install</a></span><span class=\"op\">(</span><span class=\"st\">\"celda\"</span><span class=\"op\">)</span></span></code></pre>\n<p>The latest stable version of <strong>celda</strong> can be installed from GitHub using <code>devtools</code>:</p>\n<pre><code><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://devtools.r-lib.org/\" class=\"external-link\">devtools</a></span><span class=\"op\">)</span></span>\n<span><span class=\"fu\"><a href=\"https://remotes.r-lib.org/reference/install_github.html\" class=\"external-link\">install_github</a></span><span class=\"op\">(</span><span class=\"st\">\"campbio/celda\"</span><span class=\"op\">)</span></span></code></pre>\n<p>The development version of <strong>celda</strong> can also be installed from GitHub using <code>devtools</code>:</p>\n<pre><code><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://devtools.r-lib.org/\" class=\"external-link\">devtools</a></span><span class=\"op\">)</span></span>\n<span><span class=\"fu\"><a href=\"https://remotes.r-lib.org/reference/install_github.html\" class=\"external-link\">install_github</a></span><span class=\"op\">(</span><span class=\"st\">\"campbio/celda@devel\"</span><span class=\"op\">)</span></span></code></pre>\n<p><strong>NOTE</strong> For MAC OSX users, <code><a href=\"https://remotes.r-lib.org/reference/install_github.html\" class=\"external-link\">devtools::install_github()</a></code> requires installation of <strong>libgit2.</strong> This can be installed via homebrew:</p>\n<pre><code>brew install libgit2</code></pre>\n<p>Also, if you receive installation errors when Rcpp is being installed and compiled, try following the steps outlined here to solve the issue:</p>\n<p><a href=\"https://thecoatlessprofessor.com/programming/cpp/r-compiler-tools-for-rcpp-on-macos/\" class=\"external-link uri\">https://thecoatlessprofessor.com/programming/cpp/r-compiler-tools-for-rcpp-on-macos/</a></p>\n<p>If you are running R 4.0.0 or later version on MacOS Catalina and you see error <code>'wchar.h' file not found</code>, you can try the method in this link:</p>\n<p><a href=\"https://discourse.mc-stan.org/t/dealing-with-catalina-iii/12731/5\" class=\"external-link uri\">https://discourse.mc-stan.org/t/dealing-with-catalina-iii/12731/5</a></p>\n<p>If you are trying to install on MacOS in an Apple Silicon computater and you see the following error:</p>\n<pre><code>ld: warning: directory not found for option '-L/opt/gfortran/lib/gcc/x86_64-apple-darwin20.0/12.2.0'\nld: warning: directory not found for option '-L/opt/gfortran/lib'\nld: library not found for -lgfortran\nclang: error: linker command failed with exit code 1 (use -v to see invocation)\nmake: *** [celda.so] Error 1\nERROR: compilation failed for package ‘celda’</code></pre>\n<p>You can solve this by downloading and installing the gfortran pkg located <a href=\"https://mac.r-project.org/tools/gfortran-12.2-universal.pkg\" class=\"external-link\">here</a> and then running the following command:</p>\n<pre><code><span><span class=\"va\">sudo</span> <span class=\"op\">/</span><span class=\"va\">opt</span><span class=\"op\">/</span><span class=\"va\">gfortran</span><span class=\"op\">/</span><span class=\"va\">bin</span><span class=\"op\">/</span><span class=\"va\">gfortran</span><span class=\"op\">-</span><span class=\"va\">update</span><span class=\"op\">-</span><span class=\"va\">sdk</span></span></code></pre>\n<p><strong>NOTE</strong> If you are trying to install <strong>celda</strong> using Rstudio and get this error: <code>could not find tools necessary to compile a package</code>, you can try this:</p>\n<pre><code><span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/options.html\" class=\"external-link\">options</a></span><span class=\"op\">(</span>buildtools.check <span class=\"op\">=</span> <span class=\"kw\">function</span><span class=\"op\">(</span><span class=\"va\">action</span><span class=\"op\">)</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span></span></code></pre>\n</div>\n<div class=\"section level2\">\n<h2 id=\"vignettes-and-examples\">Vignettes and examples<a class=\"anchor\" aria-label=\"anchor\" href=\"#vignettes-and-examples\"></a>\n</h2>\n<p>To build the vignettes for Celda and DecontX during installation from GitHub, use the following command:</p>\n<pre><code><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\"><a href=\"https://devtools.r-lib.org/\" class=\"external-link\">devtools</a></span><span class=\"op\">)</span></span>\n<span><span class=\"fu\"><a href=\"https://remotes.r-lib.org/reference/install_github.html\" class=\"external-link\">install_github</a></span><span class=\"op\">(</span><span class=\"st\">\"campbio/celda\"</span>, build_vignettes <span class=\"op\">=</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span></span></code></pre>\n<p>Note that installation may take an extra 5-10 minutes for building of the vignettes. The Celda and DecontX vignettes can then be accessed via the following commands:</p>\n<pre><code><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/vignette.html\" class=\"external-link\">vignette</a></span><span class=\"op\">(</span><span class=\"st\">\"celda\"</span><span class=\"op\">)</span></span>\n<span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/vignette.html\" class=\"external-link\">vignette</a></span><span class=\"op\">(</span><span class=\"st\">\"decontX\"</span><span class=\"op\">)</span></span></code></pre>\n</div>\n<div class=\"section level2\">\n<h2 id=\"for-developers\">For developers<a class=\"anchor\" aria-label=\"anchor\" href=\"#for-developers\"></a>\n</h2>\n<p>Check out our <a href=\"https://github.com/campbio/celda/wiki\" class=\"external-link\">Wiki</a> for developer’s guide if you want to contribute! - <a href=\"https://github.com/campbio/celda/wiki/Celda-Development-Coding-Style-Guide\" class=\"external-link\">Celda Development Coding Style Guide</a> - <a href=\"https://github.com/campbio/celda/wiki/Celda-Development-Robust-and-Efficient-Code\" class=\"external-link\">Celda Development Robust and Efficient Code</a> - <a href=\"https://github.com/campbio/celda/wiki/Celda-Development-Rstudio-configuration\" class=\"external-link\">Celda Development Rstudio configuration</a> - <a href=\"https://github.com/campbio/celda/wiki/FAQ-on-how-to-use-celda\" class=\"external-link\">FAQ on how to use celda</a> - <a href=\"https://github.com/campbio/celda/wiki/FAQ-on-package-development\" class=\"external-link\">FAQ on package development</a></p>\n</div>\n</div>\n\n  </div>\n\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <div class=\"links\">\n<h2 data-toc-skip>Links</h2>\n<ul class=\"list-unstyled\">\n<li><a href=\"https://www.bioconductor.org/packages/celda\" class=\"external-link\">View on Bioconductor</a></li>\n<li><a href=\"https://github.com/campbio/celda/\" class=\"external-link\">Browse source code</a></li>\n<li><a href=\"https://github.com/campbio/celda/issues\" class=\"external-link\">Report a bug</a></li>\n</ul>\n</div>\n\n<div class=\"license\">\n<h2 data-toc-skip>License</h2>\n<ul class=\"list-unstyled\">\n<li>\n<a href=\"https://opensource.org/licenses/mit-license.php\" class=\"external-link\">MIT</a> + file <a href=\"LICENSE-text.html\">LICENSE</a>\n</li>\n</ul>\n</div>\n\n\n<div class=\"citation\">\n<h2 data-toc-skip>Citation</h2>\n<ul class=\"list-unstyled\">\n<li><a href=\"authors.html#citation\">Citing celda</a></li>\n</ul>\n</div>\n\n<div class=\"developers\">\n<h2 data-toc-skip>Developers</h2>\n<ul class=\"list-unstyled\">\n<li>Joshua Campbell <br><small class=\"roles\"> Author, maintainer </small>  </li>\n<li>Shiyi Yang <br><small class=\"roles\"> Author </small>  </li>\n<li>Zhe Wang <br><small class=\"roles\"> Author </small>  </li>\n<li>Sean Corbett <br><small class=\"roles\"> Author </small>  </li>\n<li>Yusuke Koga <br><small class=\"roles\"> Author </small>  </li>\n</ul>\n</div>\n\n<div class=\"dev-status\">\n<h2 data-toc-skip>Dev status</h2>\n<ul class=\"list-unstyled\">\n<li><a href=\"https://github.com/campbio/celda/actions\" class=\"external-link\"><img src=\"https://github.com/campbio/celda/workflows/R-CMD-check/badge.svg\" alt=\"R-CMD-check\"></a></li>\n<li><a href=\"https://coveralls.io/github/campbio/celda?branch=master\" class=\"external-link\"><img src=\"https://coveralls.io/repos/github/campbio/celda/badge.svg?branch=master\" alt=\"Coverage Status\"></a></li>\n</ul>\n</div>\n\n  </div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p>\n<p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p>\n<p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer>\n</div>\n\n  \n\n\n  \n\n  </body>\n</html>\n"
  },
  {
    "path": "docs/news/index.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Changelog • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Changelog\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-news\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n      <h1 data-toc-skip>Changelog <small></small></h1>\n      <small>Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/NEWS.md\" class=\"external-link\"><code>NEWS.md</code></a></small>\n    </div>\n\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"1.18.2\" id=\"celda-v1182-2024-04-02\">celda v1.18.2 (2024-04-02)<a class=\"anchor\" aria-label=\"anchor\" href=\"#celda-v1182-2024-04-02\"></a></h2>\n<ul><li>Updated Makevar files to new CRAN standards</li>\n<li>Fixed unit test causing error</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"1.18.1\" id=\"celda-v1181-2023-11-05\">celda v1.18.1 (2023-11-05)<a class=\"anchor\" aria-label=\"anchor\" href=\"#celda-v1181-2023-11-05\"></a></h2>\n<ul><li>Update to match Bioconductor release version</li>\n<li>Removed multipanelfigure as a dependency</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"1.14.2\" id=\"celda-v1142-2023-01-19\">celda v1.14.2 (2023-01-19)<a class=\"anchor\" aria-label=\"anchor\" href=\"#celda-v1142-2023-01-19\"></a></h2>\n<ul><li>Update to match Bioconductor release version</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"1.13.0\" id=\"celda-v1130-2022-10-20\">celda v1.13.0 (2022-10-20)<a class=\"anchor\" aria-label=\"anchor\" href=\"#celda-v1130-2022-10-20\"></a></h2>\n<ul><li>Bug fixes related to cluster labels stored as factors and plotting</li>\n<li>Updated sparse matrix conversion to work with Matrix v1.4-2</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"1.12.0\" id=\"celda-v1120-2022-04-30\">celda v1.12.0 (2022-04-30)<a class=\"anchor\" aria-label=\"anchor\" href=\"#celda-v1120-2022-04-30\"></a></h2>\n<ul><li>Update to match Bioconductor 3.15 release version</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"1.11.1\" id=\"celda-v1111-2022-03-31\">celda v1.11.1 (2022-03-31)<a class=\"anchor\" aria-label=\"anchor\" href=\"#celda-v1111-2022-03-31\"></a></h2>\n<ul><li>Fixes to reports</li>\n<li>Use smoothe splines for perplexity and RPC plots</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"1.11.0\" id=\"celda-v1110-2022-03-31\">celda v1.11.0 (2022-03-31)<a class=\"anchor\" aria-label=\"anchor\" href=\"#celda-v1110-2022-03-31\"></a></h2>\n<ul><li>Improvments to decontX vignette</li>\n<li>Added ability to subsample to speed up perplexity calculations</li>\n<li>Added ability to use batch parameter with the raw matrix in decontX</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"1.10.0\" id=\"celda-v1100-2021-12-28\">celda v1.10.0 (2021-12-28)<a class=\"anchor\" aria-label=\"anchor\" href=\"#celda-v1100-2021-12-28\"></a></h2>\n<ul><li>Update to match Bioconductor release version</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"1.9.3\" id=\"celda-v193-2021-10-04\">celda v1.9.3 (2021-10-04)<a class=\"anchor\" aria-label=\"anchor\" href=\"#celda-v193-2021-10-04\"></a></h2>\n<ul><li>Fixed bug in checking background matrix with decontX</li>\n<li>Switched to using Github Actions for Continuous Integration</li>\n<li>Fixed plotting bugs in celda results reports</li>\n<li>Speed up final step in decontX when creating final decontaminated matrix</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"1.9.2\" id=\"celda-v192-2021-07-19\">celda v1.9.2 (2021-07-19)<a class=\"anchor\" aria-label=\"anchor\" href=\"#celda-v192-2021-07-19\"></a></h2>\n<ul><li>Added a <code>NEWS.md</code> file to track changes to the package.</li>\n<li>Added new tutorials and documentation generated with pkgdown.</li>\n<li>Removed warnings in plotRPC functions.</li>\n<li>Added use of “displayName” to several functions that show feature names.</li>\n<li>Minor bug fix when the input matrix was sparse and contained non-integer values.</li>\n<li>Several improvements to plotting functions.</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"1.7.7\" id=\"celda-v177-2021-04-12\">celda v1.7.7 (2021-04-12):<a class=\"anchor\" aria-label=\"anchor\" href=\"#celda-v177-2021-04-12\"></a></h2>\n<ul><li>Added handling for sparse matrices</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"1.7.6\" id=\"celda-v176-2021-04-04\">celda v1.7.6 (2021-04-04):<a class=\"anchor\" aria-label=\"anchor\" href=\"#celda-v176-2021-04-04\"></a></h2>\n<ul><li>Added functions for creating HTML reports</li>\n<li>Fixed bug in decontX plotting</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"1.7.4\" id=\"celda-v174-2021-03-09\">celda v1.7.4 (2021-03-09):<a class=\"anchor\" aria-label=\"anchor\" href=\"#celda-v174-2021-03-09\"></a></h2>\n<ul><li>Enable input of raw/droplet matrix into decontX to estimate ambient RNA</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"1.1.6\" id=\"celda-v116-2019-07-16\">celda v1.1.6 (2019-07-16):<a class=\"anchor\" aria-label=\"anchor\" href=\"#celda-v116-2019-07-16\"></a></h2>\n<ul><li>Add multiclass decision tree</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"1.1.4\" id=\"celda-v114-2019-05-28\">celda v1.1.4 (2019-05-28):<a class=\"anchor\" aria-label=\"anchor\" href=\"#celda-v114-2019-05-28\"></a></h2>\n<ul><li>Add Alternate headings support for plotDimReduceFeature</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"1.1.3\" id=\"celda-v113-2019-05-14\">celda v1.1.3 (2019-05-14):<a class=\"anchor\" aria-label=\"anchor\" href=\"#celda-v113-2019-05-14\"></a></h2>\n<ul><li>Add multiclass decision tree (MCDT) cell cluster annotation</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"1.1.2\" id=\"celda-v112-2019-05-14\">celda v1.1.2 (2019-05-14):<a class=\"anchor\" aria-label=\"anchor\" href=\"#celda-v112-2019-05-14\"></a></h2>\n<ul><li>Fix a bug in celdaHeatmap</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"1.0.1\" id=\"celda-v101-2019-05-09\">celda v1.0.1 (2019-05-09):<a class=\"anchor\" aria-label=\"anchor\" href=\"#celda-v101-2019-05-09\"></a></h2>\n<ul><li>Default seed setting to maintain reproducibility</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"0.99.34\" id=\"celda-v09934-2019-04-23\">celda v0.99.34 (2019-04-23):<a class=\"anchor\" aria-label=\"anchor\" href=\"#celda-v09934-2019-04-23\"></a></h2>\n<ul><li>Minor changes to the vignettes</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"0.99.23\" id=\"celda-v09923-2019-04-10\">celda v0.99.23 (2019-04-10):<a class=\"anchor\" aria-label=\"anchor\" href=\"#celda-v09923-2019-04-10\"></a></h2>\n<ul><li>Remove pheatmap import</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"0.99.22\" id=\"celda-v09922-2019-04-09\">celda v0.99.22 (2019-04-09):<a class=\"anchor\" aria-label=\"anchor\" href=\"#celda-v09922-2019-04-09\"></a></h2>\n<ul><li>Package celda, for bi-clustering of single-cell ’omics data.</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"0.99.8\" id=\"celda-v0998-2019-03-11\">celda v0.99.8 (2019-03-11):<a class=\"anchor\" aria-label=\"anchor\" href=\"#celda-v0998-2019-03-11\"></a></h2>\n<ul><li>Second submission to Bioconductor</li>\n</ul></div>\n    <div class=\"section level2\">\n<h2 class=\"page-header\" data-toc-text=\"0.99.0\" id=\"celda-v0990-2018-05-15\">celda v0.99.0 (2018-05-15):<a class=\"anchor\" aria-label=\"anchor\" href=\"#celda-v0990-2018-05-15\"></a></h2>\n<ul><li>First submission to Bioconductor</li>\n</ul></div>\n  </div>\n\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/pkgdown.css",
    "content": "/* Sticky footer */\n\n/**\n * Basic idea: https://philipwalton.github.io/solved-by-flexbox/demos/sticky-footer/\n * Details: https://github.com/philipwalton/solved-by-flexbox/blob/master/assets/css/components/site.css\n *\n * .Site -> body > .container\n * .Site-content -> body > .container .row\n * .footer -> footer\n *\n * Key idea seems to be to ensure that .container and __all its parents__\n * have height set to 100%\n *\n */\n\nhtml, body {\n  height: 100%;\n}\n\nbody {\n  position: relative;\n}\n\nbody > .container {\n  display: flex;\n  height: 100%;\n  flex-direction: column;\n}\n\nbody > .container .row {\n  flex: 1 0 auto;\n}\n\nfooter {\n  margin-top: 45px;\n  padding: 35px 0 36px;\n  border-top: 1px solid #e5e5e5;\n  color: #666;\n  display: flex;\n  flex-shrink: 0;\n}\nfooter p {\n  margin-bottom: 0;\n}\nfooter div {\n  flex: 1;\n}\nfooter .pkgdown {\n  text-align: right;\n}\nfooter p {\n  margin-bottom: 0;\n}\n\nimg.icon {\n  float: right;\n}\n\n/* Ensure in-page images don't run outside their container */\n.contents img {\n  max-width: 100%;\n  height: auto;\n}\n\n/* Fix bug in bootstrap (only seen in firefox) */\nsummary {\n  display: list-item;\n}\n\n/* Typographic tweaking ---------------------------------*/\n\n.contents .page-header {\n  margin-top: calc(-60px + 1em);\n}\n\ndd {\n  margin-left: 3em;\n}\n\n/* Section anchors ---------------------------------*/\n\na.anchor {\n  display: none;\n  margin-left: 5px;\n  width: 20px;\n  height: 20px;\n\n  background-image: url(./link.svg);\n  background-repeat: no-repeat;\n  background-size: 20px 20px;\n  background-position: center center;\n}\n\nh1:hover .anchor,\nh2:hover .anchor,\nh3:hover .anchor,\nh4:hover .anchor,\nh5:hover .anchor,\nh6:hover .anchor {\n  display: inline-block;\n}\n\n/* Fixes for fixed navbar --------------------------*/\n\n.contents h1, .contents h2, .contents h3, .contents h4 {\n  padding-top: 60px;\n  margin-top: -40px;\n}\n\n/* Navbar submenu --------------------------*/\n\n.dropdown-submenu {\n  position: relative;\n}\n\n.dropdown-submenu>.dropdown-menu {\n  top: 0;\n  left: 100%;\n  margin-top: -6px;\n  margin-left: -1px;\n  border-radius: 0 6px 6px 6px;\n}\n\n.dropdown-submenu:hover>.dropdown-menu {\n  display: block;\n}\n\n.dropdown-submenu>a:after {\n  display: block;\n  content: \" \";\n  float: right;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n  border-width: 5px 0 5px 5px;\n  border-left-color: #cccccc;\n  margin-top: 5px;\n  margin-right: -10px;\n}\n\n.dropdown-submenu:hover>a:after {\n  border-left-color: #ffffff;\n}\n\n.dropdown-submenu.pull-left {\n  float: none;\n}\n\n.dropdown-submenu.pull-left>.dropdown-menu {\n  left: -100%;\n  margin-left: 10px;\n  border-radius: 6px 0 6px 6px;\n}\n\n/* Sidebar --------------------------*/\n\n#pkgdown-sidebar {\n  margin-top: 30px;\n  position: -webkit-sticky;\n  position: sticky;\n  top: 70px;\n}\n\n#pkgdown-sidebar h2 {\n  font-size: 1.5em;\n  margin-top: 1em;\n}\n\n#pkgdown-sidebar h2:first-child {\n  margin-top: 0;\n}\n\n#pkgdown-sidebar .list-unstyled li {\n  margin-bottom: 0.5em;\n}\n\n/* bootstrap-toc tweaks ------------------------------------------------------*/\n\n/* All levels of nav */\n\nnav[data-toggle='toc'] .nav > li > a {\n  padding: 4px 20px 4px 6px;\n  font-size: 1.5rem;\n  font-weight: 400;\n  color: inherit;\n}\n\nnav[data-toggle='toc'] .nav > li > a:hover,\nnav[data-toggle='toc'] .nav > li > a:focus {\n  padding-left: 5px;\n  color: inherit;\n  border-left: 1px solid #878787;\n}\n\nnav[data-toggle='toc'] .nav > .active > a,\nnav[data-toggle='toc'] .nav > .active:hover > a,\nnav[data-toggle='toc'] .nav > .active:focus > a {\n  padding-left: 5px;\n  font-size: 1.5rem;\n  font-weight: 400;\n  color: inherit;\n  border-left: 2px solid #878787;\n}\n\n/* Nav: second level (shown on .active) */\n\nnav[data-toggle='toc'] .nav .nav {\n  display: none; /* Hide by default, but at >768px, show it */\n  padding-bottom: 10px;\n}\n\nnav[data-toggle='toc'] .nav .nav > li > a {\n  padding-left: 16px;\n  font-size: 1.35rem;\n}\n\nnav[data-toggle='toc'] .nav .nav > li > a:hover,\nnav[data-toggle='toc'] .nav .nav > li > a:focus {\n  padding-left: 15px;\n}\n\nnav[data-toggle='toc'] .nav .nav > .active > a,\nnav[data-toggle='toc'] .nav .nav > .active:hover > a,\nnav[data-toggle='toc'] .nav .nav > .active:focus > a {\n  padding-left: 15px;\n  font-weight: 500;\n  font-size: 1.35rem;\n}\n\n/* orcid ------------------------------------------------------------------- */\n\n.orcid {\n  font-size: 16px;\n  color: #A6CE39;\n  /* margins are required by official ORCID trademark and display guidelines */\n  margin-left:4px;\n  margin-right:4px;\n  vertical-align: middle;\n}\n\n/* Reference index & topics ----------------------------------------------- */\n\n.ref-index th {font-weight: normal;}\n\n.ref-index td {vertical-align: top; min-width: 100px}\n.ref-index .icon {width: 40px;}\n.ref-index .alias {width: 40%;}\n.ref-index-icons .alias {width: calc(40% - 40px);}\n.ref-index .title {width: 60%;}\n\n.ref-arguments th {text-align: right; padding-right: 10px;}\n.ref-arguments th, .ref-arguments td {vertical-align: top; min-width: 100px}\n.ref-arguments .name {width: 20%;}\n.ref-arguments .desc {width: 80%;}\n\n/* Nice scrolling for wide elements --------------------------------------- */\n\ntable {\n  display: block;\n  overflow: auto;\n}\n\n/* Syntax highlighting ---------------------------------------------------- */\n\npre, code, pre code {\n  background-color: #f8f8f8;\n  color: #333;\n}\npre, pre code {\n  white-space: pre-wrap;\n  word-break: break-all;\n  overflow-wrap: break-word;\n}\n\npre {\n  border: 1px solid #eee;\n}\n\npre .img, pre .r-plt {\n  margin: 5px 0;\n}\n\npre .img img, pre .r-plt img {\n  background-color: #fff;\n}\n\ncode a, pre a {\n  color: #375f84;\n}\n\na.sourceLine:hover {\n  text-decoration: none;\n}\n\n.fl      {color: #1514b5;}\n.fu      {color: #000000;} /* function */\n.ch,.st  {color: #036a07;} /* string */\n.kw      {color: #264D66;} /* keyword */\n.co      {color: #888888;} /* comment */\n\n.error   {font-weight: bolder;}\n.warning {font-weight: bolder;}\n\n/* Clipboard --------------------------*/\n\n.hasCopyButton {\n  position: relative;\n}\n\n.btn-copy-ex {\n  position: absolute;\n  right: 0;\n  top: 0;\n  visibility: hidden;\n}\n\n.hasCopyButton:hover button.btn-copy-ex {\n  visibility: visible;\n}\n\n/* headroom.js ------------------------ */\n\n.headroom {\n  will-change: transform;\n  transition: transform 200ms linear;\n}\n.headroom--pinned {\n  transform: translateY(0%);\n}\n.headroom--unpinned {\n  transform: translateY(-100%);\n}\n\n/* mark.js ----------------------------*/\n\nmark {\n  background-color: rgba(255, 255, 51, 0.5);\n  border-bottom: 2px solid rgba(255, 153, 51, 0.3);\n  padding: 1px;\n}\n\n/* vertical spacing after htmlwidgets */\n.html-widget {\n  margin-bottom: 10px;\n}\n\n/* fontawesome ------------------------ */\n\n.fab {\n    font-family: \"Font Awesome 5 Brands\" !important;\n}\n\n/* don't display links in code chunks when printing */\n/* source: https://stackoverflow.com/a/10781533 */\n@media print {\n  code a:link:after, code a:visited:after {\n    content: \"\";\n  }\n}\n\n/* Section anchors ---------------------------------\n   Added in pandoc 2.11: https://github.com/jgm/pandoc-templates/commit/9904bf71\n*/\n\ndiv.csl-bib-body { }\ndiv.csl-entry {\n  clear: both;\n}\n.hanging-indent div.csl-entry {\n  margin-left:2em;\n  text-indent:-2em;\n}\ndiv.csl-left-margin {\n  min-width:2em;\n  float:left;\n}\ndiv.csl-right-inline {\n  margin-left:2em;\n  padding-left:1em;\n}\ndiv.csl-indent {\n  margin-left: 2em;\n}\n"
  },
  {
    "path": "docs/pkgdown.js",
    "content": "/* http://gregfranko.com/blog/jquery-best-practices/ */\n(function($) {\n  $(function() {\n\n    $('.navbar-fixed-top').headroom();\n\n    $('body').css('padding-top', $('.navbar').height() + 10);\n    $(window).resize(function(){\n      $('body').css('padding-top', $('.navbar').height() + 10);\n    });\n\n    $('[data-toggle=\"tooltip\"]').tooltip();\n\n    var cur_path = paths(location.pathname);\n    var links = $(\"#navbar ul li a\");\n    var max_length = -1;\n    var pos = -1;\n    for (var i = 0; i < links.length; i++) {\n      if (links[i].getAttribute(\"href\") === \"#\")\n        continue;\n      // Ignore external links\n      if (links[i].host !== location.host)\n        continue;\n\n      var nav_path = paths(links[i].pathname);\n\n      var length = prefix_length(nav_path, cur_path);\n      if (length > max_length) {\n        max_length = length;\n        pos = i;\n      }\n    }\n\n    // Add class to parent <li>, and enclosing <li> if in dropdown\n    if (pos >= 0) {\n      var menu_anchor = $(links[pos]);\n      menu_anchor.parent().addClass(\"active\");\n      menu_anchor.closest(\"li.dropdown\").addClass(\"active\");\n    }\n  });\n\n  function paths(pathname) {\n    var pieces = pathname.split(\"/\");\n    pieces.shift(); // always starts with /\n\n    var end = pieces[pieces.length - 1];\n    if (end === \"index.html\" || end === \"\")\n      pieces.pop();\n    return(pieces);\n  }\n\n  // Returns -1 if not found\n  function prefix_length(needle, haystack) {\n    if (needle.length > haystack.length)\n      return(-1);\n\n    // Special case for length-0 haystack, since for loop won't run\n    if (haystack.length === 0) {\n      return(needle.length === 0 ? 0 : -1);\n    }\n\n    for (var i = 0; i < haystack.length; i++) {\n      if (needle[i] != haystack[i])\n        return(i);\n    }\n\n    return(haystack.length);\n  }\n\n  /* Clipboard --------------------------*/\n\n  function changeTooltipMessage(element, msg) {\n    var tooltipOriginalTitle=element.getAttribute('data-original-title');\n    element.setAttribute('data-original-title', msg);\n    $(element).tooltip('show');\n    element.setAttribute('data-original-title', tooltipOriginalTitle);\n  }\n\n  if(ClipboardJS.isSupported()) {\n    $(document).ready(function() {\n      var copyButton = \"<button type='button' class='btn btn-primary btn-copy-ex' type = 'submit' title='Copy to clipboard' aria-label='Copy to clipboard' data-toggle='tooltip' data-placement='left auto' data-trigger='hover' data-clipboard-copy><i class='fa fa-copy'></i></button>\";\n\n      $(\"div.sourceCode\").addClass(\"hasCopyButton\");\n\n      // Insert copy buttons:\n      $(copyButton).prependTo(\".hasCopyButton\");\n\n      // Initialize tooltips:\n      $('.btn-copy-ex').tooltip({container: 'body'});\n\n      // Initialize clipboard:\n      var clipboardBtnCopies = new ClipboardJS('[data-clipboard-copy]', {\n        text: function(trigger) {\n          return trigger.parentNode.textContent.replace(/\\n#>[^\\n]*/g, \"\");\n        }\n      });\n\n      clipboardBtnCopies.on('success', function(e) {\n        changeTooltipMessage(e.trigger, 'Copied!');\n        e.clearSelection();\n      });\n\n      clipboardBtnCopies.on('error', function() {\n        changeTooltipMessage(e.trigger,'Press Ctrl+C or Command+C to copy');\n      });\n    });\n  }\n})(window.jQuery || window.$)\n"
  },
  {
    "path": "docs/pkgdown.yml",
    "content": "pandoc: 3.1.11.1\npkgdown: 2.0.7\npkgdown_sha: ~\narticles:\n  celda_pbmc3k: celda_pbmc3k.html\n  decontX_pbmc4k: decontX_pbmc4k.html\n  installation: installation.html\n  celda: celda.html\n  decontX: decontX.html\nlast_built: 2024-04-02T22:54Z\n\n"
  },
  {
    "path": "docs/reference/appendCeldaList.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Append two celdaList objects — appendCeldaList • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Append two celdaList objects — appendCeldaList\"><meta property=\"og:description\" content=\"Returns a single celdaList representing the combination of two\n provided celdaList objects.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Append two celdaList objects</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/misc.R\" class=\"external-link\"><code>R/misc.R</code></a></small>\n    <div class=\"hidden name\"><code>appendCeldaList.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Returns a single celdaList representing the combination of two\n provided celdaList objects.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">appendCeldaList</span><span class=\"op\">(</span><span class=\"va\">list1</span>, <span class=\"va\">list2</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>list1</dt>\n<dd><p>A celda_list object</p></dd>\n\n\n<dt>list2</dt>\n<dd><p>A celda_list object to be joined with list_1</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>A celdaList object. This object contains all resList entries and\n runParam records from both lists.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGGridSearchRes</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">appendedList</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">appendCeldaList</span><span class=\"op\">(</span></span></span>\n<span class=\"r-in\"><span>  <span class=\"va\">celdaCGGridSearchRes</span>,</span></span>\n<span class=\"r-in\"><span>  <span class=\"va\">celdaCGGridSearchRes</span></span></span>\n<span class=\"r-in\"><span><span class=\"op\">)</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/availableModels.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>available models — availableModels • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"available models — availableModels\"><meta property=\"og:description\" content=\"available models\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>available models</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/data.R\" class=\"external-link\"><code>R/data.R</code></a></small>\n    <div class=\"hidden name\"><code>availableModels.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>available models</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"va\">availableModels</span></span></code></pre></div>\n    </div>\n\n    <div id=\"format\">\n    <h2>Format</h2>\n    <p>An object of class <code>character</code> of length 3.</p>\n    </div>\n\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/bestLogLikelihood.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Get the log-likelihood — bestLogLikelihood • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Get the log-likelihood — bestLogLikelihood\"><meta property=\"og:description\" content=\"Retrieves the final log-likelihood from all iterations of Gibbs\n sampling used to generate a celdaModel.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Get the log-likelihood</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/loglikelihood.R\" class=\"external-link\"><code>R/loglikelihood.R</code></a></small>\n    <div class=\"hidden name\"><code>bestLogLikelihood.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Retrieves the final log-likelihood from all iterations of Gibbs\n sampling used to generate a celdaModel.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">bestLogLikelihood</span><span class=\"op\">(</span><span class=\"va\">x</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">bestLogLikelihood</span><span class=\"op\">(</span><span class=\"va\">x</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for celdaModel</span></span>\n<span><span class=\"fu\">bestLogLikelihood</span><span class=\"op\">(</span><span class=\"va\">x</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>A SingleCellExperiment object\nreturned by <a href=\"celda_C.html\">celda_C</a>, <a href=\"celda_G.html\">celda_G</a>, or <a href=\"celda_CG.html\">celda_CG</a>, or a celda\nmodel object.</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the altExp slot\nto use. Default \"featureSubset\".</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>Numeric. The log-likelihood at the final step of Gibbs sampling used\n to generate the model.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">bestLogLikelihood</span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [1] -1212891</span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGMod</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">bestLogLikelihood</span><span class=\"op\">(</span><span class=\"va\">celdaCGMod</span><span class=\"op\">)</span></span></span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [1] -1215541</span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/celda.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Celda models — celda • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Celda models — celda\"><meta property=\"og:description\" content=\"List of available Celda models with correpsonding descriptions.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Celda models</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/misc.R\" class=\"external-link\"><code>R/misc.R</code></a></small>\n    <div class=\"hidden name\"><code>celda.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>List of available Celda models with correpsonding descriptions.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">celda</span><span class=\"op\">(</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>None</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\">celda</span><span class=\"op\">(</span><span class=\"op\">)</span></span></span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> celda_C: Clusters the columns of a count matrix containing single-cell data into K subpopulations.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> celda_G: Clusters the rows of a count matrix containing single-cell data into L modules.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> celda_CG: Clusters the rows and columns of a count matrix containing single-cell data into L modules and K subpopulations, respectively.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> celdaGridSearch: Run Celda with different combinations of parameters and multiple chains in parallel.</span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/celdaCGGridSearchRes.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>celdaCGGridSearchRes — celdaCGGridSearchRes • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"celdaCGGridSearchRes — celdaCGGridSearchRes\"><meta property=\"og:description\" content=\"Example results of old celdaGridSearch on celdaCGSim\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>celdaCGGridSearchRes</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/data.R\" class=\"external-link\"><code>R/data.R</code></a></small>\n    <div class=\"hidden name\"><code>celdaCGGridSearchRes.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Example results of old celdaGridSearch on celdaCGSim</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"va\">celdaCGGridSearchRes</span></span></code></pre></div>\n    </div>\n\n    <div id=\"format\">\n    <h2>Format</h2>\n    <p>An object as returned from old celdaGridSearch()</p>\n    </div>\n\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/celdaCGMod.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>celdaCGmod — celdaCGMod • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"celdaCGmod — celdaCGMod\"><meta property=\"og:description\" content=\"celda_CG model object generated from celdaCGSim using\n old celda_CG function.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>celdaCGmod</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/data.R\" class=\"external-link\"><code>R/data.R</code></a></small>\n    <div class=\"hidden name\"><code>celdaCGMod.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>celda_CG model object generated from <code>celdaCGSim</code> using\n old <code>celda_CG</code> function.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"va\">celdaCGMod</span></span></code></pre></div>\n    </div>\n\n    <div id=\"format\">\n    <h2>Format</h2>\n    <p>A celda_CG object</p>\n    </div>\n\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/celdaCGSim.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>celdaCGSim — celdaCGSim • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"celdaCGSim — celdaCGSim\"><meta property=\"og:description\" content=\"An deprecated example of simulated count matrix from the\n celda_CG model.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>celdaCGSim</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/data.R\" class=\"external-link\"><code>R/data.R</code></a></small>\n    <div class=\"hidden name\"><code>celdaCGSim.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>An deprecated example of simulated count matrix from the\n celda_CG model.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"va\">celdaCGSim</span></span></code></pre></div>\n    </div>\n\n    <div id=\"format\">\n    <h2>Format</h2>\n    <p>A list of counts and properties as returned from old simulateCells().</p>\n    </div>\n\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/celdaCMod.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>celdaCMod — celdaCMod • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"celdaCMod — celdaCMod\"><meta property=\"og:description\" content=\"Old celda_C results generated from celdaCSim\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>celdaCMod</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/data.R\" class=\"external-link\"><code>R/data.R</code></a></small>\n    <div class=\"hidden name\"><code>celdaCMod.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Old celda_C results generated from celdaCSim</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"va\">celdaCMod</span></span></code></pre></div>\n    </div>\n\n    <div id=\"format\">\n    <h2>Format</h2>\n    <p>A celda_C object</p>\n    </div>\n\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/celdaCSim.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>celdaCSim — celdaCSim • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"celdaCSim — celdaCSim\"><meta property=\"og:description\" content=\"An old example simulated count matrix from the celda_C model.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>celdaCSim</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/data.R\" class=\"external-link\"><code>R/data.R</code></a></small>\n    <div class=\"hidden name\"><code>celdaCSim.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>An old example simulated count matrix from the celda_C model.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"va\">celdaCSim</span></span></code></pre></div>\n    </div>\n\n    <div id=\"format\">\n    <h2>Format</h2>\n    <p>A list of counts and properties as returned from old simulateCells().</p>\n    </div>\n\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/celdaClusters.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Get or set the cell cluster labels from a celda\n SingleCellExperiment object or celda model\n object. — celdaClusters • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Get or set the cell cluster labels from a celda\n SingleCellExperiment object or celda model\n object. — celdaClusters\"><meta property=\"og:description\" content=\"Return or set the cell cluster labels determined\n by celda_C or celda_CG models.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Get or set the cell cluster labels from a celda\n SingleCellExperiment object or celda model\n object.</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/accessors.R\" class=\"external-link\"><code>R/accessors.R</code></a></small>\n    <div class=\"hidden name\"><code>celdaClusters.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Return or set the cell cluster labels determined\n by <a href=\"celda_C.html\">celda_C</a> or <a href=\"celda_CG.html\">celda_CG</a> models.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">celdaClusters</span><span class=\"op\">(</span><span class=\"va\">x</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">celdaClusters</span><span class=\"op\">(</span><span class=\"va\">x</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for celdaModel</span></span>\n<span><span class=\"fu\">celdaClusters</span><span class=\"op\">(</span><span class=\"va\">x</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"fu\">celdaClusters</span><span class=\"op\">(</span><span class=\"va\">x</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span><span class=\"op\">)</span> <span class=\"op\">&lt;-</span> <span class=\"va\">value</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">celdaClusters</span><span class=\"op\">(</span><span class=\"va\">x</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span><span class=\"op\">)</span> <span class=\"op\">&lt;-</span> <span class=\"va\">value</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>Can be one of</p><ul><li><p>A SingleCellExperiment object returned by\n<a href=\"celda_C.html\">celda_C</a>, or <a href=\"celda_CG.html\">celda_CG</a>, with the matrix\nlocated in the <code>useAssay</code> assay slot. The\na altExp slot with name <code>altExpName</code> will\nbe used. Rows represent features and columns represent cells.</p></li>\n<li><p>Celda model object.</p></li>\n</ul></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the altExp slot\nto use. Default \"featureSubset\".</p></dd>\n\n\n<dt>value</dt>\n<dd><p>Character vector of cell cluster labels for replacements. Works\nonly if <code>x</code> is a SingleCellExperiment object.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>One of</p><ul><li><p>Character vector if <code>x</code> is a\n SingleCellExperiment object.\n Contains cell cluster labels for each cell in x.</p></li>\n<li><p>List if <code>x</code> is a celda model object. Contains cell cluster\n labels (for celda_C and celdaCG\n Models) and/or feature module labels (for celda_G and celdaCG Models).</p></li>\n</ul></div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">celdaClusters</span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>   [1] 1 2 2 2 1 1 3 1 1 2 3 2 4 3 2 1 2 4 4 1 3 5 3 2 1 3 3 2 3 3 5 3 2 5 5 3 4</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [38] 4 3 2 1 2 1 1 2 3 4 2 5 3 5 1 1 3 1 3 3 1 4 5 4 4 1 3 5 2 5 2 1 3 1 2 4 1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [75] 5 2 1 3 4 4 3 5 1 1 4 4 4 1 1 3 3 1 3 1 1 4 4 3 5 3 4 3 4 4 1 3 4 4 1 3 1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [112] 3 4 3 1 3 3 3 3 3 5 4 4 4 4 1 1 4 1 4 1 4 1 1 1 5 4 1 4 3 5 4 4 5 4 3 3 3</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [149] 1 4 4 4 1 4 1 4 3 3 5 4 1 1 4 4 3 4 1 3 2 4 4 3 1 4 1 5 1 3 4 5 1 4 4 3 4</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [186] 3 5 4 5 5 5 5 5 5 2 5 1 2 3 2 5 5 5 2 1 5 5 2 4 2 1 1 5 5 5 5 5 5 2 2 5 2</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [223] 5 1 2 5 1 5 2 5 5 5 1 2 1 5 2 5 3 5 5 2 3 5 5 1 3 2 5 5 5 2 5 4 5 5 5 5 5</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [260] 5 1 3 2 5 2 5 2 3 2 5 2 5 5 1 1 5 5 1 4 5 5 5 3 3 1 2 1 2 3 3 2 1 1 3 1 1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [297] 1 3 1 3 3 3 2 3 3 5 5 1 1 3 3 3 1 3 3 3 3 1 1 3 3 3 1 3 5 2 1 1 1 1 1 3 1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [334] 2 3 3 1 3 5 1 3 1 3 5 3 3 3 1 1 5 1 3 3 3 4 1 4 3 4 3 1 2 1 1 4 2 1 4 4 3</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [371] 5 1 4 5 1 3 5 3 3 1 3 5 1 4 4 4 3 3 1 3 1 5 1 3 3 5 3 1 1 1 3 1 2 1 2 4 1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [408] 2 4 3 1 4 1 5 1 3 2 1 5 2 1 5 2 4 1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> Levels: 1 2 3 4 5</span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGMod</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">celdaClusters</span><span class=\"op\">(</span><span class=\"va\">celdaCGMod</span><span class=\"op\">)</span></span></span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> $z</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>   [1] 2 1 1 1 2 2 3 2 2 1 3 1 4 3 1 2 1 4 4 2 3 5 3 1 2 3 3 1 3 3 5 3 1 5 5 3 4</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [38] 4 3 1 2 1 2 2 1 3 4 1 5 3 5 2 2 3 2 3 3 2 4 5 4 4 2 3 5 1 5 1 2 3 2 1 4 2</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [75] 5 1 2 3 4 4 3 5 2 2 4 4 4 2 2 3 3 2 3 2 2 4 4 3 5 3 4 3 4 4 2 3 4 4 2 3 2</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [112] 3 4 3 2 3 3 3 3 3 5 4 4 4 4 2 2 4 2 4 2 4 2 2 2 5 4 2 4 3 5 4 4 5 4 3 3 3</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [149] 2 4 4 4 2 4 2 4 3 3 5 4 2 2 4 4 3 4 2 3 1 4 4 3 2 4 2 5 2 3 4 5 2 4 4 3 4</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [186] 3 5 4 5 5 5 5 5 5 1 5 2 1 3 1 5 5 5 1 2 5 5 1 4 1 2 2 5 5 5 5 5 5 1 1 5 1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [223] 5 2 1 5 2 5 1 5 5 5 2 1 2 5 1 5 3 5 5 1 3 5 5 2 3 1 5 5 5 1 5 4 5 5 5 5 5</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [260] 5 2 3 1 5 1 5 1 3 1 5 1 5 5 2 2 5 5 2 4 5 5 5 3 3 2 1 2 1 3 3 1 2 2 3 2 2</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [297] 2 3 2 3 3 3 1 3 3 5 5 2 2 3 3 3 2 3 3 3 3 2 2 3 3 3 2 3 5 1 2 2 2 2 2 3 2</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [334] 1 3 3 2 3 5 2 3 2 3 5 3 3 3 2 2 5 2 3 3 3 4 2 4 3 4 3 2 1 2 2 4 1 2 4 4 3</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [371] 5 2 4 5 2 3 5 3 3 2 3 5 2 4 4 4 3 3 2 3 2 5 2 3 3 5 3 2 2 2 3 2 1 2 1 4 2</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [408] 1 4 3 2 4 2 5 2 3 1 2 5 1 2 5 1 4 2</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> $y</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>   [1]  7  5  1  8  1  4 10  9  2  4  7 10 10  5  3 10  2 10  9  5  9  3  5  7  6</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [26]  9  9  4  8  2  9  5  4  5  9  5  5  4  4  6  5  8  8  5  1  6 10  9  7  1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [51]  4  3  7  9  6 10  9 10  7  6  8  6  9  5  4  5  9  9 10  5  4  3  8  7  9</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [76]  6  2  3  7  6  3  4  9  3  9 10  4 10  7  1  1 10 10  1  6  1  6  9  5  4</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> </span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/celdaGMod.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>celdaGMod — celdaGMod • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"celdaGMod — celdaGMod\"><meta property=\"og:description\" content=\"Old celda_G results generated from celdaGsim\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>celdaGMod</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/data.R\" class=\"external-link\"><code>R/data.R</code></a></small>\n    <div class=\"hidden name\"><code>celdaGMod.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Old celda_G results generated from celdaGsim</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"va\">celdaGMod</span></span></code></pre></div>\n    </div>\n\n    <div id=\"format\">\n    <h2>Format</h2>\n    <p>A celda_G object</p>\n    </div>\n\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/celdaGSim.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>celdaGSim — celdaGSim • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"celdaGSim — celdaGSim\"><meta property=\"og:description\" content=\"An old example simulated count matrix from the celda_G model.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>celdaGSim</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/data.R\" class=\"external-link\"><code>R/data.R</code></a></small>\n    <div class=\"hidden name\"><code>celdaGSim.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>An old example simulated count matrix from the celda_G model.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"va\">celdaGSim</span></span></code></pre></div>\n    </div>\n\n    <div id=\"format\">\n    <h2>Format</h2>\n    <p>A list of counts and properties as returned from old simulateCells()</p>\n    </div>\n\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/celdaGridSearch.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Run Celda in parallel with multiple parameters — celdaGridSearch • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Run Celda in parallel with multiple parameters — celdaGridSearch\"><meta property=\"og:description\" content=\"Run Celda with different combinations of parameters and\n multiple chains in parallel. The variable availableModels contains\n the potential models that can be utilized. Different parameters to be tested\n should be stored in a list and passed to the argument paramsTest.\n Fixed parameters to be used in all models, such as sampleLabel, can\n be passed as a list to the argument paramsFixed. When\n verbose = TRUE, output from each chain will be sent to a log file\n but not be displayed in stdout.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Run Celda in parallel with multiple parameters</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/celdaGridSearch.R\" class=\"external-link\"><code>R/celdaGridSearch.R</code></a></small>\n    <div class=\"hidden name\"><code>celdaGridSearch.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Run Celda with different combinations of parameters and\n multiple chains in parallel. The variable <a href=\"availableModels.html\">availableModels</a> contains\n the potential models that can be utilized. Different parameters to be tested\n should be stored in a list and passed to the argument <code>paramsTest</code>.\n Fixed parameters to be used in all models, such as <code>sampleLabel</code>, can\n be passed as a list to the argument <code>paramsFixed</code>. When\n <code>verbose = TRUE</code>, output from each chain will be sent to a log file\n but not be displayed in <code>stdout</code>.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">celdaGridSearch</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  <span class=\"va\">model</span>,</span>\n<span>  <span class=\"va\">paramsTest</span>,</span>\n<span>  paramsFixed <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  maxIter <span class=\"op\">=</span> <span class=\"fl\">200</span>,</span>\n<span>  nchains <span class=\"op\">=</span> <span class=\"fl\">3</span>,</span>\n<span>  cores <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  bestOnly <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  seed <span class=\"op\">=</span> <span class=\"fl\">12345</span>,</span>\n<span>  perplexity <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  verbose <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  logfilePrefix <span class=\"op\">=</span> <span class=\"st\">\"Celda\"</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">celdaGridSearch</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  <span class=\"va\">model</span>,</span>\n<span>  <span class=\"va\">paramsTest</span>,</span>\n<span>  paramsFixed <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  maxIter <span class=\"op\">=</span> <span class=\"fl\">200</span>,</span>\n<span>  nchains <span class=\"op\">=</span> <span class=\"fl\">3</span>,</span>\n<span>  cores <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  bestOnly <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  seed <span class=\"op\">=</span> <span class=\"fl\">12345</span>,</span>\n<span>  perplexity <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  verbose <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  logfilePrefix <span class=\"op\">=</span> <span class=\"st\">\"Celda\"</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for matrix</span></span>\n<span><span class=\"fu\">celdaGridSearch</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  <span class=\"va\">model</span>,</span>\n<span>  <span class=\"va\">paramsTest</span>,</span>\n<span>  paramsFixed <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  maxIter <span class=\"op\">=</span> <span class=\"fl\">200</span>,</span>\n<span>  nchains <span class=\"op\">=</span> <span class=\"fl\">3</span>,</span>\n<span>  cores <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  bestOnly <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  seed <span class=\"op\">=</span> <span class=\"fl\">12345</span>,</span>\n<span>  perplexity <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  verbose <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  logfilePrefix <span class=\"op\">=</span> <span class=\"st\">\"Celda\"</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>A numeric <a href=\"https://rdrr.io/r/base/matrix.html\" class=\"external-link\">matrix</a> of counts or a\nSingleCellExperiment\nwith the matrix located in the assay slot under <code>useAssay</code>.\nRows represent features and columns represent cells.</p></dd>\n\n\n<dt>useAssay</dt>\n<dd><p>A string specifying the name of the\nassay slot to use. Default \"counts\".</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the altExp slot\nto use. Default \"featureSubset\".</p></dd>\n\n\n<dt>model</dt>\n<dd><p>Celda model. Options available in <a href=\"availableModels.html\">availableModels</a>.</p></dd>\n\n\n<dt>paramsTest</dt>\n<dd><p>List. A list denoting the combinations of parameters to\nrun in a celda model. For example,\n<code>list(K = seq(5, 10), L = seq(15, 20))</code>\nwill run all combinations of K from 5 to 10 and L from 15 to 20 in model\n<a href=\"celda_CG.html\">celda_CG</a>.</p></dd>\n\n\n<dt>paramsFixed</dt>\n<dd><p>List. A list denoting additional parameters to use in\neach celda model. Default NULL.</p></dd>\n\n\n<dt>maxIter</dt>\n<dd><p>Integer. Maximum number of iterations of sampling to\nperform. Default 200.</p></dd>\n\n\n<dt>nchains</dt>\n<dd><p>Integer. Number of random cluster initializations. Default 3.</p></dd>\n\n\n<dt>cores</dt>\n<dd><p>Integer. The number of cores to use for parallel estimation of\nchains. Default 1.</p></dd>\n\n\n<dt>bestOnly</dt>\n<dd><p>Logical. Whether to return only the chain with the highest\nlog likelihood per combination of parameters or return all chains. Default\nTRUE.</p></dd>\n\n\n<dt>seed</dt>\n<dd><p>Integer. Passed to <a href=\"https://withr.r-lib.org/reference/with_seed.html\" class=\"external-link\">with_seed</a>. For reproducibility,\na default value of 12345 is used. Seed values\n<code>seq(seed, (seed + nchains - 1))</code> will be supplied to each chain in\n<code>nchains</code>. If NULL, no calls to\n<a href=\"https://withr.r-lib.org/reference/with_seed.html\" class=\"external-link\">with_seed</a> are made.</p></dd>\n\n\n<dt>perplexity</dt>\n<dd><p>Logical. Whether to calculate perplexity for each model.\nIf FALSE, then perplexity can be calculated later with\n<a href=\"resamplePerplexity.html\">resamplePerplexity</a>. Default TRUE.</p></dd>\n\n\n<dt>verbose</dt>\n<dd><p>Logical. Whether to print log messages during celda chain\nexecution. Default TRUE.</p></dd>\n\n\n<dt>logfilePrefix</dt>\n<dd><p>Character. Prefix for log files from worker threads\nand main process. Default \"Celda\".</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>A SingleCellExperiment object. Function\n parameter settings and celda model results are stored in the</p>\n<p></p>\n<p>metadata</p>\n<p></p>\n<p><code>\"celda_grid_search\"</code> slot.</p>\n    </div>\n    <div id=\"see-also\">\n    <h2>See also</h2>\n    <div class=\"dont-index\"><p><a href=\"celda_G.html\">celda_G</a> for feature clustering, <a href=\"celda_C.html\">celda_C</a> for\n clustering of cells, and <a href=\"celda_CG.html\">celda_CG</a> for simultaneous clustering of\n features and cells. <a href=\"subsetCeldaList.html\">subsetCeldaList</a> can subset the <code>celdaList</code>\n object. <a href=\"selectBestModel.html\">selectBestModel</a> can get the best model for each combination\n of parameters.</p></div>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"kw\">if</span> <span class=\"op\">(</span><span class=\"cn\">FALSE</span><span class=\"op\">)</span> <span class=\"op\">{</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"co\">## Run various combinations of parameters with 'celdaGridSearch'</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">celdaCGGridSearchRes</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">celdaGridSearch</span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span><span class=\"op\">$</span><span class=\"va\">counts</span>,</span></span>\n<span class=\"r-in\"><span>  model <span class=\"op\">=</span> <span class=\"st\">\"celda_CG\"</span>,</span></span>\n<span class=\"r-in\"><span>  paramsTest <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>K <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/seq.html\" class=\"external-link\">seq</a></span><span class=\"op\">(</span><span class=\"fl\">4</span>, <span class=\"fl\">6</span><span class=\"op\">)</span>, L <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/seq.html\" class=\"external-link\">seq</a></span><span class=\"op\">(</span><span class=\"fl\">9</span>, <span class=\"fl\">11</span><span class=\"op\">)</span><span class=\"op\">)</span>,</span></span>\n<span class=\"r-in\"><span>  paramsFixed <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>sampleLabel <span class=\"op\">=</span> <span class=\"va\">celdaCGSim</span><span class=\"op\">$</span><span class=\"va\">sampleLabel</span><span class=\"op\">)</span>,</span></span>\n<span class=\"r-in\"><span>  bestOnly <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span></span>\n<span class=\"r-in\"><span>  nchains <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span></span>\n<span class=\"r-in\"><span>  cores <span class=\"op\">=</span> <span class=\"fl\">1</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"op\">}</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/celdaHeatmap.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Plot celda Heatmap — celdaHeatmap • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Plot celda Heatmap — celdaHeatmap\"><meta property=\"og:description\" content=\"Render a stylable heatmap of count data based on celda\n clustering results.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Plot celda Heatmap</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/celda_heatmap.R\" class=\"external-link\"><code>R/celda_heatmap.R</code></a></small>\n    <div class=\"hidden name\"><code>celdaHeatmap.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Render a stylable heatmap of count data based on celda\n clustering results.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">celdaHeatmap</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">sce</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  featureIx <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  nfeatures <span class=\"op\">=</span> <span class=\"fl\">25</span>,</span>\n<span>  <span class=\"va\">...</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">celdaHeatmap</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">sce</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  featureIx <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  nfeatures <span class=\"op\">=</span> <span class=\"fl\">25</span>,</span>\n<span>  <span class=\"va\">...</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>sce</dt>\n<dd><p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object\nreturned by <a href=\"celda_C.html\">celda_C</a>, <a href=\"celda_G.html\">celda_G</a>, or <a href=\"celda_CG.html\">celda_CG</a>.</p></dd>\n\n\n<dt>useAssay</dt>\n<dd><p>A string specifying which assay\nslot to use. Default \"counts\".</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the altExp slot\nto use. Default \"featureSubset\".</p></dd>\n\n\n<dt>featureIx</dt>\n<dd><p>Integer vector. Select features for display in heatmap. If\nNULL, no subsetting will be performed. Default NULL. <strong>Only used for\n<code>sce</code> containing celda_C model result returned by <a href=\"celda_C.html\">celda_C</a>.</strong></p></dd>\n\n\n<dt>nfeatures</dt>\n<dd><p>Integer. Maximum number of features to select for each\ngene module. Default 25. <strong>Only used for <code>sce</code> containing\ncelda_CG or celda_G model results returned by <a href=\"celda_CG.html\">celda_CG</a> or\n<a href=\"celda_G.html\">celda_G</a>.</strong></p></dd>\n\n\n<dt>...</dt>\n<dd><p>Additional parameters passed to <a href=\"plotHeatmap.html\">plotHeatmap</a>.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>list A list containing dendrogram information and the heatmap grob</p>\n    </div>\n    <div id=\"see-also\">\n    <h2>See also</h2>\n    <div class=\"dont-index\"><p>`celdaTsne()` for generating 2-dimensional tSNE coordinates</p></div>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">celdaHeatmap</span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> TableGrob (5 x 6) \"layout\": 9 grobs</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>   z     cells                 name                       grob</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 1 1 (2-2,3-3)             col_tree polyline[GRID.polyline.16]</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 2 2 (4-4,1-1)             row_tree polyline[GRID.polyline.17]</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 3 3 (4-4,3-3)               matrix       gTree[GRID.gTree.19]</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 4 4 (3-3,3-3)       col_annotation         rect[GRID.rect.20]</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 5 5 (3-3,4-4) col_annotation_names         text[GRID.text.21]</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 6 6 (4-4,2-2)       row_annotation         rect[GRID.rect.22]</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 7 7 (5-5,2-2) row_annotation_names         text[GRID.text.23]</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 8 8 (4-5,6-6)     annotationLegend       gTree[GRID.gTree.31]</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 9 9 (4-5,5-5)               legend       gTree[GRID.gTree.34]</span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/celdaModel.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Get celda model from a celda\n SingleCellExperiment object — celdaModel • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Get celda model from a celda\n SingleCellExperiment object — celdaModel\"><meta property=\"og:description\" content=\"Return the celda model for sce returned by\n celda_C, celda_G or celda_CG.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Get celda model from a celda\n <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/accessors.R\" class=\"external-link\"><code>R/accessors.R</code></a></small>\n    <div class=\"hidden name\"><code>celdaModel.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Return the celda model for <code>sce</code> returned by\n <a href=\"celda_C.html\">celda_C</a>, <a href=\"celda_G.html\">celda_G</a> or <a href=\"celda_CG.html\">celda_CG</a>.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">celdaModel</span><span class=\"op\">(</span><span class=\"va\">sce</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">celdaModel</span><span class=\"op\">(</span><span class=\"va\">sce</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>sce</dt>\n<dd><p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object\nreturned by <a href=\"celda_C.html\">celda_C</a>, <a href=\"celda_G.html\">celda_G</a>, or <a href=\"celda_CG.html\">celda_CG</a>.</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the altExp slot\nto use. Default \"featureSubset\".</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>Character. The celda model. Can be one of \"celda_C\", \"celda_G\", or\n \"celda_CG\".</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">celdaModel</span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [1] \"celda_CG\"</span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/celdaModules.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Get or set the feature module labels from a celda\n SingleCellExperiment object. — celdaModules • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Get or set the feature module labels from a celda\n SingleCellExperiment object. — celdaModules\"><meta property=\"og:description\" content=\"Return or set the feature module cluster labels determined\n by celda_G or celda_CG models.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Get or set the feature module labels from a celda\n SingleCellExperiment object.</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/accessors.R\" class=\"external-link\"><code>R/accessors.R</code></a></small>\n    <div class=\"hidden name\"><code>celdaModules.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Return or set the feature module cluster labels determined\n by <a href=\"celda_G.html\">celda_G</a> or <a href=\"celda_CG.html\">celda_CG</a> models.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">celdaModules</span><span class=\"op\">(</span><span class=\"va\">sce</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">celdaModules</span><span class=\"op\">(</span><span class=\"va\">sce</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"fu\">celdaModules</span><span class=\"op\">(</span><span class=\"va\">sce</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span><span class=\"op\">)</span> <span class=\"op\">&lt;-</span> <span class=\"va\">value</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">celdaModules</span><span class=\"op\">(</span><span class=\"va\">sce</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span><span class=\"op\">)</span> <span class=\"op\">&lt;-</span> <span class=\"va\">value</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>sce</dt>\n<dd><p>A SingleCellExperiment object returned by\n<a href=\"celda_G.html\">celda_G</a>, or <a href=\"celda_CG.html\">celda_CG</a>, with the matrix\nlocated in the <code>useAssay</code> assay slot.\nRows represent features and columns represent cells.</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the altExp slot\nto use. Default \"featureSubset\".</p></dd>\n\n\n<dt>value</dt>\n<dd><p>Character vector of feature module labels for replacements.\nWorks only if <code>x</code> is a SingleCellExperiment object.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>Character vector. Contains feature module labels for each\n feature in x.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">celdaModules</span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [1] 7  5  1  8  1  4  10 9  2  4  7  10 10 5  3  10 2  10 9  5  9  3  5  7  6 </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [26] 9  4  8  2  9  5  4  5  9  5  5  4  4  6  5  8  8  5  1  6  10 9  7  1  4 </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [51] 3  7  9  6  9  10 7  6  8  6  9  5  4  5  9  9  10 5  3  8  7  9  6  2  3 </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [76] 7  6  3  4  9  3  9  10 4  10 7  1  1  10 10 1  6  6  9  5  4 </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> Levels: 1 2 3 4 5 6 7 8 9 10</span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/celdaPerplexity-celdaList-method.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Get perplexity for every model in a celdaList — celdaPerplexity,celdaList-method • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Get perplexity for every model in a celdaList — celdaPerplexity,celdaList-method\"><meta property=\"og:description\" content=\"Returns perplexity for each model in a celdaList as calculated\n by `perplexity().`\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Get perplexity for every model in a celdaList</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/accessors.R\" class=\"external-link\"><code>R/accessors.R</code></a></small>\n    <div class=\"hidden name\"><code>celdaPerplexity-celdaList-method.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Returns perplexity for each model in a celdaList as calculated\n by `perplexity().`</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"co\"># S4 method for celdaList</span></span>\n<span><span class=\"fu\"><a href=\"celdaPerplexity.html\">celdaPerplexity</a></span><span class=\"op\">(</span><span class=\"va\">celdaList</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>celdaList</dt>\n<dd><p>An object of class celdaList.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>List. Contains one celdaModel object for each of the parameters\n specified in the `runParams()` of the provided celda list.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGGridSearchRes</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">celdaCGGridModelPerplexities</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"celdaPerplexity.html\">celdaPerplexity</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGGridSearchRes</span><span class=\"op\">)</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/celdaPerplexity.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Get perplexity for every model in a celdaList — celdaPerplexity • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Get perplexity for every model in a celdaList — celdaPerplexity\"><meta property=\"og:description\" content=\"Returns perplexity for each model in a celdaList as calculated\n by `perplexity().`\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Get perplexity for every model in a celdaList</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/accessors.R\" class=\"external-link\"><code>R/accessors.R</code></a></small>\n    <div class=\"hidden name\"><code>celdaPerplexity.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Returns perplexity for each model in a celdaList as calculated\n by `perplexity().`</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">celdaPerplexity</span><span class=\"op\">(</span><span class=\"va\">celdaList</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>celdaList</dt>\n<dd><p>An object of class celdaList.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>List. Contains one celdaModel object for each of the parameters\n specified in the `runParams()` of the provided celda list.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGGridSearchRes</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">celdaCGGridModelPerplexities</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">celdaPerplexity</span><span class=\"op\">(</span><span class=\"va\">celdaCGGridSearchRes</span><span class=\"op\">)</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/celdaProbabilityMap.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Probability map for a celda model — celdaProbabilityMap • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Probability map for a celda model — celdaProbabilityMap\"><meta property=\"og:description\" content=\"Renders probability and relative expression heatmaps to\n visualize the relationship between features and cell populations (or cell\n populations and samples).\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Probability map for a celda model</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/celdaProbabilityMap.R\" class=\"external-link\"><code>R/celdaProbabilityMap.R</code></a></small>\n    <div class=\"hidden name\"><code>celdaProbabilityMap.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Renders probability and relative expression heatmaps to\n visualize the relationship between features and cell populations (or cell\n populations and samples).</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">celdaProbabilityMap</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">sce</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  level <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"cellPopulation\"</span>, <span class=\"st\">\"sample\"</span><span class=\"op\">)</span>,</span>\n<span>  ncols <span class=\"op\">=</span> <span class=\"fl\">100</span>,</span>\n<span>  col2 <span class=\"op\">=</span> <span class=\"fu\">circlize</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/circlize/man/colorRamp2.html\" class=\"external-link\">colorRamp2</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"op\">-</span><span class=\"fl\">2</span>, <span class=\"fl\">0</span>, <span class=\"fl\">2</span><span class=\"op\">)</span>, <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"#1E90FF\"</span>, <span class=\"st\">\"#FFFFFF\"</span>, <span class=\"st\">\"#CD2626\"</span><span class=\"op\">)</span><span class=\"op\">)</span>,</span>\n<span>  title1 <span class=\"op\">=</span> <span class=\"st\">\"Absolute probability\"</span>,</span>\n<span>  title2 <span class=\"op\">=</span> <span class=\"st\">\"Relative expression\"</span>,</span>\n<span>  showColumnNames <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  showRowNames <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  rowNamesgp <span class=\"op\">=</span> <span class=\"fu\">grid</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"https://rdrr.io/r/grid/gpar.html\" class=\"external-link\">gpar</a></span><span class=\"op\">(</span>fontsize <span class=\"op\">=</span> <span class=\"fl\">8</span><span class=\"op\">)</span>,</span>\n<span>  colNamesgp <span class=\"op\">=</span> <span class=\"fu\">grid</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"https://rdrr.io/r/grid/gpar.html\" class=\"external-link\">gpar</a></span><span class=\"op\">(</span>fontsize <span class=\"op\">=</span> <span class=\"fl\">12</span><span class=\"op\">)</span>,</span>\n<span>  clusterRows <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  clusterColumns <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  showHeatmapLegend <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  heatmapLegendParam <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>title <span class=\"op\">=</span> <span class=\"cn\">NULL</span>, legend_height <span class=\"op\">=</span> <span class=\"fu\">grid</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"https://rdrr.io/r/grid/unit.html\" class=\"external-link\">unit</a></span><span class=\"op\">(</span><span class=\"fl\">6</span>, <span class=\"st\">\"cm\"</span><span class=\"op\">)</span><span class=\"op\">)</span>,</span>\n<span>  <span class=\"va\">...</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">celdaProbabilityMap</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">sce</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  level <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"cellPopulation\"</span>, <span class=\"st\">\"sample\"</span><span class=\"op\">)</span>,</span>\n<span>  ncols <span class=\"op\">=</span> <span class=\"fl\">100</span>,</span>\n<span>  col2 <span class=\"op\">=</span> <span class=\"fu\">circlize</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/circlize/man/colorRamp2.html\" class=\"external-link\">colorRamp2</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"op\">-</span><span class=\"fl\">2</span>, <span class=\"fl\">0</span>, <span class=\"fl\">2</span><span class=\"op\">)</span>, <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"#1E90FF\"</span>, <span class=\"st\">\"#FFFFFF\"</span>, <span class=\"st\">\"#CD2626\"</span><span class=\"op\">)</span><span class=\"op\">)</span>,</span>\n<span>  title1 <span class=\"op\">=</span> <span class=\"st\">\"Absolute probability\"</span>,</span>\n<span>  title2 <span class=\"op\">=</span> <span class=\"st\">\"Relative expression\"</span>,</span>\n<span>  showColumnNames <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  showRowNames <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  rowNamesgp <span class=\"op\">=</span> <span class=\"fu\">grid</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"https://rdrr.io/r/grid/gpar.html\" class=\"external-link\">gpar</a></span><span class=\"op\">(</span>fontsize <span class=\"op\">=</span> <span class=\"fl\">8</span><span class=\"op\">)</span>,</span>\n<span>  colNamesgp <span class=\"op\">=</span> <span class=\"fu\">grid</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"https://rdrr.io/r/grid/gpar.html\" class=\"external-link\">gpar</a></span><span class=\"op\">(</span>fontsize <span class=\"op\">=</span> <span class=\"fl\">12</span><span class=\"op\">)</span>,</span>\n<span>  clusterRows <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  clusterColumns <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  showHeatmapLegend <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  heatmapLegendParam <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>title <span class=\"op\">=</span> <span class=\"cn\">NULL</span>, legend_height <span class=\"op\">=</span> <span class=\"fu\">grid</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"https://rdrr.io/r/grid/unit.html\" class=\"external-link\">unit</a></span><span class=\"op\">(</span><span class=\"fl\">6</span>, <span class=\"st\">\"cm\"</span><span class=\"op\">)</span><span class=\"op\">)</span>,</span>\n<span>  <span class=\"va\">...</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>sce</dt>\n<dd><p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object\nreturned by <a href=\"celda_C.html\">celda_C</a>, <a href=\"celda_G.html\">celda_G</a>, or <a href=\"celda_CG.html\">celda_CG</a>.</p></dd>\n\n\n<dt>useAssay</dt>\n<dd><p>A string specifying which assay\nslot to use. Default \"counts\".</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the altExp slot\nto use. Default \"featureSubset\".</p></dd>\n\n\n<dt>level</dt>\n<dd><p>Character. One of \"cellPopulation\" or \"Sample\".\n\"cellPopulation\" will display the absolute probabilities and relative\nnormalized expression of each module in each cell population.\n<strong><code>level = \"cellPopulation\"</code> only works for celda_CG <code>sce</code>\nobjects</strong>. \"sample\" will display the absolute probabilities and relative\nnormalized abundance of each cell population in each sample. Default\n\"cellPopulation\".</p></dd>\n\n\n<dt>ncols</dt>\n<dd><p>The number of colors (&gt;1) to be in the color palette of\nthe absolute probability heatmap.</p></dd>\n\n\n<dt>col2</dt>\n<dd><p>Passed to <code>col</code> argument of <a href=\"https://rdrr.io/pkg/ComplexHeatmap/man/Heatmap.html\" class=\"external-link\">Heatmap</a>.\nSet color boundaries and colors for the relative expression heatmap.</p></dd>\n\n\n<dt>title1</dt>\n<dd><p>Passed to <code>column_title</code> argument of\n<a href=\"https://rdrr.io/pkg/ComplexHeatmap/man/Heatmap.html\" class=\"external-link\">Heatmap</a>. Figure title for the absolute probability\nheatmap.</p></dd>\n\n\n<dt>title2</dt>\n<dd><p>Passed to <code>column_title</code> argument of\n<a href=\"https://rdrr.io/pkg/ComplexHeatmap/man/Heatmap.html\" class=\"external-link\">Heatmap</a>. Figure title for the relative expression\nheatmap.</p></dd>\n\n\n<dt>showColumnNames</dt>\n<dd><p>Passed to <code>show_column_names</code> argument of\n<a href=\"https://rdrr.io/pkg/ComplexHeatmap/man/Heatmap.html\" class=\"external-link\">Heatmap</a>. Show column names.</p></dd>\n\n\n<dt>showRowNames</dt>\n<dd><p>Passed to <code>show_row_names</code> argument of\n<a href=\"https://rdrr.io/pkg/ComplexHeatmap/man/Heatmap.html\" class=\"external-link\">Heatmap</a>. Show row names.</p></dd>\n\n\n<dt>rowNamesgp</dt>\n<dd><p>Passed to <code>row_names_gp</code> argument of\n<a href=\"https://rdrr.io/pkg/ComplexHeatmap/man/Heatmap.html\" class=\"external-link\">Heatmap</a>. Set row name font.</p></dd>\n\n\n<dt>colNamesgp</dt>\n<dd><p>Passed to <code>column_names_gp</code> argument of\n<a href=\"https://rdrr.io/pkg/ComplexHeatmap/man/Heatmap.html\" class=\"external-link\">Heatmap</a>. Set column name font.</p></dd>\n\n\n<dt>clusterRows</dt>\n<dd><p>Passed to <code>cluster_rows</code> argument of\n<a href=\"https://rdrr.io/pkg/ComplexHeatmap/man/Heatmap.html\" class=\"external-link\">Heatmap</a>. Cluster rows.</p></dd>\n\n\n<dt>clusterColumns</dt>\n<dd><p>Passed to <code>cluster_columns</code> argument of\n<a href=\"https://rdrr.io/pkg/ComplexHeatmap/man/Heatmap.html\" class=\"external-link\">Heatmap</a>. Cluster columns.</p></dd>\n\n\n<dt>showHeatmapLegend</dt>\n<dd><p>Passed to <code>show_heatmap_legend</code> argument of\n<a href=\"https://rdrr.io/pkg/ComplexHeatmap/man/Heatmap.html\" class=\"external-link\">Heatmap</a>. Show heatmap legend.</p></dd>\n\n\n<dt>heatmapLegendParam</dt>\n<dd><p>Passed to <code>heatmap_legend_param</code> argument of\n<a href=\"https://rdrr.io/pkg/ComplexHeatmap/man/Heatmap.html\" class=\"external-link\">Heatmap</a>. Heatmap legend parameters.</p></dd>\n\n\n<dt>...</dt>\n<dd><p>Additional parameters passed to <a href=\"https://rdrr.io/pkg/ComplexHeatmap/man/Heatmap.html\" class=\"external-link\">Heatmap</a>.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>A <a href=\"https://rdrr.io/pkg/ComplexHeatmap/man/HeatmapList.html\" class=\"external-link\">HeatmapList</a> object containing 2</p>\n<p></p>\n<p><a href=\"https://rdrr.io/pkg/ComplexHeatmap/man/Heatmap-class.html\" class=\"external-link\">Heatmap-class</a> objects</p>\n    </div>\n    <div id=\"see-also\">\n    <h2>See also</h2>\n    <div class=\"dont-index\"><p><a href=\"celda_C.html\">celda_C</a> for clustering cells. <a href=\"celda_CG.html\">celda_CG</a> for\n clustering features and cells</p></div>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">celdaProbabilityMap</span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-plt img\"><img src=\"celdaProbabilityMap-1.png\" alt=\"\" width=\"700\" height=\"433\"></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/celdaTsne.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>t-Distributed Stochastic Neighbor Embedding (t-SNE) dimension\n reduction for celda sce object — celdaTsne • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"t-Distributed Stochastic Neighbor Embedding (t-SNE) dimension\n reduction for celda sce object — celdaTsne\"><meta property=\"og:description\" content=\"Embeds cells in two dimensions using Rtsne based\n on a celda model. For celda_C sce objects, PCA on the normalized\n counts is used to reduce the number of features before applying t-SNE. For\n celda_CG and celda_G sce objects, tSNE is run on module\n probabilities to reduce the number of features instead of using PCA.\n Module probabilities are square-root transformed before applying tSNE.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>t-Distributed Stochastic Neighbor Embedding (t-SNE) dimension\n reduction for celda <code>sce</code> object</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/celdatSNE.R\" class=\"external-link\"><code>R/celdatSNE.R</code></a></small>\n    <div class=\"hidden name\"><code>celdaTsne.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Embeds cells in two dimensions using <a href=\"https://rdrr.io/pkg/Rtsne/man/Rtsne.html\" class=\"external-link\">Rtsne</a> based\n on a celda model. For celda_C <code>sce</code> objects, PCA on the normalized\n counts is used to reduce the number of features before applying t-SNE. For\n celda_CG and celda_G <code>sce</code> objects, tSNE is run on module\n probabilities to reduce the number of features instead of using PCA.\n Module probabilities are square-root transformed before applying tSNE.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">celdaTsne</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">sce</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  maxCells <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  minClusterSize <span class=\"op\">=</span> <span class=\"fl\">100</span>,</span>\n<span>  initialDims <span class=\"op\">=</span> <span class=\"fl\">20</span>,</span>\n<span>  modules <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  perplexity <span class=\"op\">=</span> <span class=\"fl\">20</span>,</span>\n<span>  maxIter <span class=\"op\">=</span> <span class=\"fl\">2500</span>,</span>\n<span>  normalize <span class=\"op\">=</span> <span class=\"st\">\"proportion\"</span>,</span>\n<span>  scaleFactor <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  transformationFun <span class=\"op\">=</span> <span class=\"va\">sqrt</span>,</span>\n<span>  seed <span class=\"op\">=</span> <span class=\"fl\">12345</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">celdaTsne</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">sce</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  maxCells <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  minClusterSize <span class=\"op\">=</span> <span class=\"fl\">100</span>,</span>\n<span>  initialDims <span class=\"op\">=</span> <span class=\"fl\">20</span>,</span>\n<span>  modules <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  perplexity <span class=\"op\">=</span> <span class=\"fl\">20</span>,</span>\n<span>  maxIter <span class=\"op\">=</span> <span class=\"fl\">2500</span>,</span>\n<span>  normalize <span class=\"op\">=</span> <span class=\"st\">\"proportion\"</span>,</span>\n<span>  scaleFactor <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  transformationFun <span class=\"op\">=</span> <span class=\"va\">sqrt</span>,</span>\n<span>  seed <span class=\"op\">=</span> <span class=\"fl\">12345</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>sce</dt>\n<dd><p>A SingleCellExperiment object\nreturned by <a href=\"celda_C.html\">celda_C</a>, <a href=\"celda_G.html\">celda_G</a>, or <a href=\"celda_CG.html\">celda_CG</a>.</p></dd>\n\n\n<dt>useAssay</dt>\n<dd><p>A string specifying which assay\nslot to use. Default \"counts\".</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the altExp slot\nto use. Default \"featureSubset\".</p></dd>\n\n\n<dt>maxCells</dt>\n<dd><p>Integer. Maximum number of cells to plot. Cells will be\nrandomly subsampled if <code>ncol(counts) &gt; maxCells</code>. Larger numbers of\ncells requires more memory. If <code>NULL</code>, no subsampling will be\nperformed. Default <code>NULL</code>.</p></dd>\n\n\n<dt>minClusterSize</dt>\n<dd><p>Integer. Do not subsample cell clusters below this\nthreshold. Default 100.</p></dd>\n\n\n<dt>initialDims</dt>\n<dd><p>Integer. PCA will be used to reduce the dimensionality\nof the dataset. The top 'initialDims' principal components will be used\nfor tSNE. Default 20.</p></dd>\n\n\n<dt>modules</dt>\n<dd><p>Integer vector. Determines which feature modules to use for\ntSNE. If <code>NULL</code>, all modules will be used. Default <code>NULL</code>.</p></dd>\n\n\n<dt>perplexity</dt>\n<dd><p>Numeric. Perplexity parameter for tSNE. Default 20.</p></dd>\n\n\n<dt>maxIter</dt>\n<dd><p>Integer. Maximum number of iterations in tSNE generation.\nDefault 2500.</p></dd>\n\n\n<dt>normalize</dt>\n<dd><p>Character. Passed to <a href=\"normalizeCounts.html\">normalizeCounts</a> in\nnormalization step. Divides counts by the library sizes for each\ncell. One of 'proportion', 'cpm', 'median', or 'mean'. 'proportion' uses\nthe total counts for each cell as the library size. 'cpm' divides the\nlibrary size of each cell by one million to produce counts per million.\n'median' divides the library size of each cell by the median library size\nacross all cells. 'mean' divides the library size of each cell by the mean\nlibrary size across all cells.</p></dd>\n\n\n<dt>scaleFactor</dt>\n<dd><p>Numeric. Sets the scale factor for cell-level\nnormalization. This scale factor is multiplied to each cell after the\nlibrary size of each cell had been adjusted in <code>normalize</code>. Default\n<code>NULL</code> which means no scale factor is applied.</p></dd>\n\n\n<dt>transformationFun</dt>\n<dd><p>Function. Applys a transformation such as 'sqrt',\n'log', 'log2', 'log10', or 'log1p'. If <code>NULL</code>, no transformation will\nbe applied. Occurs after applying normalization and scale factor. Default\n<code>NULL</code>.</p></dd>\n\n\n<dt>seed</dt>\n<dd><p>Integer. Passed to <a href=\"https://withr.r-lib.org/reference/with_seed.html\" class=\"external-link\">with_seed</a>. For reproducibility,\na default value of 12345 is used. If NULL, no calls to\n<a href=\"https://withr.r-lib.org/reference/with_seed.html\" class=\"external-link\">with_seed</a> are made.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p><code>sce</code> with t-SNE coordinates\n (columns \"celda_tSNE1\" &amp; \"celda_tSNE2\") added to</p>\n<p></p>\n<p><code>reducedDim(sce, \"celda_tSNE\")</code>.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">tsneRes</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">celdaTsne</span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/celdaUmap.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Uniform Manifold Approximation and Projection (UMAP) dimension\n reduction for celda sce object — celdaUmap • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Uniform Manifold Approximation and Projection (UMAP) dimension\n reduction for celda sce object — celdaUmap\"><meta property=\"og:description\" content=\"Embeds cells in two dimensions using umap based on\n a celda model. For celda_C sce objects, PCA on the normalized counts\n is used to reduce the number of features before applying UMAP. For celda_CG\n sce object, UMAP is run on module probabilities to reduce the number\n of features instead of using PCA. Module probabilities are square-root\n transformed before applying UMAP.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Uniform Manifold Approximation and Projection (UMAP) dimension\n reduction for celda <code>sce</code> object</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/celdaUMAP.R\" class=\"external-link\"><code>R/celdaUMAP.R</code></a></small>\n    <div class=\"hidden name\"><code>celdaUmap.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Embeds cells in two dimensions using <a href=\"https://rdrr.io/pkg/uwot/man/umap.html\" class=\"external-link\">umap</a> based on\n a celda model. For celda_C <code>sce</code> objects, PCA on the normalized counts\n is used to reduce the number of features before applying UMAP. For celda_CG\n <code>sce</code> object, UMAP is run on module probabilities to reduce the number\n of features instead of using PCA. Module probabilities are square-root\n transformed before applying UMAP.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">celdaUmap</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">sce</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  maxCells <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  minClusterSize <span class=\"op\">=</span> <span class=\"fl\">100</span>,</span>\n<span>  modules <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  seed <span class=\"op\">=</span> <span class=\"fl\">12345</span>,</span>\n<span>  nNeighbors <span class=\"op\">=</span> <span class=\"fl\">30</span>,</span>\n<span>  minDist <span class=\"op\">=</span> <span class=\"fl\">0.75</span>,</span>\n<span>  spread <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  pca <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  initialDims <span class=\"op\">=</span> <span class=\"fl\">50</span>,</span>\n<span>  normalize <span class=\"op\">=</span> <span class=\"st\">\"proportion\"</span>,</span>\n<span>  scaleFactor <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  transformationFun <span class=\"op\">=</span> <span class=\"va\">sqrt</span>,</span>\n<span>  cores <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  <span class=\"va\">...</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">celdaUmap</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">sce</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  maxCells <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  minClusterSize <span class=\"op\">=</span> <span class=\"fl\">100</span>,</span>\n<span>  modules <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  seed <span class=\"op\">=</span> <span class=\"fl\">12345</span>,</span>\n<span>  nNeighbors <span class=\"op\">=</span> <span class=\"fl\">30</span>,</span>\n<span>  minDist <span class=\"op\">=</span> <span class=\"fl\">0.75</span>,</span>\n<span>  spread <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  pca <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  initialDims <span class=\"op\">=</span> <span class=\"fl\">50</span>,</span>\n<span>  normalize <span class=\"op\">=</span> <span class=\"st\">\"proportion\"</span>,</span>\n<span>  scaleFactor <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  transformationFun <span class=\"op\">=</span> <span class=\"va\">sqrt</span>,</span>\n<span>  cores <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  <span class=\"va\">...</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>sce</dt>\n<dd><p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object\nreturned by <a href=\"celda_C.html\">celda_C</a>, <a href=\"celda_G.html\">celda_G</a>, or <a href=\"celda_CG.html\">celda_CG</a>.</p></dd>\n\n\n<dt>useAssay</dt>\n<dd><p>A string specifying which assay\nslot to use. Default \"counts\".</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the altExp slot\nto use. Default \"featureSubset\".</p></dd>\n\n\n<dt>maxCells</dt>\n<dd><p>Integer. Maximum number of cells to plot. Cells will be\nrandomly subsampled if <code>ncol(sce) &gt; maxCells</code>. Larger numbers of cells\nrequires more memory. If NULL, no subsampling will be performed.\nDefault NULL.</p></dd>\n\n\n<dt>minClusterSize</dt>\n<dd><p>Integer. Do not subsample cell clusters below this\nthreshold. Default 100.</p></dd>\n\n\n<dt>modules</dt>\n<dd><p>Integer vector. Determines which features modules to use for\nUMAP. If NULL, all modules will be used. Default NULL.</p></dd>\n\n\n<dt>seed</dt>\n<dd><p>Integer. Passed to <a href=\"https://withr.r-lib.org/reference/with_seed.html\" class=\"external-link\">with_seed</a>. For reproducibility,\na default value of 12345 is used. If NULL, no calls to\n<a href=\"https://withr.r-lib.org/reference/with_seed.html\" class=\"external-link\">with_seed</a> are made.</p></dd>\n\n\n<dt>nNeighbors</dt>\n<dd><p>The size of local neighborhood used for\nmanifold approximation. Larger values result in more global\nviews of the manifold, while smaller values result in more\nlocal data being preserved. Default 30.\nSee <a href=\"https://rdrr.io/pkg/uwot/man/umap.html\" class=\"external-link\">umap</a> for more information.</p></dd>\n\n\n<dt>minDist</dt>\n<dd><p>The effective minimum distance between embedded points.\nSmaller values will result in a more clustered/clumped\nembedding where nearby points on the manifold are drawn\ncloser together, while larger values will result on a more\neven dispersal of points. Default 0.75.\nSee <a href=\"https://rdrr.io/pkg/uwot/man/umap.html\" class=\"external-link\">umap</a> for more information.</p></dd>\n\n\n<dt>spread</dt>\n<dd><p>The effective scale of embedded points. In combination with\n<code>min_dist</code>, this determines how clustered/clumped the\n embedded points are. Default 1. See <a href=\"https://rdrr.io/pkg/uwot/man/umap.html\" class=\"external-link\">umap</a> for more information.</p></dd>\n\n\n<dt>pca</dt>\n<dd><p>Logical. Whether to perform\ndimensionality reduction with PCA before UMAP. Only works for celda_C\n<code>sce</code> objects.</p></dd>\n\n\n<dt>initialDims</dt>\n<dd><p>Integer. Number of dimensions from PCA to use as\ninput in UMAP. Default 50. Only works for celda_C <code>sce</code> objects.</p></dd>\n\n\n<dt>normalize</dt>\n<dd><p>Character. Passed to <a href=\"normalizeCounts.html\">normalizeCounts</a> in\nnormalization step. Divides counts by the library sizes for each\ncell. One of 'proportion', 'cpm', 'median', or 'mean'. 'proportion' uses\nthe total counts for each cell as the library size. 'cpm' divides the\nlibrary size of each cell by one million to produce counts per million.\n'median' divides the library size of each cell by the median library size\nacross all cells. 'mean' divides the library size of each cell by the mean\nlibrary size across all cells.</p></dd>\n\n\n<dt>scaleFactor</dt>\n<dd><p>Numeric. Sets the scale factor for cell-level\nnormalization. This scale factor is multiplied to each cell after the\nlibrary size of each cell had been adjusted in <code>normalize</code>. Default\n<code>NULL</code> which means no scale factor is applied.</p></dd>\n\n\n<dt>transformationFun</dt>\n<dd><p>Function. Applys a transformation such as 'sqrt',\n'log', 'log2', 'log10', or 'log1p'. If <code>NULL</code>, no transformation will\nbe applied. Occurs after applying normalization and scale factor. Default\n<code>NULL</code>.</p></dd>\n\n\n<dt>cores</dt>\n<dd><p>Number of threads to use. Default 1.</p></dd>\n\n\n<dt>...</dt>\n<dd><p>Additional parameters to pass to <a href=\"https://rdrr.io/pkg/uwot/man/umap.html\" class=\"external-link\">umap</a>.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p><code>sce</code> with UMAP coordinates\n (columns \"celda_UMAP1\" &amp; \"celda_UMAP2\") added to</p>\n<p></p>\n<p><code>reducedDim(sce, \"celda_UMAP\")</code>.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">umapRes</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">celdaUmap</span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/celda_C.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Cell clustering with Celda — celda_C • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Cell clustering with Celda — celda_C\"><meta property=\"og:description\" content=\"Clusters the columns of a count matrix containing single-cell\n data into K subpopulations. The\n useAssay assay slot in\n altExpName altExp slot will be used if\n it exists. Otherwise, the useAssay\n assay slot in x will be used if\n x is a SingleCellExperiment object.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Cell clustering with Celda</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/celda_C.R\" class=\"external-link\"><code>R/celda_C.R</code></a></small>\n    <div class=\"hidden name\"><code>celda_C.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Clusters the columns of a count matrix containing single-cell\n data into K subpopulations. The\n <code>useAssay</code> assay slot in\n <code>altExpName</code> altExp slot will be used if\n it exists. Otherwise, the <code>useAssay</code>\n assay slot in <code>x</code> will be used if\n <code>x</code> is a SingleCellExperiment object.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">celda_C</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  sampleLabel <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  <span class=\"va\">K</span>,</span>\n<span>  alpha <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  beta <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  algorithm <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"EM\"</span>, <span class=\"st\">\"Gibbs\"</span><span class=\"op\">)</span>,</span>\n<span>  stopIter <span class=\"op\">=</span> <span class=\"fl\">10</span>,</span>\n<span>  maxIter <span class=\"op\">=</span> <span class=\"fl\">200</span>,</span>\n<span>  splitOnIter <span class=\"op\">=</span> <span class=\"fl\">10</span>,</span>\n<span>  splitOnLast <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  seed <span class=\"op\">=</span> <span class=\"fl\">12345</span>,</span>\n<span>  nchains <span class=\"op\">=</span> <span class=\"fl\">3</span>,</span>\n<span>  zInitialize <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"split\"</span>, <span class=\"st\">\"random\"</span>, <span class=\"st\">\"predefined\"</span><span class=\"op\">)</span>,</span>\n<span>  countChecksum <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  zInit <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  logfile <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  verbose <span class=\"op\">=</span> <span class=\"cn\">TRUE</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">celda_C</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  sampleLabel <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  <span class=\"va\">K</span>,</span>\n<span>  alpha <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  beta <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  algorithm <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"EM\"</span>, <span class=\"st\">\"Gibbs\"</span><span class=\"op\">)</span>,</span>\n<span>  stopIter <span class=\"op\">=</span> <span class=\"fl\">10</span>,</span>\n<span>  maxIter <span class=\"op\">=</span> <span class=\"fl\">200</span>,</span>\n<span>  splitOnIter <span class=\"op\">=</span> <span class=\"fl\">10</span>,</span>\n<span>  splitOnLast <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  seed <span class=\"op\">=</span> <span class=\"fl\">12345</span>,</span>\n<span>  nchains <span class=\"op\">=</span> <span class=\"fl\">3</span>,</span>\n<span>  zInitialize <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"split\"</span>, <span class=\"st\">\"random\"</span>, <span class=\"st\">\"predefined\"</span><span class=\"op\">)</span>,</span>\n<span>  countChecksum <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  zInit <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  logfile <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  verbose <span class=\"op\">=</span> <span class=\"cn\">TRUE</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for ANY</span></span>\n<span><span class=\"fu\">celda_C</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  sampleLabel <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  <span class=\"va\">K</span>,</span>\n<span>  alpha <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  beta <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  algorithm <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"EM\"</span>, <span class=\"st\">\"Gibbs\"</span><span class=\"op\">)</span>,</span>\n<span>  stopIter <span class=\"op\">=</span> <span class=\"fl\">10</span>,</span>\n<span>  maxIter <span class=\"op\">=</span> <span class=\"fl\">200</span>,</span>\n<span>  splitOnIter <span class=\"op\">=</span> <span class=\"fl\">10</span>,</span>\n<span>  splitOnLast <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  seed <span class=\"op\">=</span> <span class=\"fl\">12345</span>,</span>\n<span>  nchains <span class=\"op\">=</span> <span class=\"fl\">3</span>,</span>\n<span>  zInitialize <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"split\"</span>, <span class=\"st\">\"random\"</span>, <span class=\"st\">\"predefined\"</span><span class=\"op\">)</span>,</span>\n<span>  countChecksum <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  zInit <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  logfile <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  verbose <span class=\"op\">=</span> <span class=\"cn\">TRUE</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>A SingleCellExperiment\nwith the matrix located in the assay slot under <code>useAssay</code>.\nRows represent features and columns represent cells. Alternatively,\nany matrix-like object that can be coerced to a sparse matrix of class\n\"dgCMatrix\" can be directly used as input. The matrix will automatically be\nconverted to a SingleCellExperiment object.</p></dd>\n\n\n<dt>useAssay</dt>\n<dd><p>A string specifying the name of the\nassay slot to use. Default \"counts\".</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the altExp slot\nto use. Default \"featureSubset\".</p></dd>\n\n\n<dt>sampleLabel</dt>\n<dd><p>Vector or factor. Denotes the sample label for each cell\n(column) in the count matrix.</p></dd>\n\n\n<dt>K</dt>\n<dd><p>Integer. Number of cell populations.</p></dd>\n\n\n<dt>alpha</dt>\n<dd><p>Numeric. Concentration parameter for Theta. Adds a pseudocount\nto each cell population in each sample. Default 1.</p></dd>\n\n\n<dt>beta</dt>\n<dd><p>Numeric. Concentration parameter for Phi. Adds a pseudocount to\neach feature in each cell population. Default 1.</p></dd>\n\n\n<dt>algorithm</dt>\n<dd><p>String. Algorithm to use for clustering cell subpopulations.\nOne of 'EM' or 'Gibbs'. The EM algorithm is faster, especially for larger\nnumbers of cells. However, more chains may be required to ensure a good\nsolution is found. If 'EM' is selected, then 'stopIter' will be\nautomatically set to 1. Default 'EM'.</p></dd>\n\n\n<dt>stopIter</dt>\n<dd><p>Integer. Number of iterations without improvement in the\nlog likelihood to stop inference. Default 10.</p></dd>\n\n\n<dt>maxIter</dt>\n<dd><p>Integer. Maximum number of iterations of Gibbs sampling or\nEM to perform. Default 200.</p></dd>\n\n\n<dt>splitOnIter</dt>\n<dd><p>Integer. On every `splitOnIter` iteration, a heuristic\nwill be applied to determine if a cell population should be reassigned and\nanother cell population should be split into two clusters. To disable\nsplitting, set to -1. Default 10.</p></dd>\n\n\n<dt>splitOnLast</dt>\n<dd><p>Integer. After `stopIter` iterations have been\nperformed without improvement, a heuristic will be applied to determine if\na cell population should be reassigned and another cell population should be\nsplit into two clusters. If a split occurs, then `stopIter` will be reset.\nDefault TRUE.</p></dd>\n\n\n<dt>seed</dt>\n<dd><p>Integer. Passed to <a href=\"https://withr.r-lib.org/reference/with_seed.html\" class=\"external-link\">with_seed</a>. For reproducibility,\na default value of 12345 is used. If NULL, no calls to\n<a href=\"https://withr.r-lib.org/reference/with_seed.html\" class=\"external-link\">with_seed</a> are made.</p></dd>\n\n\n<dt>nchains</dt>\n<dd><p>Integer. Number of random cluster initializations. Default 3.</p></dd>\n\n\n<dt>zInitialize</dt>\n<dd><p>Character. One of 'random', 'split', or 'predefined'.\nWith 'random', cells are randomly assigned to a populations. With 'split',\ncells will be split into sqrt(K) populations and then each population will\nbe subsequently split into another sqrt(K) populations. With 'predefined',\nvalues in `zInit` will be used to initialize `z`. Default 'split'.</p></dd>\n\n\n<dt>countChecksum</dt>\n<dd><p>Character. An MD5 checksum for the `counts` matrix.\nDefault NULL.</p></dd>\n\n\n<dt>zInit</dt>\n<dd><p>Integer vector. Sets initial starting values of z. 'zInit'\nis only used when `zInitialize = 'predfined'`. Default NULL.</p></dd>\n\n\n<dt>logfile</dt>\n<dd><p>Character. Messages will be redirected to a file named\n`logfile`. If NULL, messages will be printed to stdout.  Default NULL.</p></dd>\n\n\n<dt>verbose</dt>\n<dd><p>Logical. Whether to print log messages. Default TRUE.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object. Function\n parameter settings are stored in the metadata</p>\n<p></p>\n<p><code>\"celda_parameters\"</code> slot.\n Columns <code>celda_sample_label</code> and <code>celda_cell_cluster</code> in</p>\n<p></p>\n<p>colData contain sample labels and celda cell\n population clusters.</p>\n    </div>\n    <div id=\"see-also\">\n    <h2>See also</h2>\n    <div class=\"dont-index\"><p><a href=\"celda_G.html\">celda_G</a> for feature clustering and <a href=\"celda_CG.html\">celda_CG</a> for\n simultaneous clustering of features and cells. <a href=\"celdaGridSearch.html\">celdaGridSearch</a> can\n be used to run multiple values of K and multiple chains in parallel.</p></div>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCSim</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">celda_C</span><span class=\"op\">(</span><span class=\"va\">celdaCSim</span><span class=\"op\">$</span><span class=\"va\">counts</span>,</span></span>\n<span class=\"r-in\"><span>    K <span class=\"op\">=</span> <span class=\"va\">celdaCSim</span><span class=\"op\">$</span><span class=\"va\">K</span>,</span></span>\n<span class=\"r-in\"><span>    sampleLabel <span class=\"op\">=</span> <span class=\"va\">celdaCSim</span><span class=\"op\">$</span><span class=\"va\">sampleLabel</span>,</span></span>\n<span class=\"r-in\"><span>    nchains <span class=\"op\">=</span> <span class=\"fl\">1</span><span class=\"op\">)</span></span></span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> --------------------------------------------------</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Starting Celda_C: Clustering cells.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> --------------------------------------------------</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:46 2024 .. Initializing 'z' in chain 1 with 'split' </span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:46 2024 .... Completed iteration: 1 | logLik: -1282027.27277705</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:46 2024 .... Completed iteration: 2 | logLik: -1282027.27277705</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:46 2024 .. Finished chain 1</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> --------------------------------------------------</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Completed Celda_C. Total time: 0.1405442 secs</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> --------------------------------------------------</span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/celda_CG.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Cell and feature clustering with Celda — celda_CG • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Cell and feature clustering with Celda — celda_CG\"><meta property=\"og:description\" content=\"Clusters the rows and columns of a count matrix containing\n single-cell data into L modules and K subpopulations, respectively. The\n useAssay assay slot in\n altExpName altExp slot will be used if\n it exists. Otherwise, the useAssay\n assay slot in x will be used if\n x is a SingleCellExperiment object.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Cell and feature clustering with Celda</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/celda_CG.R\" class=\"external-link\"><code>R/celda_CG.R</code></a></small>\n    <div class=\"hidden name\"><code>celda_CG.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Clusters the rows and columns of a count matrix containing\n single-cell data into L modules and K subpopulations, respectively. The\n <code>useAssay</code> assay slot in\n <code>altExpName</code> altExp slot will be used if\n it exists. Otherwise, the <code>useAssay</code>\n assay slot in <code>x</code> will be used if\n <code>x</code> is a SingleCellExperiment object.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">celda_CG</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  sampleLabel <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  <span class=\"va\">K</span>,</span>\n<span>  <span class=\"va\">L</span>,</span>\n<span>  alpha <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  beta <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  delta <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  gamma <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  algorithm <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"EM\"</span>, <span class=\"st\">\"Gibbs\"</span><span class=\"op\">)</span>,</span>\n<span>  stopIter <span class=\"op\">=</span> <span class=\"fl\">10</span>,</span>\n<span>  maxIter <span class=\"op\">=</span> <span class=\"fl\">200</span>,</span>\n<span>  splitOnIter <span class=\"op\">=</span> <span class=\"fl\">10</span>,</span>\n<span>  splitOnLast <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  seed <span class=\"op\">=</span> <span class=\"fl\">12345</span>,</span>\n<span>  nchains <span class=\"op\">=</span> <span class=\"fl\">3</span>,</span>\n<span>  zInitialize <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"split\"</span>, <span class=\"st\">\"random\"</span>, <span class=\"st\">\"predefined\"</span><span class=\"op\">)</span>,</span>\n<span>  yInitialize <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"split\"</span>, <span class=\"st\">\"random\"</span>, <span class=\"st\">\"predefined\"</span><span class=\"op\">)</span>,</span>\n<span>  countChecksum <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  zInit <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  yInit <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  logfile <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  verbose <span class=\"op\">=</span> <span class=\"cn\">TRUE</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">celda_CG</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  sampleLabel <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  <span class=\"va\">K</span>,</span>\n<span>  <span class=\"va\">L</span>,</span>\n<span>  alpha <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  beta <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  delta <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  gamma <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  algorithm <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"EM\"</span>, <span class=\"st\">\"Gibbs\"</span><span class=\"op\">)</span>,</span>\n<span>  stopIter <span class=\"op\">=</span> <span class=\"fl\">10</span>,</span>\n<span>  maxIter <span class=\"op\">=</span> <span class=\"fl\">200</span>,</span>\n<span>  splitOnIter <span class=\"op\">=</span> <span class=\"fl\">10</span>,</span>\n<span>  splitOnLast <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  seed <span class=\"op\">=</span> <span class=\"fl\">12345</span>,</span>\n<span>  nchains <span class=\"op\">=</span> <span class=\"fl\">3</span>,</span>\n<span>  zInitialize <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"split\"</span>, <span class=\"st\">\"random\"</span>, <span class=\"st\">\"predefined\"</span><span class=\"op\">)</span>,</span>\n<span>  yInitialize <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"split\"</span>, <span class=\"st\">\"random\"</span>, <span class=\"st\">\"predefined\"</span><span class=\"op\">)</span>,</span>\n<span>  countChecksum <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  zInit <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  yInit <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  logfile <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  verbose <span class=\"op\">=</span> <span class=\"cn\">TRUE</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for ANY</span></span>\n<span><span class=\"fu\">celda_CG</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  sampleLabel <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  <span class=\"va\">K</span>,</span>\n<span>  <span class=\"va\">L</span>,</span>\n<span>  alpha <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  beta <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  delta <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  gamma <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  algorithm <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"EM\"</span>, <span class=\"st\">\"Gibbs\"</span><span class=\"op\">)</span>,</span>\n<span>  stopIter <span class=\"op\">=</span> <span class=\"fl\">10</span>,</span>\n<span>  maxIter <span class=\"op\">=</span> <span class=\"fl\">200</span>,</span>\n<span>  splitOnIter <span class=\"op\">=</span> <span class=\"fl\">10</span>,</span>\n<span>  splitOnLast <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  seed <span class=\"op\">=</span> <span class=\"fl\">12345</span>,</span>\n<span>  nchains <span class=\"op\">=</span> <span class=\"fl\">3</span>,</span>\n<span>  zInitialize <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"split\"</span>, <span class=\"st\">\"random\"</span>, <span class=\"st\">\"predefined\"</span><span class=\"op\">)</span>,</span>\n<span>  yInitialize <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"split\"</span>, <span class=\"st\">\"random\"</span>, <span class=\"st\">\"predefined\"</span><span class=\"op\">)</span>,</span>\n<span>  countChecksum <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  zInit <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  yInit <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  logfile <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  verbose <span class=\"op\">=</span> <span class=\"cn\">TRUE</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>A SingleCellExperiment\nwith the matrix located in the assay slot under <code>useAssay</code>.\nRows represent features and columns represent cells. Alternatively,\nany matrix-like object that can be coerced to a sparse matrix of class\n\"dgCMatrix\" can be directly used as input. The matrix will automatically be\nconverted to a SingleCellExperiment object.</p></dd>\n\n\n<dt>useAssay</dt>\n<dd><p>A string specifying the name of the\nassay slot to use. Default \"counts\".</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the altExp slot\nto use. Default \"featureSubset\".</p></dd>\n\n\n<dt>sampleLabel</dt>\n<dd><p>Vector or factor. Denotes the sample label for each cell\n(column) in the count matrix.</p></dd>\n\n\n<dt>K</dt>\n<dd><p>Integer. Number of cell populations.</p></dd>\n\n\n<dt>L</dt>\n<dd><p>Integer. Number of feature modules.</p></dd>\n\n\n<dt>alpha</dt>\n<dd><p>Numeric. Concentration parameter for Theta. Adds a pseudocount\nto each cell population in each sample. Default 1.</p></dd>\n\n\n<dt>beta</dt>\n<dd><p>Numeric. Concentration parameter for Phi. Adds a pseudocount to\neach feature module in each cell population. Default 1.</p></dd>\n\n\n<dt>delta</dt>\n<dd><p>Numeric. Concentration parameter for Psi. Adds a pseudocount to\neach feature in each module. Default 1.</p></dd>\n\n\n<dt>gamma</dt>\n<dd><p>Numeric. Concentration parameter for Eta. Adds a pseudocount to\nthe number of features in each module. Default 1.</p></dd>\n\n\n<dt>algorithm</dt>\n<dd><p>String. Algorithm to use for clustering cell subpopulations.\nOne of 'EM' or 'Gibbs'. The EM algorithm for cell clustering is faster,\nespecially for larger numbers of cells. However, more chains may be required\nto ensure a good solution is found. Default 'EM'.</p></dd>\n\n\n<dt>stopIter</dt>\n<dd><p>Integer. Number of iterations without improvement in the log\nlikelihood to stop inference. Default 10.</p></dd>\n\n\n<dt>maxIter</dt>\n<dd><p>Integer. Maximum number of iterations of Gibbs sampling to\nperform. Default 200.</p></dd>\n\n\n<dt>splitOnIter</dt>\n<dd><p>Integer. On every <code>splitOnIter</code> iteration,\na heuristic\nwill be applied to determine if a cell population or feature module should\nbe reassigned and another cell population or feature module should be split\ninto two clusters. To disable splitting, set to -1. Default 10.</p></dd>\n\n\n<dt>splitOnLast</dt>\n<dd><p>Integer. After <code>stopIter</code> iterations have been\nperformed without improvement, a heuristic will be applied to determine if\na cell population or feature module should be reassigned and another cell\npopulation or feature module should be split into two clusters. If a split\noccurs, then 'stopIter' will be reset. Default TRUE.</p></dd>\n\n\n<dt>seed</dt>\n<dd><p>Integer. Passed to <a href=\"https://withr.r-lib.org/reference/with_seed.html\" class=\"external-link\">with_seed</a>. For reproducibility,\na default value of 12345 is used. If NULL, no calls to\n<a href=\"https://withr.r-lib.org/reference/with_seed.html\" class=\"external-link\">with_seed</a> are made.</p></dd>\n\n\n<dt>nchains</dt>\n<dd><p>Integer. Number of random cluster initializations. Default 3.</p></dd>\n\n\n<dt>zInitialize</dt>\n<dd><p>Chararacter. One of 'random', 'split', or 'predefined'.\nWith 'random', cells are randomly assigned to a populations. With 'split',\ncells will be split into sqrt(K) populations and then each population will\nbe subsequently split into another sqrt(K) populations. With 'predefined',\nvalues in <code>zInit</code> will be used to initialize <code>z</code>. Default 'split'.</p></dd>\n\n\n<dt>yInitialize</dt>\n<dd><p>Character. One of 'random', 'split', or 'predefined'.\nWith 'random', features are randomly assigned to a modules. With 'split',\nfeatures will be split into sqrt(L) modules and then each module will be\nsubsequently split into another sqrt(L) modules. With 'predefined', values\nin <code>yInit</code> will be used to initialize <code>y</code>. Default 'split'.</p></dd>\n\n\n<dt>countChecksum</dt>\n<dd><p>Character. An MD5 checksum for the counts matrix.\nDefault NULL.</p></dd>\n\n\n<dt>zInit</dt>\n<dd><p>Integer vector. Sets initial starting values of z. 'zInit'\nis only used when `zInitialize = 'predfined'`. Default NULL.</p></dd>\n\n\n<dt>yInit</dt>\n<dd><p>Integer vector. Sets initial starting values of y.\n'yInit' is only be used when `yInitialize = \"predefined\"`. Default NULL.</p></dd>\n\n\n<dt>logfile</dt>\n<dd><p>Character. Messages will be redirected to a file named\n`logfile`. If NULL, messages will be printed to stdout.  Default NULL.</p></dd>\n\n\n<dt>verbose</dt>\n<dd><p>Logical. Whether to print log messages. Default TRUE.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>A SingleCellExperiment object. Function\n parameter settings are stored in metadata</p>\n<p></p>\n<p><code>\"celda_parameters\"</code> in altExp slot.\n In altExp slot,\n columns <code>celda_sample_label</code> and <code>celda_cell_cluster</code> in</p>\n<p></p>\n<p>colData contain sample labels and celda cell\n population clusters. Column <code>celda_feature_module</code> in</p>\n<p></p>\n<p>rowData contains feature modules.</p>\n    </div>\n    <div id=\"see-also\">\n    <h2>See also</h2>\n    <div class=\"dont-index\"><p><a href=\"celda_G.html\">celda_G</a> for feature clustering and <a href=\"celda_C.html\">celda_C</a> for\n clustering cells. <a href=\"celdaGridSearch.html\">celdaGridSearch</a> can be used to run multiple\n values of K/L and multiple chains in parallel.</p></div>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">celda_CG</span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span><span class=\"op\">$</span><span class=\"va\">counts</span>,</span></span>\n<span class=\"r-in\"><span>    K <span class=\"op\">=</span> <span class=\"va\">celdaCGSim</span><span class=\"op\">$</span><span class=\"va\">K</span>,</span></span>\n<span class=\"r-in\"><span>    L <span class=\"op\">=</span> <span class=\"va\">celdaCGSim</span><span class=\"op\">$</span><span class=\"va\">L</span>,</span></span>\n<span class=\"r-in\"><span>    sampleLabel <span class=\"op\">=</span> <span class=\"va\">celdaCGSim</span><span class=\"op\">$</span><span class=\"va\">sampleLabel</span>,</span></span>\n<span class=\"r-in\"><span>    nchains <span class=\"op\">=</span> <span class=\"fl\">1</span><span class=\"op\">)</span></span></span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> --------------------------------------------------</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Starting Celda_CG: Clustering cells and genes.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> --------------------------------------------------</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:47 2024 .. Initializing 'z' in chain 1 with 'split' </span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:47 2024 .. Initializing 'y' in chain 1 with 'split' </span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:50 2024 .... Completed iteration: 1 | logLik: -1215542.98684529</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:50 2024 .... Completed iteration: 2 | logLik: -1215541.0958389</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:50 2024 .... Completed iteration: 3 | logLik: -1215541.0958389</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:50 2024 .... Completed iteration: 4 | logLik: -1215542.98684529</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:50 2024 .... Completed iteration: 5 | logLik: -1215541.0958389</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:50 2024 .... Completed iteration: 6 | logLik: -1215541.0958389</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:50 2024 .... Completed iteration: 7 | logLik: -1215541.0958389</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:50 2024 .... Completed iteration: 8 | logLik: -1215541.0958389</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:50 2024 .... Completed iteration: 9 | logLik: -1215541.0958389</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:50 2024 .... Determining if any gene clusters should be split.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:51 2024 .... No additional splitting was performed.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:51 2024 .... Determining if any cell clusters should be split.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:51 2024 .... No additional splitting was performed.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:51 2024 .... Completed iteration: 10 | logLik: -1215541.0958389</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:51 2024 .... Determining if any cell clusters should be split.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:51 2024 .... No additional splitting was performed.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:51 2024 .... Completed iteration: 11 | logLik: -1215541.0958389</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:51 2024 .. Finished chain 1</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> --------------------------------------------------</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Completed Celda_CG. Total time: 3.852616 secs</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> --------------------------------------------------</span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/celda_G.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Feature clustering with Celda — celda_G • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Feature clustering with Celda — celda_G\"><meta property=\"og:description\" content=\"Clusters the rows of a count matrix containing single-cell data\n into L modules. The\n useAssay assay slot in\n altExpName altExp slot will be used if\n it exists. Otherwise, the useAssay\n assay slot in x will be used if\n x is a SingleCellExperiment object.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Feature clustering with Celda</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/celda_G.R\" class=\"external-link\"><code>R/celda_G.R</code></a></small>\n    <div class=\"hidden name\"><code>celda_G.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Clusters the rows of a count matrix containing single-cell data\n into L modules. The\n <code>useAssay</code> assay slot in\n <code>altExpName</code> altExp slot will be used if\n it exists. Otherwise, the <code>useAssay</code>\n assay slot in <code>x</code> will be used if\n <code>x</code> is a SingleCellExperiment object.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">celda_G</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  <span class=\"va\">L</span>,</span>\n<span>  beta <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  delta <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  gamma <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  stopIter <span class=\"op\">=</span> <span class=\"fl\">10</span>,</span>\n<span>  maxIter <span class=\"op\">=</span> <span class=\"fl\">200</span>,</span>\n<span>  splitOnIter <span class=\"op\">=</span> <span class=\"fl\">10</span>,</span>\n<span>  splitOnLast <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  seed <span class=\"op\">=</span> <span class=\"fl\">12345</span>,</span>\n<span>  nchains <span class=\"op\">=</span> <span class=\"fl\">3</span>,</span>\n<span>  yInitialize <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"split\"</span>, <span class=\"st\">\"random\"</span>, <span class=\"st\">\"predefined\"</span><span class=\"op\">)</span>,</span>\n<span>  countChecksum <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  yInit <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  logfile <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  verbose <span class=\"op\">=</span> <span class=\"cn\">TRUE</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">celda_G</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  <span class=\"va\">L</span>,</span>\n<span>  beta <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  delta <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  gamma <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  stopIter <span class=\"op\">=</span> <span class=\"fl\">10</span>,</span>\n<span>  maxIter <span class=\"op\">=</span> <span class=\"fl\">200</span>,</span>\n<span>  splitOnIter <span class=\"op\">=</span> <span class=\"fl\">10</span>,</span>\n<span>  splitOnLast <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  seed <span class=\"op\">=</span> <span class=\"fl\">12345</span>,</span>\n<span>  nchains <span class=\"op\">=</span> <span class=\"fl\">3</span>,</span>\n<span>  yInitialize <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"split\"</span>, <span class=\"st\">\"random\"</span>, <span class=\"st\">\"predefined\"</span><span class=\"op\">)</span>,</span>\n<span>  countChecksum <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  yInit <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  logfile <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  verbose <span class=\"op\">=</span> <span class=\"cn\">TRUE</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for ANY</span></span>\n<span><span class=\"fu\">celda_G</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  <span class=\"va\">L</span>,</span>\n<span>  beta <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  delta <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  gamma <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  stopIter <span class=\"op\">=</span> <span class=\"fl\">10</span>,</span>\n<span>  maxIter <span class=\"op\">=</span> <span class=\"fl\">200</span>,</span>\n<span>  splitOnIter <span class=\"op\">=</span> <span class=\"fl\">10</span>,</span>\n<span>  splitOnLast <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  seed <span class=\"op\">=</span> <span class=\"fl\">12345</span>,</span>\n<span>  nchains <span class=\"op\">=</span> <span class=\"fl\">3</span>,</span>\n<span>  yInitialize <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"split\"</span>, <span class=\"st\">\"random\"</span>, <span class=\"st\">\"predefined\"</span><span class=\"op\">)</span>,</span>\n<span>  countChecksum <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  yInit <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  logfile <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  verbose <span class=\"op\">=</span> <span class=\"cn\">TRUE</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>A SingleCellExperiment\nwith the matrix located in the assay slot under <code>useAssay</code>.\nRows represent features and columns represent cells. Alternatively,\nany matrix-like object that can be coerced to a sparse matrix of class\n\"dgCMatrix\" can be directly used as input. The matrix will automatically be\nconverted to a SingleCellExperiment object.</p></dd>\n\n\n<dt>useAssay</dt>\n<dd><p>A string specifying the name of the\nassay slot to use. Default \"counts\".</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the altExp slot\nto use. Default \"featureSubset\".</p></dd>\n\n\n<dt>L</dt>\n<dd><p>Integer. Number of feature modules.</p></dd>\n\n\n<dt>beta</dt>\n<dd><p>Numeric. Concentration parameter for Phi. Adds a pseudocount to\neach feature module in each cell. Default 1.</p></dd>\n\n\n<dt>delta</dt>\n<dd><p>Numeric. Concentration parameter for Psi. Adds a pseudocount to\neach feature in each module. Default 1.</p></dd>\n\n\n<dt>gamma</dt>\n<dd><p>Numeric. Concentration parameter for Eta. Adds a pseudocount to\nthe number of features in each module. Default 1.</p></dd>\n\n\n<dt>stopIter</dt>\n<dd><p>Integer. Number of iterations without improvement in the\nlog likelihood to stop inference. Default 10.</p></dd>\n\n\n<dt>maxIter</dt>\n<dd><p>Integer. Maximum number of iterations of Gibbs sampling to\nperform. Default 200.</p></dd>\n\n\n<dt>splitOnIter</dt>\n<dd><p>Integer. On every `splitOnIter` iteration, a heuristic\nwill be applied to determine if a feature module should be reassigned and\nanother feature module should be split into two clusters. To disable\nsplitting, set to -1. Default 10.</p></dd>\n\n\n<dt>splitOnLast</dt>\n<dd><p>Integer. After `stopIter` iterations have been\nperformed without improvement, a heuristic will be applied to determine if\na cell population should be reassigned and another cell population should be\nsplit into two clusters. If a split occurs, then `stopIter` will be reset.\nDefault TRUE.</p></dd>\n\n\n<dt>seed</dt>\n<dd><p>Integer. Passed to <a href=\"https://withr.r-lib.org/reference/with_seed.html\" class=\"external-link\">with_seed</a>. For reproducibility,\na default value of 12345 is used. If NULL, no calls to\n<a href=\"https://withr.r-lib.org/reference/with_seed.html\" class=\"external-link\">with_seed</a> are made.</p></dd>\n\n\n<dt>nchains</dt>\n<dd><p>Integer. Number of random cluster initializations. Default 3.</p></dd>\n\n\n<dt>yInitialize</dt>\n<dd><p>Chararacter. One of 'random', 'split', or 'predefined'.\nWith 'random', features are randomly assigned to a modules. With 'split',\nfeatures will be split into sqrt(L) modules and then each module will be\nsubsequently split into another sqrt(L) modules. With 'predefined', values\nin `yInit` will be used to initialize `y`. Default 'split'.</p></dd>\n\n\n<dt>countChecksum</dt>\n<dd><p>Character. An MD5 checksum for the `counts` matrix.\nDefault NULL.</p></dd>\n\n\n<dt>yInit</dt>\n<dd><p>Integer vector. Sets initial starting values of y.\n`yInit` can only be used when `yInitialize = 'predefined'`. Default NULL.</p></dd>\n\n\n<dt>logfile</dt>\n<dd><p>Character. Messages will be redirected to a file named\n<code>logfile</code>. If NULL, messages will be printed to stdout. Default NULL.</p></dd>\n\n\n<dt>verbose</dt>\n<dd><p>Logical. Whether to print log messages. Default TRUE.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>A SingleCellExperiment object. Function\n parameter settings are stored in the metadata</p>\n<p></p>\n<p><code>\"celda_parameters\"</code> slot. Column <code>celda_feature_module</code> in</p>\n<p></p>\n<p>rowData contains feature modules.</p>\n    </div>\n    <div id=\"see-also\">\n    <h2>See also</h2>\n    <div class=\"dont-index\"><p><a href=\"celda_C.html\">celda_C</a> for cell clustering and <a href=\"celda_CG.html\">celda_CG</a> for\n simultaneous clustering of features and cells. <a href=\"celdaGridSearch.html\">celdaGridSearch</a> can\n be used to run multiple values of L and multiple chains in parallel.</p></div>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaGSim</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">celda_G</span><span class=\"op\">(</span><span class=\"va\">celdaGSim</span><span class=\"op\">$</span><span class=\"va\">counts</span>, L <span class=\"op\">=</span> <span class=\"va\">celdaGSim</span><span class=\"op\">$</span><span class=\"va\">L</span>, nchains <span class=\"op\">=</span> <span class=\"fl\">1</span><span class=\"op\">)</span></span></span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> --------------------------------------------------</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Starting Celda_G: Clustering genes.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> --------------------------------------------------</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:52 2024 .. Initializing 'y' in chain 1 with 'split' </span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:53 2024 .... Completed iteration: 1 | logLik: -290669.046132139</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:53 2024 .... Completed iteration: 2 | logLik: -290669.046132139</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:53 2024 .... Completed iteration: 3 | logLik: -290669.046132139</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:53 2024 .... Completed iteration: 4 | logLik: -290669.046132139</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:53 2024 .... Completed iteration: 5 | logLik: -290669.046132139</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:53 2024 .... Completed iteration: 6 | logLik: -290669.046132139</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:53 2024 .... Completed iteration: 7 | logLik: -290669.046132139</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:53 2024 .... Completed iteration: 8 | logLik: -290669.046132139</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:53 2024 .... Completed iteration: 9 | logLik: -290669.046132139</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:53 2024 .... Determining if any gene clusters should be split.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:54 2024 .... No additional splitting was performed.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:54 2024 .... Completed iteration: 10 | logLik: -290669.046132139</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:54 2024 .... Completed iteration: 11 | logLik: -290669.046132139</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:54 2024 .. Finished chain 1</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> --------------------------------------------------</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Completed Celda_G. Total time: 2.01088 secs</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> --------------------------------------------------</span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/celdatosce.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Convert old celda model object to SCE object — celdatosce • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Convert old celda model object to SCE object — celdatosce\"><meta property=\"og:description\" content='Convert a old celda model object (celda_C,\n celda_G, or celda_CG object) to a\n SingleCellExperiment object containing celda model\n information in metadata slot. Counts matrix is stored in the\n \"counts\" assay slot in assays.'><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Convert old celda model object to <code>SCE</code> object</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/celdatosce.R\" class=\"external-link\"><code>R/celdatosce.R</code></a></small>\n    <div class=\"hidden name\"><code>celdatosce.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Convert a old celda model object (<code>celda_C</code>,\n <code>celda_G</code>, or <code>celda_CG</code> object) to a\n SingleCellExperiment object containing celda model\n information in <code>metadata</code> slot. Counts matrix is stored in the\n <code>\"counts\"</code> assay slot in <code>assays</code>.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">celdatosce</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">celdaModel</span>,</span>\n<span>  <span class=\"va\">counts</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for celda_C</span></span>\n<span><span class=\"fu\">celdatosce</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">celdaModel</span>,</span>\n<span>  <span class=\"va\">counts</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for celda_G</span></span>\n<span><span class=\"fu\">celdatosce</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">celdaModel</span>,</span>\n<span>  <span class=\"va\">counts</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for celda_CG</span></span>\n<span><span class=\"fu\">celdatosce</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">celdaModel</span>,</span>\n<span>  <span class=\"va\">counts</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for celdaList</span></span>\n<span><span class=\"fu\">celdatosce</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">celdaModel</span>,</span>\n<span>  <span class=\"va\">counts</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>celdaModel</dt>\n<dd><p>A <code>celdaModel</code> or <code>celdaList</code> object generated\nusing older versions of <code>celda</code>.</p></dd>\n\n\n<dt>counts</dt>\n<dd><p>A numeric <a href=\"https://rdrr.io/r/base/matrix.html\" class=\"external-link\">matrix</a> of counts used to generate\n<code>celdaModel</code>. Dimensions and MD5 checksum will be checked by\n<a href=\"compareCountMatrix.html\">compareCountMatrix</a>.</p></dd>\n\n\n<dt>useAssay</dt>\n<dd><p>A string specifying the name of the\nassay slot to use. Default \"counts\".</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the altExp slot\nto use. Default \"featureSubset\".</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>A SingleCellExperiment object. Function\n parameter settings are stored in the metadata</p>\n<p></p>\n<p><code>\"celda_parameters\"</code> slot.\n Columns <code>celda_sample_label</code> and <code>celda_cell_cluster</code> in</p>\n<p></p>\n<p>colData contain sample labels and celda cell\n population clusters. Column <code>celda_feature_module</code> in</p>\n<p></p>\n<p>rowData contain feature modules.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCMod</span>, <span class=\"va\">celdaCSim</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">celdatosce</span><span class=\"op\">(</span><span class=\"va\">celdaCMod</span>, <span class=\"va\">celdaCSim</span><span class=\"op\">$</span><span class=\"va\">counts</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaGMod</span>, <span class=\"va\">celdaGSim</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">celdatosce</span><span class=\"op\">(</span><span class=\"va\">celdaGMod</span>, <span class=\"va\">celdaGSim</span><span class=\"op\">$</span><span class=\"va\">counts</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGMod</span>, <span class=\"va\">celdaCGSim</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">celdatosce</span><span class=\"op\">(</span><span class=\"va\">celdaCGMod</span>, <span class=\"va\">celdaCGSim</span><span class=\"op\">$</span><span class=\"va\">counts</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGGridSearchRes</span>, <span class=\"va\">celdaCGSim</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">celdatosce</span><span class=\"op\">(</span><span class=\"va\">celdaCGGridSearchRes</span>, <span class=\"va\">celdaCGSim</span><span class=\"op\">$</span><span class=\"va\">counts</span><span class=\"op\">)</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/clusterProbability.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Get the conditional probabilities of cell in subpopulations from celda\n model — clusterProbability • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Get the conditional probabilities of cell in subpopulations from celda\n model — clusterProbability\"><meta property=\"og:description\" content=\"Calculate the conditional probability of each cell belonging to\n each subpopulation given all other cell cluster assignments and/or\n each feature belonging to each module given all other feature cluster\n assignments in a celda model.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Get the conditional probabilities of cell in subpopulations from celda\n model</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/clusterProbability.R\" class=\"external-link\"><code>R/clusterProbability.R</code></a></small>\n    <div class=\"hidden name\"><code>clusterProbability.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Calculate the conditional probability of each cell belonging to\n each subpopulation given all other cell cluster assignments and/or\n each feature belonging to each module given all other feature cluster\n assignments in a celda model.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">clusterProbability</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">sce</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  log <span class=\"op\">=</span> <span class=\"cn\">FALSE</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">clusterProbability</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">sce</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  log <span class=\"op\">=</span> <span class=\"cn\">FALSE</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>sce</dt>\n<dd><p>A SingleCellExperiment object returned by\n<a href=\"celda_C.html\">celda_C</a>, <a href=\"celda_G.html\">celda_G</a>, or <a href=\"celda_CG.html\">celda_CG</a>, with the matrix\nlocated in the <code>useAssay</code> assay slot.\nRows represent features and columns represent cells.</p></dd>\n\n\n<dt>useAssay</dt>\n<dd><p>A string specifying which assay\nslot to use. Default \"counts\".</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the altExp slot\nto use. Default \"featureSubset\".</p></dd>\n\n\n<dt>log</dt>\n<dd><p>Logical. If <code>FALSE</code>, then the normalized conditional\nprobabilities will be returned. If <code>TRUE</code>, then the unnormalized log\nprobabilities will be returned. Default <code>FALSE</code>.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>A list containging a matrix for the conditional cell subpopulation\n cluster and/or feature module probabilities.</p>\n    </div>\n    <div id=\"see-also\">\n    <h2>See also</h2>\n    <div class=\"dont-index\"><p>`celda_C()` for clustering cells</p></div>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">clusterProb</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">clusterProbability</span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span>, log <span class=\"op\">=</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaC</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">clusterProb</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">clusterProbability</span><span class=\"op\">(</span><span class=\"va\">sceCeldaC</span><span class=\"op\">)</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/compareCountMatrix.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Check count matrix consistency — compareCountMatrix • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Check count matrix consistency — compareCountMatrix\"><meta property=\"og:description\" content=\"Checks if the counts matrix is the same one used to generate\n the celda model object by comparing dimensions and MD5 checksum.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Check count matrix consistency</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/celda_functions.R\" class=\"external-link\"><code>R/celda_functions.R</code></a></small>\n    <div class=\"hidden name\"><code>compareCountMatrix.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Checks if the counts matrix is the same one used to generate\n the celda model object by comparing dimensions and MD5 checksum.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">compareCountMatrix</span><span class=\"op\">(</span><span class=\"va\">counts</span>, <span class=\"va\">celdaMod</span>, errorOnMismatch <span class=\"op\">=</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for ANY,celdaModel</span></span>\n<span><span class=\"fu\">compareCountMatrix</span><span class=\"op\">(</span><span class=\"va\">counts</span>, <span class=\"va\">celdaMod</span>, errorOnMismatch <span class=\"op\">=</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for ANY,celdaList</span></span>\n<span><span class=\"fu\">compareCountMatrix</span><span class=\"op\">(</span><span class=\"va\">counts</span>, <span class=\"va\">celdaMod</span>, errorOnMismatch <span class=\"op\">=</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>counts</dt>\n<dd><p>Integer , Numeric, or Sparse matrix. Rows represent features\nand columns represent cells.</p></dd>\n\n\n<dt>celdaMod</dt>\n<dd><p>A <code>celdaModel</code> or <code>celdaList</code> object.</p></dd>\n\n\n<dt>errorOnMismatch</dt>\n<dd><p>Logical. Whether to throw an error in the event of\na mismatch. Default TRUE.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>Returns TRUE if provided count matrix matches the one used in the\n celda object and/or <code>errorOnMismatch = FALSE</code>, FALSE otherwise.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span>, <span class=\"va\">celdaCGMod</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">compareCountMatrix</span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span><span class=\"op\">$</span><span class=\"va\">counts</span>, <span class=\"va\">celdaCGMod</span>, errorOnMismatch <span class=\"op\">=</span> <span class=\"cn\">FALSE</span><span class=\"op\">)</span></span></span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [1] TRUE</span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span>, <span class=\"va\">celdaCGGridSearchRes</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">compareCountMatrix</span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span><span class=\"op\">$</span><span class=\"va\">counts</span>, <span class=\"va\">celdaCGGridSearchRes</span>,</span></span>\n<span class=\"r-in\"><span>    errorOnMismatch <span class=\"op\">=</span> <span class=\"cn\">FALSE</span><span class=\"op\">)</span></span></span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [1] TRUE</span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/contaminationSim.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>contaminationSim — contaminationSim • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"contaminationSim — contaminationSim\"><meta property=\"og:description\" content=\"A toy contamination data generated by\n simulateContamination\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>contaminationSim</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/data.R\" class=\"external-link\"><code>R/data.R</code></a></small>\n    <div class=\"hidden name\"><code>contaminationSim.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>A toy contamination data generated by\n <a href=\"simulateContamination.html\">simulateContamination</a></p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"va\">contaminationSim</span></span></code></pre></div>\n    </div>\n\n    <div id=\"format\">\n    <h2>Format</h2>\n    <p>A list</p>\n    </div>\n\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/countChecksum-celdaList-method.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Get the MD5 hash of the count matrix from the celdaList — countChecksum,celdaList-method • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Get the MD5 hash of the count matrix from the celdaList — countChecksum,celdaList-method\"><meta property=\"og:description\" content=\"Returns the MD5 hash of the count matrix used to generate the\n celdaList.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Get the MD5 hash of the count matrix from the celdaList</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/accessors.R\" class=\"external-link\"><code>R/accessors.R</code></a></small>\n    <div class=\"hidden name\"><code>countChecksum-celdaList-method.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Returns the MD5 hash of the count matrix used to generate the\n celdaList.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"co\"># S4 method for celdaList</span></span>\n<span><span class=\"fu\"><a href=\"countChecksum.html\">countChecksum</a></span><span class=\"op\">(</span><span class=\"va\">celdaList</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>celdaList</dt>\n<dd><p>An object of class celdaList.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>A character string of length 32 containing the MD5 digest of\n the count matrix.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGGridSearchRes</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">countChecksum</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"countChecksum.html\">countChecksum</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGGridSearchRes</span><span class=\"op\">)</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/countChecksum.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Get the MD5 hash of the count matrix from the celdaList — countChecksum • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Get the MD5 hash of the count matrix from the celdaList — countChecksum\"><meta property=\"og:description\" content=\"Returns the MD5 hash of the count matrix used to generate the\n celdaList.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Get the MD5 hash of the count matrix from the celdaList</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/accessors.R\" class=\"external-link\"><code>R/accessors.R</code></a></small>\n    <div class=\"hidden name\"><code>countChecksum.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Returns the MD5 hash of the count matrix used to generate the\n celdaList.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">countChecksum</span><span class=\"op\">(</span><span class=\"va\">celdaList</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>celdaList</dt>\n<dd><p>An object of class celdaList.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>A character string of length 32 containing the MD5 digest of\n the count matrix.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGGridSearchRes</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">countChecksum</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">countChecksum</span><span class=\"op\">(</span><span class=\"va\">celdaCGGridSearchRes</span><span class=\"op\">)</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/decontX.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Contamination estimation with decontX — decontX • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Contamination estimation with decontX — decontX\"><meta property=\"og:description\" content=\"Identifies contamination from factors such as ambient RNA\nin single cell genomic datasets.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Contamination estimation with decontX</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/decon.R\" class=\"external-link\"><code>R/decon.R</code></a></small>\n    <div class=\"hidden name\"><code>decontX.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Identifies contamination from factors such as ambient RNA\nin single cell genomic datasets.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">decontX</span><span class=\"op\">(</span><span class=\"va\">x</span>, <span class=\"va\">...</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">decontX</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  assayName <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  z <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  batch <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  background <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  bgAssayName <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  bgBatch <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  maxIter <span class=\"op\">=</span> <span class=\"fl\">500</span>,</span>\n<span>  delta <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"fl\">10</span>, <span class=\"fl\">10</span><span class=\"op\">)</span>,</span>\n<span>  estimateDelta <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  convergence <span class=\"op\">=</span> <span class=\"fl\">0.001</span>,</span>\n<span>  iterLogLik <span class=\"op\">=</span> <span class=\"fl\">10</span>,</span>\n<span>  varGenes <span class=\"op\">=</span> <span class=\"fl\">5000</span>,</span>\n<span>  dbscanEps <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  seed <span class=\"op\">=</span> <span class=\"fl\">12345</span>,</span>\n<span>  logfile <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  verbose <span class=\"op\">=</span> <span class=\"cn\">TRUE</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for ANY</span></span>\n<span><span class=\"fu\">decontX</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  z <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  batch <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  background <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  bgBatch <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  maxIter <span class=\"op\">=</span> <span class=\"fl\">500</span>,</span>\n<span>  delta <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"fl\">10</span>, <span class=\"fl\">10</span><span class=\"op\">)</span>,</span>\n<span>  estimateDelta <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  convergence <span class=\"op\">=</span> <span class=\"fl\">0.001</span>,</span>\n<span>  iterLogLik <span class=\"op\">=</span> <span class=\"fl\">10</span>,</span>\n<span>  varGenes <span class=\"op\">=</span> <span class=\"fl\">5000</span>,</span>\n<span>  dbscanEps <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  seed <span class=\"op\">=</span> <span class=\"fl\">12345</span>,</span>\n<span>  logfile <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  verbose <span class=\"op\">=</span> <span class=\"cn\">TRUE</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>A numeric matrix of counts or a <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a>\nwith the matrix located in the assay slot under <code>assayName</code>.\nCells in each batch will be subsetted and converted to a sparse matrix\nof class <code>dgCMatrix</code> from package Matrix before analysis. This\nobject should only contain filtered cells after cell calling. Empty\ncell barcodes (low expression droplets before cell calling) are not needed\nto run DecontX.</p></dd>\n\n\n<dt>...</dt>\n<dd><p>For the generic, further arguments to pass to each method.</p></dd>\n\n\n<dt>assayName</dt>\n<dd><p>Character. Name of the assay to use if <code>x</code> is a\n<a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a>.</p></dd>\n\n\n<dt>z</dt>\n<dd><p>Numeric or character vector. Cell cluster labels. If NULL,\nPCA will be used to reduce the dimensionality of the dataset initially,\n'<a href=\"https://rdrr.io/pkg/uwot/man/umap.html\" class=\"external-link\">umap</a>' from the 'uwot' package\nwill be used to further reduce the dataset to 2 dimenions and\nthe '<a href=\"https://rdrr.io/pkg/dbscan/man/dbscan.html\" class=\"external-link\">dbscan</a>' function from the 'dbscan' package\nwill be used to identify clusters of broad cell types. Default NULL.</p></dd>\n\n\n<dt>batch</dt>\n<dd><p>Numeric or character vector. Batch labels for cells.\nIf batch labels are supplied, DecontX is run on cells from each\nbatch separately. Cells run in different channels or assays\nshould be considered different batches. Default NULL.</p></dd>\n\n\n<dt>background</dt>\n<dd><p>A numeric matrix of counts or a\n<a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> with the matrix located in the assay\nslot under <code>assayName</code>. It should have the same data format as <code>x</code>\nexcept it contains the empty droplets instead of cells. When supplied,\nempirical distribution of transcripts from these empty droplets\nwill be used as the contamination distribution. Default NULL.</p></dd>\n\n\n<dt>bgAssayName</dt>\n<dd><p>Character. Name of the assay to use if <code>background</code>\nis a <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a>. Default to same as\n<code>assayName</code>.</p></dd>\n\n\n<dt>bgBatch</dt>\n<dd><p>Numeric or character vector. Batch labels for\n<code>background</code>. Its unique values should be the same as those in\n<code>batch</code>, such that each batch of cells have their corresponding batch\nof empty droplets as background, pointed by this parameter. Default to NULL.</p></dd>\n\n\n<dt>maxIter</dt>\n<dd><p>Integer. Maximum iterations of the EM algorithm. Default 500.</p></dd>\n\n\n<dt>delta</dt>\n<dd><p>Numeric Vector of length 2. Concentration parameters for\nthe Dirichlet prior for the contamination in each cell. The first element\nis the prior for the native counts while the second element is the prior for\nthe contamination counts. These essentially act as pseudocounts for the\nnative and contamination in each cell. If <code>estimateDelta = TRUE</code>,\nthis is only used to produce a random sample of proportions for an initial\nvalue of contamination in each cell. Then\n<code><a href=\"https://rdrr.io/pkg/MCMCprecision/man/fit_dirichlet.html\" class=\"external-link\">fit_dirichlet</a></code> is used to update\n<code>delta</code> in each iteration.\nIf <code>estimateDelta = FALSE</code>, then <code>delta</code> is fixed with these\nvalues for the entire inference procedure. Fixing <code>delta</code> and\nsetting a high number in the second element will force <code>decontX</code>\nto be more aggressive and estimate higher levels of contamination at\nthe expense of potentially removing native expression.\nDefault <code>c(10, 10)</code>.</p></dd>\n\n\n<dt>estimateDelta</dt>\n<dd><p>Boolean. Whether to update <code>delta</code> at each\niteration.</p></dd>\n\n\n<dt>convergence</dt>\n<dd><p>Numeric. The EM algorithm will be stopped if the maximum\ndifference in the contamination estimates between the previous and\ncurrent iterations is less than this. Default 0.001.</p></dd>\n\n\n<dt>iterLogLik</dt>\n<dd><p>Integer. Calculate log likelihood every <code>iterLogLik</code>\niteration. Default 10.</p></dd>\n\n\n<dt>varGenes</dt>\n<dd><p>Integer. The number of variable genes to use in\ndimensionality reduction before clustering. Variability is calcualted using\n<code><a href=\"https://rdrr.io/pkg/scran/man/modelGeneVar.html\" class=\"external-link\">modelGeneVar</a></code> function from the 'scran' package.\nUsed only when z is not provided. Default 5000.</p></dd>\n\n\n<dt>dbscanEps</dt>\n<dd><p>Numeric. The clustering resolution parameter\nused in '<a href=\"https://rdrr.io/pkg/dbscan/man/dbscan.html\" class=\"external-link\">dbscan</a>' to estimate broad cell clusters.\nUsed only when z is not provided. Default 1.</p></dd>\n\n\n<dt>seed</dt>\n<dd><p>Integer. Passed to <a href=\"https://withr.r-lib.org/reference/with_seed.html\" class=\"external-link\">with_seed</a>. For reproducibility,\na default value of 12345 is used. If NULL, no calls to\n<a href=\"https://withr.r-lib.org/reference/with_seed.html\" class=\"external-link\">with_seed</a> are made.</p></dd>\n\n\n<dt>logfile</dt>\n<dd><p>Character. Messages will be redirected to a file named\n`logfile`. If NULL, messages will be printed to stdout.  Default NULL.</p></dd>\n\n\n<dt>verbose</dt>\n<dd><p>Logical. Whether to print log messages. Default TRUE.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>If <code>x</code> is a matrix-like object, a list will be returned\nwith the following items:</p><dl><dt><code>decontXcounts</code>:</dt>\n<dd><p>The decontaminated matrix. Values obtained\nfrom the variational inference procedure may be non-integer. However,\ninteger counts can be obtained by rounding,\ne.g. <code>round(decontXcounts)</code>.</p></dd>\n\n<dt><code>contamination</code>:</dt>\n<dd><p>Percentage of contamination in each cell.</p></dd>\n\n<dt><code>estimates</code>:</dt>\n<dd><p>List of estimated parameters for each batch. If z\nwas not supplied, then the UMAP coordinates used to generated cell\ncluster labels will also be stored here.</p></dd>\n\n<dt><code>z</code>:</dt>\n<dd><p>Cell population/cluster labels used for analysis.</p></dd>\n\n<dt><code>runParams</code>:</dt>\n<dd><p>List of arguments used in the function call.</p></dd>\n\n\n</dl><p>If <code>x</code> is a <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a>, then the decontaminated\ncounts will be stored as an assay and can be accessed with\n<code>decontXcounts(x)</code>. The contamination values and cluster labels\nwill be stored in <code>colData(x)</code>. <code>estimates</code> and <code>runParams</code></p>\n\n\n<p>will be stored in <code>metadata(x)$decontX</code>. The UMAPs used to generated\ncell cluster labels will be stored in\n<code>reducedDims</code> slot in <code>x</code>.</p>\n    </div>\n    <div id=\"author\">\n    <h2>Author</h2>\n    <p>Shiyi Yang, Yuan Yin, Joshua Campbell</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"co\"># Generate matrix with contamination</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">s</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"simulateContamination.html\">simulateContamination</a></span><span class=\"op\">(</span>seed <span class=\"op\">=</span> <span class=\"fl\">12345</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span></span></span>\n<span class=\"r-in\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\">SingleCellExperiment</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>counts <span class=\"op\">=</span> <span class=\"va\">s</span><span class=\"op\">$</span><span class=\"va\">observedCounts</span><span class=\"op\">)</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">decontX</span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span></span></span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> --------------------------------------------------</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Starting DecontX</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> --------------------------------------------------</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:58 2024 .. Analyzing all cells</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:58 2024 .... Converting to sparse matrix</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:54:58 2024 .... Generating UMAP and estimating cell types</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:55:02 2024 .... Estimating contamination</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:55:02 2024 ...... Completed iteration: 9 | converge: 0.0009154</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:55:02 2024 .. Calculating final decontaminated matrix</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> --------------------------------------------------</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Completed DecontX. Total time: 4.075659 secs</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> --------------------------------------------------</span>\n<span class=\"r-in\"><span></span></span>\n<span class=\"r-in\"><span><span class=\"co\"># Plot contamination on UMAP</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"plotDecontXContamination.html\">plotDecontXContamination</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span></span></span>\n<span class=\"r-plt img\"><img src=\"decontX-1.png\" alt=\"\" width=\"700\" height=\"433\"></span>\n<span class=\"r-in\"><span></span></span>\n<span class=\"r-in\"><span><span class=\"co\"># Plot decontX cluster labels</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">umap</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/reducedDims.html\" class=\"external-link\">reducedDim</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"plotDimReduceCluster.html\">plotDimReduceCluster</a></span><span class=\"op\">(</span>x <span class=\"op\">=</span> <span class=\"va\">sce</span><span class=\"op\">$</span><span class=\"va\">decontX_clusters</span>,</span></span>\n<span class=\"r-in\"><span>    dim1 <span class=\"op\">=</span> <span class=\"va\">umap</span><span class=\"op\">[</span>, <span class=\"fl\">1</span><span class=\"op\">]</span>, dim2 <span class=\"op\">=</span> <span class=\"va\">umap</span><span class=\"op\">[</span>, <span class=\"fl\">2</span><span class=\"op\">]</span>, <span class=\"op\">)</span></span></span>\n<span class=\"r-plt img\"><img src=\"decontX-2.png\" alt=\"\" width=\"700\" height=\"433\"></span>\n<span class=\"r-in\"><span></span></span>\n<span class=\"r-in\"><span><span class=\"co\"># Plot percentage of marker genes detected</span></span></span>\n<span class=\"r-in\"><span><span class=\"co\"># in each cell cluster before decontamination</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">s</span><span class=\"op\">$</span><span class=\"va\">markers</span></span></span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> $CellType_1_Markers</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [1] \"Gene_47\" \"Gene_32\" \"Gene_86\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> $CellType_2_Markers</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [1] \"Gene_70\" \"Gene_33\" \"Gene_48\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> $CellType_3_Markers</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [1] \"Gene_74\" \"Gene_26\" \"Gene_20\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> </span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"plotDecontXMarkerPercentage.html\">plotDecontXMarkerPercentage</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, markers <span class=\"op\">=</span> <span class=\"va\">s</span><span class=\"op\">$</span><span class=\"va\">markers</span>, assayName <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span><span class=\"op\">)</span></span></span>\n<span class=\"r-plt img\"><img src=\"decontX-3.png\" alt=\"\" width=\"700\" height=\"433\"></span>\n<span class=\"r-in\"><span></span></span>\n<span class=\"r-in\"><span><span class=\"co\"># Plot percentage of marker genes detected</span></span></span>\n<span class=\"r-in\"><span><span class=\"co\"># in each cell cluster after contamination</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"plotDecontXMarkerPercentage.html\">plotDecontXMarkerPercentage</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, markers <span class=\"op\">=</span> <span class=\"va\">s</span><span class=\"op\">$</span><span class=\"va\">markers</span>,</span></span>\n<span class=\"r-in\"><span>                            assayName <span class=\"op\">=</span> <span class=\"st\">\"decontXcounts\"</span><span class=\"op\">)</span></span></span>\n<span class=\"r-plt img\"><img src=\"decontX-4.png\" alt=\"\" width=\"700\" height=\"433\"></span>\n<span class=\"r-in\"><span></span></span>\n<span class=\"r-in\"><span><span class=\"co\"># Plot percentage of marker genes detected in each cell</span></span></span>\n<span class=\"r-in\"><span><span class=\"co\"># comparing original and decontaminated counts side-by-side</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"plotDecontXMarkerPercentage.html\">plotDecontXMarkerPercentage</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, markers <span class=\"op\">=</span> <span class=\"va\">s</span><span class=\"op\">$</span><span class=\"va\">markers</span>,</span></span>\n<span class=\"r-in\"><span>                            assayName <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"counts\"</span>, <span class=\"st\">\"decontXcounts\"</span><span class=\"op\">)</span><span class=\"op\">)</span></span></span>\n<span class=\"r-plt img\"><img src=\"decontX-5.png\" alt=\"\" width=\"700\" height=\"433\"></span>\n<span class=\"r-in\"><span></span></span>\n<span class=\"r-in\"><span><span class=\"co\"># Plot raw counts of indiviual markers genes before</span></span></span>\n<span class=\"r-in\"><span><span class=\"co\"># and after decontamination</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"plotDecontXMarkerExpression.html\">plotDecontXMarkerExpression</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>, <span class=\"fu\"><a href=\"https://rdrr.io/r/base/unlist.html\" class=\"external-link\">unlist</a></span><span class=\"op\">(</span><span class=\"va\">s</span><span class=\"op\">$</span><span class=\"va\">markers</span><span class=\"op\">)</span><span class=\"op\">)</span></span></span>\n<span class=\"r-plt img\"><img src=\"decontX-6.png\" alt=\"\" width=\"700\" height=\"433\"></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/decontXcounts.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Get or set decontaminated counts matrix — decontXcounts • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Get or set decontaminated counts matrix — decontXcounts\"><meta property=\"og:description\" content=\"Gets or sets the decontaminated counts matrix from a\na SingleCellExperiment object.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Get or set decontaminated counts matrix</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/decon.R\" class=\"external-link\"><code>R/decon.R</code></a></small>\n    <div class=\"hidden name\"><code>decontXcounts.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Gets or sets the decontaminated counts matrix from a\na <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">decontXcounts</span><span class=\"op\">(</span><span class=\"va\">object</span>, <span class=\"va\">...</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"fu\">decontXcounts</span><span class=\"op\">(</span><span class=\"va\">object</span>, <span class=\"va\">...</span><span class=\"op\">)</span> <span class=\"op\">&lt;-</span> <span class=\"va\">value</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">decontXcounts</span><span class=\"op\">(</span><span class=\"va\">object</span>, <span class=\"va\">...</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">decontXcounts</span><span class=\"op\">(</span><span class=\"va\">object</span>, <span class=\"va\">...</span><span class=\"op\">)</span> <span class=\"op\">&lt;-</span> <span class=\"va\">value</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>object</dt>\n<dd><p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object.</p></dd>\n\n\n<dt>...</dt>\n<dd><p>For the generic, further arguments to pass to each method.</p></dd>\n\n\n<dt>value</dt>\n<dd><p>A matrix to save as an assay called <code>decontXcounts</code></p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>If getting, the assay from <code>object</code> with the name\n<code>decontXcounts</code> will be returned. If setting, a\n<a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object will be returned with\n<code>decontXcounts</code> listed in the <code>assay</code> slot.</p>\n    </div>\n    <div id=\"see-also\">\n    <h2>See also</h2>\n    <div class=\"dont-index\"><p><code><a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">assay</a></code> and <code>assay&lt;-</code></p></div>\n    </div>\n\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/distinctColors.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Create a color palette — distinctColors • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Create a color palette — distinctColors\"><meta property=\"og:description\" content=\"Generate a palette of `n` distinct colors.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Create a color palette</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/celda_functions.R\" class=\"external-link\"><code>R/celda_functions.R</code></a></small>\n    <div class=\"hidden name\"><code>distinctColors.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Generate a palette of `n` distinct colors.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">distinctColors</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">n</span>,</span>\n<span>  hues <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"red\"</span>, <span class=\"st\">\"cyan\"</span>, <span class=\"st\">\"orange\"</span>, <span class=\"st\">\"blue\"</span>, <span class=\"st\">\"yellow\"</span>, <span class=\"st\">\"purple\"</span>, <span class=\"st\">\"green\"</span>, <span class=\"st\">\"magenta\"</span><span class=\"op\">)</span>,</span>\n<span>  saturationRange <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"fl\">0.7</span>, <span class=\"fl\">1</span><span class=\"op\">)</span>,</span>\n<span>  valueRange <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"fl\">0.7</span>, <span class=\"fl\">1</span><span class=\"op\">)</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>n</dt>\n<dd><p>Integer. Number of colors to generate.</p></dd>\n\n\n<dt>hues</dt>\n<dd><p>Character vector. Colors available from `colors()`. These will\nbe used as the base colors for the clustering scheme in HSV. Different\nsaturations and values will be generated for each hue. Default c(\"red\",\n\"cyan\", \"orange\", \"blue\", \"yellow\", \"purple\", \"green\", \"magenta\").</p></dd>\n\n\n<dt>saturationRange</dt>\n<dd><p>Numeric vector. A vector of length 2 denoting the\nsaturation for HSV. Values must be in [0,1]. Default: c(0.25, 1).</p></dd>\n\n\n<dt>valueRange</dt>\n<dd><p>Numeric vector. A vector of length 2 denoting the range\nof values for HSV. Values must be in [0,1]. Default: `c(0.5, 1)`.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>A vector of distinct colors that have been converted to HEX from HSV.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"va\">colorPal</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">distinctColors</span><span class=\"op\">(</span><span class=\"fl\">6</span><span class=\"op\">)</span> <span class=\"co\"># can be used in plotting functions</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/eigenMatMultInt.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Fast matrix multiplication for double x int — eigenMatMultInt • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Fast matrix multiplication for double x int — eigenMatMultInt\"><meta property=\"og:description\" content=\"Fast matrix multiplication for double x int\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Fast matrix multiplication for double x int</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/RcppExports.R\" class=\"external-link\"><code>R/RcppExports.R</code></a></small>\n    <div class=\"hidden name\"><code>eigenMatMultInt.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Fast matrix multiplication for double x int</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">eigenMatMultInt</span><span class=\"op\">(</span><span class=\"va\">A</span>, <span class=\"va\">B</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>A</dt>\n<dd><p>a double matrix</p></dd>\n\n\n<dt>B</dt>\n<dd><p>an integer matrix</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>An integer matrix representing the product of A and B</p>\n    </div>\n\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/eigenMatMultNumeric.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Fast matrix multiplication for double x double — eigenMatMultNumeric • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Fast matrix multiplication for double x double — eigenMatMultNumeric\"><meta property=\"og:description\" content=\"Fast matrix multiplication for double x double\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Fast matrix multiplication for double x double</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/RcppExports.R\" class=\"external-link\"><code>R/RcppExports.R</code></a></small>\n    <div class=\"hidden name\"><code>eigenMatMultNumeric.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Fast matrix multiplication for double x double</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">eigenMatMultNumeric</span><span class=\"op\">(</span><span class=\"va\">A</span>, <span class=\"va\">B</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>A</dt>\n<dd><p>a double matrix</p></dd>\n\n\n<dt>B</dt>\n<dd><p>an integer matrix</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>An integer matrix representing the product of A and B</p>\n    </div>\n\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/factorizeMatrix.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Generate factorized matrices showing each feature's influence on cell\n / gene clustering — factorizeMatrix • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Generate factorized matrices showing each feature's influence on cell\n / gene clustering — factorizeMatrix\"><meta property=\"og:description\" content=\"Generates factorized matrices showing the contribution of each\n feature in each cell population or each cell population in each sample.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Generate factorized matrices showing each feature's influence on cell\n / gene clustering</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/factorizeMatrix.R\" class=\"external-link\"><code>R/factorizeMatrix.R</code></a></small>\n    <div class=\"hidden name\"><code>factorizeMatrix.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Generates factorized matrices showing the contribution of each\n feature in each cell population or each cell population in each sample.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">factorizeMatrix</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  <span class=\"va\">celdaMod</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  type <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"counts\"</span>, <span class=\"st\">\"proportion\"</span>, <span class=\"st\">\"posterior\"</span><span class=\"op\">)</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment,ANY</span></span>\n<span><span class=\"fu\">factorizeMatrix</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  type <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"counts\"</span>, <span class=\"st\">\"proportion\"</span>, <span class=\"st\">\"posterior\"</span><span class=\"op\">)</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for ANY,celda_CG</span></span>\n<span><span class=\"fu\">factorizeMatrix</span><span class=\"op\">(</span><span class=\"va\">x</span>, <span class=\"va\">celdaMod</span>, type <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"counts\"</span>, <span class=\"st\">\"proportion\"</span>, <span class=\"st\">\"posterior\"</span><span class=\"op\">)</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for ANY,celda_C</span></span>\n<span><span class=\"fu\">factorizeMatrix</span><span class=\"op\">(</span><span class=\"va\">x</span>, <span class=\"va\">celdaMod</span>, type <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"counts\"</span>, <span class=\"st\">\"proportion\"</span>, <span class=\"st\">\"posterior\"</span><span class=\"op\">)</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for ANY,celda_G</span></span>\n<span><span class=\"fu\">factorizeMatrix</span><span class=\"op\">(</span><span class=\"va\">x</span>, <span class=\"va\">celdaMod</span>, type <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"counts\"</span>, <span class=\"st\">\"proportion\"</span>, <span class=\"st\">\"posterior\"</span><span class=\"op\">)</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>Can be one of</p><ul><li><p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object returned by\n<a href=\"celda_C.html\">celda_C</a>, <a href=\"celda_G.html\">celda_G</a> or <a href=\"celda_CG.html\">celda_CG</a>, with the matrix\nlocated in the <code>useAssay</code> assay slot in <code>altExp(x, altExpName)</code>.\nRows represent features and columns represent cells.</p></li>\n<li><p>Integer counts matrix. Rows represent features and columns represent\ncells. This matrix should be the same as the one used to generate\n<code>celdaMod</code>.</p></li>\n</ul></dd>\n\n\n<dt>celdaMod</dt>\n<dd><p>Celda model object. Only works if <code>x</code> is an integer\ncounts matrix.</p></dd>\n\n\n<dt>useAssay</dt>\n<dd><p>A string specifying which <a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">assay</a>\nslot to use if <code>x</code> is a <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object.\nDefault \"counts\".</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a> slot\nto use. Default \"featureSubset\".</p></dd>\n\n\n<dt>type</dt>\n<dd><p>Character vector. A vector containing one or more of \"counts\",\n\"proportion\", or \"posterior\". \"counts\" returns the raw number of counts for\neach factorized matrix. \"proportions\" returns the normalized probabilities\nfor each factorized matrix, which are calculated by dividing the raw counts\nin each factorized matrix by the total counts in each column. \"posterior\"\nreturns the posterior estimates which include the addition of the Dirichlet\nconcentration parameter (essentially as a pseudocount). Default\n<code>\"counts\"</code>.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>For celda_CG model, A list with elements for \"counts\", \"proportions\",\n or \"posterior\" probabilities. Each element will be a list containing\n factorized matrices for \"module\", \"cellPopulation\", and \"sample\".\n Additionally, the contribution of each module in each individual cell will\n be included in the \"cell\" element of \"counts\" and \"proportions\" elements.</p>\n\n\n<p>For celda_C model, a list with elements for \"counts\", \"proportions\",\n or \"posterior\" probabilities. Each element will be a list containing\n factorized matrices for \"module\" and \"sample\".</p>\n\n\n<p>For celda_G model, a list with elements for \"counts\", \"proportions\",\n or \"posterior\" probabilities. Each element will be a list containing\n factorized matrices for \"module\" and \"cell\".</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">factorizedMatrices</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">factorizeMatrix</span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span>, type <span class=\"op\">=</span> <span class=\"st\">\"posterior\"</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span>, <span class=\"va\">celdaCGMod</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">factorizedMatrices</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">factorizeMatrix</span><span class=\"op\">(</span></span></span>\n<span class=\"r-in\"><span>  <span class=\"va\">celdaCGSim</span><span class=\"op\">$</span><span class=\"va\">counts</span>,</span></span>\n<span class=\"r-in\"><span>  <span class=\"va\">celdaCGMod</span>,</span></span>\n<span class=\"r-in\"><span>  <span class=\"st\">\"posterior\"</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCSim</span>, <span class=\"va\">celdaCMod</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">factorizedMatrices</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">factorizeMatrix</span><span class=\"op\">(</span></span></span>\n<span class=\"r-in\"><span>  <span class=\"va\">celdaCSim</span><span class=\"op\">$</span><span class=\"va\">counts</span>,</span></span>\n<span class=\"r-in\"><span>  <span class=\"va\">celdaCMod</span>, <span class=\"st\">\"posterior\"</span></span></span>\n<span class=\"r-in\"><span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaGSim</span>, <span class=\"va\">celdaGMod</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">factorizedMatrices</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">factorizeMatrix</span><span class=\"op\">(</span></span></span>\n<span class=\"r-in\"><span>  <span class=\"va\">celdaGSim</span><span class=\"op\">$</span><span class=\"va\">counts</span>,</span></span>\n<span class=\"r-in\"><span>  <span class=\"va\">celdaGMod</span>, <span class=\"st\">\"posterior\"</span></span></span>\n<span class=\"r-in\"><span><span class=\"op\">)</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/fastNormProp.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Fast normalization for numeric matrix — fastNormProp • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Fast normalization for numeric matrix — fastNormProp\"><meta property=\"og:description\" content=\"Fast normalization for numeric matrix\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Fast normalization for numeric matrix</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/RcppExports.R\" class=\"external-link\"><code>R/RcppExports.R</code></a></small>\n    <div class=\"hidden name\"><code>fastNormProp.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Fast normalization for numeric matrix</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">fastNormProp</span><span class=\"op\">(</span><span class=\"va\">R_counts</span>, <span class=\"va\">R_alpha</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>R_counts</dt>\n<dd><p>An integer matrix</p></dd>\n\n\n<dt>R_alpha</dt>\n<dd><p>A double value to be added to the matrix as a pseudocount</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>A numeric matrix where the columns have been normalized to proportions</p>\n    </div>\n\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/fastNormPropLog.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Fast normalization for numeric matrix — fastNormPropLog • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Fast normalization for numeric matrix — fastNormPropLog\"><meta property=\"og:description\" content=\"Fast normalization for numeric matrix\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Fast normalization for numeric matrix</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/RcppExports.R\" class=\"external-link\"><code>R/RcppExports.R</code></a></small>\n    <div class=\"hidden name\"><code>fastNormPropLog.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Fast normalization for numeric matrix</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">fastNormPropLog</span><span class=\"op\">(</span><span class=\"va\">R_counts</span>, <span class=\"va\">R_alpha</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>R_counts</dt>\n<dd><p>An integer matrix</p></dd>\n\n\n<dt>R_alpha</dt>\n<dd><p>A double value to be added to the matrix as a pseudocount</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>A numeric matrix where the columns have been normalized to proportions</p>\n    </div>\n\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/fastNormPropSqrt.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Fast normalization for numeric matrix — fastNormPropSqrt • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Fast normalization for numeric matrix — fastNormPropSqrt\"><meta property=\"og:description\" content=\"Fast normalization for numeric matrix\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Fast normalization for numeric matrix</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/RcppExports.R\" class=\"external-link\"><code>R/RcppExports.R</code></a></small>\n    <div class=\"hidden name\"><code>fastNormPropSqrt.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Fast normalization for numeric matrix</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">fastNormPropSqrt</span><span class=\"op\">(</span><span class=\"va\">R_counts</span>, <span class=\"va\">R_alpha</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>R_counts</dt>\n<dd><p>An integer matrix</p></dd>\n\n\n<dt>R_alpha</dt>\n<dd><p>A double value to be added to the matrix as a pseudocount</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>A numeric matrix where the columns have been normalized to proportions</p>\n    </div>\n\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/featureModuleLookup.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Obtain the gene module of a gene of interest — featureModuleLookup • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Obtain the gene module of a gene of interest — featureModuleLookup\"><meta property=\"og:description\" content=\"This function will output the corresponding feature module for\n a specified vector of genes from a celda_CG or celda_G celdaModel.\n features must match the rownames of sce.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Obtain the gene module of a gene of interest</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/featureModuleLookup.R\" class=\"external-link\"><code>R/featureModuleLookup.R</code></a></small>\n    <div class=\"hidden name\"><code>featureModuleLookup.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>This function will output the corresponding feature module for\n a specified vector of genes from a celda_CG or celda_G <code>celdaModel</code>.\n <code>features</code> must match the rownames of <code>sce</code>.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">featureModuleLookup</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">sce</span>,</span>\n<span>  <span class=\"va\">features</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  exactMatch <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  by <span class=\"op\">=</span> <span class=\"st\">\"rownames\"</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">featureModuleLookup</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">sce</span>,</span>\n<span>  <span class=\"va\">features</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  exactMatch <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  by <span class=\"op\">=</span> <span class=\"st\">\"rownames\"</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>sce</dt>\n<dd><p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object returned by\n<a href=\"celda_G.html\">celda_G</a>, or <a href=\"celda_CG.html\">celda_CG</a>, with the matrix\nlocated in the <code>useAssay</code> assay slot.\nRows represent features and columns represent cells.</p></dd>\n\n\n<dt>features</dt>\n<dd><p>Character vector. Identify feature modules for the specified\nfeature names. <code>feature</code> must match the rownames of <code>sce</code>.</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a> slot\nto use. Default \"featureSubset\".</p></dd>\n\n\n<dt>exactMatch</dt>\n<dd><p>Logical. Whether to look for exactMatch of the gene name\nwithin counts matrix. Default <code>TRUE</code>.</p></dd>\n\n\n<dt>by</dt>\n<dd><p>Character. Where to search for <code>features</code> in the sce object.\nIf set to <code>\"rownames\"</code> then the features will be searched for among\nrownames(sce). This can also be set to one of the <code>colnames</code> of\nrowData(sce). Default <code>\"rownames\"</code>.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>Numeric vector containing the module numbers for each feature. If\nthe feature was not found, then an <code>NA</code> value will be returned in that\nposition. If no features were found, then an error will be given.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">module</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">featureModuleLookup</span><span class=\"op\">(</span>sce <span class=\"op\">=</span> <span class=\"va\">sceCeldaCG</span>,</span></span>\n<span class=\"r-in\"><span>    features <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"Gene_1\"</span>, <span class=\"st\">\"Gene_XXX\"</span><span class=\"op\">)</span><span class=\"op\">)</span></span></span>\n<span class=\"r-wrn co\"><span class=\"r-pr\">#&gt;</span> <span class=\"warning\">Warning: </span>The following features were not present in 'x': Gene_XXX</span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/featureModuleTable.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Output a feature module table — featureModuleTable • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Output a feature module table — featureModuleTable\"><meta property=\"og:description\" content=\"Creates a table that contains the list of features in\n each feature module.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Output a feature module table</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/celda_functions.R\" class=\"external-link\"><code>R/celda_functions.R</code></a></small>\n    <div class=\"hidden name\"><code>featureModuleTable.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Creates a table that contains the list of features in\n each feature module.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">featureModuleTable</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">sce</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  displayName <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  outputFile <span class=\"op\">=</span> <span class=\"cn\">NULL</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>sce</dt>\n<dd><p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object returned by\n<a href=\"celda_G.html\">celda_G</a>, or <a href=\"celda_CG.html\">celda_CG</a>, with the matrix\nlocated in the <code>useAssay</code> assay slot.\nRows represent features and columns represent cells.</p></dd>\n\n\n<dt>useAssay</dt>\n<dd><p>A string specifying which <a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">assay</a>\nslot to use. Default \"counts\".</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a> slot\nto use. Default \"featureSubset\".</p></dd>\n\n\n<dt>displayName</dt>\n<dd><p>Character. The column name of\n<code>rowData(sce)</code> that specifies the display names for\nthe features. Default <code>NULL</code>, which displays the row names.</p></dd>\n\n\n<dt>outputFile</dt>\n<dd><p>File name for feature module table. If NULL, file will\nnot be created. Default NULL.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>Matrix. Contains a list of features per each column (feature module)</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">featureModuleTable</span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>       L1        L2        L3        L4         L5        L6        L7       </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [1,] \"Gene_45\" \"Gene_77\" \"Gene_72\" \"Gene_87\"  \"Gene_41\" \"Gene_80\" \"Gene_24\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [2,] \"Gene_5\"  \"Gene_17\" \"Gene_15\" \"Gene_6\"   \"Gene_70\" \"Gene_60\" \"Gene_53\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [3,] \"Gene_94\" \"Gene_30\" \"Gene_22\" \"Gene_82\"  \"Gene_64\" \"Gene_55\" \"Gene_74\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [4,] \"Gene_91\" \"Gene_9\"  \"Gene_52\" \"Gene_28\"  \"Gene_36\" \"Gene_40\" \"Gene_59\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [5,] \"Gene_3\"  \"\"        \"Gene_78\" \"Gene_39\"  \"Gene_37\" \"Gene_25\" \"Gene_89\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [6,] \"Gene_50\" \"\"        \"Gene_84\" \"Gene_10\"  \"Gene_14\" \"Gene_62\" \"Gene_11\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [7,] \"Gene_90\" \"\"        \"Gene_81\" \"Gene_51\"  \"Gene_99\" \"Gene_97\" \"Gene_49\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [8,] \"\"        \"\"        \"\"        \"Gene_100\" \"Gene_20\" \"Gene_95\" \"Gene_1\" </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [9,] \"\"        \"\"        \"\"        \"Gene_65\"  \"Gene_2\"  \"Gene_46\" \"Gene_79\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [10,] \"\"        \"\"        \"\"        \"Gene_33\"  \"Gene_44\" \"Gene_76\" \"\"       </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [11,] \"\"        \"\"        \"\"        \"Gene_38\"  \"Gene_66\" \"\"        \"\"       </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [12,] \"\"        \"\"        \"\"        \"\"         \"Gene_32\" \"\"        \"\"       </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [13,] \"\"        \"\"        \"\"        \"\"         \"Gene_34\" \"\"        \"\"       </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [14,] \"\"        \"\"        \"\"        \"\"         \"Gene_23\" \"\"        \"\"       </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [15,] \"\"        \"\"        \"\"        \"\"         \"\"        \"\"        \"\"       </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [16,] \"\"        \"\"        \"\"        \"\"         \"\"        \"\"        \"\"       </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>       L8        L9        L10      </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [1,] \"Gene_4\"  \"Gene_85\" \"Gene_69\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [2,] \"Gene_43\" \"Gene_98\" \"Gene_47\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [3,] \"Gene_42\" \"Gene_35\" \"Gene_13\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [4,] \"Gene_29\" \"Gene_8\"  \"Gene_92\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [5,] \"Gene_73\" \"Gene_83\" \"Gene_88\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [6,] \"Gene_61\" \"Gene_19\" \"Gene_93\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [7,] \"\"        \"Gene_63\" \"Gene_12\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [8,] \"\"        \"Gene_75\" \"Gene_86\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [9,] \"\"        \"Gene_21\" \"Gene_58\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [10,] \"\"        \"Gene_48\" \"Gene_18\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [11,] \"\"        \"Gene_31\" \"Gene_7\" </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [12,] \"\"        \"Gene_57\" \"Gene_16\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [13,] \"\"        \"Gene_27\" \"\"       </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [14,] \"\"        \"Gene_67\" \"\"       </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [15,] \"\"        \"Gene_68\" \"\"       </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [16,] \"\"        \"Gene_54\" \"\"       </span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/geneSetEnrich.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Gene set enrichment — geneSetEnrich • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Gene set enrichment — geneSetEnrich\"><meta property=\"og:description\" content=\"Identify and return significantly-enriched terms for each gene\n module in a Celda object or a SingleCellExperiment object.\n Performs gene set enrichment analysis for Celda\n identified modules using the enrichr.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Gene set enrichment</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/geneSetEnrich.R\" class=\"external-link\"><code>R/geneSetEnrich.R</code></a></small>\n    <div class=\"hidden name\"><code>geneSetEnrich.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Identify and return significantly-enriched terms for each gene\n module in a Celda object or a <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object.\n Performs gene set enrichment analysis for Celda\n identified modules using the <a href=\"https://rdrr.io/pkg/enrichR/man/enrichr.html\" class=\"external-link\">enrichr</a>.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">geneSetEnrich</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  <span class=\"va\">celdaModel</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  <span class=\"va\">databases</span>,</span>\n<span>  fdr <span class=\"op\">=</span> <span class=\"fl\">0.05</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">geneSetEnrich</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  <span class=\"va\">databases</span>,</span>\n<span>  fdr <span class=\"op\">=</span> <span class=\"fl\">0.05</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for matrix</span></span>\n<span><span class=\"fu\">geneSetEnrich</span><span class=\"op\">(</span><span class=\"va\">x</span>, <span class=\"va\">celdaModel</span>, <span class=\"va\">databases</span>, fdr <span class=\"op\">=</span> <span class=\"fl\">0.05</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>A numeric <a href=\"https://rdrr.io/r/base/matrix.html\" class=\"external-link\">matrix</a> of counts or a\n<a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a>\nwith the matrix located in the assay slot under <code>useAssay</code>.\nRows represent features and columns represent cells. Rownames of the\nmatrix or <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object should be gene names.</p></dd>\n\n\n<dt>celdaModel</dt>\n<dd><p>Celda object of class <code>celda_G</code> or <code>celda_CG</code>.</p></dd>\n\n\n<dt>useAssay</dt>\n<dd><p>A string specifying which <a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">assay</a>\nslot to use if <code>x</code> is a\n<a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object. Default \"counts\".</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a> slot\nto use. Default \"featureSubset\".</p></dd>\n\n\n<dt>databases</dt>\n<dd><p>Character vector. Name of reference database. Available\ndatabases can be viewed by <a href=\"https://rdrr.io/pkg/enrichR/man/listEnrichrDbs.html\" class=\"external-link\">listEnrichrDbs</a>.</p></dd>\n\n\n<dt>fdr</dt>\n<dd><p>False discovery rate (FDR). Numeric. Cutoff value for adjusted\np-value, terms with FDR below this value are considered significantly\nenriched.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>List of length 'L' where each member contains the significantly\n enriched terms for the corresponding module.</p>\n    </div>\n    <div id=\"author\">\n    <h2>Author</h2>\n    <p>Ahmed Youssef, Zhe Wang</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\">M3DExampleData</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">counts</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">M3DExampleData</span><span class=\"fu\">::</span><span class=\"va\"><a href=\"https://rdrr.io/pkg/M3DExampleData/man/Deng_subset_example_data.html\" class=\"external-link\">Mmus_example_list</a></span><span class=\"op\">$</span><span class=\"va\">data</span></span></span>\n<span class=\"r-in\"><span><span class=\"co\"># subset 500 genes for fast clustering</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">counts</span> <span class=\"op\">&lt;-</span> <span class=\"va\">counts</span><span class=\"op\">[</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/seq.html\" class=\"external-link\">seq</a></span><span class=\"op\">(</span><span class=\"fl\">1501</span>, <span class=\"fl\">2000</span><span class=\"op\">)</span>, <span class=\"op\">]</span></span></span>\n<span class=\"r-in\"><span><span class=\"co\"># cluster genes into 10 modules for quick demo</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"celda_G.html\">celda_G</a></span><span class=\"op\">(</span>x <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/matrix.html\" class=\"external-link\">as.matrix</a></span><span class=\"op\">(</span><span class=\"va\">counts</span><span class=\"op\">)</span>, L <span class=\"op\">=</span> <span class=\"fl\">10</span>, verbose <span class=\"op\">=</span> <span class=\"cn\">FALSE</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">gse</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">geneSetEnrich</span><span class=\"op\">(</span><span class=\"va\">sce</span>,</span></span>\n<span class=\"r-in\"><span>  databases <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"GO_Biological_Process_2018\"</span>, <span class=\"st\">\"GO_Molecular_Function_2018\"</span><span class=\"op\">)</span><span class=\"op\">)</span></span></span>\n<span class=\"r-err co\"><span class=\"r-pr\">#&gt;</span> <span class=\"error\">Error in handle_url(handle, url, ...):</span> Must specify at least one of url or handle</span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/index.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Function reference • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Function reference\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-index\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"contents col-md-9\">\n    <div class=\"page-header\">\n      <h1>Reference</h1>\n    </div>\n\n    <table class=\"ref-index\"><colgroup><col class=\"alias\"><col class=\"title\"></colgroup><tbody><tr><th colspan=\"2\">\n          <h2 id=\"primary-celda-functions\">Primary celda functions <a href=\"#primary-celda-functions\" class=\"anchor\" aria-hidden=\"true\"></a></h2>\n          <p class=\"section-desc\"></p><p>Functions for clustering of cells</p>\n        </th>\n      </tr></tbody><tbody><tr><td>\n          <p><code><a href=\"celda_CG.html\">celda_CG()</a></code> </p>\n        </td>\n        <td><p>Cell and feature clustering with Celda</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"celda_C.html\">celda_C()</a></code> </p>\n        </td>\n        <td><p>Cell clustering with Celda</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"celda_G.html\">celda_G()</a></code> </p>\n        </td>\n        <td><p>Feature clustering with Celda</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"reportceldaCG.html\">reportCeldaCGRun()</a></code> <code><a href=\"reportceldaCG.html\">reportCeldaCGPlotResults()</a></code> </p>\n        </td>\n        <td><p>Generate an HTML report for celda_CG</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"selectFeatures.html\">selectFeatures()</a></code> </p>\n        </td>\n        <td><p>Simple feature selection by feature counts</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"splitModule.html\">splitModule()</a></code> </p>\n        </td>\n        <td><p>Split celda feature module</p></td>\n      </tr></tbody><tbody><tr><th colspan=\"2\">\n          <h2 id=\"visualization-functions-for-celda-results\">Visualization functions for celda results <a href=\"#visualization-functions-for-celda-results\" class=\"anchor\" aria-hidden=\"true\"></a></h2>\n          <p class=\"section-desc\"></p><p>Functions for displaying celda resuls on 2-D embeddings, heatmaps, and violin plots</p>\n        </th>\n      </tr></tbody><tbody><tr><td>\n          <p><code><a href=\"celdaUmap.html\">celdaUmap()</a></code> </p>\n        </td>\n        <td><p>Uniform Manifold Approximation and Projection (UMAP) dimension\n reduction for celda <code>sce</code> object</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"celdaTsne.html\">celdaTsne()</a></code> </p>\n        </td>\n        <td><p>t-Distributed Stochastic Neighbor Embedding (t-SNE) dimension\n reduction for celda <code>sce</code> object</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"moduleHeatmap.html\">moduleHeatmap()</a></code> </p>\n        </td>\n        <td><p>Heatmap for featureModules</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"celdaProbabilityMap.html\">celdaProbabilityMap()</a></code> </p>\n        </td>\n        <td><p>Probability map for a celda model</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"plotDimReduceCluster.html\">plotDimReduceCluster()</a></code> </p>\n        </td>\n        <td><p>Plotting the cell labels on a dimension reduction plot</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"plotDimReduceFeature.html\">plotDimReduceFeature()</a></code> </p>\n        </td>\n        <td><p>Plotting feature expression on a dimension reduction plot</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"plotDimReduceModule.html\">plotDimReduceModule()</a></code> </p>\n        </td>\n        <td><p>Plotting Celda module probability on a\n dimension reduction plot</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"plotDimReduceGrid.html\">plotDimReduceGrid()</a></code> </p>\n        </td>\n        <td><p>Mapping the dimension reduction plot</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"plotCeldaViolin.html\">plotCeldaViolin()</a></code> </p>\n        </td>\n        <td><p>Feature Expression Violin Plot</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"celdaHeatmap.html\">celdaHeatmap()</a></code> </p>\n        </td>\n        <td><p>Plot celda Heatmap</p></td>\n      </tr></tbody><tbody><tr><th colspan=\"2\">\n          <h2 id=\"primary-decontx-functions\">Primary decontX functions <a href=\"#primary-decontx-functions\" class=\"anchor\" aria-hidden=\"true\"></a></h2>\n          <p class=\"section-desc\"></p><p>Functions for estimating and displaying contamination with decontX</p>\n        </th>\n      </tr></tbody><tbody><tr><td>\n          <p><code><a href=\"decontX.html\">decontX()</a></code> </p>\n        </td>\n        <td><p>Contamination estimation with decontX</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"plotDecontXContamination.html\">plotDecontXContamination()</a></code> </p>\n        </td>\n        <td><p>Plots contamination on UMAP coordinates</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"plotDecontXMarkerExpression.html\">plotDecontXMarkerExpression()</a></code> </p>\n        </td>\n        <td><p>Plots expression of marker genes before and after decontamination</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"plotDecontXMarkerPercentage.html\">plotDecontXMarkerPercentage()</a></code> </p>\n        </td>\n        <td><p>Plots percentage of cells cell types expressing markers</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"decontXcounts.html\">decontXcounts()</a></code> <code><a href=\"decontXcounts.html\">`decontXcounts&lt;-`()</a></code> </p>\n        </td>\n        <td><p>Get or set decontaminated counts matrix</p></td>\n      </tr></tbody><tbody><tr><th colspan=\"2\">\n          <h2 id=\"functions-for-determining-the-numbers-of-clusters-in-celda\">Functions for determining the numbers of clusters in celda <a href=\"#functions-for-determining-the-numbers-of-clusters-in-celda\" class=\"anchor\" aria-hidden=\"true\"></a></h2>\n          <p class=\"section-desc\"></p><p>Functions for running and comparing multiple celda models with different number of modules or cell populations</p>\n        </th>\n      </tr></tbody><tbody><tr><td>\n          <p><code><a href=\"recursiveSplitCell.html\">recursiveSplitCell()</a></code> </p>\n        </td>\n        <td><p>Recursive cell splitting</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"recursiveSplitModule.html\">recursiveSplitModule()</a></code> </p>\n        </td>\n        <td><p>Recursive module splitting</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"plotRPC.html\">plotRPC()</a></code> </p>\n        </td>\n        <td><p>Visualize perplexity differences of a list of celda models</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"celdaGridSearch.html\">celdaGridSearch()</a></code> </p>\n        </td>\n        <td><p>Run Celda in parallel with multiple parameters</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"plotGridSearchPerplexity.html\">plotGridSearchPerplexity()</a></code> </p>\n        </td>\n        <td><p>Visualize perplexity of a list of celda models</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"perplexity.html\">perplexity()</a></code> </p>\n        </td>\n        <td><p>Calculate the perplexity of a celda model</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"resamplePerplexity.html\">resamplePerplexity()</a></code> </p>\n        </td>\n        <td><p>Calculate and visualize perplexity of all models in a celdaList</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"selectBestModel.html\">selectBestModel()</a></code> </p>\n        </td>\n        <td><p>Select best chain within each combination of parameters</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"resList.html\">resList()</a></code> </p>\n        </td>\n        <td><p>Get final celdaModels from a celda model <code>SCE</code> or celdaList\n object</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"subsetCeldaList.html\">subsetCeldaList()</a></code> </p>\n        </td>\n        <td><p>Subset celda model from SCE object returned from\n <code>celdaGridSearch</code></p></td>\n      </tr><tr><td>\n          <p><code><a href=\"appendCeldaList.html\">appendCeldaList()</a></code> </p>\n        </td>\n        <td><p>Append two celdaList objects</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"celdaPerplexity.html\">celdaPerplexity()</a></code> </p>\n        </td>\n        <td><p>Get perplexity for every model in a celdaList</p></td>\n      </tr></tbody><tbody><tr><th colspan=\"2\">\n          <h2 id=\"miscellaneous-celda-functions\">Miscellaneous celda functions <a href=\"#miscellaneous-celda-functions\" class=\"anchor\" aria-hidden=\"true\"></a></h2>\n          <p class=\"section-desc\"></p><p>Various functions for manipulation of celda results</p>\n        </th>\n      </tr></tbody><tbody><tr><td>\n          <p><code><a href=\"celdaClusters.html\">celdaClusters()</a></code> <code><a href=\"celdaClusters.html\">`celdaClusters&lt;-`()</a></code> </p>\n        </td>\n        <td><p>Get or set the cell cluster labels from a celda\n SingleCellExperiment object or celda model\n object.</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"celdaModules.html\">celdaModules()</a></code> <code><a href=\"celdaModules.html\">`celdaModules&lt;-`()</a></code> </p>\n        </td>\n        <td><p>Get or set the feature module labels from a celda\n SingleCellExperiment object.</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"recodeClusterY.html\">recodeClusterY()</a></code> </p>\n        </td>\n        <td><p>Recode feature module labels</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"recodeClusterZ.html\">recodeClusterZ()</a></code> </p>\n        </td>\n        <td><p>Recode cell cluster labels</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"reorderCelda.html\">reorderCelda()</a></code> </p>\n        </td>\n        <td><p>Reorder cells populations and/or features modules using\n hierarchical clustering</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"featureModuleLookup.html\">featureModuleLookup()</a></code> </p>\n        </td>\n        <td><p>Obtain the gene module of a gene of interest</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"featureModuleTable.html\">featureModuleTable()</a></code> </p>\n        </td>\n        <td><p>Output a feature module table</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"celda.html\">celda()</a></code> </p>\n        </td>\n        <td><p>Celda models</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"params.html\">params()</a></code> </p>\n        </td>\n        <td><p>Get parameter values provided for celdaModel creation</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"runParams.html\">runParams()</a></code> </p>\n        </td>\n        <td><p>Get run parameters from a celda model\n <code>SingleCellExperiment</code> or <code>celdaList</code> object</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"factorizeMatrix.html\">factorizeMatrix()</a></code> </p>\n        </td>\n        <td><p>Generate factorized matrices showing each feature's influence on cell\n / gene clustering</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"bestLogLikelihood.html\">bestLogLikelihood()</a></code> </p>\n        </td>\n        <td><p>Get the log-likelihood</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"clusterProbability.html\">clusterProbability()</a></code> </p>\n        </td>\n        <td><p>Get the conditional probabilities of cell in subpopulations from celda\n model</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"geneSetEnrich.html\">geneSetEnrich()</a></code> </p>\n        </td>\n        <td><p>Gene set enrichment</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"plotHeatmap.html\">plotHeatmap()</a></code> </p>\n        </td>\n        <td><p>Plots heatmap based on Celda model</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"retrieveFeatureIndex.html\">retrieveFeatureIndex()</a></code> </p>\n        </td>\n        <td><p>Retrieve row index for a set of features</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"normalizeCounts.html\">normalizeCounts()</a></code> </p>\n        </td>\n        <td><p>Normalization of count data</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"distinctColors.html\">distinctColors()</a></code> </p>\n        </td>\n        <td><p>Create a color palette</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"matrixNames.html\">matrixNames()</a></code> </p>\n        </td>\n        <td><p>Get feature, cell and sample names from a celdaModel</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"logLikelihood.html\">logLikelihood()</a></code> </p>\n        </td>\n        <td><p>Calculate the Log-likelihood of a celda model</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"logLikelihoodHistory.html\">logLikelihoodHistory()</a></code> </p>\n        </td>\n        <td><p>Get log-likelihood history</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"topRank.html\">topRank()</a></code> </p>\n        </td>\n        <td><p>Identify features with the highest influence on clustering.</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"sampleLabel.html\">sampleLabel()</a></code> <code><a href=\"sampleLabel.html\">`sampleLabel&lt;-`()</a></code> </p>\n        </td>\n        <td><p>Get or set sample labels from a celda\n SingleCellExperiment  object</p></td>\n      </tr></tbody><tbody><tr><th colspan=\"2\">\n          <h2 id=\"simulation-functions\">Simulation functions <a href=\"#simulation-functions\" class=\"anchor\" aria-hidden=\"true\"></a></h2>\n          <p class=\"section-desc\"></p><p>Functions for generating data from the generative process of each model</p>\n        </th>\n      </tr></tbody><tbody><tr><td>\n          <p><code><a href=\"simulateCells.html\">simulateCells()</a></code> </p>\n        </td>\n        <td><p>Simulate count data from the celda generative models.</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"simulateContamination.html\">simulateContamination()</a></code> </p>\n        </td>\n        <td><p>Simulate contaminated count matrix</p></td>\n      </tr></tbody><tbody><tr><th colspan=\"2\">\n          <h2 id=\"data-objects\">Data objects <a href=\"#data-objects\" class=\"anchor\" aria-hidden=\"true\"></a></h2>\n          <p class=\"section-desc\"></p><p>Small data objects used in examples</p>\n        </th>\n      </tr></tbody><tbody><tr><td>\n          <p><code><a href=\"sceCeldaCG.html\">sceCeldaCG</a></code> </p>\n        </td>\n        <td><p>sceCeldaCG</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"sceCeldaC.html\">sceCeldaC</a></code> </p>\n        </td>\n        <td><p>sceCeldaC</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"sceCeldaG.html\">sceCeldaG</a></code> </p>\n        </td>\n        <td><p>sceCeldaG</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"sceCeldaCGGridSearch.html\">sceCeldaCGGridSearch</a></code> </p>\n        </td>\n        <td><p>sceCeldaCGGridSearch</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"celdaCGGridSearchRes.html\">celdaCGGridSearchRes</a></code> </p>\n        </td>\n        <td><p>celdaCGGridSearchRes</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"sampleCells.html\">sampleCells</a></code> </p>\n        </td>\n        <td><p>sampleCells</p></td>\n      </tr><tr><td>\n          <p><code><a href=\"contaminationSim.html\">contaminationSim</a></code> </p>\n        </td>\n        <td><p>contaminationSim</p></td>\n      </tr></tbody></table></div>\n\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/logLikelihood.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Calculate the Log-likelihood of a celda model — logLikelihood • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Calculate the Log-likelihood of a celda model — logLikelihood\"><meta property=\"og:description\" content=\"Calculate the log-likelihood for cell population\n and feature module cluster assignments on the count matrix, per celda model.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Calculate the Log-likelihood of a celda model</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/loglikelihood.R\" class=\"external-link\"><code>R/loglikelihood.R</code></a></small>\n    <div class=\"hidden name\"><code>logLikelihood.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Calculate the log-likelihood for cell population\n and feature module cluster assignments on the count matrix, per celda model.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">logLikelihood</span><span class=\"op\">(</span><span class=\"va\">x</span>, <span class=\"va\">celdaMod</span>, useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment,ANY</span></span>\n<span><span class=\"fu\">logLikelihood</span><span class=\"op\">(</span><span class=\"va\">x</span>, useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for matrix,celda_C</span></span>\n<span><span class=\"fu\">logLikelihood</span><span class=\"op\">(</span><span class=\"va\">x</span>, <span class=\"va\">celdaMod</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for matrix,celda_G</span></span>\n<span><span class=\"fu\">logLikelihood</span><span class=\"op\">(</span><span class=\"va\">x</span>, <span class=\"va\">celdaMod</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for matrix,celda_CG</span></span>\n<span><span class=\"fu\">logLikelihood</span><span class=\"op\">(</span><span class=\"va\">x</span>, <span class=\"va\">celdaMod</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object returned by\n<a href=\"celda_C.html\">celda_C</a>, <a href=\"celda_G.html\">celda_G</a>, or <a href=\"celda_CG.html\">celda_CG</a>, with the matrix\nlocated in the <code>useAssay</code> assay slot.\nRows represent features and columns represent cells.</p></dd>\n\n\n<dt>celdaMod</dt>\n<dd><p>celda model object. Ignored if <code>x</code> is a\n<a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object.</p></dd>\n\n\n<dt>useAssay</dt>\n<dd><p>A string specifying which <a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">assay</a>\nslot to use. Default \"counts\".</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a> slot\nto use. Default \"featureSubset\".</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>The log-likelihood of the cluster assignment for the\n provided <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a>.</p>\n    </div>\n    <div id=\"see-also\">\n    <h2>See also</h2>\n    <div class=\"dont-index\"><p>`celda_C()` for clustering cells</p></div>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaC</span>, <span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">loglikC</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">logLikelihood</span><span class=\"op\">(</span><span class=\"va\">sceCeldaC</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">loglikCG</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">logLikelihood</span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/logLikelihoodHistory.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Get log-likelihood history — logLikelihoodHistory • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Get log-likelihood history — logLikelihoodHistory\"><meta property=\"og:description\" content=\"Retrieves the complete log-likelihood from all iterations of\n Gibbs sampling used to generate a celda model.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Get log-likelihood history</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/loglikelihood.R\" class=\"external-link\"><code>R/loglikelihood.R</code></a></small>\n    <div class=\"hidden name\"><code>logLikelihoodHistory.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Retrieves the complete log-likelihood from all iterations of\n Gibbs sampling used to generate a celda model.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">logLikelihoodHistory</span><span class=\"op\">(</span><span class=\"va\">x</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">logLikelihoodHistory</span><span class=\"op\">(</span><span class=\"va\">x</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for celdaModel</span></span>\n<span><span class=\"fu\">logLikelihoodHistory</span><span class=\"op\">(</span><span class=\"va\">x</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object\nreturned by <a href=\"celda_C.html\">celda_C</a>, <a href=\"celda_G.html\">celda_G</a>, or <a href=\"celda_CG.html\">celda_CG</a>, or a celda\nmodel object.</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a> slot\nto use. Default \"featureSubset\".</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>Numeric. The log-likelihood at each step of Gibbs sampling used to\n generate the model.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">logLikelihoodHistory</span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [1] -1212891 -1212891 -1212891 -1212891 -1212891 -1212891 -1212891 -1212891</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [9] -1212891 -1212891 -1212891 -1212891</span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGMod</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">logLikelihoodHistory</span><span class=\"op\">(</span><span class=\"va\">celdaCGMod</span><span class=\"op\">)</span></span></span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [1] -1215541 -1215541 -1215541 -1215541 -1215541 -1215541 -1215541 -1215541</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [9] -1215541 -1215541 -1215541 -1215541</span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/matrixNames.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Get feature, cell and sample names from a celdaModel — matrixNames • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Get feature, cell and sample names from a celdaModel — matrixNames\"><meta property=\"og:description\" content=\"Retrieves the row, column, and sample names used to generate\n a celdaModel.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Get feature, cell and sample names from a celdaModel</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/accessors.R\" class=\"external-link\"><code>R/accessors.R</code></a></small>\n    <div class=\"hidden name\"><code>matrixNames.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Retrieves the row, column, and sample names used to generate\n a celdaModel.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">matrixNames</span><span class=\"op\">(</span><span class=\"va\">celdaMod</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for celdaModel</span></span>\n<span><span class=\"fu\">matrixNames</span><span class=\"op\">(</span><span class=\"va\">celdaMod</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>celdaMod</dt>\n<dd><p>celdaModel. Options available in `celda::availableModels`.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>List. Contains row, column, and sample character vectors\n corresponding to the values provided when the celdaModel was generated.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGMod</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">matrixNames</span><span class=\"op\">(</span><span class=\"va\">celdaCGMod</span><span class=\"op\">)</span></span></span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> $row</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>   [1] \"Gene_1\"   \"Gene_2\"   \"Gene_3\"   \"Gene_4\"   \"Gene_5\"   \"Gene_6\"  </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>   [7] \"Gene_7\"   \"Gene_8\"   \"Gene_9\"   \"Gene_10\"  \"Gene_11\"  \"Gene_12\" </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [13] \"Gene_13\"  \"Gene_14\"  \"Gene_15\"  \"Gene_16\"  \"Gene_17\"  \"Gene_18\" </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [19] \"Gene_19\"  \"Gene_20\"  \"Gene_21\"  \"Gene_22\"  \"Gene_23\"  \"Gene_24\" </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [25] \"Gene_25\"  \"Gene_26\"  \"Gene_27\"  \"Gene_28\"  \"Gene_29\"  \"Gene_30\" </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [31] \"Gene_31\"  \"Gene_32\"  \"Gene_33\"  \"Gene_34\"  \"Gene_35\"  \"Gene_36\" </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [37] \"Gene_37\"  \"Gene_38\"  \"Gene_39\"  \"Gene_40\"  \"Gene_41\"  \"Gene_42\" </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [43] \"Gene_43\"  \"Gene_44\"  \"Gene_45\"  \"Gene_46\"  \"Gene_47\"  \"Gene_48\" </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [49] \"Gene_49\"  \"Gene_50\"  \"Gene_51\"  \"Gene_52\"  \"Gene_53\"  \"Gene_54\" </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [55] \"Gene_55\"  \"Gene_56\"  \"Gene_57\"  \"Gene_58\"  \"Gene_59\"  \"Gene_60\" </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [61] \"Gene_61\"  \"Gene_62\"  \"Gene_63\"  \"Gene_64\"  \"Gene_65\"  \"Gene_66\" </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [67] \"Gene_67\"  \"Gene_68\"  \"Gene_69\"  \"Gene_70\"  \"Gene_71\"  \"Gene_72\" </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [73] \"Gene_73\"  \"Gene_74\"  \"Gene_75\"  \"Gene_76\"  \"Gene_77\"  \"Gene_78\" </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [79] \"Gene_79\"  \"Gene_80\"  \"Gene_81\"  \"Gene_82\"  \"Gene_83\"  \"Gene_84\" </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [85] \"Gene_85\"  \"Gene_86\"  \"Gene_87\"  \"Gene_88\"  \"Gene_89\"  \"Gene_90\" </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [91] \"Gene_91\"  \"Gene_92\"  \"Gene_93\"  \"Gene_94\"  \"Gene_95\"  \"Gene_96\" </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [97] \"Gene_97\"  \"Gene_98\"  \"Gene_99\"  \"Gene_100\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> $column</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>   [1] \"Cell_1\"   \"Cell_2\"   \"Cell_3\"   \"Cell_4\"   \"Cell_5\"   \"Cell_6\"  </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>   [7] \"Cell_7\"   \"Cell_8\"   \"Cell_9\"   \"Cell_10\"  \"Cell_11\"  \"Cell_12\" </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [13] \"Cell_13\"  \"Cell_14\"  \"Cell_15\"  \"Cell_16\"  \"Cell_17\"  \"Cell_18\" </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [19] \"Cell_19\"  \"Cell_20\"  \"Cell_21\"  \"Cell_22\"  \"Cell_23\"  \"Cell_24\" </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [25] \"Cell_25\"  \"Cell_26\"  \"Cell_27\"  \"Cell_28\"  \"Cell_29\"  \"Cell_30\" </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [31] \"Cell_31\"  \"Cell_32\"  \"Cell_33\"  \"Cell_34\"  \"Cell_35\"  \"Cell_36\" </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [37] \"Cell_37\"  \"Cell_38\"  \"Cell_39\"  \"Cell_40\"  \"Cell_41\"  \"Cell_42\" </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [43] \"Cell_43\"  \"Cell_44\"  \"Cell_45\"  \"Cell_46\"  \"Cell_47\"  \"Cell_48\" </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [49] \"Cell_49\"  \"Cell_50\"  \"Cell_51\"  \"Cell_52\"  \"Cell_53\"  \"Cell_54\" </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [55] \"Cell_55\"  \"Cell_56\"  \"Cell_57\"  \"Cell_58\"  \"Cell_59\"  \"Cell_60\" </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [61] \"Cell_61\"  \"Cell_62\"  \"Cell_63\"  \"Cell_64\"  \"Cell_65\"  \"Cell_66\" </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [67] \"Cell_67\"  \"Cell_68\"  \"Cell_69\"  \"Cell_70\"  \"Cell_71\"  \"Cell_72\" </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [73] \"Cell_73\"  \"Cell_74\"  \"Cell_75\"  \"Cell_76\"  \"Cell_77\"  \"Cell_78\" </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [79] \"Cell_79\"  \"Cell_80\"  \"Cell_81\"  \"Cell_82\"  \"Cell_83\"  \"Cell_84\" </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [85] \"Cell_85\"  \"Cell_86\"  \"Cell_87\"  \"Cell_88\"  \"Cell_89\"  \"Cell_90\" </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [91] \"Cell_91\"  \"Cell_92\"  \"Cell_93\"  \"Cell_94\"  \"Cell_95\"  \"Cell_96\" </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [97] \"Cell_97\"  \"Cell_98\"  \"Cell_99\"  \"Cell_100\" \"Cell_101\" \"Cell_102\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [103] \"Cell_103\" \"Cell_104\" \"Cell_105\" \"Cell_106\" \"Cell_107\" \"Cell_108\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [109] \"Cell_109\" \"Cell_110\" \"Cell_111\" \"Cell_112\" \"Cell_113\" \"Cell_114\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [115] \"Cell_115\" \"Cell_116\" \"Cell_117\" \"Cell_118\" \"Cell_119\" \"Cell_120\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [121] \"Cell_121\" \"Cell_122\" \"Cell_123\" \"Cell_124\" \"Cell_125\" \"Cell_126\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [127] \"Cell_127\" \"Cell_128\" \"Cell_129\" \"Cell_130\" \"Cell_131\" \"Cell_132\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [133] \"Cell_133\" \"Cell_134\" \"Cell_135\" \"Cell_136\" \"Cell_137\" \"Cell_138\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [139] \"Cell_139\" \"Cell_140\" \"Cell_141\" \"Cell_142\" \"Cell_143\" \"Cell_144\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [145] \"Cell_145\" \"Cell_146\" \"Cell_147\" \"Cell_148\" \"Cell_149\" \"Cell_150\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [151] \"Cell_151\" \"Cell_152\" \"Cell_153\" \"Cell_154\" \"Cell_155\" \"Cell_156\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [157] \"Cell_157\" \"Cell_158\" \"Cell_159\" \"Cell_160\" \"Cell_161\" \"Cell_162\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [163] \"Cell_163\" \"Cell_164\" \"Cell_165\" \"Cell_166\" \"Cell_167\" \"Cell_168\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [169] \"Cell_169\" \"Cell_170\" \"Cell_171\" \"Cell_172\" \"Cell_173\" \"Cell_174\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [175] \"Cell_175\" \"Cell_176\" \"Cell_177\" \"Cell_178\" \"Cell_179\" \"Cell_180\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [181] \"Cell_181\" \"Cell_182\" \"Cell_183\" \"Cell_184\" \"Cell_185\" \"Cell_186\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [187] \"Cell_187\" \"Cell_188\" \"Cell_189\" \"Cell_190\" \"Cell_191\" \"Cell_192\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [193] \"Cell_193\" \"Cell_194\" \"Cell_195\" \"Cell_196\" \"Cell_197\" \"Cell_198\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [199] \"Cell_199\" \"Cell_200\" \"Cell_201\" \"Cell_202\" \"Cell_203\" \"Cell_204\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [205] \"Cell_205\" \"Cell_206\" \"Cell_207\" \"Cell_208\" \"Cell_209\" \"Cell_210\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [211] \"Cell_211\" \"Cell_212\" \"Cell_213\" \"Cell_214\" \"Cell_215\" \"Cell_216\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [217] \"Cell_217\" \"Cell_218\" \"Cell_219\" \"Cell_220\" \"Cell_221\" \"Cell_222\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [223] \"Cell_223\" \"Cell_224\" \"Cell_225\" \"Cell_226\" \"Cell_227\" \"Cell_228\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [229] \"Cell_229\" \"Cell_230\" \"Cell_231\" \"Cell_232\" \"Cell_233\" \"Cell_234\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [235] \"Cell_235\" \"Cell_236\" \"Cell_237\" \"Cell_238\" \"Cell_239\" \"Cell_240\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [241] \"Cell_241\" \"Cell_242\" \"Cell_243\" \"Cell_244\" \"Cell_245\" \"Cell_246\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [247] \"Cell_247\" \"Cell_248\" \"Cell_249\" \"Cell_250\" \"Cell_251\" \"Cell_252\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [253] \"Cell_253\" \"Cell_254\" \"Cell_255\" \"Cell_256\" \"Cell_257\" \"Cell_258\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [259] \"Cell_259\" \"Cell_260\" \"Cell_261\" \"Cell_262\" \"Cell_263\" \"Cell_264\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [265] \"Cell_265\" \"Cell_266\" \"Cell_267\" \"Cell_268\" \"Cell_269\" \"Cell_270\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [271] \"Cell_271\" \"Cell_272\" \"Cell_273\" \"Cell_274\" \"Cell_275\" \"Cell_276\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [277] \"Cell_277\" \"Cell_278\" \"Cell_279\" \"Cell_280\" \"Cell_281\" \"Cell_282\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [283] \"Cell_283\" \"Cell_284\" \"Cell_285\" \"Cell_286\" \"Cell_287\" \"Cell_288\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [289] \"Cell_289\" \"Cell_290\" \"Cell_291\" \"Cell_292\" \"Cell_293\" \"Cell_294\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [295] \"Cell_295\" \"Cell_296\" \"Cell_297\" \"Cell_298\" \"Cell_299\" \"Cell_300\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [301] \"Cell_301\" \"Cell_302\" \"Cell_303\" \"Cell_304\" \"Cell_305\" \"Cell_306\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [307] \"Cell_307\" \"Cell_308\" \"Cell_309\" \"Cell_310\" \"Cell_311\" \"Cell_312\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [313] \"Cell_313\" \"Cell_314\" \"Cell_315\" \"Cell_316\" \"Cell_317\" \"Cell_318\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [319] \"Cell_319\" \"Cell_320\" \"Cell_321\" \"Cell_322\" \"Cell_323\" \"Cell_324\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [325] \"Cell_325\" \"Cell_326\" \"Cell_327\" \"Cell_328\" \"Cell_329\" \"Cell_330\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [331] \"Cell_331\" \"Cell_332\" \"Cell_333\" \"Cell_334\" \"Cell_335\" \"Cell_336\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [337] \"Cell_337\" \"Cell_338\" \"Cell_339\" \"Cell_340\" \"Cell_341\" \"Cell_342\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [343] \"Cell_343\" \"Cell_344\" \"Cell_345\" \"Cell_346\" \"Cell_347\" \"Cell_348\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [349] \"Cell_349\" \"Cell_350\" \"Cell_351\" \"Cell_352\" \"Cell_353\" \"Cell_354\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [355] \"Cell_355\" \"Cell_356\" \"Cell_357\" \"Cell_358\" \"Cell_359\" \"Cell_360\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [361] \"Cell_361\" \"Cell_362\" \"Cell_363\" \"Cell_364\" \"Cell_365\" \"Cell_366\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [367] \"Cell_367\" \"Cell_368\" \"Cell_369\" \"Cell_370\" \"Cell_371\" \"Cell_372\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [373] \"Cell_373\" \"Cell_374\" \"Cell_375\" \"Cell_376\" \"Cell_377\" \"Cell_378\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [379] \"Cell_379\" \"Cell_380\" \"Cell_381\" \"Cell_382\" \"Cell_383\" \"Cell_384\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [385] \"Cell_385\" \"Cell_386\" \"Cell_387\" \"Cell_388\" \"Cell_389\" \"Cell_390\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [391] \"Cell_391\" \"Cell_392\" \"Cell_393\" \"Cell_394\" \"Cell_395\" \"Cell_396\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [397] \"Cell_397\" \"Cell_398\" \"Cell_399\" \"Cell_400\" \"Cell_401\" \"Cell_402\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [403] \"Cell_403\" \"Cell_404\" \"Cell_405\" \"Cell_406\" \"Cell_407\" \"Cell_408\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [409] \"Cell_409\" \"Cell_410\" \"Cell_411\" \"Cell_412\" \"Cell_413\" \"Cell_414\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [415] \"Cell_415\" \"Cell_416\" \"Cell_417\" \"Cell_418\" \"Cell_419\" \"Cell_420\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [421] \"Cell_421\" \"Cell_422\" \"Cell_423\" \"Cell_424\" \"Cell_425\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> $sample</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [1] \"Sample_1\" \"Sample_2\" \"Sample_3\" \"Sample_4\" \"Sample_5\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> </span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/moduleHeatmap.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Heatmap for featureModules — moduleHeatmap • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Heatmap for featureModules — moduleHeatmap\"><meta property=\"og:description\" content=\"Renders a heatmap for selected featureModule. Cells are\n ordered from those with the lowest probability of the module on the left to\n the highest probability on the right. Features are ordered from those\n with the highest probability in the module\n on the top to the lowest probability on the bottom.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Heatmap for featureModules</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/moduleHeatmap.R\" class=\"external-link\"><code>R/moduleHeatmap.R</code></a></small>\n    <div class=\"hidden name\"><code>moduleHeatmap.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Renders a heatmap for selected <code>featureModule</code>. Cells are\n ordered from those with the lowest probability of the module on the left to\n the highest probability on the right. Features are ordered from those\n with the highest probability in the module\n on the top to the lowest probability on the bottom.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">moduleHeatmap</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  modules <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  featureModule <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  col <span class=\"op\">=</span> <span class=\"fu\">circlize</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/circlize/man/colorRamp2.html\" class=\"external-link\">colorRamp2</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"op\">-</span><span class=\"fl\">2</span>, <span class=\"fl\">0</span>, <span class=\"fl\">2</span><span class=\"op\">)</span>, <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"#1E90FF\"</span>, <span class=\"st\">\"#FFFFFF\"</span>, <span class=\"st\">\"#CD2626\"</span><span class=\"op\">)</span><span class=\"op\">)</span>,</span>\n<span>  topCells <span class=\"op\">=</span> <span class=\"fl\">100</span>,</span>\n<span>  topFeatures <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  normalizedCounts <span class=\"op\">=</span> <span class=\"cn\">NA</span>,</span>\n<span>  normalize <span class=\"op\">=</span> <span class=\"st\">\"proportion\"</span>,</span>\n<span>  transformationFun <span class=\"op\">=</span> <span class=\"va\">sqrt</span>,</span>\n<span>  scaleRow <span class=\"op\">=</span> <span class=\"va\">scale</span>,</span>\n<span>  showFeatureNames <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  displayName <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  trim <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"op\">-</span><span class=\"fl\">2</span>, <span class=\"fl\">2</span><span class=\"op\">)</span>,</span>\n<span>  rowFontSize <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  showHeatmapLegend <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  showTopAnnotationLegend <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  showTopAnnotationName <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  topAnnotationHeight <span class=\"op\">=</span> <span class=\"fl\">5</span>,</span>\n<span>  showModuleLabel <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  moduleLabel <span class=\"op\">=</span> <span class=\"st\">\"auto\"</span>,</span>\n<span>  moduleLabelSize <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  byrow <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  top <span class=\"op\">=</span> <span class=\"cn\">NA</span>,</span>\n<span>  unit <span class=\"op\">=</span> <span class=\"st\">\"mm\"</span>,</span>\n<span>  ncol <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  useRaster <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  returnAsList <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  <span class=\"va\">...</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">moduleHeatmap</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  modules <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  featureModule <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  col <span class=\"op\">=</span> <span class=\"fu\">circlize</span><span class=\"fu\">::</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/circlize/man/colorRamp2.html\" class=\"external-link\">colorRamp2</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"op\">-</span><span class=\"fl\">2</span>, <span class=\"fl\">0</span>, <span class=\"fl\">2</span><span class=\"op\">)</span>, <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"#1E90FF\"</span>, <span class=\"st\">\"#FFFFFF\"</span>, <span class=\"st\">\"#CD2626\"</span><span class=\"op\">)</span><span class=\"op\">)</span>,</span>\n<span>  topCells <span class=\"op\">=</span> <span class=\"fl\">100</span>,</span>\n<span>  topFeatures <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  normalizedCounts <span class=\"op\">=</span> <span class=\"cn\">NA</span>,</span>\n<span>  normalize <span class=\"op\">=</span> <span class=\"st\">\"proportion\"</span>,</span>\n<span>  transformationFun <span class=\"op\">=</span> <span class=\"va\">sqrt</span>,</span>\n<span>  scaleRow <span class=\"op\">=</span> <span class=\"va\">scale</span>,</span>\n<span>  showFeatureNames <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  displayName <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  trim <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"op\">-</span><span class=\"fl\">2</span>, <span class=\"fl\">2</span><span class=\"op\">)</span>,</span>\n<span>  rowFontSize <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  showHeatmapLegend <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  showTopAnnotationLegend <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  showTopAnnotationName <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  topAnnotationHeight <span class=\"op\">=</span> <span class=\"fl\">5</span>,</span>\n<span>  showModuleLabel <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  moduleLabel <span class=\"op\">=</span> <span class=\"st\">\"auto\"</span>,</span>\n<span>  moduleLabelSize <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  byrow <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  top <span class=\"op\">=</span> <span class=\"cn\">NA</span>,</span>\n<span>  unit <span class=\"op\">=</span> <span class=\"st\">\"mm\"</span>,</span>\n<span>  ncol <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  useRaster <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  returnAsList <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  <span class=\"va\">...</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>A numeric <a href=\"https://rdrr.io/r/base/matrix.html\" class=\"external-link\">matrix</a> of counts or a\n<a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a>\nwith the matrix located in the assay slot under <code>useAssay</code>.\nRows represent features and columns represent cells. Celda\nresults must be present under <code>metadata(altExp(x, altExpName))</code>.</p></dd>\n\n\n<dt>useAssay</dt>\n<dd><p>A string specifying which <a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">assay</a>\nslot to use if <code>x</code> is a\n<a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object. Default \"counts\".</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a> slot\nto use. Default \"featureSubset\".</p></dd>\n\n\n<dt>modules</dt>\n<dd><p>Integer Vector. The featureModule(s) to display.\nMultiple modules can be included in a vector. Default <code>NULL</code> which\nplots all module heatmaps.</p></dd>\n\n\n<dt>featureModule</dt>\n<dd><p>Same as <code>modules</code>. Either can be used to specify\nthe modules to display.</p></dd>\n\n\n<dt>col</dt>\n<dd><p>Passed to <a href=\"https://rdrr.io/pkg/ComplexHeatmap/man/Heatmap.html\" class=\"external-link\">Heatmap</a>. Set color boundaries\nand colors.</p></dd>\n\n\n<dt>topCells</dt>\n<dd><p>Integer. Number of cells with the highest and lowest\nprobabilities for each module to include in the heatmap. For example, if\n<code>topCells = 50</code>, the 50 cells with the lowest probabilities and\nthe 50 cells\nwith the highest probabilities for each featureModule will be included. If\nNULL, all cells will be plotted. Default 100.</p></dd>\n\n\n<dt>topFeatures</dt>\n<dd><p>Integer. Plot `topFeatures` features with the highest\nprobabilities in the module heatmap for each featureModule. If <code>NULL</code>,\nplot all features in the module. Default <code>NULL</code>.</p></dd>\n\n\n<dt>normalizedCounts</dt>\n<dd><p>Integer matrix. Rows represent features and columns\nrepresent cells. If you have a normalized matrix result from\n<a href=\"normalizeCounts.html\">normalizeCounts</a>, you can pass through the result here to\nskip the normalization step in this function. Make sure the colnames and\nrownames match the object in x. This matrix should\ncorrespond to one generated from this count matrix\n<code>assay(altExp(x, altExpName), i = useAssay)</code>. If <code>NA</code>,\nnormalization will be carried out in the following form\n<code>normalizeCounts(assay(altExp(x, altExpName), i = useAssay),\nnormalize = \"proportion\", transformationFun = sqrt)</code>.\nUse of this parameter is particularly useful for plotting many\nmodule heatmaps, where normalizing the counts matrix repeatedly would\nbe too time consuming. Default NA.</p></dd>\n\n\n<dt>normalize</dt>\n<dd><p>Character. Passed to <a href=\"normalizeCounts.html\">normalizeCounts</a> if\n<code>normalizedCounts</code> is <code>NA</code>.\nDivides counts by the library sizes for each cell. One of 'proportion',\n'cpm', 'median', or 'mean'. 'proportion' uses the total counts for each\ncell as the library size. 'cpm' divides the library size of each cell by\none million to produce counts per million. 'median' divides the library\nsize of each cell by the median library size across all cells. 'mean'\ndivides the library size of each cell by the mean library size across all\ncells. Default \"proportion\".</p></dd>\n\n\n<dt>transformationFun</dt>\n<dd><p>Function. Passed to <a href=\"normalizeCounts.html\">normalizeCounts</a> if\n<code>normalizedCounts</code> is <code>NA</code>. Applies a transformation such as\n<a href=\"https://rdrr.io/r/base/MathFun.html\" class=\"external-link\">sqrt</a>, <a href=\"https://rdrr.io/r/base/Log.html\" class=\"external-link\">log</a>, <a href=\"https://rdrr.io/r/base/Log.html\" class=\"external-link\">log2</a>, <a href=\"https://rdrr.io/r/base/Log.html\" class=\"external-link\">log10</a>, or <a href=\"https://rdrr.io/r/base/Log.html\" class=\"external-link\">log1p</a>.\nIf <code>NULL</code>, no transformation will be applied. Occurs after\nnormalization. Default <a href=\"https://rdrr.io/r/base/MathFun.html\" class=\"external-link\">sqrt</a>.</p></dd>\n\n\n<dt>scaleRow</dt>\n<dd><p>Function. Which function to use to scale each individual\nrow. Set to NULL to disable. Occurs after normalization and log\ntransformation. For example, <a href=\"https://rdrr.io/r/base/scale.html\" class=\"external-link\">scale</a> will Z-score transform each row.\nDefault <a href=\"https://rdrr.io/r/base/scale.html\" class=\"external-link\">scale</a>.</p></dd>\n\n\n<dt>showFeatureNames</dt>\n<dd><p>Logical. Whether feature names should be displayed.\nDefault TRUE.</p></dd>\n\n\n<dt>displayName</dt>\n<dd><p>Character. The column name of\n<code>rowData(altExp(x, altExpName))</code> that specifies the display names for\nthe features. Default <code>NULL</code>, which displays the row names. Only works\nif <code>showFeaturenames</code> is <code>TRUE</code> and <code>x</code> is a\n<a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object.</p></dd>\n\n\n<dt>trim</dt>\n<dd><p>Numeric vector. Vector of length two that specifies the lower\nand upper bounds for plotting the data. This threshold is applied\nafter row scaling. Set to NULL to disable. Default <code>c(-2,2)</code>.</p></dd>\n\n\n<dt>rowFontSize</dt>\n<dd><p>Numeric. Font size for feature names. If <code>NULL</code>,\nthen the size will automatically be determined. Default <code>NULL</code>.</p></dd>\n\n\n<dt>showHeatmapLegend</dt>\n<dd><p>Passed to <a href=\"https://rdrr.io/pkg/ComplexHeatmap/man/Heatmap.html\" class=\"external-link\">Heatmap</a>. Show\nlegend for expression levels.</p></dd>\n\n\n<dt>showTopAnnotationLegend</dt>\n<dd><p>Passed to\n<a href=\"https://rdrr.io/pkg/ComplexHeatmap/man/HeatmapAnnotation.html\" class=\"external-link\">HeatmapAnnotation</a>. Show legend for cell annotation.</p></dd>\n\n\n<dt>showTopAnnotationName</dt>\n<dd><p>Passed to\n<a href=\"https://rdrr.io/pkg/ComplexHeatmap/man/HeatmapAnnotation.html\" class=\"external-link\">HeatmapAnnotation</a>. Show heatmap top annotation name.</p></dd>\n\n\n<dt>topAnnotationHeight</dt>\n<dd><p>Passed to\n<a href=\"https://rdrr.io/pkg/ComplexHeatmap/man/HeatmapAnnotation.html\" class=\"external-link\">HeatmapAnnotation</a>. Column annotation height.\n<a href=\"https://rdrr.io/pkg/ComplexHeatmap/man/rowAnnotation.html\" class=\"external-link\">rowAnnotation</a>. Show legend for module annotation.</p></dd>\n\n\n<dt>showModuleLabel</dt>\n<dd><p>Show left side module labels.</p></dd>\n\n\n<dt>moduleLabel</dt>\n<dd><p>The left side row titles for module heatmap. Must be\nvector of the same length as <code>featureModule</code>. Default \"auto\", which\nautomatically pulls module labels from <code>x</code>.</p></dd>\n\n\n<dt>moduleLabelSize</dt>\n<dd><p>Passed to gpar. The size of text (in points).</p></dd>\n\n\n<dt>byrow</dt>\n<dd><p>Passed to <a href=\"https://rdrr.io/r/base/matrix.html\" class=\"external-link\">matrix</a>. logical. If <code>FALSE</code> (the default)\nthe figure panel is filled by columns, otherwise the figure panel is filled\nby rows.</p></dd>\n\n\n<dt>top</dt>\n<dd><p>Passed to <a href=\"https://rdrr.io/pkg/gridExtra/man/arrangeGrob.html\" class=\"external-link\">marrangeGrob</a>. The title for each page.</p></dd>\n\n\n<dt>unit</dt>\n<dd><p>Passed to <a href=\"https://rdrr.io/r/grid/unit.html\" class=\"external-link\">unit</a>. Single\ncharacter object defining the unit of all dimensions defined.</p></dd>\n\n\n<dt>ncol</dt>\n<dd><p>Integer. Number of columns of module heatmaps. If <code>NULL</code>,\nthen this will be automatically calculated so that the number of columns\nand rows will be approximately the same. Default <code>NULL</code>.</p></dd>\n\n\n<dt>useRaster</dt>\n<dd><p>Boolean. Rasterizing will make the heatmap a single object\nand reduced the memory of the plot and the size of a file. If <code>NULL</code>,\nthen rasterization will be automatically determined by the underlying\n<a href=\"https://rdrr.io/pkg/ComplexHeatmap/man/Heatmap.html\" class=\"external-link\">Heatmap</a> function. Default <code>TRUE</code>.</p></dd>\n\n\n<dt>returnAsList</dt>\n<dd><p>Boolean. If <code>TRUE</code>, then a list of plots will be\nreturned instead of a single multi-panel figure. These plots can be\ndisplayed using the <a href=\"https://rdrr.io/r/grid/grid.draw.html\" class=\"external-link\">grid.draw</a> function. Default <code>FALSE</code>.</p></dd>\n\n\n<dt>...</dt>\n<dd><p>Additional parameters passed to <a href=\"https://rdrr.io/pkg/ComplexHeatmap/man/Heatmap.html\" class=\"external-link\">Heatmap</a>.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>A list object if plotting\n more than one module heatmaps. Otherwise a</p>\n<p></p>\n<p><a href=\"https://rdrr.io/pkg/ComplexHeatmap/man/HeatmapList.html\" class=\"external-link\">HeatmapList</a> object is returned.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">moduleHeatmap</span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span>, displayName <span class=\"op\">=</span> <span class=\"st\">\"rownames\"</span><span class=\"op\">)</span></span></span>\n<span class=\"r-plt img\"><img src=\"moduleHeatmap-1.png\" alt=\"\" width=\"700\" height=\"433\"></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/nonzero.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>get row and column indices of none zero elements in the matrix — nonzero • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"get row and column indices of none zero elements in the matrix — nonzero\"><meta property=\"og:description\" content=\"get row and column indices of none zero elements in the matrix\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>get row and column indices of none zero elements in the matrix</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/RcppExports.R\" class=\"external-link\"><code>R/RcppExports.R</code></a></small>\n    <div class=\"hidden name\"><code>nonzero.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>get row and column indices of none zero elements in the matrix</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">nonzero</span><span class=\"op\">(</span><span class=\"va\">R_counts</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>R_counts</dt>\n<dd><p>A matrix</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>An integer matrix where each row is a row, column indices pair</p>\n    </div>\n\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/normalizeCounts.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Normalization of count data — normalizeCounts • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Normalization of count data — normalizeCounts\"><meta property=\"og:description\" content=\"Performs normalization, transformation, and/or scaling of a\n counts matrix\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Normalization of count data</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/celda_functions.R\" class=\"external-link\"><code>R/celda_functions.R</code></a></small>\n    <div class=\"hidden name\"><code>normalizeCounts.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Performs normalization, transformation, and/or scaling of a\n counts matrix</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">normalizeCounts</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">counts</span>,</span>\n<span>  normalize <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"proportion\"</span>, <span class=\"st\">\"cpm\"</span>, <span class=\"st\">\"median\"</span>, <span class=\"st\">\"mean\"</span><span class=\"op\">)</span>,</span>\n<span>  scaleFactor <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  transformationFun <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  scaleFun <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  pseudocountNormalize <span class=\"op\">=</span> <span class=\"fl\">0</span>,</span>\n<span>  pseudocountTransform <span class=\"op\">=</span> <span class=\"fl\">0</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>counts</dt>\n<dd><p>Integer, Numeric or Sparse matrix. Rows represent features\nand columns represent cells.</p></dd>\n\n\n<dt>normalize</dt>\n<dd><p>Character.\nDivides counts by the library sizes for each cell. One of 'proportion',\n'cpm', 'median', or 'mean'. 'proportion' uses the total counts for each\ncell as the library size. 'cpm' divides the library size of each cell by\none million to produce counts per million. 'median' divides the library\nsize of each cell by the median library size across all cells. 'mean'\ndivides the library size of each cell by the mean library size across all\ncells.</p></dd>\n\n\n<dt>scaleFactor</dt>\n<dd><p>Numeric. Sets the scale factor for cell-level\nnormalization. This scale factor is multiplied to each cell after the\nlibrary size of each cell had been adjusted in <code>normalize</code>. Default\n<code>NULL</code> which means no scale factor is applied.</p></dd>\n\n\n<dt>transformationFun</dt>\n<dd><p>Function. Applys a transformation such as\n<a href=\"https://rdrr.io/r/base/MathFun.html\" class=\"external-link\">sqrt</a>, <a href=\"https://rdrr.io/r/base/Log.html\" class=\"external-link\">log</a>, <a href=\"https://rdrr.io/r/base/Log.html\" class=\"external-link\">log2</a>, <a href=\"https://rdrr.io/r/base/Log.html\" class=\"external-link\">log10</a>, or <a href=\"https://rdrr.io/r/base/Log.html\" class=\"external-link\">log1p</a>.\nIf NULL, no transformation will be applied. Occurs after normalization.\nDefault NULL.</p></dd>\n\n\n<dt>scaleFun</dt>\n<dd><p>Function. Scales the rows of the normalized and transformed\ncount matrix. For example, 'scale' can be used to z-score normalize the\nrows. Default NULL.</p></dd>\n\n\n<dt>pseudocountNormalize</dt>\n<dd><p>Numeric. Add a pseudocount to counts before\nnormalization. Default 0.</p></dd>\n\n\n<dt>pseudocountTransform</dt>\n<dd><p>Numeric. Add a pseudocount to normalized counts\nbefore applying the transformation function. Adding a pseudocount\ncan be useful before applying a log transformation. Default  0.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>Numeric Matrix. A normalized matrix.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">normalizedCounts</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">normalizeCounts</span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span><span class=\"op\">$</span><span class=\"va\">counts</span>, <span class=\"st\">\"proportion\"</span>,</span></span>\n<span class=\"r-in\"><span>  pseudocountNormalize <span class=\"op\">=</span> <span class=\"fl\">1</span><span class=\"op\">)</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/params.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Get parameter values provided for celdaModel creation — params • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Get parameter values provided for celdaModel creation — params\"><meta property=\"og:description\" content=\"Retrieves the K/L, model priors (e.g. alpha, beta),\n and count matrix checksum parameters provided during the creation of the\n provided celdaModel.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Get parameter values provided for celdaModel creation</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/accessors.R\" class=\"external-link\"><code>R/accessors.R</code></a></small>\n    <div class=\"hidden name\"><code>params.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Retrieves the K/L, model priors (e.g. alpha, beta),\n and count matrix checksum parameters provided during the creation of the\n provided celdaModel.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">params</span><span class=\"op\">(</span><span class=\"va\">celdaMod</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for celdaModel</span></span>\n<span><span class=\"fu\">params</span><span class=\"op\">(</span><span class=\"va\">celdaMod</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>celdaMod</dt>\n<dd><p>celdaModel. Options available in\n<code><a href=\"availableModels.html\">celda::availableModels</a></code>.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>List. Contains the model-specific parameters for the provided celda\n model object depending on its class.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGMod</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">params</span><span class=\"op\">(</span><span class=\"va\">celdaCGMod</span><span class=\"op\">)</span></span></span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> $K</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [1] 5</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> $L</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [1] 10</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> $alpha</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [1] 1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> $beta</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [1] 1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> $delta</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [1] 1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> $gamma</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [1] 1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> $seed</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [1] 12345</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> </span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> $countChecksum</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [1] \"b47286aed8081daa674f796655314d67\"</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> </span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/perplexity.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Calculate the perplexity of a celda model — perplexity • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Calculate the perplexity of a celda model — perplexity\"><meta property=\"og:description\" content=\"Perplexity is a statistical measure of how well a probability\n model can predict new data. Lower perplexity indicates a better model.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Calculate the perplexity of a celda model</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/perplexity.R\" class=\"external-link\"><code>R/perplexity.R</code></a></small>\n    <div class=\"hidden name\"><code>perplexity.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Perplexity is a statistical measure of how well a probability\n model can predict new data. Lower perplexity indicates a better model.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">perplexity</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  <span class=\"va\">celdaMod</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  newCounts <span class=\"op\">=</span> <span class=\"cn\">NULL</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment,ANY</span></span>\n<span><span class=\"fu\">perplexity</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  newCounts <span class=\"op\">=</span> <span class=\"cn\">NULL</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for ANY,celda_CG</span></span>\n<span><span class=\"fu\">perplexity</span><span class=\"op\">(</span><span class=\"va\">x</span>, <span class=\"va\">celdaMod</span>, newCounts <span class=\"op\">=</span> <span class=\"cn\">NULL</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for ANY,celda_C</span></span>\n<span><span class=\"fu\">perplexity</span><span class=\"op\">(</span><span class=\"va\">x</span>, <span class=\"va\">celdaMod</span>, newCounts <span class=\"op\">=</span> <span class=\"cn\">NULL</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for ANY,celda_G</span></span>\n<span><span class=\"fu\">perplexity</span><span class=\"op\">(</span><span class=\"va\">x</span>, <span class=\"va\">celdaMod</span>, newCounts <span class=\"op\">=</span> <span class=\"cn\">NULL</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>Can be one of</p><ul><li><p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object returned by\n<a href=\"celda_C.html\">celda_C</a>, <a href=\"celda_G.html\">celda_G</a> or <a href=\"celda_CG.html\">celda_CG</a>, with the matrix\nlocated in the <code>useAssay</code> assay slot.\nRows represent features and columns represent cells.</p></li>\n<li><p>Integer counts matrix. Rows represent features and columns represent\ncells. This matrix should be the same as the one used to generate\n<code>celdaMod</code>.</p></li>\n</ul></dd>\n\n\n<dt>celdaMod</dt>\n<dd><p>Celda model object. Only works if <code>x</code> is an integer\ncounts matrix.</p></dd>\n\n\n<dt>useAssay</dt>\n<dd><p>A string specifying which <a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">assay</a>\nslot to use if <code>x</code> is a <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object.\nDefault \"counts\".</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a> slot\nto use. Default \"featureSubset\".</p></dd>\n\n\n<dt>newCounts</dt>\n<dd><p>A new counts matrix used to calculate perplexity. If NULL,\nperplexity will be calculated for the matrix in <code>useAssay</code> slot in\n<code>x</code>. Default NULL.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>Numeric. The perplexity for the provided <code>x</code> (and</p>\n<p></p>\n<p><code>celdaModel</code>).</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">perplexity</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">perplexity</span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span>, <span class=\"va\">celdaCGMod</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">perplexity</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">perplexity</span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span><span class=\"op\">$</span><span class=\"va\">counts</span>, <span class=\"va\">celdaCGMod</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCSim</span>, <span class=\"va\">celdaCMod</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">perplexity</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">perplexity</span><span class=\"op\">(</span><span class=\"va\">celdaCSim</span><span class=\"op\">$</span><span class=\"va\">counts</span>, <span class=\"va\">celdaCMod</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaGSim</span>, <span class=\"va\">celdaGMod</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">perplexity</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">perplexity</span><span class=\"op\">(</span><span class=\"va\">celdaGSim</span><span class=\"op\">$</span><span class=\"va\">counts</span>, <span class=\"va\">celdaGMod</span><span class=\"op\">)</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/plotCeldaViolin.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Feature Expression Violin Plot — plotCeldaViolin • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Feature Expression Violin Plot — plotCeldaViolin\"><meta property=\"og:description\" content=\"Outputs a violin plot for feature expression data.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Feature Expression Violin Plot</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/plot_dr.R\" class=\"external-link\"><code>R/plot_dr.R</code></a></small>\n    <div class=\"hidden name\"><code>plotCeldaViolin.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Outputs a violin plot for feature expression data.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">plotCeldaViolin</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  <span class=\"va\">celdaMod</span>,</span>\n<span>  <span class=\"va\">features</span>,</span>\n<span>  displayName <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  exactMatch <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  plotDots <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  dotSize <span class=\"op\">=</span> <span class=\"fl\">0.1</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">plotCeldaViolin</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  <span class=\"va\">features</span>,</span>\n<span>  displayName <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  exactMatch <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  plotDots <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  dotSize <span class=\"op\">=</span> <span class=\"fl\">0.1</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for ANY</span></span>\n<span><span class=\"fu\">plotCeldaViolin</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  <span class=\"va\">celdaMod</span>,</span>\n<span>  <span class=\"va\">features</span>,</span>\n<span>  exactMatch <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  plotDots <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  dotSize <span class=\"op\">=</span> <span class=\"fl\">0.1</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>Numeric matrix or a <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object\nwith the matrix located in the assay slot under <code>useAssay</code>. Rows\nrepresent features and columns represent cells.</p></dd>\n\n\n<dt>celdaMod</dt>\n<dd><p>Celda object of class \"celda_G\" or \"celda_CG\". Used only if\n<code>x</code> is a matrix object.</p></dd>\n\n\n<dt>features</dt>\n<dd><p>Character vector. Uses these genes for plotting.</p></dd>\n\n\n<dt>displayName</dt>\n<dd><p>Character. The column name of\n<code>rowData(x)</code> that specifies the display names for\nthe features. Default <code>NULL</code>, which displays the row names. Only works\nif <code>x</code> is a <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object.</p></dd>\n\n\n<dt>useAssay</dt>\n<dd><p>A string specifying which <a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">assay</a>\nslot to use if <code>x</code> is a\n<a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object. Default \"counts\".</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a> slot\nto use. Default \"featureSubset\".</p></dd>\n\n\n<dt>exactMatch</dt>\n<dd><p>Logical. Whether an exact match or a partial match using\n<code><a href=\"https://rdrr.io/r/base/grep.html\" class=\"external-link\">grep()</a></code> is used to look up the feature in the rownames of the counts\n matrix. Default <code>TRUE</code>.</p></dd>\n\n\n<dt>plotDots</dt>\n<dd><p>Boolean. If <code>TRUE</code>, the\nexpression of features will be plotted as points in addition to the violin\ncurve. Default <code>TRUE</code>.</p></dd>\n\n\n<dt>dotSize</dt>\n<dd><p>Numeric. Size of points if <code>plotDots = TRUE</code>.\nDefault <code>0.1</code>.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>Violin plot for each feature, grouped by celda cluster</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">plotCeldaViolin</span><span class=\"op\">(</span>x <span class=\"op\">=</span> <span class=\"va\">sceCeldaCG</span>, features <span class=\"op\">=</span> <span class=\"st\">\"Gene_1\"</span><span class=\"op\">)</span></span></span>\n<span class=\"r-plt img\"><img src=\"plotCeldaViolin-1.png\" alt=\"\" width=\"700\" height=\"433\"></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span>, <span class=\"va\">celdaCGMod</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">plotCeldaViolin</span><span class=\"op\">(</span>x <span class=\"op\">=</span> <span class=\"va\">celdaCGSim</span><span class=\"op\">$</span><span class=\"va\">counts</span>,</span></span>\n<span class=\"r-in\"><span>   celdaMod <span class=\"op\">=</span> <span class=\"va\">celdaCGMod</span>,</span></span>\n<span class=\"r-in\"><span>   features <span class=\"op\">=</span> <span class=\"st\">\"Gene_1\"</span><span class=\"op\">)</span></span></span>\n<span class=\"r-plt img\"><img src=\"plotCeldaViolin-2.png\" alt=\"\" width=\"700\" height=\"433\"></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/plotDecontXContamination.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Plots contamination on UMAP coordinates — plotDecontXContamination • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Plots contamination on UMAP coordinates — plotDecontXContamination\"><meta property=\"og:description\" content=\"A scatter plot of the UMAP dimensions generated by DecontX with\ncells colored by the estimated percentation of contamation.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Plots contamination on UMAP coordinates</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/plot_decontx.R\" class=\"external-link\"><code>R/plot_decontx.R</code></a></small>\n    <div class=\"hidden name\"><code>plotDecontXContamination.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>A scatter plot of the UMAP dimensions generated by DecontX with\ncells colored by the estimated percentation of contamation.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">plotDecontXContamination</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  batch <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  colorScale <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"blue\"</span>, <span class=\"st\">\"green\"</span>, <span class=\"st\">\"yellow\"</span>, <span class=\"st\">\"orange\"</span>, <span class=\"st\">\"red\"</span><span class=\"op\">)</span>,</span>\n<span>  size <span class=\"op\">=</span> <span class=\"fl\">1</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>Either a <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> with <code>decontX</code>\nresults stored in <code>metadata(x)$decontX</code> or the result from running\ndecontX on a count matrix.</p></dd>\n\n\n<dt>batch</dt>\n<dd><p>Character. Batch of cells to plot. If <code>NULL</code>, then\nthe first batch in the list will be selected. Default <code>NULL</code>.</p></dd>\n\n\n<dt>colorScale</dt>\n<dd><p>Character vector. Contains the color spectrum to be passed\nto <code>scale_colour_gradientn</code> from package 'ggplot2'. Default\nc(\"blue\",\"green\",\"yellow\",\"orange\",\"red\").</p></dd>\n\n\n<dt>size</dt>\n<dd><p>Numeric. Size of points in the scatterplot. Default 1.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>Returns a <code>ggplot</code> object.</p>\n    </div>\n    <div id=\"see-also\">\n    <h2>See also</h2>\n    <div class=\"dont-index\"><p>See <code><a href=\"decontX.html\">decontX</a></code> for a full example of how to estimate\nand plot contamination.</p></div>\n    </div>\n    <div id=\"author\">\n    <h2>Author</h2>\n    <p>Shiyi Yang, Joshua Campbell</p>\n    </div>\n\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/plotDecontXMarkerExpression.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Plots expression of marker genes before and after decontamination — plotDecontXMarkerExpression • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Plots expression of marker genes before and after decontamination — plotDecontXMarkerExpression\"><meta property=\"og:description\" content=\"Generates a violin plot that shows the counts of marker\ngenes in cells across specific clusters or cell types. Can be used to view\nthe expression of marker genes in different cell types before and after\ndecontamination with decontX.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Plots expression of marker genes before and after decontamination</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/plot_decontx.R\" class=\"external-link\"><code>R/plot_decontx.R</code></a></small>\n    <div class=\"hidden name\"><code>plotDecontXMarkerExpression.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Generates a violin plot that shows the counts of marker\ngenes in cells across specific clusters or cell types. Can be used to view\nthe expression of marker genes in different cell types before and after\ndecontamination with <code><a href=\"decontX.html\">decontX</a></code>.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">plotDecontXMarkerExpression</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  <span class=\"va\">markers</span>,</span>\n<span>  groupClusters <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  assayName <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"counts\"</span>, <span class=\"st\">\"decontXcounts\"</span><span class=\"op\">)</span>,</span>\n<span>  z <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  exactMatch <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  by <span class=\"op\">=</span> <span class=\"st\">\"rownames\"</span>,</span>\n<span>  log1p <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  ncol <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  plotDots <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  dotSize <span class=\"op\">=</span> <span class=\"fl\">0.1</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>Either a <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a>\nor a matrix-like object of counts.</p></dd>\n\n\n<dt>markers</dt>\n<dd><p>Character Vector or List. A character vector\nor list of character vectors\nwith the names of the marker genes of interest.</p></dd>\n\n\n<dt>groupClusters</dt>\n<dd><p>List. A named list that allows\ncell clusters labels coded in\n<code>z</code> to be regrouped and renamed on the fly. For example,\n<code>list(Tcells=c(1, 2), Bcells=7)</code> would recode clusters\n1 and 2 to \"Tcells\"\nand cluster 7 to \"Bcells\". Note that if this is used, clusters\nin <code>z</code> not found\nin <code>groupClusters</code> will be excluded. Default <code>NULL</code>.</p></dd>\n\n\n<dt>assayName</dt>\n<dd><p>Character vector. Name(s) of the assay(s) to\nplot if <code>x</code> is a\n<a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a>. If more than one assay is listed, then\nside-by-side violin plots will be generated.\nDefault <code>c(\"counts\", \"decontXcounts\")</code>.</p></dd>\n\n\n<dt>z</dt>\n<dd><p>Character, Integer, or Vector.\nIndicates the cluster labels for each cell.\nIf <code>x</code> is a <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> and <code>z = NULL</code>,\nthen the cluster labels from <code><a href=\"decontX.html\">decontX</a></code> will be retreived from the\n<code>colData</code> of <code>x</code> (i.e. <code>colData(x)$decontX_clusters</code>).\nIf <code>z</code> is a single character or integer, then that column will be\nretrived from <code>colData</code> of <code>x</code>. (i.e. <code>colData(x)[,z]</code>).\nIf <code>x</code> is a counts matrix, then <code>z</code> will need to be a vector\nthe same length as the number of columns in <code>x</code> that indicate\nthe cluster to which each cell belongs. Default <code>NULL</code>.</p></dd>\n\n\n<dt>exactMatch</dt>\n<dd><p>Boolean. Whether to only identify exact matches\nfor the markers or to identify partial matches using <code><a href=\"https://rdrr.io/r/base/grep.html\" class=\"external-link\">grep</a></code>.\nSee <code><a href=\"retrieveFeatureIndex.html\">retrieveFeatureIndex</a></code> for more details.\nDefault <code>TRUE</code>.</p></dd>\n\n\n<dt>by</dt>\n<dd><p>Character. Where to search for the markers if <code>x</code> is a\n<a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a>. See <code><a href=\"retrieveFeatureIndex.html\">retrieveFeatureIndex</a></code>\nfor more details. If <code>x</code> is a matrix, then this must be set to\n<code>\"rownames\"</code>. Default <code>\"rownames\"</code>.</p></dd>\n\n\n<dt>log1p</dt>\n<dd><p>Boolean. Whether to apply the function <code>log1p</code> to the data\nbefore plotting. This function will add a pseudocount of 1 and then log\ntransform the expression values. Default <code>FALSE</code>.</p></dd>\n\n\n<dt>ncol</dt>\n<dd><p>Integer. Number of columns to make in the plot.\nDefault <code>NULL</code>.</p></dd>\n\n\n<dt>plotDots</dt>\n<dd><p>Boolean. If <code>TRUE</code>, the\nexpression of features will be plotted as points in addition to the violin\ncurve. Default <code>FALSE</code>.</p></dd>\n\n\n<dt>dotSize</dt>\n<dd><p>Numeric. Size of points if <code>plotDots = TRUE</code>.\nDefault <code>0.1</code>.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>Returns a <code>ggplot</code> object.</p>\n    </div>\n    <div id=\"see-also\">\n    <h2>See also</h2>\n    <div class=\"dont-index\"><p>See <code><a href=\"decontX.html\">decontX</a></code> for a full example of how to estimate\nand plot contamination.</p></div>\n    </div>\n    <div id=\"author\">\n    <h2>Author</h2>\n    <p>Shiyi Yang, Joshua Campbell</p>\n    </div>\n\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/plotDecontXMarkerPercentage.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Plots percentage of cells cell types expressing markers — plotDecontXMarkerPercentage • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Plots percentage of cells cell types expressing markers — plotDecontXMarkerPercentage\"><meta property=\"og:description\" content=\"Generates a barplot that shows the percentage of\ncells within clusters or cell types that have detectable levels\nof given marker genes. Can be used to view the expression of\nmarker genes in different cell types before and after\ndecontamination with decontX.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Plots percentage of cells cell types expressing markers</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/plot_decontx.R\" class=\"external-link\"><code>R/plot_decontx.R</code></a></small>\n    <div class=\"hidden name\"><code>plotDecontXMarkerPercentage.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Generates a barplot that shows the percentage of\ncells within clusters or cell types that have detectable levels\nof given marker genes. Can be used to view the expression of\nmarker genes in different cell types before and after\ndecontamination with <code><a href=\"decontX.html\">decontX</a></code>.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">plotDecontXMarkerPercentage</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  <span class=\"va\">markers</span>,</span>\n<span>  groupClusters <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  assayName <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"counts\"</span>, <span class=\"st\">\"decontXcounts\"</span><span class=\"op\">)</span>,</span>\n<span>  z <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  threshold <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  exactMatch <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  by <span class=\"op\">=</span> <span class=\"st\">\"rownames\"</span>,</span>\n<span>  ncol <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/Round.html\" class=\"external-link\">round</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/MathFun.html\" class=\"external-link\">sqrt</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/length.html\" class=\"external-link\">length</a></span><span class=\"op\">(</span><span class=\"va\">markers</span><span class=\"op\">)</span><span class=\"op\">)</span><span class=\"op\">)</span>,</span>\n<span>  labelBars <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  labelSize <span class=\"op\">=</span> <span class=\"fl\">3</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>Either a <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> or\na matrix-like object of counts.</p></dd>\n\n\n<dt>markers</dt>\n<dd><p>List. A named list indicating the marker genes\nfor each cell type of\ninterest. Multiple markers can be supplied for each cell type. For example,\n<code>list(Tcell_Markers=c(\"CD3E\", \"CD3D\"),\nBcell_Markers=c(\"CD79A\", \"CD79B\", \"MS4A1\")</code>\nwould specify markers for human T-cells and B-cells.\nA cell will be considered\n\"positive\" for a cell type if it has a count greater than <code>threshold</code>\nfor at least one of the marker genes in the list.</p></dd>\n\n\n<dt>groupClusters</dt>\n<dd><p>List. A named list that allows\ncell clusters labels coded in\n<code>z</code> to be regrouped and renamed on the fly. For example,\n<code>list(Tcells=c(1, 2), Bcells=7)</code> would recode\nclusters 1 and 2 to \"Tcells\"\nand cluster 7 to \"Bcells\". Note that if this is\nused, clusters in <code>z</code> not found\nin <code>groupClusters</code> will be excluded from the barplot.\nDefault <code>NULL</code>.</p></dd>\n\n\n<dt>assayName</dt>\n<dd><p>Character vector. Name(s) of the assay(s) to\nplot if <code>x</code> is a\n<a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a>. If more than one assay\nis listed, then side-by-side barplots will be generated.\nDefault <code>c(\"counts\", \"decontXcounts\")</code>.</p></dd>\n\n\n<dt>z</dt>\n<dd><p>Character, Integer, or Vector. Indicates the cluster labels\nfor each cell.\nIf <code>x</code> is a <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> and <code>z = NULL</code>,\nthen the cluster labels from <code><a href=\"decontX.html\">decontX</a></code> will be retived from the\n<code>colData</code> of <code>x</code> (i.e. <code>colData(x)$decontX_clusters</code>).\nIf <code>z</code> is a single character or integer,\nthen that column will be retrived\nfrom <code>colData</code> of <code>x</code>. (i.e. <code>colData(x)[,z]</code>). If <code>x</code>\nis a counts matrix, then <code>z</code> will need\nto be a vector the same length as\nthe number of columns in <code>x</code> that indicate\nthe cluster to which each cell\nbelongs. Default <code>NULL</code>.</p></dd>\n\n\n<dt>threshold</dt>\n<dd><p>Numeric. Markers greater than or equal to this value will\nbe considered detected in a cell. Default 1.</p></dd>\n\n\n<dt>exactMatch</dt>\n<dd><p>Boolean. Whether to only identify exact matches\nfor the markers or to identify partial matches using <code><a href=\"https://rdrr.io/r/base/grep.html\" class=\"external-link\">grep</a></code>. See\n<code><a href=\"retrieveFeatureIndex.html\">retrieveFeatureIndex</a></code> for more details. Default <code>TRUE</code>.</p></dd>\n\n\n<dt>by</dt>\n<dd><p>Character. Where to search for the markers if <code>x</code> is a\n<a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a>. See <code><a href=\"retrieveFeatureIndex.html\">retrieveFeatureIndex</a></code>\nfor more details. If <code>x</code> is a matrix,\nthen this must be set to <code>\"rownames\"</code>.Default <code>\"rownames\"</code>.</p></dd>\n\n\n<dt>ncol</dt>\n<dd><p>Integer. Number of columns to make in the plot.\nDefault <code>round(sqrt(length(markers))</code>.</p></dd>\n\n\n<dt>labelBars</dt>\n<dd><p>Boolean. Whether to display percentages above each bar\nDefault <code>TRUE</code>.</p></dd>\n\n\n<dt>labelSize</dt>\n<dd><p>Numeric. Size of the percentage labels in the barplot.\nDefault 3.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>Returns a <code>ggplot</code> object.</p>\n    </div>\n    <div id=\"see-also\">\n    <h2>See also</h2>\n    <div class=\"dont-index\"><p>See <code><a href=\"decontX.html\">decontX</a></code> for a full example of how to estimate\nand plot contamination.</p></div>\n    </div>\n    <div id=\"author\">\n    <h2>Author</h2>\n    <p>Shiyi Yang, Joshua Campbell</p>\n    </div>\n\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/plotDimReduceCluster.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Plotting the cell labels on a dimension reduction plot — plotDimReduceCluster • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Plotting the cell labels on a dimension reduction plot — plotDimReduceCluster\"><meta property=\"og:description\" content='Create a scatterplot for each row of a normalized\n gene expression matrix where x and y axis are from a\n data dimension reduction tool.\n The cells are colored by \"celda_cell_cluster\" column in\n  colData(altExp(x, altExpName)) if x is a\n  SingleCellExperiment object, or x if x is\n  a integer vector of cell cluster labels.'><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Plotting the cell labels on a dimension reduction plot</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/plot_dr.R\" class=\"external-link\"><code>R/plot_dr.R</code></a></small>\n    <div class=\"hidden name\"><code>plotDimReduceCluster.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Create a scatterplot for each row of a normalized\n gene expression matrix where x and y axis are from a\n data dimension reduction tool.\n The cells are colored by \"celda_cell_cluster\" column in\n  <code>colData(altExp(x, altExpName))</code> if <code>x</code> is a\n  <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object, or <code>x</code> if <code>x</code> is\n  a integer vector of cell cluster labels.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">plotDimReduceCluster</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  <span class=\"va\">reducedDimName</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  dim1 <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  dim2 <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  size <span class=\"op\">=</span> <span class=\"fl\">0.5</span>,</span>\n<span>  xlab <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  ylab <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  specificClusters <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  labelClusters <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  groupBy <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  labelSize <span class=\"op\">=</span> <span class=\"fl\">3.5</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">plotDimReduceCluster</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  <span class=\"va\">reducedDimName</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  dim1 <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  dim2 <span class=\"op\">=</span> <span class=\"fl\">2</span>,</span>\n<span>  size <span class=\"op\">=</span> <span class=\"fl\">0.5</span>,</span>\n<span>  xlab <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  ylab <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  specificClusters <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  labelClusters <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  groupBy <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  labelSize <span class=\"op\">=</span> <span class=\"fl\">3.5</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for vector</span></span>\n<span><span class=\"fu\">plotDimReduceCluster</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  <span class=\"va\">dim1</span>,</span>\n<span>  <span class=\"va\">dim2</span>,</span>\n<span>  size <span class=\"op\">=</span> <span class=\"fl\">0.5</span>,</span>\n<span>  xlab <span class=\"op\">=</span> <span class=\"st\">\"Dimension_1\"</span>,</span>\n<span>  ylab <span class=\"op\">=</span> <span class=\"st\">\"Dimension_2\"</span>,</span>\n<span>  specificClusters <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  labelClusters <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  groupBy <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  labelSize <span class=\"op\">=</span> <span class=\"fl\">3.5</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>Integer vector of cell cluster labels or a\n<a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object\ncontaining cluster labels for each cell in <code>\"celda_cell_cluster\"</code>\ncolumn in <code>colData(x)</code>.</p></dd>\n\n\n<dt>reducedDimName</dt>\n<dd><p>The name of the dimension reduction slot in\n<code>reducedDimNames(x)</code> if <code>x</code> is a\n<a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object. Ignored if both <code>dim1</code> and\n<code>dim2</code> are set.</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a> slot\nto use. Default \"featureSubset\".</p></dd>\n\n\n<dt>dim1</dt>\n<dd><p>Integer or numeric vector. If <code>reducedDimName</code> is supplied,\nthen, this will be used as an index to determine which dimension will be\nplotted on the x-axis. If <code>reducedDimName</code> is not supplied, then this\nshould be a vector which will be plotted on the x-axis. Default <code>1</code>.</p></dd>\n\n\n<dt>dim2</dt>\n<dd><p>Integer or numeric vector. If <code>reducedDimName</code> is supplied,\nthen, this will be used as an index to determine which dimension will be\nplotted on the y-axis. If <code>reducedDimName</code> is not supplied, then this\nshould be a vector which will be plotted on the y-axis. Default <code>2</code>.</p></dd>\n\n\n<dt>size</dt>\n<dd><p>Numeric. Sets size of point on plot. Default <code>0.5</code>.</p></dd>\n\n\n<dt>xlab</dt>\n<dd><p>Character vector. Label for the x-axis. Default <code>NULL</code>.</p></dd>\n\n\n<dt>ylab</dt>\n<dd><p>Character vector. Label for the y-axis. Default <code>NULL</code>.</p></dd>\n\n\n<dt>specificClusters</dt>\n<dd><p>Numeric vector.\nOnly color cells in the specified clusters.\nAll other cells will be grey.\nIf NULL, all clusters will be colored. Default <code>NULL</code>.</p></dd>\n\n\n<dt>labelClusters</dt>\n<dd><p>Logical. Whether the cluster labels are plotted.\nDefault FALSE.</p></dd>\n\n\n<dt>groupBy</dt>\n<dd><p>Character vector. Contains sample labels for each cell.\nIf NULL, all samples will be plotted together. Default NULL.</p></dd>\n\n\n<dt>labelSize</dt>\n<dd><p>Numeric. Sets size of label if labelClusters is TRUE.\nDefault 3.5.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>The plot as a ggplot object</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"celdaTsne.html\">celdaTsne</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">plotDimReduceCluster</span><span class=\"op\">(</span>x <span class=\"op\">=</span> <span class=\"va\">sce</span>,</span></span>\n<span class=\"r-in\"><span>  reducedDimName <span class=\"op\">=</span> <span class=\"st\">\"celda_tSNE\"</span>,</span></span>\n<span class=\"r-in\"><span>  specificClusters <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"fl\">1</span>, <span class=\"fl\">2</span>, <span class=\"fl\">3</span><span class=\"op\">)</span><span class=\"op\">)</span></span></span>\n<span class=\"r-plt img\"><img src=\"plotDimReduceCluster-1.png\" alt=\"\" width=\"700\" height=\"433\"></span>\n<span class=\"r-in\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\">SingleCellExperiment</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span>, <span class=\"va\">celdaCGMod</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"celdaTsne.html\">celdaTsne</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">plotDimReduceCluster</span><span class=\"op\">(</span>x <span class=\"op\">=</span> <span class=\"fu\"><a href=\"celdaClusters.html\">celdaClusters</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGMod</span><span class=\"op\">)</span><span class=\"op\">$</span><span class=\"va\">z</span>,</span></span>\n<span class=\"r-in\"><span>  dim1 <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/reducedDims.html\" class=\"external-link\">reducedDim</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span>, <span class=\"st\">\"celda_tSNE\"</span><span class=\"op\">)</span><span class=\"op\">[</span>, <span class=\"fl\">1</span><span class=\"op\">]</span>,</span></span>\n<span class=\"r-in\"><span>  dim2 <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/reducedDims.html\" class=\"external-link\">reducedDim</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span>, <span class=\"st\">\"celda_tSNE\"</span><span class=\"op\">)</span><span class=\"op\">[</span>, <span class=\"fl\">2</span><span class=\"op\">]</span>,</span></span>\n<span class=\"r-in\"><span>  specificClusters <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"fl\">1</span>, <span class=\"fl\">2</span>, <span class=\"fl\">3</span><span class=\"op\">)</span><span class=\"op\">)</span></span></span>\n<span class=\"r-plt img\"><img src=\"plotDimReduceCluster-2.png\" alt=\"\" width=\"700\" height=\"433\"></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/plotDimReduceFeature.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Plotting feature expression on a dimension reduction plot — plotDimReduceFeature • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Plotting feature expression on a dimension reduction plot — plotDimReduceFeature\"><meta property=\"og:description\" content=\"Create a scatterplot for each row of a normalized gene\n expression matrix where x and y axis are from a data dimension\n reduction tool. The cells are colored by expression of\n the specified feature.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Plotting feature expression on a dimension reduction plot</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/plot_dr.R\" class=\"external-link\"><code>R/plot_dr.R</code></a></small>\n    <div class=\"hidden name\"><code>plotDimReduceFeature.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Create a scatterplot for each row of a normalized gene\n expression matrix where x and y axis are from a data dimension\n reduction tool. The cells are colored by expression of\n the specified feature.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">plotDimReduceFeature</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  <span class=\"va\">features</span>,</span>\n<span>  reducedDimName <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  displayName <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  dim1 <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  dim2 <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  headers <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  normalize <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  zscore <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  exactMatch <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  trim <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"op\">-</span><span class=\"fl\">2</span>, <span class=\"fl\">2</span><span class=\"op\">)</span>,</span>\n<span>  limits <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"op\">-</span><span class=\"fl\">2</span>, <span class=\"fl\">2</span><span class=\"op\">)</span>,</span>\n<span>  size <span class=\"op\">=</span> <span class=\"fl\">0.5</span>,</span>\n<span>  xlab <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  ylab <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  colorLow <span class=\"op\">=</span> <span class=\"st\">\"blue4\"</span>,</span>\n<span>  colorMid <span class=\"op\">=</span> <span class=\"st\">\"grey90\"</span>,</span>\n<span>  colorHigh <span class=\"op\">=</span> <span class=\"st\">\"firebrick1\"</span>,</span>\n<span>  midpoint <span class=\"op\">=</span> <span class=\"fl\">0</span>,</span>\n<span>  ncol <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  decreasing <span class=\"op\">=</span> <span class=\"cn\">FALSE</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">plotDimReduceFeature</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  <span class=\"va\">features</span>,</span>\n<span>  reducedDimName <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  displayName <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  dim1 <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  dim2 <span class=\"op\">=</span> <span class=\"fl\">2</span>,</span>\n<span>  headers <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  normalize <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  zscore <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  exactMatch <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  trim <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"op\">-</span><span class=\"fl\">2</span>, <span class=\"fl\">2</span><span class=\"op\">)</span>,</span>\n<span>  limits <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"op\">-</span><span class=\"fl\">2</span>, <span class=\"fl\">2</span><span class=\"op\">)</span>,</span>\n<span>  size <span class=\"op\">=</span> <span class=\"fl\">0.5</span>,</span>\n<span>  xlab <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  ylab <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  colorLow <span class=\"op\">=</span> <span class=\"st\">\"blue4\"</span>,</span>\n<span>  colorMid <span class=\"op\">=</span> <span class=\"st\">\"grey90\"</span>,</span>\n<span>  colorHigh <span class=\"op\">=</span> <span class=\"st\">\"firebrick1\"</span>,</span>\n<span>  midpoint <span class=\"op\">=</span> <span class=\"fl\">0</span>,</span>\n<span>  ncol <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  decreasing <span class=\"op\">=</span> <span class=\"cn\">FALSE</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for ANY</span></span>\n<span><span class=\"fu\">plotDimReduceFeature</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  <span class=\"va\">features</span>,</span>\n<span>  <span class=\"va\">dim1</span>,</span>\n<span>  <span class=\"va\">dim2</span>,</span>\n<span>  headers <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  normalize <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  zscore <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  exactMatch <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  trim <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"op\">-</span><span class=\"fl\">2</span>, <span class=\"fl\">2</span><span class=\"op\">)</span>,</span>\n<span>  limits <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"op\">-</span><span class=\"fl\">2</span>, <span class=\"fl\">2</span><span class=\"op\">)</span>,</span>\n<span>  size <span class=\"op\">=</span> <span class=\"fl\">0.5</span>,</span>\n<span>  xlab <span class=\"op\">=</span> <span class=\"st\">\"Dimension_1\"</span>,</span>\n<span>  ylab <span class=\"op\">=</span> <span class=\"st\">\"Dimension_2\"</span>,</span>\n<span>  colorLow <span class=\"op\">=</span> <span class=\"st\">\"blue4\"</span>,</span>\n<span>  colorMid <span class=\"op\">=</span> <span class=\"st\">\"grey90\"</span>,</span>\n<span>  colorHigh <span class=\"op\">=</span> <span class=\"st\">\"firebrick1\"</span>,</span>\n<span>  midpoint <span class=\"op\">=</span> <span class=\"fl\">0</span>,</span>\n<span>  ncol <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  decreasing <span class=\"op\">=</span> <span class=\"cn\">FALSE</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>Numeric matrix or a <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object\nwith the matrix located in the assay slot under <code>useAssay</code>. Rows\nrepresent features and columns represent cells.</p></dd>\n\n\n<dt>features</dt>\n<dd><p>Character vector. Features in the rownames of counts to plot.</p></dd>\n\n\n<dt>reducedDimName</dt>\n<dd><p>The name of the dimension reduction slot in\n<code>reducedDimNames(x)</code> if <code>x</code> is a\n<a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object. If <code>NULL</code>, then both\n<code>dim1</code> and <code>dim2</code> need to be set. Default <code>NULL</code>.</p></dd>\n\n\n<dt>displayName</dt>\n<dd><p>Character. The column name of\n<code>rowData(x)</code> that specifies the display names for\nthe features. Default <code>NULL</code>, which displays the row names. Only works\nif <code>x</code> is a <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object. Overwrites\n<code>headers</code>.</p></dd>\n\n\n<dt>dim1</dt>\n<dd><p>Integer or numeric vector. If <code>reducedDimName</code> is supplied,\nthen, this will be used as an index to determine which dimension will be\nplotted on the x-axis. If <code>reducedDimName</code> is not supplied, then this\nshould be a vector which will be plotted on the x-axis. Default <code>1</code>.</p></dd>\n\n\n<dt>dim2</dt>\n<dd><p>Integer or numeric vector. If <code>reducedDimName</code> is supplied,\nthen, this will be used as an index to determine which dimension will be\nplotted on the y-axis. If <code>reducedDimName</code> is not supplied, then this\nshould be a vector which will be plotted on the y-axis. Default <code>2</code>.</p></dd>\n\n\n<dt>headers</dt>\n<dd><p>Character vector. If <code>NULL</code>, the corresponding\nrownames are used as labels. Otherwise, these headers are used to label\nthe features. Only works if <code>displayName</code> is <code>NULL</code> and\n<code>exactMatch</code> is <code>FALSE</code>.</p></dd>\n\n\n<dt>useAssay</dt>\n<dd><p>A string specifying which <a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">assay</a>\nslot to use if <code>x</code> is a\n<a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object. Default \"counts\".</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a> slot\nto use. Default \"featureSubset\".</p></dd>\n\n\n<dt>normalize</dt>\n<dd><p>Logical. Whether to normalize the columns of `counts`.\nDefault <code>FALSE</code>.</p></dd>\n\n\n<dt>zscore</dt>\n<dd><p>Logical. Whether to scale each feature to have a mean 0\nand standard deviation of 1. Default <code>TRUE</code>.</p></dd>\n\n\n<dt>exactMatch</dt>\n<dd><p>Logical. Whether an exact match or a partial match using\n<code><a href=\"https://rdrr.io/r/base/grep.html\" class=\"external-link\">grep()</a></code> is used to look up the feature in the rownames of the counts\n matrix. Default TRUE.</p></dd>\n\n\n<dt>trim</dt>\n<dd><p>Numeric vector. Vector of length two that specifies the lower\nand upper bounds for the data. This threshold is applied after row scaling.\nSet to NULL to disable. Default <code>c(-1,1)</code>.</p></dd>\n\n\n<dt>limits</dt>\n<dd><p>Passed to scale_colour_gradient2. The range\nof color scale.</p></dd>\n\n\n<dt>size</dt>\n<dd><p>Numeric. Sets size of point on plot. Default 1.</p></dd>\n\n\n<dt>xlab</dt>\n<dd><p>Character vector. Label for the x-axis. If <code>reducedDimName</code>\nis used, then this will be set to the column name of the first dimension of\nthat object. Default \"Dimension_1\".</p></dd>\n\n\n<dt>ylab</dt>\n<dd><p>Character vector. Label for the y-axis. If <code>reducedDimName</code>\nis used, then this will be set to the column name of the second dimension of\nthat object. Default \"Dimension_2\".</p></dd>\n\n\n<dt>colorLow</dt>\n<dd><p>Character. A color available from `colors()`. The color\nwill be used to signify the lowest values on the scale.</p></dd>\n\n\n<dt>colorMid</dt>\n<dd><p>Character. A color available from `colors()`. The color\nwill be used to signify the midpoint on the scale.</p></dd>\n\n\n<dt>colorHigh</dt>\n<dd><p>Character. A color available from `colors()`. The color\nwill be used to signify the highest values on the scale.</p></dd>\n\n\n<dt>midpoint</dt>\n<dd><p>Numeric. The value indicating the midpoint of the\ndiverging color scheme. If <code>NULL</code>, defaults to the mean\nwith 10 percent of values trimmed. Default <code>0</code>.</p></dd>\n\n\n<dt>ncol</dt>\n<dd><p>Integer. Passed to <a href=\"https://ggplot2.tidyverse.org/reference/facet_wrap.html\" class=\"external-link\">facet_wrap</a>. Specify the\nnumber of columns for facet wrap.</p></dd>\n\n\n<dt>decreasing</dt>\n<dd><p>logical. Specifies the order of plotting the points.\nIf <code>FALSE</code>, the points will be plotted in increasing order where\nthe points with largest values will be on top. <code>TRUE</code> otherwise.\nIf <code>NULL</code>, no sorting is performed. Points will be plotted in their\ncurrent order in <code>x</code>. Default <code>FALSE</code>.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>The plot as a ggplot object</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"celdaTsne.html\">celdaTsne</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">plotDimReduceFeature</span><span class=\"op\">(</span>x <span class=\"op\">=</span> <span class=\"va\">sce</span>,</span></span>\n<span class=\"r-in\"><span>  reducedDimName <span class=\"op\">=</span> <span class=\"st\">\"celda_tSNE\"</span>,</span></span>\n<span class=\"r-in\"><span>  normalize <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span></span>\n<span class=\"r-in\"><span>  features <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"Gene_98\"</span>, <span class=\"st\">\"Gene_99\"</span><span class=\"op\">)</span>,</span></span>\n<span class=\"r-in\"><span>  exactMatch <span class=\"op\">=</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span></span></span>\n<span class=\"r-plt img\"><img src=\"plotDimReduceFeature-1.png\" alt=\"\" width=\"700\" height=\"433\"></span>\n<span class=\"r-in\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\">SingleCellExperiment</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"celdaTsne.html\">celdaTsne</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">plotDimReduceFeature</span><span class=\"op\">(</span>x <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/BiocGenerics/man/dge.html\" class=\"external-link\">counts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span>,</span></span>\n<span class=\"r-in\"><span>  dim1 <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/reducedDims.html\" class=\"external-link\">reducedDim</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span>, <span class=\"st\">\"celda_tSNE\"</span><span class=\"op\">)</span><span class=\"op\">[</span>, <span class=\"fl\">1</span><span class=\"op\">]</span>,</span></span>\n<span class=\"r-in\"><span>  dim2 <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/reducedDims.html\" class=\"external-link\">reducedDim</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span>, <span class=\"st\">\"celda_tSNE\"</span><span class=\"op\">)</span><span class=\"op\">[</span>, <span class=\"fl\">2</span><span class=\"op\">]</span>,</span></span>\n<span class=\"r-in\"><span>  normalize <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span></span>\n<span class=\"r-in\"><span>  features <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"Gene_98\"</span>, <span class=\"st\">\"Gene_99\"</span><span class=\"op\">)</span>,</span></span>\n<span class=\"r-in\"><span>  exactMatch <span class=\"op\">=</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span></span></span>\n<span class=\"r-plt img\"><img src=\"plotDimReduceFeature-2.png\" alt=\"\" width=\"700\" height=\"433\"></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/plotDimReduceGrid.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Mapping the dimension reduction plot — plotDimReduceGrid • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Mapping the dimension reduction plot — plotDimReduceGrid\"><meta property=\"og:description\" content=\"Creates a scatterplot given two dimensions from a data\n dimension reduction tool (e.g tSNE) output.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Mapping the dimension reduction plot</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/plot_dr.R\" class=\"external-link\"><code>R/plot_dr.R</code></a></small>\n    <div class=\"hidden name\"><code>plotDimReduceGrid.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Creates a scatterplot given two dimensions from a data\n dimension reduction tool (e.g tSNE) output.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">plotDimReduceGrid</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  <span class=\"va\">reducedDimName</span>,</span>\n<span>  dim1 <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  dim2 <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  size <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  xlab <span class=\"op\">=</span> <span class=\"st\">\"Dimension_1\"</span>,</span>\n<span>  ylab <span class=\"op\">=</span> <span class=\"st\">\"Dimension_2\"</span>,</span>\n<span>  limits <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"op\">-</span><span class=\"fl\">2</span>, <span class=\"fl\">2</span><span class=\"op\">)</span>,</span>\n<span>  colorLow <span class=\"op\">=</span> <span class=\"st\">\"blue4\"</span>,</span>\n<span>  colorMid <span class=\"op\">=</span> <span class=\"st\">\"grey90\"</span>,</span>\n<span>  colorHigh <span class=\"op\">=</span> <span class=\"st\">\"firebrick1\"</span>,</span>\n<span>  midpoint <span class=\"op\">=</span> <span class=\"fl\">0</span>,</span>\n<span>  varLabel <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  ncol <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  headers <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  decreasing <span class=\"op\">=</span> <span class=\"cn\">FALSE</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">plotDimReduceGrid</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  <span class=\"va\">reducedDimName</span>,</span>\n<span>  dim1 <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  dim2 <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  size <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  xlab <span class=\"op\">=</span> <span class=\"st\">\"Dimension_1\"</span>,</span>\n<span>  ylab <span class=\"op\">=</span> <span class=\"st\">\"Dimension_2\"</span>,</span>\n<span>  limits <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"op\">-</span><span class=\"fl\">2</span>, <span class=\"fl\">2</span><span class=\"op\">)</span>,</span>\n<span>  colorLow <span class=\"op\">=</span> <span class=\"st\">\"blue4\"</span>,</span>\n<span>  colorMid <span class=\"op\">=</span> <span class=\"st\">\"grey90\"</span>,</span>\n<span>  colorHigh <span class=\"op\">=</span> <span class=\"st\">\"firebrick1\"</span>,</span>\n<span>  midpoint <span class=\"op\">=</span> <span class=\"fl\">0</span>,</span>\n<span>  varLabel <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  ncol <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  headers <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  decreasing <span class=\"op\">=</span> <span class=\"cn\">FALSE</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for ANY</span></span>\n<span><span class=\"fu\">plotDimReduceGrid</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  <span class=\"va\">dim1</span>,</span>\n<span>  <span class=\"va\">dim2</span>,</span>\n<span>  size <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  xlab <span class=\"op\">=</span> <span class=\"st\">\"Dimension_1\"</span>,</span>\n<span>  ylab <span class=\"op\">=</span> <span class=\"st\">\"Dimension_2\"</span>,</span>\n<span>  limits <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"op\">-</span><span class=\"fl\">2</span>, <span class=\"fl\">2</span><span class=\"op\">)</span>,</span>\n<span>  colorLow <span class=\"op\">=</span> <span class=\"st\">\"blue4\"</span>,</span>\n<span>  colorMid <span class=\"op\">=</span> <span class=\"st\">\"grey90\"</span>,</span>\n<span>  colorHigh <span class=\"op\">=</span> <span class=\"st\">\"firebrick1\"</span>,</span>\n<span>  midpoint <span class=\"op\">=</span> <span class=\"fl\">0</span>,</span>\n<span>  varLabel <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  ncol <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  headers <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  decreasing <span class=\"op\">=</span> <span class=\"cn\">FALSE</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>Numeric matrix or a <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object\nwith the matrix located in the assay slot under <code>useAssay</code>. Each\nrow of the matrix will be plotted as a separate facet.</p></dd>\n\n\n<dt>reducedDimName</dt>\n<dd><p>The name of the dimension reduction slot in\n<code>reducedDimNames(x)</code> if <code>x</code> is a\n<a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object. Ignored if both <code>dim1</code> and\n<code>dim2</code> are set.</p></dd>\n\n\n<dt>dim1</dt>\n<dd><p>Numeric vector. Second dimension from data dimension\nreduction output.</p></dd>\n\n\n<dt>dim2</dt>\n<dd><p>Numeric vector. Second dimension from data dimension\nreduction output.</p></dd>\n\n\n<dt>useAssay</dt>\n<dd><p>A string specifying which <a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">assay</a>\nslot to use if <code>x</code> is a\n<a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object. Default \"counts\".</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a> slot\nto use. Default \"featureSubset\".</p></dd>\n\n\n<dt>size</dt>\n<dd><p>Numeric. Sets size of point on plot. Default 1.</p></dd>\n\n\n<dt>xlab</dt>\n<dd><p>Character vector. Label for the x-axis. Default 'Dimension_1'.</p></dd>\n\n\n<dt>ylab</dt>\n<dd><p>Character vector. Label for the y-axis. Default 'Dimension_2'.</p></dd>\n\n\n<dt>limits</dt>\n<dd><p>Passed to scale_colour_gradient2. The range\nof color scale.</p></dd>\n\n\n<dt>colorLow</dt>\n<dd><p>Character. A color available from `colors()`.\nThe color will be used to signify the lowest values on the scale.\nDefault \"blue4\".</p></dd>\n\n\n<dt>colorMid</dt>\n<dd><p>Character. A color available from `colors()`.\nThe color will be used to signify the midpoint on the scale. Default\n\"grey90\".</p></dd>\n\n\n<dt>colorHigh</dt>\n<dd><p>Character. A color available from `colors()`.\nThe color will be used to signify the highest values on the scale.\nDefault \"firebrick1\".</p></dd>\n\n\n<dt>midpoint</dt>\n<dd><p>Numeric. The value indicating the midpoint of the\ndiverging color scheme. If <code>NULL</code>, defaults to the mean\nwith 10 percent of values trimmed. Default <code>0</code>.</p></dd>\n\n\n<dt>varLabel</dt>\n<dd><p>Character vector. Title for the color legend.</p></dd>\n\n\n<dt>ncol</dt>\n<dd><p>Integer. Passed to <a href=\"https://ggplot2.tidyverse.org/reference/facet_wrap.html\" class=\"external-link\">facet_wrap</a>. Specify the\nnumber of columns for facet wrap.</p></dd>\n\n\n<dt>headers</dt>\n<dd><p>Character vector. If `NULL`, the corresponding rownames are\nused as labels. Otherwise, these headers are used to label the genes.</p></dd>\n\n\n<dt>decreasing</dt>\n<dd><p>logical. Specifies the order of plotting the points.\nIf <code>FALSE</code>, the points will be plotted in increasing order where\nthe points with largest values will be on top. <code>TRUE</code> otherwise.\nIf <code>NULL</code>, no sorting is performed. Points will be plotted in their\ncurrent order in <code>x</code>. Default <code>FALSE</code>.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>The plot as a ggplot object</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"celdaTsne.html\">celdaTsne</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">plotDimReduceGrid</span><span class=\"op\">(</span>x <span class=\"op\">=</span> <span class=\"va\">sce</span>,</span></span>\n<span class=\"r-in\"><span>  reducedDimName <span class=\"op\">=</span> <span class=\"st\">\"celda_tSNE\"</span>,</span></span>\n<span class=\"r-in\"><span>  xlab <span class=\"op\">=</span> <span class=\"st\">\"Dimension1\"</span>,</span></span>\n<span class=\"r-in\"><span>  ylab <span class=\"op\">=</span> <span class=\"st\">\"Dimension2\"</span>,</span></span>\n<span class=\"r-in\"><span>  varLabel <span class=\"op\">=</span> <span class=\"st\">\"tSNE\"</span><span class=\"op\">)</span></span></span>\n<span class=\"r-plt img\"><img src=\"plotDimReduceGrid-1.png\" alt=\"\" width=\"700\" height=\"433\"></span>\n<span class=\"r-in\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\">SingleCellExperiment</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"celdaTsne.html\">celdaTsne</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">plotDimReduceGrid</span><span class=\"op\">(</span>x <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/BiocGenerics/man/dge.html\" class=\"external-link\">counts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span>,</span></span>\n<span class=\"r-in\"><span>  dim1 <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/reducedDims.html\" class=\"external-link\">reducedDim</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span>, <span class=\"st\">\"celda_tSNE\"</span><span class=\"op\">)</span><span class=\"op\">[</span>, <span class=\"fl\">1</span><span class=\"op\">]</span>,</span></span>\n<span class=\"r-in\"><span>  dim2 <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/reducedDims.html\" class=\"external-link\">reducedDim</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span>, <span class=\"st\">\"celda_tSNE\"</span><span class=\"op\">)</span><span class=\"op\">[</span>, <span class=\"fl\">2</span><span class=\"op\">]</span>,</span></span>\n<span class=\"r-in\"><span>  xlab <span class=\"op\">=</span> <span class=\"st\">\"Dimension1\"</span>,</span></span>\n<span class=\"r-in\"><span>  ylab <span class=\"op\">=</span> <span class=\"st\">\"Dimension2\"</span>,</span></span>\n<span class=\"r-in\"><span>  varLabel <span class=\"op\">=</span> <span class=\"st\">\"tSNE\"</span><span class=\"op\">)</span></span></span>\n<span class=\"r-plt img\"><img src=\"plotDimReduceGrid-2.png\" alt=\"\" width=\"700\" height=\"433\"></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/plotDimReduceModule.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Plotting Celda module probability on a\n dimension reduction plot — plotDimReduceModule • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Plotting Celda module probability on a\n dimension reduction plot — plotDimReduceModule\"><meta property=\"og:description\" content=\"Create a scatterplot for each row of a normalized\n gene expression matrix where x and y axis are from a data\n dimension reduction tool.\n The cells are colored by the module probability.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Plotting Celda module probability on a\n dimension reduction plot</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/plot_dr.R\" class=\"external-link\"><code>R/plot_dr.R</code></a></small>\n    <div class=\"hidden name\"><code>plotDimReduceModule.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Create a scatterplot for each row of a normalized\n gene expression matrix where x and y axis are from a data\n dimension reduction tool.\n The cells are colored by the module probability.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">plotDimReduceModule</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  <span class=\"va\">reducedDimName</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  <span class=\"va\">celdaMod</span>,</span>\n<span>  modules <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  dim1 <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  dim2 <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  size <span class=\"op\">=</span> <span class=\"fl\">0.5</span>,</span>\n<span>  xlab <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  ylab <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  rescale <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  limits <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"fl\">0</span>, <span class=\"fl\">1</span><span class=\"op\">)</span>,</span>\n<span>  colorLow <span class=\"op\">=</span> <span class=\"st\">\"grey90\"</span>,</span>\n<span>  colorHigh <span class=\"op\">=</span> <span class=\"st\">\"firebrick1\"</span>,</span>\n<span>  ncol <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  decreasing <span class=\"op\">=</span> <span class=\"cn\">FALSE</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">plotDimReduceModule</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  <span class=\"va\">reducedDimName</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  modules <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  dim1 <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  dim2 <span class=\"op\">=</span> <span class=\"fl\">2</span>,</span>\n<span>  size <span class=\"op\">=</span> <span class=\"fl\">0.5</span>,</span>\n<span>  xlab <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  ylab <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  rescale <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  limits <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"fl\">0</span>, <span class=\"fl\">1</span><span class=\"op\">)</span>,</span>\n<span>  colorLow <span class=\"op\">=</span> <span class=\"st\">\"grey90\"</span>,</span>\n<span>  colorHigh <span class=\"op\">=</span> <span class=\"st\">\"firebrick1\"</span>,</span>\n<span>  ncol <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  decreasing <span class=\"op\">=</span> <span class=\"cn\">FALSE</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for ANY</span></span>\n<span><span class=\"fu\">plotDimReduceModule</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  <span class=\"va\">celdaMod</span>,</span>\n<span>  modules <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  <span class=\"va\">dim1</span>,</span>\n<span>  <span class=\"va\">dim2</span>,</span>\n<span>  size <span class=\"op\">=</span> <span class=\"fl\">0.5</span>,</span>\n<span>  xlab <span class=\"op\">=</span> <span class=\"st\">\"Dimension_1\"</span>,</span>\n<span>  ylab <span class=\"op\">=</span> <span class=\"st\">\"Dimension_2\"</span>,</span>\n<span>  rescale <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  limits <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"fl\">0</span>, <span class=\"fl\">1</span><span class=\"op\">)</span>,</span>\n<span>  colorLow <span class=\"op\">=</span> <span class=\"st\">\"grey90\"</span>,</span>\n<span>  colorHigh <span class=\"op\">=</span> <span class=\"st\">\"firebrick1\"</span>,</span>\n<span>  ncol <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  decreasing <span class=\"op\">=</span> <span class=\"cn\">FALSE</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>Numeric matrix or a <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object\nwith the matrix located in the assay slot under <code>useAssay</code>. Rows\nrepresent features and columns represent cells.</p></dd>\n\n\n<dt>reducedDimName</dt>\n<dd><p>The name of the dimension reduction slot in\n<code>reducedDimNames(x)</code> if <code>x</code> is a\n<a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object. Ignored if both <code>dim1</code> and\n<code>dim2</code> are set.</p></dd>\n\n\n<dt>useAssay</dt>\n<dd><p>A string specifying which <a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">assay</a>\nslot to use if <code>x</code> is a\n<a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object. Default \"counts\".</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a> slot\nto use. Default \"featureSubset\".</p></dd>\n\n\n<dt>celdaMod</dt>\n<dd><p>Celda object of class \"celda_G\" or \"celda_CG\". Used only if\n<code>x</code> is a matrix object.</p></dd>\n\n\n<dt>modules</dt>\n<dd><p>Character vector. Module(s) from celda model to be plotted.\ne.g. c(\"1\", \"2\").</p></dd>\n\n\n<dt>dim1</dt>\n<dd><p>Integer or numeric vector. If <code>reducedDimName</code> is supplied,\nthen, this will be used as an index to determine which dimension will be\nplotted on the x-axis. If <code>reducedDimName</code> is not supplied, then this\nshould be a vector which will be plotted on the x-axis. Default <code>1</code>.</p></dd>\n\n\n<dt>dim2</dt>\n<dd><p>Integer or numeric vector. If <code>reducedDimName</code> is supplied,\nthen, this will be used as an index to determine which dimension will be\nplotted on the y-axis. If <code>reducedDimName</code> is not supplied, then this\nshould be a vector which will be plotted on the y-axis. Default <code>2</code>.</p></dd>\n\n\n<dt>size</dt>\n<dd><p>Numeric. Sets size of point on plot. Default 0.5.</p></dd>\n\n\n<dt>xlab</dt>\n<dd><p>Character vector. Label for the x-axis. Default \"Dimension_1\".</p></dd>\n\n\n<dt>ylab</dt>\n<dd><p>Character vector. Label for the y-axis. Default \"Dimension_2\".</p></dd>\n\n\n<dt>rescale</dt>\n<dd><p>Logical.\nWhether rows of the matrix should be rescaled to [0, 1]. Default TRUE.</p></dd>\n\n\n<dt>limits</dt>\n<dd><p>Passed to scale_colour_gradient. The range\nof color scale.</p></dd>\n\n\n<dt>colorLow</dt>\n<dd><p>Character. A color available from `colors()`.\nThe color will be used to signify the lowest values on the scale.</p></dd>\n\n\n<dt>colorHigh</dt>\n<dd><p>Character. A color available from `colors()`.\nThe color will be used to signify the highest values on the scale.</p></dd>\n\n\n<dt>ncol</dt>\n<dd><p>Integer. Passed to <a href=\"https://ggplot2.tidyverse.org/reference/facet_wrap.html\" class=\"external-link\">facet_wrap</a>. Specify the\nnumber of columns for facet wrap.</p></dd>\n\n\n<dt>decreasing</dt>\n<dd><p>logical. Specifies the order of plotting the points.\nIf <code>FALSE</code>, the points will be plotted in increasing order where\nthe points with largest values will be on top. <code>TRUE</code> otherwise.\nIf <code>NULL</code>, no sorting is performed. Points will be plotted in their\ncurrent order in <code>x</code>. Default <code>FALSE</code>.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>The plot as a ggplot object</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"celdaTsne.html\">celdaTsne</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">plotDimReduceModule</span><span class=\"op\">(</span>x <span class=\"op\">=</span> <span class=\"va\">sce</span>,</span></span>\n<span class=\"r-in\"><span>  reducedDimName <span class=\"op\">=</span> <span class=\"st\">\"celda_tSNE\"</span>,</span></span>\n<span class=\"r-in\"><span>  modules <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"1\"</span>, <span class=\"st\">\"2\"</span><span class=\"op\">)</span><span class=\"op\">)</span></span></span>\n<span class=\"r-plt img\"><img src=\"plotDimReduceModule-1.png\" alt=\"\" width=\"700\" height=\"433\"></span>\n<span class=\"r-in\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\">SingleCellExperiment</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span>, <span class=\"va\">celdaCGMod</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"celdaTsne.html\">celdaTsne</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">plotDimReduceModule</span><span class=\"op\">(</span>x <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/BiocGenerics/man/dge.html\" class=\"external-link\">counts</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span>,</span></span>\n<span class=\"r-in\"><span>  dim1 <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/reducedDims.html\" class=\"external-link\">reducedDim</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span>, <span class=\"st\">\"celda_tSNE\"</span><span class=\"op\">)</span><span class=\"op\">[</span>, <span class=\"fl\">1</span><span class=\"op\">]</span>,</span></span>\n<span class=\"r-in\"><span>  dim2 <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/reducedDims.html\" class=\"external-link\">reducedDim</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span>, <span class=\"st\">\"celda_tSNE\"</span><span class=\"op\">)</span><span class=\"op\">[</span>, <span class=\"fl\">2</span><span class=\"op\">]</span>,</span></span>\n<span class=\"r-in\"><span>  celdaMod <span class=\"op\">=</span> <span class=\"va\">celdaCGMod</span>,</span></span>\n<span class=\"r-in\"><span>  modules <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"1\"</span>, <span class=\"st\">\"2\"</span><span class=\"op\">)</span><span class=\"op\">)</span></span></span>\n<span class=\"r-plt img\"><img src=\"plotDimReduceModule-2.png\" alt=\"\" width=\"700\" height=\"433\"></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/plotGridSearchPerplexity.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Visualize perplexity of a list of celda models — plotGridSearchPerplexity • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Visualize perplexity of a list of celda models — plotGridSearchPerplexity\"><meta property=\"og:description\" content=\"Visualize perplexity of every model in a celdaList, by unique\n K/L combinations\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Visualize perplexity of a list of celda models</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/perplexity.R\" class=\"external-link\"><code>R/perplexity.R</code></a></small>\n    <div class=\"hidden name\"><code>plotGridSearchPerplexity.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Visualize perplexity of every model in a celdaList, by unique\n K/L combinations</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">plotGridSearchPerplexity</span><span class=\"op\">(</span><span class=\"va\">x</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>, sep <span class=\"op\">=</span> <span class=\"fl\">5</span>, alpha <span class=\"op\">=</span> <span class=\"fl\">0.5</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">plotGridSearchPerplexity</span><span class=\"op\">(</span><span class=\"va\">x</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>, sep <span class=\"op\">=</span> <span class=\"fl\">5</span>, alpha <span class=\"op\">=</span> <span class=\"fl\">0.5</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for celdaList</span></span>\n<span><span class=\"fu\">plotGridSearchPerplexity</span><span class=\"op\">(</span><span class=\"va\">x</span>, sep <span class=\"op\">=</span> <span class=\"fl\">5</span>, alpha <span class=\"op\">=</span> <span class=\"fl\">0.5</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>Can be one of</p><ul><li><p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object returned from\n <code>celdaGridSearch</code>, <code>recursiveSplitModule</code>,\n or <code>recursiveSplitCell</code>. Must contain a list named\n <code>\"celda_grid_search\"</code> in <code>metadata(x)</code>.</p></li>\n<li><p>celdaList object.</p></li>\n</ul></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a> slot\nto use. Default \"featureSubset\". Only works if <code>x</code> is a\n<a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object.</p></dd>\n\n\n<dt>sep</dt>\n<dd><p>Numeric. Breaks in the x axis of the resulting plot.</p></dd>\n\n\n<dt>alpha</dt>\n<dd><p>Numeric. Passed to geom_jitter. Opacity of the points.\nValues of alpha range from 0 to 1, with lower values corresponding\nto more transparent colors.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>A ggplot plot object showing perplexity as a function of clustering\n parameters.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCGGridSearch</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"resamplePerplexity.html\">resamplePerplexity</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCGGridSearch</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">plotGridSearchPerplexity</span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span></span></span>\n<span class=\"r-plt img\"><img src=\"plotGridSearchPerplexity-1.png\" alt=\"\" width=\"700\" height=\"433\"></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span>, <span class=\"va\">celdaCGGridSearchRes</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"co\">## Run various combinations of parameters with 'celdaGridSearch'</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">celdaCGGridSearchRes</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"resamplePerplexity.html\">resamplePerplexity</a></span><span class=\"op\">(</span></span></span>\n<span class=\"r-in\"><span>  <span class=\"va\">celdaCGSim</span><span class=\"op\">$</span><span class=\"va\">counts</span>,</span></span>\n<span class=\"r-in\"><span>  <span class=\"va\">celdaCGGridSearchRes</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">plotGridSearchPerplexity</span><span class=\"op\">(</span><span class=\"va\">celdaCGGridSearchRes</span><span class=\"op\">)</span></span></span>\n<span class=\"r-plt img\"><img src=\"plotGridSearchPerplexity-2.png\" alt=\"\" width=\"700\" height=\"433\"></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/plotHeatmap.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Plots heatmap based on Celda model — plotHeatmap • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Plots heatmap based on Celda model — plotHeatmap\"><meta property=\"og:description\" content=\"Renders a heatmap based on a matrix of counts where rows are\n features and columns are cells.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Plots heatmap based on Celda model</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/plotHeatmap.R\" class=\"external-link\"><code>R/plotHeatmap.R</code></a></small>\n    <div class=\"hidden name\"><code>plotHeatmap.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Renders a heatmap based on a matrix of counts where rows are\n features and columns are cells.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">plotHeatmap</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">counts</span>,</span>\n<span>  z <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  y <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  scaleRow <span class=\"op\">=</span> <span class=\"va\">scale</span>,</span>\n<span>  trim <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"op\">-</span><span class=\"fl\">2</span>, <span class=\"fl\">2</span><span class=\"op\">)</span>,</span>\n<span>  featureIx <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  cellIx <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  clusterFeature <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  clusterCell <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  colorScheme <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"divergent\"</span>, <span class=\"st\">\"sequential\"</span><span class=\"op\">)</span>,</span>\n<span>  colorSchemeSymmetric <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  colorSchemeCenter <span class=\"op\">=</span> <span class=\"fl\">0</span>,</span>\n<span>  col <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  annotationCell <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  annotationFeature <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  annotationColor <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  breaks <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  legend <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  annotationLegend <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  annotationNamesFeature <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  annotationNamesCell <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  showNamesFeature <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  showNamesCell <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  rowGroupOrder <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  colGroupOrder <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  hclustMethod <span class=\"op\">=</span> <span class=\"st\">\"ward.D2\"</span>,</span>\n<span>  treeheightFeature <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/ifelse.html\" class=\"external-link\">ifelse</a></span><span class=\"op\">(</span><span class=\"va\">clusterFeature</span>, <span class=\"fl\">50</span>, <span class=\"fl\">0</span><span class=\"op\">)</span>,</span>\n<span>  treeheightCell <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/ifelse.html\" class=\"external-link\">ifelse</a></span><span class=\"op\">(</span><span class=\"va\">clusterCell</span>, <span class=\"fl\">50</span>, <span class=\"fl\">0</span><span class=\"op\">)</span>,</span>\n<span>  silent <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  <span class=\"va\">...</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>counts</dt>\n<dd><p>Numeric or sparse matrix. Normalized counts matrix where rows\nrepresent features and columns represent cells. .</p></dd>\n\n\n<dt>z</dt>\n<dd><p>Numeric vector. Denotes cell population labels.</p></dd>\n\n\n<dt>y</dt>\n<dd><p>Numeric vector. Denotes feature module labels.</p></dd>\n\n\n<dt>scaleRow</dt>\n<dd><p>Function. A function to scale each individual row. Set to\nNULL to disable. Occurs after normalization and log transformation. Defualt\nis 'scale' and thus will Z-score transform each row.</p></dd>\n\n\n<dt>trim</dt>\n<dd><p>Numeric vector. Vector of length two that specifies the lower\nand upper bounds for the data. This threshold is applied after row scaling.\nSet to NULL to disable. Default c(-2,2).</p></dd>\n\n\n<dt>featureIx</dt>\n<dd><p>Integer vector. Select features for display in heatmap. If\nNULL, no subsetting will be performed. Default NULL.</p></dd>\n\n\n<dt>cellIx</dt>\n<dd><p>Integer vector. Select cells for display in heatmap. If NULL,\nno subsetting will be performed. Default NULL.</p></dd>\n\n\n<dt>clusterFeature</dt>\n<dd><p>Logical. Determines whether rows should be clustered.\nDefault TRUE.</p></dd>\n\n\n<dt>clusterCell</dt>\n<dd><p>Logical. Determines whether columns should be clustered.\nDefault TRUE.</p></dd>\n\n\n<dt>colorScheme</dt>\n<dd><p>Character. One of \"divergent\" or \"sequential\". A\n\"divergent\" scheme is best for highlighting relative data (denoted by\n'colorSchemeCenter') such as gene expression data that has been normalized\nand centered. A \"sequential\" scheme is best for highlighting data that\nare ordered low to high such as raw counts or probabilities. Default\n\"divergent\".</p></dd>\n\n\n<dt>colorSchemeSymmetric</dt>\n<dd><p>Logical. When the colorScheme is \"divergent\"\nand the data contains both positive and negative numbers, TRUE indicates\nthat the color scheme should be symmetric from\n<code>[-max(abs(data)), max(abs(data))]</code>. For example, if the data ranges\ngoes from -1.5 to 2, then setting this to TRUE will force the color scheme\nto range from -2 to 2. Default TRUE.</p></dd>\n\n\n<dt>colorSchemeCenter</dt>\n<dd><p>Numeric. Indicates the center of a \"divergent\"\ncolorScheme. Default 0.</p></dd>\n\n\n<dt>col</dt>\n<dd><p>Color for the heatmap.</p></dd>\n\n\n<dt>annotationCell</dt>\n<dd><p>Data frame. Additional annotations for each cell will\nbe shown in the column color bars. The format of the data frame should be\none row for each cell and one column for each annotation. Numeric variables\nwill be displayed as continuous color bars and factors will be displayed as\ndiscrete color bars. Default NULL.</p></dd>\n\n\n<dt>annotationFeature</dt>\n<dd><p>A data frame for the feature annotations (rows).</p></dd>\n\n\n<dt>annotationColor</dt>\n<dd><p>List. Contains color scheme for all annotations. See\n`?pheatmap` for more details.</p></dd>\n\n\n<dt>breaks</dt>\n<dd><p>Numeric vector. A sequence of numbers that covers the range\nof values in the normalized `counts`. Values in the normalized `matrix` are\nassigned to each bin in `breaks`. Each break is assigned to a unique color\nfrom `col`. If NULL, then breaks are calculated automatically. Default NULL.</p></dd>\n\n\n<dt>legend</dt>\n<dd><p>Logical. Determines whether legend should be drawn. Default\nTRUE.</p></dd>\n\n\n<dt>annotationLegend</dt>\n<dd><p>Logical. Whether legend for all annotations should\nbe drawn. Default TRUE.</p></dd>\n\n\n<dt>annotationNamesFeature</dt>\n<dd><p>Logical. Whether the names for features should\nbe shown. Default TRUE.</p></dd>\n\n\n<dt>annotationNamesCell</dt>\n<dd><p>Logical. Whether the names for cells should be\nshown. Default TRUE.</p></dd>\n\n\n<dt>showNamesFeature</dt>\n<dd><p>Logical. Specifies if feature names should be shown.\nDefault TRUE.</p></dd>\n\n\n<dt>showNamesCell</dt>\n<dd><p>Logical. Specifies if cell names should be shown.\nDefault FALSE.</p></dd>\n\n\n<dt>rowGroupOrder</dt>\n<dd><p>Vector. Specifies the order of feature clusters when\nsemisupervised clustering is performed on the <code>y</code> labels.</p></dd>\n\n\n<dt>colGroupOrder</dt>\n<dd><p>Vector. Specifies the order of cell clusters when\nsemisupervised clustering is performed on the <code>z</code> labels.</p></dd>\n\n\n<dt>hclustMethod</dt>\n<dd><p>Character. Specifies the method to use for the 'hclust'\nfunction. See `?hclust` for possible values. Default \"ward.D2\".</p></dd>\n\n\n<dt>treeheightFeature</dt>\n<dd><p>Numeric. Width of the feature dendrogram. Set to 0\nto disable plotting of this dendrogram. Default: if clusterFeature == TRUE,\nthen treeheightFeature = 50, else treeheightFeature = 0.</p></dd>\n\n\n<dt>treeheightCell</dt>\n<dd><p>Numeric. Height of the cell dendrogram. Set to 0 to\ndisable plotting of this dendrogram. Default: if clusterCell == TRUE, then\ntreeheightCell = 50, else treeheightCell = 0.</p></dd>\n\n\n<dt>silent</dt>\n<dd><p>Logical. Whether to plot the heatmap.</p></dd>\n\n\n<dt>...</dt>\n<dd><p>Other arguments to be passed to underlying pheatmap function.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>list A list containing dendrogram information and the heatmap grob</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span>, <span class=\"va\">celdaCGMod</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">plotHeatmap</span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span><span class=\"op\">$</span><span class=\"va\">counts</span>,</span></span>\n<span class=\"r-in\"><span>  z <span class=\"op\">=</span> <span class=\"fu\"><a href=\"celdaClusters.html\">celdaClusters</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGMod</span><span class=\"op\">)</span><span class=\"op\">$</span><span class=\"va\">z</span>, y <span class=\"op\">=</span> <span class=\"fu\"><a href=\"celdaClusters.html\">celdaClusters</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGMod</span><span class=\"op\">)</span><span class=\"op\">$</span><span class=\"va\">y</span></span></span>\n<span class=\"r-in\"><span><span class=\"op\">)</span></span></span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> TableGrob (5 x 6) \"layout\": 9 grobs</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>   z     cells                 name                          grob</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 1 1 (2-2,3-3)             col_tree polyline[GRID.polyline.12713]</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 2 2 (4-4,1-1)             row_tree polyline[GRID.polyline.12714]</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 3 3 (4-4,3-3)               matrix       gTree[GRID.gTree.12716]</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 4 4 (3-3,3-3)       col_annotation         rect[GRID.rect.12717]</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 5 5 (3-3,4-4) col_annotation_names         text[GRID.text.12718]</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 6 6 (4-4,2-2)       row_annotation         rect[GRID.rect.12719]</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 7 7 (5-5,2-2) row_annotation_names         text[GRID.text.12720]</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 8 8 (4-5,6-6)     annotationLegend       gTree[GRID.gTree.12728]</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 9 9 (4-5,5-5)               legend       gTree[GRID.gTree.12731]</span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/plotRPC.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Visualize perplexity differences of a list of celda models — plotRPC • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Visualize perplexity differences of a list of celda models — plotRPC\"><meta property=\"og:description\" content=\"Visualize perplexity differences of every model in a celdaList,\n by unique K/L combinations.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Visualize perplexity differences of a list of celda models</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/perplexity.R\" class=\"external-link\"><code>R/perplexity.R</code></a></small>\n    <div class=\"hidden name\"><code>plotRPC.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Visualize perplexity differences of every model in a celdaList,\n by unique K/L combinations.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">plotRPC</span><span class=\"op\">(</span><span class=\"va\">x</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>, sep <span class=\"op\">=</span> <span class=\"fl\">5</span>, alpha <span class=\"op\">=</span> <span class=\"fl\">0.5</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">plotRPC</span><span class=\"op\">(</span><span class=\"va\">x</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>, sep <span class=\"op\">=</span> <span class=\"fl\">5</span>, alpha <span class=\"op\">=</span> <span class=\"fl\">0.5</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for celdaList</span></span>\n<span><span class=\"fu\">plotRPC</span><span class=\"op\">(</span><span class=\"va\">x</span>, sep <span class=\"op\">=</span> <span class=\"fl\">5</span>, alpha <span class=\"op\">=</span> <span class=\"fl\">0.5</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>Can be one of</p><ul><li><p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object returned from\n <code>celdaGridSearch</code>, <code>recursiveSplitModule</code>,\n or <code>recursiveSplitCell</code>. Must contain a list named\n <code>\"celda_grid_search\"</code> in <code>metadata(x)</code>.</p></li>\n<li><p>celdaList object.</p></li>\n</ul></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a> slot\nto use. Default \"featureSubset\".</p></dd>\n\n\n<dt>sep</dt>\n<dd><p>Numeric. Breaks in the x axis of the resulting plot.</p></dd>\n\n\n<dt>alpha</dt>\n<dd><p>Numeric. Passed to geom_jitter. Opacity of the points.\nValues of alpha range from 0 to 1, with lower values corresponding\nto more transparent colors.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>A ggplot plot object showing perplexity differences as a function of\n clustering parameters.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCGGridSearch</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"resamplePerplexity.html\">resamplePerplexity</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCGGridSearch</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">plotRPC</span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span></span></span>\n<span class=\"r-plt img\"><img src=\"plotRPC-1.png\" alt=\"\" width=\"700\" height=\"433\"></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span>, <span class=\"va\">celdaCGGridSearchRes</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"co\">## Run various combinations of parameters with 'celdaGridSearch'</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">celdaCGGridSearchRes</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"resamplePerplexity.html\">resamplePerplexity</a></span><span class=\"op\">(</span></span></span>\n<span class=\"r-in\"><span>  <span class=\"va\">celdaCGSim</span><span class=\"op\">$</span><span class=\"va\">counts</span>,</span></span>\n<span class=\"r-in\"><span>  <span class=\"va\">celdaCGGridSearchRes</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">plotRPC</span><span class=\"op\">(</span><span class=\"va\">celdaCGGridSearchRes</span><span class=\"op\">)</span></span></span>\n<span class=\"r-plt img\"><img src=\"plotRPC-2.png\" alt=\"\" width=\"700\" height=\"433\"></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/recodeClusterY.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Recode feature module labels — recodeClusterY • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Recode feature module labels — recodeClusterY\"><meta property=\"og:description\" content=\"Recode feature module clusters using a mapping in the\n from and to arguments.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Recode feature module labels</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/celda_functions.R\" class=\"external-link\"><code>R/celda_functions.R</code></a></small>\n    <div class=\"hidden name\"><code>recodeClusterY.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Recode feature module clusters using a mapping in the\n <code>from</code> and <code>to</code> arguments.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">recodeClusterY</span><span class=\"op\">(</span><span class=\"va\">sce</span>, <span class=\"va\">from</span>, <span class=\"va\">to</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>sce</dt>\n<dd><p><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object returned from\n<a href=\"celda_G.html\">celda_G</a> or <a href=\"celda_CG.html\">celda_CG</a>. Must contain column\n<code>celda_feature_module</code> in\n<code><a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">rowData</a>(altExp(sce, altExpName))</code>.</p></dd>\n\n\n<dt>from</dt>\n<dd><p>Numeric vector. Unique values in the range of\n<code>seq(celdaModules(sce))</code> that correspond to the original module labels\nin <code>sce</code>.</p></dd>\n\n\n<dt>to</dt>\n<dd><p>Numeric vector. Unique values in the range of\n<code>seq(celdaModules(sce))</code> that correspond to the new module labels.</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a> slot\nto use. Default \"featureSubset\".</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>@return <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object with recoded\n feature module labels.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sceReorderedY</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">recodeClusterY</span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span>, <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"fl\">1</span>, <span class=\"fl\">3</span><span class=\"op\">)</span>, <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"fl\">3</span>, <span class=\"fl\">1</span><span class=\"op\">)</span><span class=\"op\">)</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/recodeClusterZ.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Recode cell cluster labels — recodeClusterZ • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Recode cell cluster labels — recodeClusterZ\"><meta property=\"og:description\" content=\"Recode cell subpopulaton clusters using a mapping in the\n from and to arguments.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Recode cell cluster labels</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/celda_functions.R\" class=\"external-link\"><code>R/celda_functions.R</code></a></small>\n    <div class=\"hidden name\"><code>recodeClusterZ.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Recode cell subpopulaton clusters using a mapping in the\n <code>from</code> and <code>to</code> arguments.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">recodeClusterZ</span><span class=\"op\">(</span><span class=\"va\">sce</span>, <span class=\"va\">from</span>, <span class=\"va\">to</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>sce</dt>\n<dd><p><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object returned from\n<a href=\"celda_C.html\">celda_C</a> or <a href=\"celda_CG.html\">celda_CG</a>. Must contain column\n<code>celda_cell_cluster</code> in\n<code><a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">colData</a>(altExp(sce, altExpName))</code>.</p></dd>\n\n\n<dt>from</dt>\n<dd><p>Numeric vector. Unique values in the range of\n<code>seq(max(as.integer(celdaClusters(sce, altExpName = altExpName))))</code>\nthat correspond to the original cluster\nlabels in <code>sce</code>.</p></dd>\n\n\n<dt>to</dt>\n<dd><p>Numeric vector. Unique values in the range of\n<code>seq(max(as.integer(celdaClusters(sce, altExpName = altExpName))))</code>\nthat correspond to the new cluster labels.</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a> slot\nto use. Default \"featureSubset\".</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object with recoded cell\n cluster labels.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sceReorderedZ</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">recodeClusterZ</span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span>, <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"fl\">1</span>, <span class=\"fl\">3</span><span class=\"op\">)</span>, <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"fl\">3</span>, <span class=\"fl\">1</span><span class=\"op\">)</span><span class=\"op\">)</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/recursiveSplitCell.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Recursive cell splitting — recursiveSplitCell • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Recursive cell splitting — recursiveSplitCell\"><meta property=\"og:description\" content=\"Uses the celda_C model to cluster cells into\n population for range of possible K's. The cell population labels of the\n previous &quot;K-1&quot; model are used as the initial values in the current model\n with K cell populations. The best split of an existing cell population is\n found to create the K-th cluster. This procedure is much faster than\n randomly initializing each model with a different K. If module labels for\n each feature are given in 'yInit', the celda_CG model will be used to\n split cell populations based on those modules instead of individual\n features. Module labels will also be updated during sampling and thus\n may end up slightly different than yInit.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Recursive cell splitting</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/recursiveSplit.R\" class=\"external-link\"><code>R/recursiveSplit.R</code></a></small>\n    <div class=\"hidden name\"><code>recursiveSplitCell.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Uses the <a href=\"celda_C.html\">celda_C</a> model to cluster cells into\n population for range of possible K's. The cell population labels of the\n previous \"K-1\" model are used as the initial values in the current model\n with K cell populations. The best split of an existing cell population is\n found to create the K-th cluster. This procedure is much faster than\n randomly initializing each model with a different K. If module labels for\n each feature are given in 'yInit', the <a href=\"celda_CG.html\">celda_CG</a> model will be used to\n split cell populations based on those modules instead of individual\n features. Module labels will also be updated during sampling and thus\n may end up slightly different than <code>yInit</code>.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">recursiveSplitCell</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  sampleLabel <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  initialK <span class=\"op\">=</span> <span class=\"fl\">5</span>,</span>\n<span>  maxK <span class=\"op\">=</span> <span class=\"fl\">25</span>,</span>\n<span>  tempL <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  yInit <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  alpha <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  beta <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  delta <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  gamma <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  minCell <span class=\"op\">=</span> <span class=\"fl\">3</span>,</span>\n<span>  reorder <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  seed <span class=\"op\">=</span> <span class=\"fl\">12345</span>,</span>\n<span>  perplexity <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  doResampling <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  numResample <span class=\"op\">=</span> <span class=\"fl\">5</span>,</span>\n<span>  logfile <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  verbose <span class=\"op\">=</span> <span class=\"cn\">TRUE</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">recursiveSplitCell</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  sampleLabel <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  initialK <span class=\"op\">=</span> <span class=\"fl\">5</span>,</span>\n<span>  maxK <span class=\"op\">=</span> <span class=\"fl\">25</span>,</span>\n<span>  tempL <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  yInit <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  alpha <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  beta <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  delta <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  gamma <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  minCell <span class=\"op\">=</span> <span class=\"fl\">3</span>,</span>\n<span>  reorder <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  seed <span class=\"op\">=</span> <span class=\"fl\">12345</span>,</span>\n<span>  perplexity <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  doResampling <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  numResample <span class=\"op\">=</span> <span class=\"fl\">5</span>,</span>\n<span>  logfile <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  verbose <span class=\"op\">=</span> <span class=\"cn\">TRUE</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for matrix</span></span>\n<span><span class=\"fu\">recursiveSplitCell</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  sampleLabel <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  initialK <span class=\"op\">=</span> <span class=\"fl\">5</span>,</span>\n<span>  maxK <span class=\"op\">=</span> <span class=\"fl\">25</span>,</span>\n<span>  tempL <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  yInit <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  alpha <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  beta <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  delta <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  gamma <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  minCell <span class=\"op\">=</span> <span class=\"fl\">3</span>,</span>\n<span>  reorder <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  seed <span class=\"op\">=</span> <span class=\"fl\">12345</span>,</span>\n<span>  perplexity <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  doResampling <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  numResample <span class=\"op\">=</span> <span class=\"fl\">5</span>,</span>\n<span>  logfile <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  verbose <span class=\"op\">=</span> <span class=\"cn\">TRUE</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>A numeric <a href=\"https://rdrr.io/r/base/matrix.html\" class=\"external-link\">matrix</a> of counts or a\n<a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a>\nwith the matrix located in the assay slot under <code>useAssay</code>.\nRows represent features and columns represent cells.</p></dd>\n\n\n<dt>useAssay</dt>\n<dd><p>A string specifying the name of the\n<a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">assay</a>\nslot to use. Default \"counts\".</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a> slot\nto use. Default \"featureSubset\".</p></dd>\n\n\n<dt>sampleLabel</dt>\n<dd><p>Vector or factor. Denotes the sample label for each cell\n(column) in the count matrix.</p></dd>\n\n\n<dt>initialK</dt>\n<dd><p>Integer. Initial number of cell populations to try.\nDefault <code>5</code>.</p></dd>\n\n\n<dt>maxK</dt>\n<dd><p>Integer. Maximum number of cell populations to try.\nDefault <code>25</code>.</p></dd>\n\n\n<dt>tempL</dt>\n<dd><p>Integer. Number of temporary modules to identify and use in cell\nsplitting. Only used if <code>yInit = NULL</code>. Collapsing features to a\nrelatively smaller number of modules will increase the speed of clustering\nand tend to produce better cell populations. This number should be larger\nthan the number of true modules expected in the dataset. Default\n<code>NULL.</code></p></dd>\n\n\n<dt>yInit</dt>\n<dd><p>Integer vector. Module labels for features. Cells will be\nclustered using the <a href=\"celda_CG.html\">celda_CG</a> model based on the modules specified in\n<code>yInit</code> rather than the counts of individual features. While the\nfeatures will be initialized to the module labels in <code>yInit</code>, the\nlabels will be allowed to move within each new model with a different K.</p></dd>\n\n\n<dt>alpha</dt>\n<dd><p>Numeric. Concentration parameter for Theta. Adds a pseudocount\nto each cell population in each sample. Default <code>1</code>.</p></dd>\n\n\n<dt>beta</dt>\n<dd><p>Numeric. Concentration parameter for Phi. Adds a pseudocount to\neach feature in each cell (if <code>yInit</code> is NULL) or to each module in\neach cell population (if <code>yInit</code> is set). Default <code>1</code>.</p></dd>\n\n\n<dt>delta</dt>\n<dd><p>Numeric. Concentration parameter for Psi. Adds a pseudocount\nto each feature in each module. Only used if <code>yInit</code> is set. Default 1.</p></dd>\n\n\n<dt>gamma</dt>\n<dd><p>Numeric. Concentration parameter for Eta. Adds a pseudocount\nto the number of features in each module. Only used if <code>yInit</code> is set.\nDefault 1.</p></dd>\n\n\n<dt>minCell</dt>\n<dd><p>Integer. Only attempt to split cell populations with at\nleast this many cells.</p></dd>\n\n\n<dt>reorder</dt>\n<dd><p>Logical. Whether to reorder cell populations using\nhierarchical clustering after each model has been created. If FALSE, cell\npopulations numbers will correspond to the split which created the cell\npopulations (i.e. 'K15' was created at split 15, 'K16' was created at split\n16, etc.). Default TRUE.</p></dd>\n\n\n<dt>seed</dt>\n<dd><p>Integer. Passed to <a href=\"https://withr.r-lib.org/reference/with_seed.html\" class=\"external-link\">with_seed</a>. For reproducibility,\na default value of 12345 is used. If NULL, no calls to\n<a href=\"https://withr.r-lib.org/reference/with_seed.html\" class=\"external-link\">with_seed</a> are made.</p></dd>\n\n\n<dt>perplexity</dt>\n<dd><p>Logical. Whether to calculate perplexity for each model.\nIf FALSE, then perplexity can be calculated later with\n<a href=\"resamplePerplexity.html\">resamplePerplexity</a>. Default TRUE.</p></dd>\n\n\n<dt>doResampling</dt>\n<dd><p>Boolean. If <code>TRUE</code>, then each cell in the counts\nmatrix will be resampled according to a multinomial distribution to introduce\nnoise before calculating perplexity. Default <code>FALSE</code>.</p></dd>\n\n\n<dt>numResample</dt>\n<dd><p>Integer. The number of times to resample the counts matrix\nfor evaluating perplexity if <code>doResampling</code> is set to <code>TRUE</code>.\nDefault <code>5</code>.</p></dd>\n\n\n<dt>logfile</dt>\n<dd><p>Character. Messages will be redirected to a file named\n\"logfile\". If NULL, messages will be printed to stdout.  Default NULL.</p></dd>\n\n\n<dt>verbose</dt>\n<dd><p>Logical. Whether to print log messages. Default TRUE.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object. Function\n parameter settings and celda model results are stored in the</p>\n<p></p>\n<p>metadata</p>\n<p></p>\n<p><code>\"celda_grid_search\"</code> slot. The models in\n the list will be of class <code>celda_C</code> if <code>yInit = NULL</code> or</p>\n<p></p>\n<p><code>celda_CG</code> if <code>zInit</code> is set.</p>\n    </div>\n    <div id=\"see-also\">\n    <h2>See also</h2>\n    <div class=\"dont-index\"><p><a href=\"recursiveSplitModule.html\">recursiveSplitModule</a> for recursive splitting of feature\n modules.</p></div>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"co\">## Create models that range from K = 3 to K = 7 by recursively splitting</span></span></span>\n<span class=\"r-in\"><span><span class=\"co\">## cell populations into two to produce \\link{celda_C} cell clustering models</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">recursiveSplitCell</span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span>, initialK <span class=\"op\">=</span> <span class=\"fl\">3</span>, maxK <span class=\"op\">=</span> <span class=\"fl\">7</span><span class=\"op\">)</span></span></span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> ==================================================</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Starting recursive cell population splitting.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> ==================================================</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:32 2024 .. Initializing with 3 populations</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:32 2024 .. Current cell population 4 | logLik: -1225755.01101897</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:32 2024 .. Current cell population 5 | logLik: -1213677.60126784</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:32 2024 .. Current cell population 6 | logLik: -1213903.59449854</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:32 2024 .. Current cell population 7 | logLik: -1214081.54311397</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:32 2024 .. Calculating perplexity</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> ==================================================</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Completed recursive cell population splitting. Total time: 0.3127432 secs</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> ==================================================</span>\n<span class=\"r-in\"><span></span></span>\n<span class=\"r-in\"><span><span class=\"co\">## Alternatively, first identify features modules using</span></span></span>\n<span class=\"r-in\"><span><span class=\"co\">## \\link{recursiveSplitModule}</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">moduleSplit</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"recursiveSplitModule.html\">recursiveSplitModule</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span>, initialL <span class=\"op\">=</span> <span class=\"fl\">3</span>, maxL <span class=\"op\">=</span> <span class=\"fl\">15</span><span class=\"op\">)</span></span></span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> ==================================================</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Starting recursive module splitting.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> ==================================================</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:32 2024 .. Collapsing to 100 temporary cell populations</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:34 2024 .. Initializing with 3 modules</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:35 2024 .. Created module 4 | logLik: -1241379.90928455</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:35 2024 .. Created module 5 | logLik: -1235212.7977535</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:35 2024 .. Created module 6 | logLik: -1232789.9817561</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:35 2024 .. Created module 7 | logLik: -1227246.66090571</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:35 2024 .. Created module 8 | logLik: -1223898.757694</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:35 2024 .. Created module 9 | logLik: -1221848.26936098</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:35 2024 .. Created module 10 | logLik: -1220147.96681948</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:35 2024 .. Created module 11 | logLik: -1220818.37022325</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:35 2024 .. Created module 12 | logLik: -1221489.07685946</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:35 2024 .. Created module 13 | logLik: -1222032.53497571</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:36 2024 .. Created module 14 | logLik: -1222712.17543857</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:36 2024 .. Created module 15 | logLik: -1223268.97596756</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:36 2024 .. Calculating perplexity</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> ==================================================</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Completed recursive module splitting. Total time: 3.285614 secs</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> ==================================================</span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"plotGridSearchPerplexity.html\">plotGridSearchPerplexity</a></span><span class=\"op\">(</span><span class=\"va\">moduleSplit</span><span class=\"op\">)</span></span></span>\n<span class=\"r-plt img\"><img src=\"recursiveSplitCell-1.png\" alt=\"\" width=\"700\" height=\"433\"></span>\n<span class=\"r-in\"><span><span class=\"va\">moduleSplitSelect</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"subsetCeldaList.html\">subsetCeldaList</a></span><span class=\"op\">(</span><span class=\"va\">moduleSplit</span>, <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>L <span class=\"op\">=</span> <span class=\"fl\">10</span><span class=\"op\">)</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span></span></span>\n<span class=\"r-in\"><span><span class=\"co\">## Then use module labels for initialization in \\link{recursiveSplitCell} to</span></span></span>\n<span class=\"r-in\"><span><span class=\"co\">## produce \\link{celda_CG} bi-clustering models</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">cellSplit</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">recursiveSplitCell</span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span>,</span></span>\n<span class=\"r-in\"><span>  initialK <span class=\"op\">=</span> <span class=\"fl\">3</span>, maxK <span class=\"op\">=</span> <span class=\"fl\">7</span>, yInit <span class=\"op\">=</span> <span class=\"fu\"><a href=\"celdaModules.html\">celdaModules</a></span><span class=\"op\">(</span><span class=\"va\">moduleSplitSelect</span><span class=\"op\">)</span><span class=\"op\">)</span></span></span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> ==================================================</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Starting recursive cell population splitting.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> ==================================================</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:36 2024 .. Collapsing to 10 modules</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:36 2024 .. Initializing with 3 populations</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:37 2024 .. Current cell population 4 | logLik: -1225286.49558716</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:37 2024 .. Current cell population 5 | logLik: -1212955.15575681</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:37 2024 .. Current cell population 6 | logLik: -1212982.74290613</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:37 2024 .. Current cell population 7 | logLik: -1213005.40337891</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:37 2024 .. Calculating perplexity</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> ==================================================</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Completed recursive cell population splitting. Total time: 1.227239 secs</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> ==================================================</span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"plotGridSearchPerplexity.html\">plotGridSearchPerplexity</a></span><span class=\"op\">(</span><span class=\"va\">cellSplit</span><span class=\"op\">)</span></span></span>\n<span class=\"r-plt img\"><img src=\"recursiveSplitCell-2.png\" alt=\"\" width=\"700\" height=\"433\"></span>\n<span class=\"r-in\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"subsetCeldaList.html\">subsetCeldaList</a></span><span class=\"op\">(</span><span class=\"va\">cellSplit</span>, <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>K <span class=\"op\">=</span> <span class=\"fl\">5</span>, L <span class=\"op\">=</span> <span class=\"fl\">10</span><span class=\"op\">)</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span>, <span class=\"va\">celdaCSim</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"co\">## Create models that range from K = 3 to K = 7 by recursively splitting</span></span></span>\n<span class=\"r-in\"><span><span class=\"co\">## cell populations into two to produce \\link{celda_C} cell clustering models</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">recursiveSplitCell</span><span class=\"op\">(</span><span class=\"va\">celdaCSim</span><span class=\"op\">$</span><span class=\"va\">counts</span>, initialK <span class=\"op\">=</span> <span class=\"fl\">3</span>, maxK <span class=\"op\">=</span> <span class=\"fl\">7</span><span class=\"op\">)</span></span></span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> ==================================================</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Starting recursive cell population splitting.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> ==================================================</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:38 2024 .. Initializing with 3 populations</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:38 2024 .. Current cell population 4 | logLik: -1341630.1679001</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:38 2024 .. Current cell population 5 | logLik: -1327506.91718317</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:38 2024 .. Current cell population 6 | logLik: -1315227.54586167</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:38 2024 .. Current cell population 7 | logLik: -1304393.65802293</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:38 2024 .. Calculating perplexity</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> ==================================================</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Completed recursive cell population splitting. Total time: 0.2604418 secs</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> ==================================================</span>\n<span class=\"r-in\"><span></span></span>\n<span class=\"r-in\"><span><span class=\"co\">## Alternatively, first identify features modules using</span></span></span>\n<span class=\"r-in\"><span><span class=\"co\">## \\link{recursiveSplitModule}</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">moduleSplit</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"recursiveSplitModule.html\">recursiveSplitModule</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span><span class=\"op\">$</span><span class=\"va\">counts</span>,</span></span>\n<span class=\"r-in\"><span>  initialL <span class=\"op\">=</span> <span class=\"fl\">3</span>, maxL <span class=\"op\">=</span> <span class=\"fl\">15</span><span class=\"op\">)</span></span></span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> ==================================================</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Starting recursive module splitting.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> ==================================================</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:39 2024 .. Collapsing to 100 temporary cell populations</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:40 2024 .. Initializing with 3 modules</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:40 2024 .. Created module 4 | logLik: -1243396.62348886</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:40 2024 .. Created module 5 | logLik: -1237610.11790137</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:40 2024 .. Created module 6 | logLik: -1232128.87013396</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:40 2024 .. Created module 7 | logLik: -1227611.8250329</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:40 2024 .. Created module 8 | logLik: -1225618.06184004</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:40 2024 .. Created module 9 | logLik: -1223967.77531912</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:41 2024 .. Created module 10 | logLik: -1222801.11395987</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:41 2024 .. Created module 11 | logLik: -1223402.66903597</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:41 2024 .. Created module 12 | logLik: -1224026.19892208</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:41 2024 .. Created module 13 | logLik: -1224675.63005464</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:41 2024 .. Created module 14 | logLik: -1225317.91966369</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:41 2024 .. Created module 15 | logLik: -1225971.50555157</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:41 2024 .. Calculating perplexity</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> ==================================================</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Completed recursive module splitting. Total time: 2.560257 secs</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> ==================================================</span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"plotGridSearchPerplexity.html\">plotGridSearchPerplexity</a></span><span class=\"op\">(</span><span class=\"va\">moduleSplit</span><span class=\"op\">)</span></span></span>\n<span class=\"r-plt img\"><img src=\"recursiveSplitCell-3.png\" alt=\"\" width=\"700\" height=\"433\"></span>\n<span class=\"r-in\"><span><span class=\"va\">moduleSplitSelect</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"subsetCeldaList.html\">subsetCeldaList</a></span><span class=\"op\">(</span><span class=\"va\">moduleSplit</span>, <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>L <span class=\"op\">=</span> <span class=\"fl\">10</span><span class=\"op\">)</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span></span></span>\n<span class=\"r-in\"><span><span class=\"co\">## Then use module labels for initialization in \\link{recursiveSplitCell} to</span></span></span>\n<span class=\"r-in\"><span><span class=\"co\">## produce \\link{celda_CG} bi-clustering models</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">cellSplit</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">recursiveSplitCell</span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span><span class=\"op\">$</span><span class=\"va\">counts</span>,</span></span>\n<span class=\"r-in\"><span>  initialK <span class=\"op\">=</span> <span class=\"fl\">3</span>, maxK <span class=\"op\">=</span> <span class=\"fl\">7</span>, yInit <span class=\"op\">=</span> <span class=\"fu\"><a href=\"celdaModules.html\">celdaModules</a></span><span class=\"op\">(</span><span class=\"va\">moduleSplitSelect</span><span class=\"op\">)</span><span class=\"op\">)</span></span></span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> ==================================================</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Starting recursive cell population splitting.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> ==================================================</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:42 2024 .. Collapsing to 10 modules</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:42 2024 .. Initializing with 3 populations</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:44 2024 .. Current cell population 4 | logLik: -1227944.5458832</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:44 2024 .. Current cell population 5 | logLik: -1215605.08613503</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:44 2024 .. Current cell population 6 | logLik: -1215627.62281773</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:44 2024 .. Current cell population 7 | logLik: -1215651.32538066</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:44 2024 .. Calculating perplexity</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> ==================================================</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Completed recursive cell population splitting. Total time: 2.064909 secs</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> ==================================================</span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"plotGridSearchPerplexity.html\">plotGridSearchPerplexity</a></span><span class=\"op\">(</span><span class=\"va\">cellSplit</span><span class=\"op\">)</span></span></span>\n<span class=\"r-plt img\"><img src=\"recursiveSplitCell-4.png\" alt=\"\" width=\"700\" height=\"433\"></span>\n<span class=\"r-in\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"subsetCeldaList.html\">subsetCeldaList</a></span><span class=\"op\">(</span><span class=\"va\">cellSplit</span>, <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>K <span class=\"op\">=</span> <span class=\"fl\">5</span>, L <span class=\"op\">=</span> <span class=\"fl\">10</span><span class=\"op\">)</span><span class=\"op\">)</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/recursiveSplitModule.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Recursive module splitting — recursiveSplitModule • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Recursive module splitting — recursiveSplitModule\"><meta property=\"og:description\" content=\"Uses the celda_G model to cluster features into modules\n for a range of possible L's. The module labels of the previous &quot;L-1&quot; model\n are used as the initial values in the current model with L modules. The best\n split of an existing module is found to create the L-th module. This\n procedure is much faster than randomly initializing each model with a\n different L.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Recursive module splitting</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/recursiveSplit.R\" class=\"external-link\"><code>R/recursiveSplit.R</code></a></small>\n    <div class=\"hidden name\"><code>recursiveSplitModule.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Uses the <a href=\"celda_G.html\">celda_G</a> model to cluster features into modules\n for a range of possible L's. The module labels of the previous \"L-1\" model\n are used as the initial values in the current model with L modules. The best\n split of an existing module is found to create the L-th module. This\n procedure is much faster than randomly initializing each model with a\n different L.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">recursiveSplitModule</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  initialL <span class=\"op\">=</span> <span class=\"fl\">10</span>,</span>\n<span>  maxL <span class=\"op\">=</span> <span class=\"fl\">100</span>,</span>\n<span>  tempK <span class=\"op\">=</span> <span class=\"fl\">100</span>,</span>\n<span>  zInit <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  sampleLabel <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  alpha <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  beta <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  delta <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  gamma <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  minFeature <span class=\"op\">=</span> <span class=\"fl\">3</span>,</span>\n<span>  reorder <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  seed <span class=\"op\">=</span> <span class=\"fl\">12345</span>,</span>\n<span>  perplexity <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  doResampling <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  numResample <span class=\"op\">=</span> <span class=\"fl\">5</span>,</span>\n<span>  verbose <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  logfile <span class=\"op\">=</span> <span class=\"cn\">NULL</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">recursiveSplitModule</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  initialL <span class=\"op\">=</span> <span class=\"fl\">10</span>,</span>\n<span>  maxL <span class=\"op\">=</span> <span class=\"fl\">100</span>,</span>\n<span>  tempK <span class=\"op\">=</span> <span class=\"fl\">100</span>,</span>\n<span>  zInit <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  sampleLabel <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  alpha <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  beta <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  delta <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  gamma <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  minFeature <span class=\"op\">=</span> <span class=\"fl\">3</span>,</span>\n<span>  reorder <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  seed <span class=\"op\">=</span> <span class=\"fl\">12345</span>,</span>\n<span>  perplexity <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  doResampling <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  numResample <span class=\"op\">=</span> <span class=\"fl\">5</span>,</span>\n<span>  verbose <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  logfile <span class=\"op\">=</span> <span class=\"cn\">NULL</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for matrix</span></span>\n<span><span class=\"fu\">recursiveSplitModule</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  initialL <span class=\"op\">=</span> <span class=\"fl\">10</span>,</span>\n<span>  maxL <span class=\"op\">=</span> <span class=\"fl\">100</span>,</span>\n<span>  tempK <span class=\"op\">=</span> <span class=\"fl\">100</span>,</span>\n<span>  zInit <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  sampleLabel <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  alpha <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  beta <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  delta <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  gamma <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  minFeature <span class=\"op\">=</span> <span class=\"fl\">3</span>,</span>\n<span>  reorder <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  seed <span class=\"op\">=</span> <span class=\"fl\">12345</span>,</span>\n<span>  perplexity <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  doResampling <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  numResample <span class=\"op\">=</span> <span class=\"fl\">5</span>,</span>\n<span>  verbose <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  logfile <span class=\"op\">=</span> <span class=\"cn\">NULL</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>A numeric <a href=\"https://rdrr.io/r/base/matrix.html\" class=\"external-link\">matrix</a> of counts or a\n<a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a>\nwith the matrix located in the assay slot under <code>useAssay</code>.\nRows represent features and columns represent cells.</p></dd>\n\n\n<dt>useAssay</dt>\n<dd><p>A string specifying which <a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">assay</a>\nslot to use if <code>x</code> is a\n<a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object. Default \"counts\".</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a> slot\nto use. Default \"featureSubset\".</p></dd>\n\n\n<dt>initialL</dt>\n<dd><p>Integer. Initial number of modules.</p></dd>\n\n\n<dt>maxL</dt>\n<dd><p>Integer. Maximum number of modules.</p></dd>\n\n\n<dt>tempK</dt>\n<dd><p>Integer. Number of temporary cell populations to identify and\nuse in module splitting. Only used if <code>zInit = NULL</code> Collapsing cells\nto a relatively smaller number of cell popluations will increase the\nspeed of module clustering and tend to produce better modules. This number\nshould be larger than the number of true cell populations expected in the\ndataset. Default <code>100</code>.</p></dd>\n\n\n<dt>zInit</dt>\n<dd><p>Integer vector. Collapse cells to cell populations based on\nlabels in <code>zInit</code> and then perform module splitting. If NULL, no\ncollapsing will be performed unless <code>tempK</code> is specified.\nDefault <code>NULL</code>.</p></dd>\n\n\n<dt>sampleLabel</dt>\n<dd><p>Vector or factor. Denotes the sample label for each cell\n(column) in the count matrix. Default <code>NULL</code>.</p></dd>\n\n\n<dt>alpha</dt>\n<dd><p>Numeric. Concentration parameter for Theta. Adds a pseudocount\nto each cell population in each sample. Only used if <code>zInit</code> is set.\nDefault <code>1</code>.</p></dd>\n\n\n<dt>beta</dt>\n<dd><p>Numeric. Concentration parameter for Phi. Adds a pseudocount\nto each feature module in each cell. Default 1.</p></dd>\n\n\n<dt>delta</dt>\n<dd><p>Numeric. Concentration parameter for Psi. Adds a pseudocount\nto each feature in each module. Default 1.</p></dd>\n\n\n<dt>gamma</dt>\n<dd><p>Numeric. Concentration parameter for Eta. Adds a pseudocount\nto the number of features in each module. Default 1.</p></dd>\n\n\n<dt>minFeature</dt>\n<dd><p>Integer. Only attempt to split modules with at least this\nmany features.</p></dd>\n\n\n<dt>reorder</dt>\n<dd><p>Logical. Whether to reorder modules using hierarchical\nclustering after each model has been created. If FALSE, module numbers will\ncorrespond to the split which created the module (i.e. 'L15' was created at\nsplit 15, 'L16' was created at split 16, etc.). Default TRUE.</p></dd>\n\n\n<dt>seed</dt>\n<dd><p>Integer. Passed to <a href=\"https://withr.r-lib.org/reference/with_seed.html\" class=\"external-link\">with_seed</a>. For reproducibility,\na default value of 12345 is used. If NULL, no calls to\n<a href=\"https://withr.r-lib.org/reference/with_seed.html\" class=\"external-link\">with_seed</a> are made.</p></dd>\n\n\n<dt>perplexity</dt>\n<dd><p>Logical. Whether to calculate perplexity for each model.\nIf FALSE, then perplexity can be calculated later with\n<a href=\"resamplePerplexity.html\">resamplePerplexity</a>. Default <code>TRUE</code>.</p></dd>\n\n\n<dt>doResampling</dt>\n<dd><p>Boolean. If <code>TRUE</code>, then each cell in the counts\nmatrix will be resampled according to a multinomial distribution to introduce\nnoise before calculating perplexity. Default <code>FALSE</code>.</p></dd>\n\n\n<dt>numResample</dt>\n<dd><p>Integer. The number of times to resample the counts matrix\nfor evaluating perplexity if <code>doResampling</code> is set to <code>TRUE</code>.\nDefault <code>5</code>.</p></dd>\n\n\n<dt>verbose</dt>\n<dd><p>Logical. Whether to print log messages. Default TRUE.</p></dd>\n\n\n<dt>logfile</dt>\n<dd><p>Character. Messages will be redirected to a file named\n\"logfile\". If NULL, messages will be printed to stdout.  Default NULL.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object. Function\n parameter settings and celda model results are stored in the</p>\n<p></p>\n<p>metadata</p>\n<p></p>\n<p><code>\"celda_grid_search\"</code> slot. The models in\n the list will be of class <a href=\"celda_G.html\">celda_G</a> if <code>zInit = NULL</code> or</p>\n<p></p>\n<p><a href=\"celda_CG.html\">celda_CG</a> if <code>zInit</code> is set.</p>\n    </div>\n    <div id=\"see-also\">\n    <h2>See also</h2>\n    <div class=\"dont-index\"><p><code>recursiveSplitCell</code> for recursive splitting of cell\n populations.</p></div>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"co\">## Create models that range from L=3 to L=20 by recursively splitting modules</span></span></span>\n<span class=\"r-in\"><span><span class=\"co\">## into two</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">moduleSplit</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">recursiveSplitModule</span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span>, initialL <span class=\"op\">=</span> <span class=\"fl\">3</span>, maxL <span class=\"op\">=</span> <span class=\"fl\">20</span><span class=\"op\">)</span></span></span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> ==================================================</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Starting recursive module splitting.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> ==================================================</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:46 2024 .. Collapsing to 100 temporary cell populations</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:47 2024 .. Initializing with 3 modules</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:47 2024 .. Created module 4 | logLik: -1241379.90928455</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:47 2024 .. Created module 5 | logLik: -1235212.7977535</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:47 2024 .. Created module 6 | logLik: -1232789.9817561</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:48 2024 .. Created module 7 | logLik: -1227246.66090571</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:48 2024 .. Created module 8 | logLik: -1223898.757694</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:48 2024 .. Created module 9 | logLik: -1221848.26936098</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:48 2024 .. Created module 10 | logLik: -1220147.96681948</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:48 2024 .. Created module 11 | logLik: -1220818.37022325</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:48 2024 .. Created module 12 | logLik: -1221489.07685946</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:48 2024 .. Created module 13 | logLik: -1222032.53497571</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:48 2024 .. Created module 14 | logLik: -1222712.17543857</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:48 2024 .. Created module 15 | logLik: -1223268.97596756</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:48 2024 .. Created module 16 | logLik: -1223841.4834406</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:49 2024 .. Created module 17 | logLik: -1224394.02513994</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:49 2024 .. Created module 18 | logLik: -1224863.41435811</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:49 2024 .. Created module 19 | logLik: -1225480.30453125</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:49 2024 .. Created module 20 | logLik: -1226156.47078695</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:49 2024 .. Calculating perplexity</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> ==================================================</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Completed recursive module splitting. Total time: 3.40894 secs</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> ==================================================</span>\n<span class=\"r-in\"><span></span></span>\n<span class=\"r-in\"><span><span class=\"co\">## Example results with perplexity</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"plotGridSearchPerplexity.html\">plotGridSearchPerplexity</a></span><span class=\"op\">(</span><span class=\"va\">moduleSplit</span><span class=\"op\">)</span></span></span>\n<span class=\"r-plt img\"><img src=\"recursiveSplitModule-1.png\" alt=\"\" width=\"700\" height=\"433\"></span>\n<span class=\"r-in\"><span></span></span>\n<span class=\"r-in\"><span><span class=\"co\">## Select model for downstream analysis</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">celdaMod</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"subsetCeldaList.html\">subsetCeldaList</a></span><span class=\"op\">(</span><span class=\"va\">moduleSplit</span>, <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>L <span class=\"op\">=</span> <span class=\"fl\">10</span><span class=\"op\">)</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"co\">## Create models that range from L=3 to L=20 by recursively splitting modules</span></span></span>\n<span class=\"r-in\"><span><span class=\"co\">## into two</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">moduleSplit</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">recursiveSplitModule</span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span><span class=\"op\">$</span><span class=\"va\">counts</span>,</span></span>\n<span class=\"r-in\"><span>  initialL <span class=\"op\">=</span> <span class=\"fl\">3</span>, maxL <span class=\"op\">=</span> <span class=\"fl\">20</span><span class=\"op\">)</span></span></span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> ==================================================</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Starting recursive module splitting.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> ==================================================</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:50 2024 .. Collapsing to 100 temporary cell populations</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:51 2024 .. Initializing with 3 modules</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:51 2024 .. Created module 4 | logLik: -1243396.62348886</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:51 2024 .. Created module 5 | logLik: -1237610.11790137</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:51 2024 .. Created module 6 | logLik: -1232128.87013396</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:51 2024 .. Created module 7 | logLik: -1227611.8250329</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:51 2024 .. Created module 8 | logLik: -1225618.06184004</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:52 2024 .. Created module 9 | logLik: -1223967.77531912</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:52 2024 .. Created module 10 | logLik: -1222801.11395987</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:52 2024 .. Created module 11 | logLik: -1223402.66903597</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:52 2024 .. Created module 12 | logLik: -1224026.19892208</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:52 2024 .. Created module 13 | logLik: -1224675.63005464</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:52 2024 .. Created module 14 | logLik: -1225317.91966369</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:52 2024 .. Created module 15 | logLik: -1225971.50555157</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:52 2024 .. Created module 16 | logLik: -1226557.7881506</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:52 2024 .. Created module 17 | logLik: -1227080.13473523</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:53 2024 .. Created module 18 | logLik: -1227603.99622355</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:53 2024 .. Created module 19 | logLik: -1228247.84169741</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:53 2024 .. Created module 20 | logLik: -1228828.70617002</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:56:53 2024 .. Calculating perplexity</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> ==================================================</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Completed recursive module splitting. Total time: 3.238301 secs</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> ==================================================</span>\n<span class=\"r-in\"><span></span></span>\n<span class=\"r-in\"><span><span class=\"co\">## Example results with perplexity</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"plotGridSearchPerplexity.html\">plotGridSearchPerplexity</a></span><span class=\"op\">(</span><span class=\"va\">moduleSplit</span><span class=\"op\">)</span></span></span>\n<span class=\"r-plt img\"><img src=\"recursiveSplitModule-2.png\" alt=\"\" width=\"700\" height=\"433\"></span>\n<span class=\"r-in\"><span></span></span>\n<span class=\"r-in\"><span><span class=\"co\">## Select model for downstream analysis</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">celdaMod</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"subsetCeldaList.html\">subsetCeldaList</a></span><span class=\"op\">(</span><span class=\"va\">moduleSplit</span>, <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>L <span class=\"op\">=</span> <span class=\"fl\">10</span><span class=\"op\">)</span><span class=\"op\">)</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/reorderCelda.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Reorder cells populations and/or features modules using\n hierarchical clustering — reorderCelda • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Reorder cells populations and/or features modules using\n hierarchical clustering — reorderCelda\"><meta property=\"og:description\" content=\"Apply hierarchical clustering to reorder the cell populations\n and/or feature modules and group similar ones together based\n on the cosine distance of the factorized matrix\n from factorizeMatrix.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Reorder cells populations and/or features modules using\n hierarchical clustering</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/reorderCelda.R\" class=\"external-link\"><code>R/reorderCelda.R</code></a></small>\n    <div class=\"hidden name\"><code>reorderCelda.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Apply hierarchical clustering to reorder the cell populations\n and/or feature modules and group similar ones together based\n on the cosine distance of the factorized matrix\n from <a href=\"factorizeMatrix.html\">factorizeMatrix</a>.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">reorderCelda</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  <span class=\"va\">celdaMod</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  method <span class=\"op\">=</span> <span class=\"st\">\"complete\"</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment,ANY</span></span>\n<span><span class=\"fu\">reorderCelda</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  method <span class=\"op\">=</span> <span class=\"st\">\"complete\"</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for matrix,celda_CG</span></span>\n<span><span class=\"fu\">reorderCelda</span><span class=\"op\">(</span><span class=\"va\">x</span>, <span class=\"va\">celdaMod</span>, method <span class=\"op\">=</span> <span class=\"st\">\"complete\"</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for matrix,celda_C</span></span>\n<span><span class=\"fu\">reorderCelda</span><span class=\"op\">(</span><span class=\"va\">x</span>, <span class=\"va\">celdaMod</span>, method <span class=\"op\">=</span> <span class=\"st\">\"complete\"</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for matrix,celda_G</span></span>\n<span><span class=\"fu\">reorderCelda</span><span class=\"op\">(</span><span class=\"va\">x</span>, <span class=\"va\">celdaMod</span>, method <span class=\"op\">=</span> <span class=\"st\">\"complete\"</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>Can be one of</p><ul><li><p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object returned by\n<a href=\"celda_C.html\">celda_C</a>, <a href=\"celda_G.html\">celda_G</a> or <a href=\"celda_CG.html\">celda_CG</a>, with the matrix\nlocated in the <code>useAssay</code> assay slot in <code>altExp(x, altExpName)</code>.\nRows represent features and columns represent cells.</p></li>\n<li><p>Integer count matrix. Rows represent features and columns represent\ncells. This matrix should be the same as the one used to generate\n<code>celdaMod</code>.</p></li>\n</ul></dd>\n\n\n<dt>celdaMod</dt>\n<dd><p>Celda model object. Only works if <code>x</code> is an integer\ncounts matrix. Ignored if <code>x</code> is a\n<a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object.</p></dd>\n\n\n<dt>useAssay</dt>\n<dd><p>A string specifying which <a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">assay</a>\nslot to use if <code>x</code> is a <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object.\nDefault \"counts\".</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a> slot.\nDefault \"featureSubset\".</p></dd>\n\n\n<dt>method</dt>\n<dd><p>Passed to <a href=\"https://rdrr.io/r/stats/hclust.html\" class=\"external-link\">hclust</a>. The agglomeration method\nto be used to be used. Default \"complete\".</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object (or Celda model object)\n with updated cell cluster and/or feature module labels.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">reordersce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">reorderCelda</span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Cluster labels are converted to factors.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Module labels are converted to factors.</span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span>, <span class=\"va\">celdaCGMod</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">reorderCeldaCG</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">reorderCelda</span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span><span class=\"op\">$</span><span class=\"va\">counts</span>, <span class=\"va\">celdaCGMod</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCSim</span>, <span class=\"va\">celdaCMod</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">reorderCeldaC</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">reorderCelda</span><span class=\"op\">(</span><span class=\"va\">celdaCSim</span><span class=\"op\">$</span><span class=\"va\">counts</span>, <span class=\"va\">celdaCMod</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaGSim</span>, <span class=\"va\">celdaGMod</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">reorderCeldaG</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">reorderCelda</span><span class=\"op\">(</span><span class=\"va\">celdaGSim</span><span class=\"op\">$</span><span class=\"va\">counts</span>, <span class=\"va\">celdaGMod</span><span class=\"op\">)</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/reportceldaCG.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Generate an HTML report for celda_CG — reportceldaCG • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Generate an HTML report for celda_CG — reportceldaCG\"><meta property=\"og:description\" content=\"reportCeldaCGRun will run recursiveSplitModule and\n  recursiveSplitCell to find the number of modules (L) and the\n  number of cell populations (K). A final celda_CG model will\n  be selected from recursiveSplitCell. After a celda_CG model\n  has been fit, reportCeldaCGPlotResults can be used to create an HTML\n  report for visualization and exploration of the celda_CG model\n  results. Some of the plotting and feature selection functions require the\n  installation of the Bioconductor package singleCellTK.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Generate an HTML report for celda_CG</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/reports.R\" class=\"external-link\"><code>R/reports.R</code></a></small>\n    <div class=\"hidden name\"><code>reportceldaCG.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p><code>reportCeldaCGRun</code> will run <a href=\"recursiveSplitModule.html\">recursiveSplitModule</a> and\n  <a href=\"recursiveSplitCell.html\">recursiveSplitCell</a> to find the number of modules (<code>L</code>) and the\n  number of cell populations (<code>K</code>). A final <a href=\"celda_CG.html\">celda_CG</a> model will\n  be selected from <a href=\"recursiveSplitCell.html\">recursiveSplitCell</a>. After a <a href=\"celda_CG.html\">celda_CG</a> model\n  has been fit, <code>reportCeldaCGPlotResults</code> can be used to create an HTML\n  report for visualization and exploration of the <a href=\"celda_CG.html\">celda_CG</a> model\n  results. Some of the plotting and feature selection functions require the\n  installation of the Bioconductor package <code>singleCellTK</code>.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">reportCeldaCGRun</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">sce</span>,</span>\n<span>  <span class=\"va\">L</span>,</span>\n<span>  <span class=\"va\">K</span>,</span>\n<span>  sampleLabel <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  initialL <span class=\"op\">=</span> <span class=\"fl\">10</span>,</span>\n<span>  maxL <span class=\"op\">=</span> <span class=\"fl\">150</span>,</span>\n<span>  initialK <span class=\"op\">=</span> <span class=\"fl\">5</span>,</span>\n<span>  maxK <span class=\"op\">=</span> <span class=\"fl\">50</span>,</span>\n<span>  minCell <span class=\"op\">=</span> <span class=\"fl\">3</span>,</span>\n<span>  minCount <span class=\"op\">=</span> <span class=\"fl\">3</span>,</span>\n<span>  maxFeatures <span class=\"op\">=</span> <span class=\"fl\">5000</span>,</span>\n<span>  output_file <span class=\"op\">=</span> <span class=\"st\">\"CeldaCG_RunReport\"</span>,</span>\n<span>  output_sce_prefix <span class=\"op\">=</span> <span class=\"st\">\"celda_cg\"</span>,</span>\n<span>  output_dir <span class=\"op\">=</span> <span class=\"st\">\".\"</span>,</span>\n<span>  pdf <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  showSession <span class=\"op\">=</span> <span class=\"cn\">TRUE</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"fu\">reportCeldaCGPlotResults</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">sce</span>,</span>\n<span>  <span class=\"va\">reducedDimName</span>,</span>\n<span>  features <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  displayName <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  cellAnnot <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  cellAnnotLabel <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  exactMatch <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  moduleFilePrefix <span class=\"op\">=</span> <span class=\"st\">\"module_features\"</span>,</span>\n<span>  output_file <span class=\"op\">=</span> <span class=\"st\">\"CeldaCG_ResultReport\"</span>,</span>\n<span>  output_dir <span class=\"op\">=</span> <span class=\"st\">\".\"</span>,</span>\n<span>  pdf <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  showSetup <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  showSession <span class=\"op\">=</span> <span class=\"cn\">TRUE</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>sce</dt>\n<dd><p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> with the matrix located in\nthe assay slot under <code>useAssay</code>. Rows represent features and columns\nrepresent cells.</p></dd>\n\n\n<dt>L</dt>\n<dd><p>Integer. Final number of feature modules. See <code>celda_CG</code> for\nmore information.</p></dd>\n\n\n<dt>K</dt>\n<dd><p>Integer. Final number of cell populations. See <code>celda_CG</code> for\nmore information.</p></dd>\n\n\n<dt>sampleLabel</dt>\n<dd><p>Vector or factor. Denotes the sample label for each cell\n(column) in the count matrix.</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a> slot to use. Default\n<code>\"featureSubset\"</code>.</p></dd>\n\n\n<dt>useAssay</dt>\n<dd><p>A string specifying which <a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">assay</a> slot to use. Default\n<code>\"counts\"</code>.</p></dd>\n\n\n<dt>initialL</dt>\n<dd><p>Integer. Minimum number of modules to try. See\n<a href=\"recursiveSplitModule.html\">recursiveSplitModule</a> for more information. Defailt <code>10</code>.</p></dd>\n\n\n<dt>maxL</dt>\n<dd><p>Integer. Maximum number of modules to try. See\n<a href=\"recursiveSplitModule.html\">recursiveSplitModule</a> for more information. Default <code>150</code>.</p></dd>\n\n\n<dt>initialK</dt>\n<dd><p>Integer. Initial number of cell populations to try.</p></dd>\n\n\n<dt>maxK</dt>\n<dd><p>Integer. Maximum number of cell populations to try.</p></dd>\n\n\n<dt>minCell</dt>\n<dd><p>Integer. Minimum number of cells required for feature\nselection. See <a href=\"selectFeatures.html\">selectFeatures</a> for more information. Default\n<code>3</code>.</p></dd>\n\n\n<dt>minCount</dt>\n<dd><p>Integer. Minimum number of counts required for feature\nselection. See <a href=\"selectFeatures.html\">selectFeatures</a> for more information. Default\n<code>3</code>.</p></dd>\n\n\n<dt>maxFeatures</dt>\n<dd><p>Integer. Maximum number of features to include. If the\nnumber of features after filtering for <code>minCell</code> and <code>minCount</code>\nare greater than <code>maxFeature</code>, then Seurat's VST function is used to\nselect the top variable features. Default <code>5000</code>.</p></dd>\n\n\n<dt>output_file</dt>\n<dd><p>Character. Prefix of the html file. Default\n<code>\"CeldaCG_ResultReport\"</code>.</p></dd>\n\n\n<dt>output_sce_prefix</dt>\n<dd><p>Character. The <code>sce</code> object with\n<code>celda_CG</code> results will be saved to an <code>.rds</code> file starting with\nthis prefix. Default <code>celda_cg</code>.</p></dd>\n\n\n<dt>output_dir</dt>\n<dd><p>Character. Path to save the html file. Default <code>.</code>.</p></dd>\n\n\n<dt>pdf</dt>\n<dd><p>Boolean. Whether to create PDF versions of each plot in addition\nto PNGs. Default <code>FALSE</code>.</p></dd>\n\n\n<dt>showSession</dt>\n<dd><p>Boolean. Whether to show the session information at the\nend. Default <code>TRUE</code>.</p></dd>\n\n\n<dt>reducedDimName</dt>\n<dd><p>Character. Name of the reduced dimensional object to be\nused in 2-D scatter plots throughout the report. Default <code>celda_UMAP</code>.</p></dd>\n\n\n<dt>features</dt>\n<dd><p>Character vector.  Expression of these features will be\ndisplayed on a reduced dimensional plot defined by <code>reducedDimName</code>.\nIf <code>NULL</code>, then no plotting of features on a reduced dimensinoal plot\nwill be performed. Default <code>NULL</code>.</p></dd>\n\n\n<dt>displayName</dt>\n<dd><p>Character. The name to use for display in scatter plots\nand heatmaps. If <code>NULL</code>, then the rownames of the <code>sce</code> object\nwill be used. This can also be set to the name of a column in the row data\nof <code>sce</code> or <code>altExp(sce, altExpName)</code>. Default <code>NULL</code>.</p></dd>\n\n\n<dt>cellAnnot</dt>\n<dd><p>Character vector. The cell-level annotations to display on\nthe reduced dimensional plot. These variables should be present in the\ncolumn data of the <code>sce</code> object. Default <code>NULL</code>.</p></dd>\n\n\n<dt>cellAnnotLabel</dt>\n<dd><p>Character vector. Additional cell-level annotations\nto display on the reduced dimensional plot. Variables will be treated\nas categorial and labels for each group will be placed on the plot.\nThese variables should be present in the column data of the <code>sce</code>\nobject. Default <code>NULL</code>.</p></dd>\n\n\n<dt>exactMatch</dt>\n<dd><p>Boolean. Whether to only identify exact matches or to\nidentify partial matches using <code><a href=\"https://rdrr.io/r/base/grep.html\" class=\"external-link\">grep</a></code>. Default <code>FALSE</code>.</p></dd>\n\n\n<dt>moduleFilePrefix</dt>\n<dd><p>Character. The features in each module will be\nwritten to a a csv file starting with this name. If <code>NULL</code>, then no\nfile will be written. Default <code>\"module_features\"</code>.</p></dd>\n\n\n<dt>showSetup</dt>\n<dd><p>Boolean. Whether to show the setup code at the beginning.\nDefault <code>TRUE</code>.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>.html file</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"kw\">if</span> <span class=\"op\">(</span><span class=\"cn\">FALSE</span><span class=\"op\">)</span> <span class=\"op\">{</span></span></span>\n<span class=\"r-in\"><span><span class=\"kw\"><a href=\"https://rdrr.io/r/base/library.html\" class=\"external-link\">library</a></span><span class=\"op\">(</span><span class=\"va\">SingleCellExperiment</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sceCeldaCG</span><span class=\"op\">$</span><span class=\"va\">sum</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/colSums.html\" class=\"external-link\">colSums</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/BiocGenerics/man/dge.html\" class=\"external-link\">counts</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">rowData</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span><span class=\"op\">$</span><span class=\"va\">rownames</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/colnames.html\" class=\"external-link\">rownames</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sceCeldaCG</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">reportCeldaCGRun</span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span>,</span></span>\n<span class=\"r-in\"><span>    initialL <span class=\"op\">=</span> <span class=\"fl\">5</span>, maxL <span class=\"op\">=</span> <span class=\"fl\">20</span>, initialK <span class=\"op\">=</span> <span class=\"fl\">5</span>,</span></span>\n<span class=\"r-in\"><span>    maxK <span class=\"op\">=</span> <span class=\"fl\">20</span>, L <span class=\"op\">=</span> <span class=\"fl\">10</span>, K <span class=\"op\">=</span> <span class=\"fl\">5</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">reportCeldaCGPlotResults</span><span class=\"op\">(</span>sce <span class=\"op\">=</span> <span class=\"va\">sceCeldaCG</span>,</span></span>\n<span class=\"r-in\"><span>    reducedDimName <span class=\"op\">=</span> <span class=\"st\">\"celda_UMAP\"</span>,</span></span>\n<span class=\"r-in\"><span>    features <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"Gene_1\"</span>, <span class=\"st\">\"Gene_100\"</span><span class=\"op\">)</span>,</span></span>\n<span class=\"r-in\"><span>    displayName <span class=\"op\">=</span> <span class=\"st\">\"rownames\"</span>,</span></span>\n<span class=\"r-in\"><span>    cellAnnot<span class=\"op\">=</span><span class=\"st\">\"sum\"</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"op\">}</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/resList.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Get final celdaModels from a celda model SCE or celdaList\n object — resList • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Get final celdaModels from a celda model SCE or celdaList\n object — resList\"><meta property=\"og:description\" content=\"Returns all celda models generated during a\n celdaGridSearch run.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Get final celdaModels from a celda model <code>SCE</code> or celdaList\n object</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/accessors.R\" class=\"external-link\"><code>R/accessors.R</code></a></small>\n    <div class=\"hidden name\"><code>resList.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Returns all celda models generated during a\n <a href=\"celdaGridSearch.html\">celdaGridSearch</a> run.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">resList</span><span class=\"op\">(</span><span class=\"va\">x</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">resList</span><span class=\"op\">(</span><span class=\"va\">x</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for celdaList</span></span>\n<span><span class=\"fu\">resList</span><span class=\"op\">(</span><span class=\"va\">x</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>An object of class <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> or\n<code>celdaList</code>.</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a> slot\nto use. Default \"featureSubset\".</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>List. Contains one celdaModel object for each of the parameters\n specified in <code>runParams(x)</code>.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCGGridSearch</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">celdaCGGridModels</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">resList</span><span class=\"op\">(</span><span class=\"va\">sceCeldaCGGridSearch</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGGridSearchRes</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">celdaCGGridModels</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">resList</span><span class=\"op\">(</span><span class=\"va\">celdaCGGridSearchRes</span><span class=\"op\">)</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/resamplePerplexity.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Calculate and visualize perplexity of all models in a celdaList — resamplePerplexity • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Calculate and visualize perplexity of all models in a celdaList — resamplePerplexity\"><meta property=\"og:description\" content=\"Calculates the perplexity of each model's cluster assignments\n given the provided countMatrix, as well as resamplings of that count\n matrix, providing a distribution of perplexities and a better sense of the\n quality of a given K/L choice.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Calculate and visualize perplexity of all models in a celdaList</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/perplexity.R\" class=\"external-link\"><code>R/perplexity.R</code></a></small>\n    <div class=\"hidden name\"><code>resamplePerplexity.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Calculates the perplexity of each model's cluster assignments\n given the provided countMatrix, as well as resamplings of that count\n matrix, providing a distribution of perplexities and a better sense of the\n quality of a given K/L choice.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">resamplePerplexity</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  <span class=\"va\">celdaList</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  doResampling <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  numResample <span class=\"op\">=</span> <span class=\"fl\">5</span>,</span>\n<span>  seed <span class=\"op\">=</span> <span class=\"fl\">12345</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">resamplePerplexity</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  doResampling <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  numResample <span class=\"op\">=</span> <span class=\"fl\">5</span>,</span>\n<span>  seed <span class=\"op\">=</span> <span class=\"fl\">12345</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for ANY</span></span>\n<span><span class=\"fu\">resamplePerplexity</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  <span class=\"va\">celdaList</span>,</span>\n<span>  doResampling <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  numResample <span class=\"op\">=</span> <span class=\"fl\">5</span>,</span>\n<span>  seed <span class=\"op\">=</span> <span class=\"fl\">12345</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>A numeric <a href=\"https://rdrr.io/r/base/matrix.html\" class=\"external-link\">matrix</a> of counts or a\n<a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> returned from <a href=\"celdaGridSearch.html\">celdaGridSearch</a>\nwith the matrix located in the assay slot under <code>useAssay</code>.\nRows represent features and columns represent cells. Must contain\n\"celda_grid_search\" slot in <code>metadata(x)</code> if <code>x</code> is a\n<a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object.</p></dd>\n\n\n<dt>celdaList</dt>\n<dd><p>Object of class 'celdaList'. Used only if <code>x</code> is a\nmatrix object.</p></dd>\n\n\n<dt>useAssay</dt>\n<dd><p>A string specifying which <a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">assay</a>\nslot to use if <code>x</code> is a\n<a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object. Default \"counts\".</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a> slot\nto use. Default \"featureSubset\".</p></dd>\n\n\n<dt>doResampling</dt>\n<dd><p>Boolean. If <code>TRUE</code>, then each cell in the counts\nmatrix will be resampled according to a multinomial distribution to introduce\nnoise before calculating perplexity. Default <code>FALSE</code>.</p></dd>\n\n\n<dt>numResample</dt>\n<dd><p>Integer. The number of times to resample the counts matrix\nfor evaluating perplexity if <code>doResampling</code> is set to <code>TRUE</code>.\nDefault <code>5</code>.</p></dd>\n\n\n<dt>seed</dt>\n<dd><p>Integer. Passed to <a href=\"https://withr.r-lib.org/reference/with_seed.html\" class=\"external-link\">with_seed</a>. For reproducibility,\na default value of <code>12345</code> is used. If <code>NULL</code>, no calls to\n<a href=\"https://withr.r-lib.org/reference/with_seed.html\" class=\"external-link\">with_seed</a> are made.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object or</p>\n<p></p>\n<p><code>celdaList</code> object with a <code>perplexity</code></p>\n\n\n<p>property, detailing the perplexity of all K/L combinations that appeared in\n the celdaList's models.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCGGridSearch</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">resamplePerplexity</span><span class=\"op\">(</span><span class=\"va\">sceCeldaCGGridSearch</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"plotGridSearchPerplexity.html\">plotGridSearchPerplexity</a></span><span class=\"op\">(</span><span class=\"va\">sce</span><span class=\"op\">)</span></span></span>\n<span class=\"r-plt img\"><img src=\"resamplePerplexity-1.png\" alt=\"\" width=\"700\" height=\"433\"></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span>, <span class=\"va\">celdaCGGridSearchRes</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">celdaCGGridSearchRes</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">resamplePerplexity</span><span class=\"op\">(</span></span></span>\n<span class=\"r-in\"><span>  <span class=\"va\">celdaCGSim</span><span class=\"op\">$</span><span class=\"va\">counts</span>,</span></span>\n<span class=\"r-in\"><span>  <span class=\"va\">celdaCGGridSearchRes</span></span></span>\n<span class=\"r-in\"><span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"plotGridSearchPerplexity.html\">plotGridSearchPerplexity</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGGridSearchRes</span><span class=\"op\">)</span></span></span>\n<span class=\"r-plt img\"><img src=\"resamplePerplexity-2.png\" alt=\"\" width=\"700\" height=\"433\"></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/retrieveFeatureIndex.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Retrieve row index for a set of features — retrieveFeatureIndex • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Retrieve row index for a set of features — retrieveFeatureIndex\"><meta property=\"og:description\" content=\"This will return indices of features among the rownames\nor rowData of a data.frame, matrix, or a SummarizedExperiment\nobject including a SingleCellExperiment.\nPartial matching (i.e. grepping) can be used by setting\nexactMatch = FALSE.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Retrieve row index for a set of features</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/celda_functions.R\" class=\"external-link\"><code>R/celda_functions.R</code></a></small>\n    <div class=\"hidden name\"><code>retrieveFeatureIndex.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>This will return indices of features among the rownames\nor rowData of a data.frame, matrix, or a <a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">SummarizedExperiment</a>\nobject including a <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a>.\nPartial matching (i.e. grepping) can be used by setting\n<code>exactMatch = FALSE</code>.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">retrieveFeatureIndex</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">features</span>,</span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  by <span class=\"op\">=</span> <span class=\"st\">\"rownames\"</span>,</span>\n<span>  exactMatch <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  removeNA <span class=\"op\">=</span> <span class=\"cn\">FALSE</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>features</dt>\n<dd><p>Character vector of feature names to find in the rows of\n<code>x</code>.</p></dd>\n\n\n<dt>x</dt>\n<dd><p>A data.frame, matrix, or <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a>\nobject to search.</p></dd>\n\n\n<dt>by</dt>\n<dd><p>Character. Where to search for features in <code>x</code>. If set to\n<code>\"rownames\"</code> then the features will be searched for among\n<code>rownames(x)</code>. If <code>x</code> inherits from class\n<a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">SummarizedExperiment</a>, then <code>by</code> can be one of the\nfields in the row annotation data.frame (i.e. one of\n<code>colnames(rowData(x))</code>).</p></dd>\n\n\n<dt>exactMatch</dt>\n<dd><p>Boolean. Whether to only identify exact matches\nor to identify partial matches using <code><a href=\"https://rdrr.io/r/base/grep.html\" class=\"external-link\">grep</a></code>.</p></dd>\n\n\n<dt>removeNA</dt>\n<dd><p>Boolean. If set to <code>FALSE</code>, features not found in\n<code>x</code> will be given <code>NA</code> and the returned vector will be the same\nlength as <code>features</code>. If set to <code>TRUE</code>, then the <code>NA</code>\nvalues will be removed from the returned vector. Default <code>FALSE</code>.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>A vector of row indices for the matching features in <code>x</code>.</p>\n    </div>\n    <div id=\"see-also\">\n    <h2>See also</h2>\n    <div class=\"dont-index\"><p>'<a href=\"https://rdrr.io/pkg/scater/man/retrieveFeatureInfo.html\" class=\"external-link\">retrieveFeatureInfo</a>' from package <code>'scater'</code>\nand <code>link{regex}</code> for how to use regular expressions when\n<code>exactMatch = FALSE</code>.</p></div>\n    </div>\n    <div id=\"author\">\n    <h2>Author</h2>\n    <p>Yusuke Koga, Joshua Campbell</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">retrieveFeatureIndex</span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"Gene_1\"</span>, <span class=\"st\">\"Gene_5\"</span><span class=\"op\">)</span>, <span class=\"va\">celdaCGSim</span><span class=\"op\">$</span><span class=\"va\">counts</span><span class=\"op\">)</span></span></span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [1] 1 5</span>\n<span class=\"r-in\"><span><span class=\"fu\">retrieveFeatureIndex</span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"Gene_1\"</span>, <span class=\"st\">\"Gene_5\"</span><span class=\"op\">)</span>, <span class=\"va\">celdaCGSim</span><span class=\"op\">$</span><span class=\"va\">counts</span>,</span></span>\n<span class=\"r-in\"><span>                                            exactMatch <span class=\"op\">=</span> <span class=\"cn\">FALSE</span><span class=\"op\">)</span></span></span>\n<span class=\"r-wrn co\"><span class=\"r-pr\">#&gt;</span> <span class=\"warning\">Warning: </span>Feature 'Gene_1' matched multiple items in 'rownames': Gene_1,Gene_10,Gene_11,Gene_12,Gene_13,Gene_14,Gene_15,Gene_16,Gene_17,Gene_18,Gene_19,Gene_100. Only the first match will be selected.</span>\n<span class=\"r-wrn co\"><span class=\"r-pr\">#&gt;</span> <span class=\"warning\">Warning: </span>Feature 'Gene_5' matched multiple items in 'rownames': Gene_5,Gene_50,Gene_51,Gene_52,Gene_53,Gene_54,Gene_55,Gene_56,Gene_57,Gene_58,Gene_59. Only the first match will be selected.</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [1] 1 5</span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/runParams.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Get run parameters from a celda model\n SingleCellExperiment or celdaList object — runParams • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Get run parameters from a celda model\n SingleCellExperiment or celdaList object — runParams\"><meta property=\"og:description\" content=\"Returns details on the clustering parameters and model\n priors from the celdaList object when it was created.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Get run parameters from a celda model\n <code>SingleCellExperiment</code> or <code>celdaList</code> object</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/accessors.R\" class=\"external-link\"><code>R/accessors.R</code></a></small>\n    <div class=\"hidden name\"><code>runParams.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Returns details on the clustering parameters and model\n priors from the celdaList object when it was created.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">runParams</span><span class=\"op\">(</span><span class=\"va\">x</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">runParams</span><span class=\"op\">(</span><span class=\"va\">x</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for celdaList</span></span>\n<span><span class=\"fu\">runParams</span><span class=\"op\">(</span><span class=\"va\">x</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>An object of class <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> or class\n<code>celdaList</code>.</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a> slot\nto use. Default \"featureSubset\".</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>Data Frame. Contains details on the various K/L parameters, chain\n parameters, seed, and final log-likelihoods derived for each model in the\n provided celdaList.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCGGridSearch</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">runParams</span><span class=\"op\">(</span><span class=\"va\">sceCeldaCGGridSearch</span><span class=\"op\">)</span></span></span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>   index chain K  L  seed logLikelihood mean_perplexity</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 1     1     1 4  9 12345      -1226407        46.95862</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 2     2     1 5  9 12345      -1214714        45.25311</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 3     3     1 6  9 12345      -1214754        45.25124</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 4     4     1 4 10 12345      -1225233        46.77100</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 5     5     1 5 10 12345      -1212891        44.98559</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 6     6     1 6 10 12345      -1212928        44.98491</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 7     7     1 4 11 12345      -1225255        46.77053</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 8     8     1 5 11 12345      -1212917        44.98514</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 9     9     1 6 11 12345      -1212953        44.98495</span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGGridSearchRes</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">runParams</span><span class=\"op\">(</span><span class=\"va\">celdaCGGridSearchRes</span><span class=\"op\">)</span></span></span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>   index chain K  L logLikelihood mean_perplexity</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 1     1     1 4  9      -1228381        47.12902</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 2     2     1 5  9      -1217364        45.51741</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 3     3     1 6  9      -1217407        45.51451</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 4     4     1 4 10      -1227891        47.04897</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 5     5     1 5 10      -1215541        45.24781</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 6     6     1 6 10      -1215583        45.24439</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 7     7     1 4 11      -1227913        47.04849</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 8     8     1 5 11      -1215567        45.24733</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> 9     9     1 6 11      -1215619        45.24380</span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/sampleCells.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>sampleCells — sampleCells • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"sampleCells — sampleCells\"><meta property=\"og:description\" content=\"A matrix of simulated gene counts.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>sampleCells</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/data.R\" class=\"external-link\"><code>R/data.R</code></a></small>\n    <div class=\"hidden name\"><code>sampleCells.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>A matrix of simulated gene counts.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"va\">sampleCells</span></span></code></pre></div>\n    </div>\n\n    <div id=\"format\">\n    <h2>Format</h2>\n    <p>A matrix of simulated gene counts with 10 rows (genes) and 10\n columns (cells).</p>\n    </div>\n    <div id=\"source\">\n    <h2>Source</h2>\n    <p><a href=\"http://github.com/campbio/celda\" class=\"external-link\">http://github.com/campbio/celda</a></p>\n    </div>\n    <div id=\"details\">\n    <h2>Details</h2>\n    <p>A toy count matrix for use with celda.</p>\n<p>Generated by Josh Campbell.</p>\n    </div>\n\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/sampleLabel.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Get or set sample labels from a celda\n SingleCellExperiment  object — sampleLabel • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Get or set sample labels from a celda\n SingleCellExperiment  object — sampleLabel\"><meta property=\"og:description\" content=\"Return or set the sample labels for the cells in sce.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Get or set sample labels from a celda\n <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a>  object</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/accessors.R\" class=\"external-link\"><code>R/accessors.R</code></a></small>\n    <div class=\"hidden name\"><code>sampleLabel.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Return or set the sample labels for the cells in <code>sce</code>.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">sampleLabel</span><span class=\"op\">(</span><span class=\"va\">x</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">sampleLabel</span><span class=\"op\">(</span><span class=\"va\">x</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"fu\">sampleLabel</span><span class=\"op\">(</span><span class=\"va\">x</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span><span class=\"op\">)</span> <span class=\"op\">&lt;-</span> <span class=\"va\">value</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">sampleLabel</span><span class=\"op\">(</span><span class=\"va\">x</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span><span class=\"op\">)</span> <span class=\"op\">&lt;-</span> <span class=\"va\">value</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for celdaModel</span></span>\n<span><span class=\"fu\">sampleLabel</span><span class=\"op\">(</span><span class=\"va\">x</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>Can be one of</p><ul><li><p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object returned by\n<a href=\"celda_C.html\">celda_C</a>, <a href=\"celda_G.html\">celda_G</a>, or <a href=\"celda_CG.html\">celda_CG</a>, with the matrix\nlocated in the <code>useAssay</code> assay slot.\nRows represent features and columns represent cells.</p></li>\n<li><p>A celda model object.</p></li>\n</ul></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a> slot\nto use. Default \"featureSubset\".</p></dd>\n\n\n<dt>value</dt>\n<dd><p>Character vector of sample labels for replacements. Works\nonly is <code>x</code> is a <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>Character vector. Contains the sample labels provided at model\n creation, or those automatically generated by celda.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">sampleLabel</span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>   [1] Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>   [9] Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [17] Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [25] Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [33] Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [41] Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [49] Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [57] Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [65] Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [73] Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [81] Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [89] Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_2 Sample_2 Sample_2</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [97] Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [105] Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [113] Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [121] Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [129] Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [137] Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [145] Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [153] Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [161] Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [169] Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [177] Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [185] Sample_2 Sample_2 Sample_2 Sample_2 Sample_3 Sample_3 Sample_3 Sample_3</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [193] Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [201] Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [209] Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [217] Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [225] Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [233] Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [241] Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [249] Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [257] Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [265] Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [273] Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [281] Sample_3 Sample_3 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [289] Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [297] Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [305] Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [313] Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [321] Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [329] Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [337] Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [345] Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_5 Sample_5 Sample_5</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [353] Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [361] Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [369] Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [377] Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [385] Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [393] Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [401] Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [409] Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [417] Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [425] Sample_5</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> Levels: Sample_1 Sample_2 Sample_3 Sample_4 Sample_5</span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGMod</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\">sampleLabel</span><span class=\"op\">(</span><span class=\"va\">celdaCGMod</span><span class=\"op\">)</span></span></span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>   [1] Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>   [9] Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [17] Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [25] Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [33] Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [41] Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [49] Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [57] Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [65] Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [73] Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [81] Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_1</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [89] Sample_1 Sample_1 Sample_1 Sample_1 Sample_1 Sample_2 Sample_2 Sample_2</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span>  [97] Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [105] Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [113] Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [121] Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [129] Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [137] Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [145] Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [153] Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [161] Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [169] Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [177] Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2 Sample_2</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [185] Sample_2 Sample_2 Sample_2 Sample_2 Sample_3 Sample_3 Sample_3 Sample_3</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [193] Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [201] Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [209] Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [217] Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [225] Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [233] Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [241] Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [249] Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [257] Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [265] Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [273] Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3 Sample_3</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [281] Sample_3 Sample_3 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [289] Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [297] Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [305] Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [313] Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [321] Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [329] Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [337] Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_4</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [345] Sample_4 Sample_4 Sample_4 Sample_4 Sample_4 Sample_5 Sample_5 Sample_5</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [353] Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [361] Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [369] Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [377] Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [385] Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [393] Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [401] Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [409] Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [417] Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5 Sample_5</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> [425] Sample_5</span>\n<span class=\"r-out co\"><span class=\"r-pr\">#&gt;</span> Levels: Sample_1 Sample_2 Sample_3 Sample_4 Sample_5</span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/sceCeldaC.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>sceCeldaC — sceCeldaC • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"sceCeldaC — sceCeldaC\"><meta property=\"og:description\" content=\"A SingleCellExperiment object containing the\n results of running selectFeatures and celda_C on\n celdaCSim.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>sceCeldaC</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/data.R\" class=\"external-link\"><code>R/data.R</code></a></small>\n    <div class=\"hidden name\"><code>sceCeldaC.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object containing the\n results of running <a href=\"selectFeatures.html\">selectFeatures</a> and <a href=\"celda_C.html\">celda_C</a> on\n <a href=\"celdaCSim.html\">celdaCSim</a>.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"va\">sceCeldaC</span></span></code></pre></div>\n    </div>\n\n    <div id=\"format\">\n    <h2>Format</h2>\n    <p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCSim</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sceCeldaC</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"selectFeatures.html\">selectFeatures</a></span><span class=\"op\">(</span><span class=\"va\">celdaCSim</span><span class=\"op\">$</span><span class=\"va\">counts</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sceCeldaC</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"celda_C.html\">celda_C</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaC</span>,</span></span>\n<span class=\"r-in\"><span>    K <span class=\"op\">=</span> <span class=\"va\">celdaCSim</span><span class=\"op\">$</span><span class=\"va\">K</span>,</span></span>\n<span class=\"r-in\"><span>    sampleLabel <span class=\"op\">=</span> <span class=\"va\">celdaCSim</span><span class=\"op\">$</span><span class=\"va\">sampleLabel</span>,</span></span>\n<span class=\"r-in\"><span>    nchains <span class=\"op\">=</span> <span class=\"fl\">1</span><span class=\"op\">)</span></span></span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> --------------------------------------------------</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Starting Celda_C: Clustering cells.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> --------------------------------------------------</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:00 2024 .. Initializing 'z' in chain 1 with 'split' </span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:00 2024 .... Completed iteration: 1 | logLik: -1282027.27277705</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:00 2024 .... Completed iteration: 2 | logLik: -1282027.27277705</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:00 2024 .. Finished chain 1</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> --------------------------------------------------</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Completed Celda_C. Total time: 0.08842993 secs</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> --------------------------------------------------</span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/sceCeldaCG.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>sceCeldaCG — sceCeldaCG • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"sceCeldaCG — sceCeldaCG\"><meta property=\"og:description\" content=\"A SingleCellExperiment object containing the\n results of running selectFeatures and celda_CG on\n celdaCGSim.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>sceCeldaCG</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/data.R\" class=\"external-link\"><code>R/data.R</code></a></small>\n    <div class=\"hidden name\"><code>sceCeldaCG.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object containing the\n results of running <a href=\"selectFeatures.html\">selectFeatures</a> and <a href=\"celda_CG.html\">celda_CG</a> on\n <a href=\"celdaCGSim.html\">celdaCGSim</a>.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"va\">sceCeldaCG</span></span></code></pre></div>\n    </div>\n\n    <div id=\"format\">\n    <h2>Format</h2>\n    <p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sceCeldaCG</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"selectFeatures.html\">selectFeatures</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span><span class=\"op\">$</span><span class=\"va\">counts</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sceCeldaCG</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"celda_CG.html\">celda_CG</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span>,</span></span>\n<span class=\"r-in\"><span>    K <span class=\"op\">=</span> <span class=\"va\">celdaCGSim</span><span class=\"op\">$</span><span class=\"va\">K</span>,</span></span>\n<span class=\"r-in\"><span>    L <span class=\"op\">=</span> <span class=\"va\">celdaCGSim</span><span class=\"op\">$</span><span class=\"va\">L</span>,</span></span>\n<span class=\"r-in\"><span>    sampleLabel <span class=\"op\">=</span> <span class=\"va\">celdaCGSim</span><span class=\"op\">$</span><span class=\"va\">sampleLabel</span>,</span></span>\n<span class=\"r-in\"><span>    nchains <span class=\"op\">=</span> <span class=\"fl\">1</span><span class=\"op\">)</span></span></span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> --------------------------------------------------</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Starting Celda_CG: Clustering cells and genes.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> --------------------------------------------------</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:01 2024 .. Initializing 'z' in chain 1 with 'split' </span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:01 2024 .. Initializing 'y' in chain 1 with 'split' </span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:04 2024 .... Completed iteration: 1 | logLik: -1212891.16546068</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:04 2024 .... Completed iteration: 2 | logLik: -1212891.16546068</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:04 2024 .... Completed iteration: 3 | logLik: -1212891.16546068</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:04 2024 .... Completed iteration: 4 | logLik: -1212891.16546068</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:04 2024 .... Completed iteration: 5 | logLik: -1212891.16546068</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:04 2024 .... Completed iteration: 6 | logLik: -1212891.16546068</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:04 2024 .... Completed iteration: 7 | logLik: -1212891.16546068</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:04 2024 .... Completed iteration: 8 | logLik: -1212891.16546068</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:04 2024 .... Completed iteration: 9 | logLik: -1212891.16546068</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:04 2024 .... Determining if any gene clusters should be split.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:04 2024 .... No additional splitting was performed.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:04 2024 .... Determining if any cell clusters should be split.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:04 2024 .... No additional splitting was performed.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:04 2024 .... Completed iteration: 10 | logLik: -1212891.16546068</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:04 2024 .... Determining if any cell clusters should be split.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:04 2024 .... No additional splitting was performed.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:04 2024 .... Completed iteration: 11 | logLik: -1212891.16546068</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:04 2024 .. Finished chain 1</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> --------------------------------------------------</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Completed Celda_CG. Total time: 3.333782 secs</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> --------------------------------------------------</span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/sceCeldaCGGridSearch.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>sceCeldaCGGridSearch — sceCeldaCGGridSearch • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"sceCeldaCGGridSearch — sceCeldaCGGridSearch\"><meta property=\"og:description\" content=\"A SingleCellExperiment object containing the\n results of running selectFeatures and celdaGridSearch on\n celdaCGSim.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>sceCeldaCGGridSearch</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/data.R\" class=\"external-link\"><code>R/data.R</code></a></small>\n    <div class=\"hidden name\"><code>sceCeldaCGGridSearch.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object containing the\n results of running <a href=\"selectFeatures.html\">selectFeatures</a> and <a href=\"celdaGridSearch.html\">celdaGridSearch</a> on\n <a href=\"celdaCGSim.html\">celdaCGSim</a>.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"va\">sceCeldaCGGridSearch</span></span></code></pre></div>\n    </div>\n\n    <div id=\"format\">\n    <h2>Format</h2>\n    <p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"selectFeatures.html\">selectFeatures</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span><span class=\"op\">$</span><span class=\"va\">counts</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sceCeldaCGGridSearch</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"celdaGridSearch.html\">celdaGridSearch</a></span><span class=\"op\">(</span><span class=\"va\">sce</span>,</span></span>\n<span class=\"r-in\"><span>    model <span class=\"op\">=</span> <span class=\"st\">\"celda_CG\"</span>,</span></span>\n<span class=\"r-in\"><span>    paramsTest <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>K <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/seq.html\" class=\"external-link\">seq</a></span><span class=\"op\">(</span><span class=\"fl\">4</span>, <span class=\"fl\">6</span><span class=\"op\">)</span>, L <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/seq.html\" class=\"external-link\">seq</a></span><span class=\"op\">(</span><span class=\"fl\">9</span>, <span class=\"fl\">11</span><span class=\"op\">)</span><span class=\"op\">)</span>,</span></span>\n<span class=\"r-in\"><span>    paramsFixed <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>sampleLabel <span class=\"op\">=</span> <span class=\"va\">celdaCGSim</span><span class=\"op\">$</span><span class=\"va\">sampleLabel</span><span class=\"op\">)</span>,</span></span>\n<span class=\"r-in\"><span>    bestOnly <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span></span>\n<span class=\"r-in\"><span>    nchains <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span></span>\n<span class=\"r-in\"><span>    cores <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span></span>\n<span class=\"r-in\"><span>    verbose <span class=\"op\">=</span> <span class=\"cn\">FALSE</span><span class=\"op\">)</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/sceCeldaG.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>sceCeldaG — sceCeldaG • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"sceCeldaG — sceCeldaG\"><meta property=\"og:description\" content=\"A SingleCellExperiment object containing the\n results of running selectFeatures and celda_G on\n celdaGSim.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>sceCeldaG</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/data.R\" class=\"external-link\"><code>R/data.R</code></a></small>\n    <div class=\"hidden name\"><code>sceCeldaG.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object containing the\n results of running <a href=\"selectFeatures.html\">selectFeatures</a> and <a href=\"celda_G.html\">celda_G</a> on\n <a href=\"celdaGSim.html\">celdaGSim</a>.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"va\">sceCeldaG</span></span></code></pre></div>\n    </div>\n\n    <div id=\"format\">\n    <h2>Format</h2>\n    <p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaGSim</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sceCeldaG</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"selectFeatures.html\">selectFeatures</a></span><span class=\"op\">(</span><span class=\"va\">celdaGSim</span><span class=\"op\">$</span><span class=\"va\">counts</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sceCeldaG</span> <span class=\"op\">&lt;-</span> <span class=\"fu\"><a href=\"celda_G.html\">celda_G</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaG</span>, L <span class=\"op\">=</span> <span class=\"va\">celdaGSim</span><span class=\"op\">$</span><span class=\"va\">L</span>, nchains <span class=\"op\">=</span> <span class=\"fl\">1</span><span class=\"op\">)</span></span></span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> --------------------------------------------------</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Starting Celda_G: Clustering genes.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> --------------------------------------------------</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:47 2024 .. Initializing 'y' in chain 1 with 'split' </span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:47 2024 .... Completed iteration: 1 | logLik: -289209.476865707</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:47 2024 .... Completed iteration: 2 | logLik: -289209.476865707</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:47 2024 .... Completed iteration: 3 | logLik: -289209.476865707</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:47 2024 .... Completed iteration: 4 | logLik: -289209.476865707</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:47 2024 .... Completed iteration: 5 | logLik: -289209.476865707</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:47 2024 .... Completed iteration: 6 | logLik: -289209.476865707</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:47 2024 .... Completed iteration: 7 | logLik: -289209.476865707</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:47 2024 .... Completed iteration: 8 | logLik: -289209.476865707</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:47 2024 .... Completed iteration: 9 | logLik: -289209.476865707</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:47 2024 .... Determining if any gene clusters should be split.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:47 2024 .... No additional splitting was performed.</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:47 2024 .... Completed iteration: 10 | logLik: -289209.476865707</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:47 2024 .... Completed iteration: 11 | logLik: -289209.476865707</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Tue Apr  2 18:57:47 2024 .. Finished chain 1</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> --------------------------------------------------</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> Completed Celda_G. Total time: 0.4345939 secs</span>\n<span class=\"r-msg co\"><span class=\"r-pr\">#&gt;</span> --------------------------------------------------</span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/selectBestModel.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Select best chain within each combination of parameters — selectBestModel • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Select best chain within each combination of parameters — selectBestModel\"><meta property=\"og:description\" content=\"Select the chain with the best log likelihood for each\n combination of tested parameters from a SCE object gererated by\n celdaGridSearch or from a celdaList object.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Select best chain within each combination of parameters</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/celdaGridSearch.R\" class=\"external-link\"><code>R/celdaGridSearch.R</code></a></small>\n    <div class=\"hidden name\"><code>selectBestModel.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Select the chain with the best log likelihood for each\n combination of tested parameters from a <code>SCE</code> object gererated by\n <a href=\"celdaGridSearch.html\">celdaGridSearch</a> or from a <code>celdaList</code> object.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">selectBestModel</span><span class=\"op\">(</span><span class=\"va\">x</span>, asList <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">selectBestModel</span><span class=\"op\">(</span><span class=\"va\">x</span>, asList <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for celdaList</span></span>\n<span><span class=\"fu\">selectBestModel</span><span class=\"op\">(</span><span class=\"va\">x</span>, asList <span class=\"op\">=</span> <span class=\"cn\">FALSE</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>Can be one of</p><ul><li><p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object returned from\n <code>celdaGridSearch</code>, <code>recursiveSplitModule</code>,\n or <code>recursiveSplitCell</code>. Must contain a list named\n <code>\"celda_grid_search\"</code> in <code>metadata(x)</code>.</p></li>\n<li><p>celdaList object.</p></li>\n</ul></dd>\n\n\n<dt>asList</dt>\n<dd><p><code>TRUE</code> or <code>FALSE</code>. Whether to return the\nbest model as a\n<code>celdaList</code> object or not. If <code>FALSE</code>, return the best model as a\ncorresponding celda model object.</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a> slot\nto use. Default \"featureSubset\".</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>One of</p><ul><li><p>A new <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object containing\n one model with the best log-likelihood for each set of parameters in\n <code>metadata(x)</code>. If there is only one set of parameters,\n a new <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object\n with the matching model stored in the\n metadata\n <code>\"celda_parameters\"</code> slot will be returned. Otherwise, a new\n <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object with the subset models stored\n in the metadata\n <code>\"celda_grid_search\"</code> slot will be returned.</p></li>\n<li><p>A new <code>celdaList</code> object containing one model with the best\n log-likelihood for each set of parameters. If only one set of parameters\n is in the <code>celdaList</code>, the best model will be returned directly\n instead of a <code>celdaList</code> object.</p></li>\n</ul></div>\n    <div id=\"see-also\">\n    <h2>See also</h2>\n    <div class=\"dont-index\"><p><a href=\"celdaGridSearch.html\">celdaGridSearch</a> <a href=\"subsetCeldaList.html\">subsetCeldaList</a></p></div>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCGGridSearch</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"co\">## Returns same result as running celdaGridSearch with \"bestOnly = TRUE\"</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">selectBestModel</span><span class=\"op\">(</span><span class=\"va\">sceCeldaCGGridSearch</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGGridSearchRes</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"co\">## Returns same result as running celdaGridSearch with \"bestOnly = TRUE\"</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">cgsBest</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">selectBestModel</span><span class=\"op\">(</span><span class=\"va\">celdaCGGridSearchRes</span><span class=\"op\">)</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/selectFeatures.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Simple feature selection by feature counts — selectFeatures • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Simple feature selection by feature counts — selectFeatures\"><meta property=\"og:description\" content=\"A simple heuristic feature selection procedure.\n Select features with at least minCount counts\n in at least minCell cells. A SingleCellExperiment\n object with subset features will be stored in the\n altExp slot with name altExpName.\n The name of the assay slot in altExp\n will be the same as useAssay.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Simple feature selection by feature counts</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/selectFeatures.R\" class=\"external-link\"><code>R/selectFeatures.R</code></a></small>\n    <div class=\"hidden name\"><code>selectFeatures.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>A simple heuristic feature selection procedure.\n Select features with at least <code>minCount</code> counts\n in at least <code>minCell</code> cells. A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a>\n object with subset features will be stored in the\n <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a> slot with name <code>altExpName</code>.\n The name of the <code>assay</code> slot in <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a>\n will be the same as <code>useAssay</code>.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">selectFeatures</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  minCount <span class=\"op\">=</span> <span class=\"fl\">3</span>,</span>\n<span>  minCell <span class=\"op\">=</span> <span class=\"fl\">3</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">selectFeatures</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  minCount <span class=\"op\">=</span> <span class=\"fl\">3</span>,</span>\n<span>  minCell <span class=\"op\">=</span> <span class=\"fl\">3</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for matrix</span></span>\n<span><span class=\"fu\">selectFeatures</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  minCount <span class=\"op\">=</span> <span class=\"fl\">3</span>,</span>\n<span>  minCell <span class=\"op\">=</span> <span class=\"fl\">3</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>A numeric <a href=\"https://rdrr.io/r/base/matrix.html\" class=\"external-link\">matrix</a> of counts or a\n<a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a>\nwith the matrix located in the assay slot under <code>useAssay</code>.\nRows represent features and columns represent cells.</p></dd>\n\n\n<dt>minCount</dt>\n<dd><p>Minimum number of counts required for feature selection.</p></dd>\n\n\n<dt>minCell</dt>\n<dd><p>Minimum number of cells required for feature selection.</p></dd>\n\n\n<dt>useAssay</dt>\n<dd><p>A string specifying the name of the\n<a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">assay</a> slot to use. Default \"counts\".</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a> slot\nto use. Default \"featureSubset\".</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object with a</p>\n<p></p>\n<p><code>altExpName</code></p>\n<p></p>\n<p><a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a> slot. Function\n parameter settings are stored in the metadata</p>\n<p></p>\n<p><code>\"select_features\"</code> slot.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">selectFeatures</span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">selectFeatures</span><span class=\"op\">(</span><span class=\"va\">celdaCGSim</span><span class=\"op\">$</span><span class=\"va\">counts</span><span class=\"op\">)</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/semiPheatmap.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>A function to draw clustered heatmaps. — semiPheatmap • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"A function to draw clustered heatmaps. — semiPheatmap\"><meta property=\"og:description\" content=\"A function to draw clustered heatmaps where one has better\n control over some graphical parameters such as cell size, etc.\nThe function also allows to aggregate the rows using kmeans clustering.\n This is advisable if number of rows is so big that R cannot handle their\n hierarchical clustering anymore, roughly more than 1000. Instead of showing\n all the rows separately one can cluster the rows in advance and show only\n the cluster centers. The number of clusters can be tuned with parameter\n kmeansK.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>A function to draw clustered heatmaps.</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/semi_pheatmap.R\" class=\"external-link\"><code>R/semi_pheatmap.R</code></a></small>\n    <div class=\"hidden name\"><code>semiPheatmap.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>A function to draw clustered heatmaps where one has better\n control over some graphical parameters such as cell size, etc.</p>\n<p>The function also allows to aggregate the rows using kmeans clustering.\n This is advisable if number of rows is so big that R cannot handle their\n hierarchical clustering anymore, roughly more than 1000. Instead of showing\n all the rows separately one can cluster the rows in advance and show only\n the cluster centers. The number of clusters can be tuned with parameter\n kmeansK.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">semiPheatmap</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">mat</span>,</span>\n<span>  color <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/grDevices/colorRamp.html\" class=\"external-link\">colorRampPalette</a></span><span class=\"op\">(</span><span class=\"fu\"><a href=\"https://rdrr.io/r/base/rev.html\" class=\"external-link\">rev</a></span><span class=\"op\">(</span><span class=\"fu\">brewer.pal</span><span class=\"op\">(</span>n <span class=\"op\">=</span> <span class=\"fl\">7</span>, name <span class=\"op\">=</span> <span class=\"st\">\"RdYlBu\"</span><span class=\"op\">)</span><span class=\"op\">)</span><span class=\"op\">)</span><span class=\"op\">(</span><span class=\"fl\">100</span><span class=\"op\">)</span>,</span>\n<span>  kmeansK <span class=\"op\">=</span> <span class=\"cn\">NA</span>,</span>\n<span>  breaks <span class=\"op\">=</span> <span class=\"cn\">NA</span>,</span>\n<span>  borderColor <span class=\"op\">=</span> <span class=\"st\">\"grey60\"</span>,</span>\n<span>  cellWidth <span class=\"op\">=</span> <span class=\"cn\">NA</span>,</span>\n<span>  cellHeight <span class=\"op\">=</span> <span class=\"cn\">NA</span>,</span>\n<span>  scale <span class=\"op\">=</span> <span class=\"st\">\"none\"</span>,</span>\n<span>  clusterRows <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  clusterCols <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  clusteringDistanceRows <span class=\"op\">=</span> <span class=\"st\">\"euclidean\"</span>,</span>\n<span>  clusteringDistanceCols <span class=\"op\">=</span> <span class=\"st\">\"euclidean\"</span>,</span>\n<span>  clusteringMethod <span class=\"op\">=</span> <span class=\"st\">\"complete\"</span>,</span>\n<span>  clusteringCallback <span class=\"op\">=</span> <span class=\"va\">.identity2</span>,</span>\n<span>  cutreeRows <span class=\"op\">=</span> <span class=\"cn\">NA</span>,</span>\n<span>  cutreeCols <span class=\"op\">=</span> <span class=\"cn\">NA</span>,</span>\n<span>  treeHeightRow <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/ifelse.html\" class=\"external-link\">ifelse</a></span><span class=\"op\">(</span><span class=\"va\">clusterRows</span>, <span class=\"fl\">50</span>, <span class=\"fl\">0</span><span class=\"op\">)</span>,</span>\n<span>  treeHeightCol <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/ifelse.html\" class=\"external-link\">ifelse</a></span><span class=\"op\">(</span><span class=\"va\">clusterCols</span>, <span class=\"fl\">50</span>, <span class=\"fl\">0</span><span class=\"op\">)</span>,</span>\n<span>  legend <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  legendBreaks <span class=\"op\">=</span> <span class=\"cn\">NA</span>,</span>\n<span>  legendLabels <span class=\"op\">=</span> <span class=\"cn\">NA</span>,</span>\n<span>  annotationRow <span class=\"op\">=</span> <span class=\"cn\">NA</span>,</span>\n<span>  annotationCol <span class=\"op\">=</span> <span class=\"cn\">NA</span>,</span>\n<span>  annotation <span class=\"op\">=</span> <span class=\"cn\">NA</span>,</span>\n<span>  annotationColors <span class=\"op\">=</span> <span class=\"cn\">NA</span>,</span>\n<span>  annotationLegend <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  annotationNamesRow <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  annotationNamesCol <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  dropLevels <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  showRownames <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  showColnames <span class=\"op\">=</span> <span class=\"cn\">TRUE</span>,</span>\n<span>  main <span class=\"op\">=</span> <span class=\"cn\">NA</span>,</span>\n<span>  fontSize <span class=\"op\">=</span> <span class=\"fl\">10</span>,</span>\n<span>  fontSizeRow <span class=\"op\">=</span> <span class=\"va\">fontSize</span>,</span>\n<span>  fontSizeCol <span class=\"op\">=</span> <span class=\"va\">fontSize</span>,</span>\n<span>  displayNumbers <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  numberFormat <span class=\"op\">=</span> <span class=\"st\">\"%.2f\"</span>,</span>\n<span>  numberColor <span class=\"op\">=</span> <span class=\"st\">\"grey30\"</span>,</span>\n<span>  fontSizeNumber <span class=\"op\">=</span> <span class=\"fl\">0.8</span> <span class=\"op\">*</span> <span class=\"va\">fontSize</span>,</span>\n<span>  gapsRow <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  gapsCol <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  labelsRow <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  labelsCol <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  fileName <span class=\"op\">=</span> <span class=\"cn\">NA</span>,</span>\n<span>  width <span class=\"op\">=</span> <span class=\"cn\">NA</span>,</span>\n<span>  height <span class=\"op\">=</span> <span class=\"cn\">NA</span>,</span>\n<span>  silent <span class=\"op\">=</span> <span class=\"cn\">FALSE</span>,</span>\n<span>  <span class=\"va\">rowLabel</span>,</span>\n<span>  <span class=\"va\">colLabel</span>,</span>\n<span>  rowGroupOrder <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  colGroupOrder <span class=\"op\">=</span> <span class=\"cn\">NULL</span>,</span>\n<span>  <span class=\"va\">...</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>mat</dt>\n<dd><p>numeric matrix of the values to be plotted.</p></dd>\n\n\n<dt>color</dt>\n<dd><p>vector of colors used in heatmap.</p></dd>\n\n\n<dt>kmeansK</dt>\n<dd><p>the number of kmeans clusters to make, if we want to\nagggregate the rows before drawing heatmap. If NA then the rows are not\naggregated.</p></dd>\n\n\n<dt>breaks</dt>\n<dd><p>Numeric vector. A sequence of numbers that covers the range\nof values in the normalized `counts`. Values in the normalized `matrix` are\nassigned to each bin in `breaks`. Each break is assigned to a unique color\nfrom `col`. If NULL, then breaks are calculated automatically. Default NULL.</p></dd>\n\n\n<dt>borderColor</dt>\n<dd><p>color of cell borders on heatmap, use NA if no border\nshould be drawn.</p></dd>\n\n\n<dt>cellWidth</dt>\n<dd><p>individual cell width in points. If left as NA, then the\nvalues depend on the size of plotting window.</p></dd>\n\n\n<dt>cellHeight</dt>\n<dd><p>individual cell height in points. If left as NA, then the\nvalues depend on the size of plotting window.</p></dd>\n\n\n<dt>scale</dt>\n<dd><p>character indicating if the values should be centered and\nscaled in either the row direction or the column direction, or none.\nCorresponding values are <code>\"row\"</code>, <code>\"column\"</code> and <code>\"none\"</code>.</p></dd>\n\n\n<dt>clusterRows</dt>\n<dd><p>boolean values determining if rows should be clustered or\n<code>hclust</code> object,</p></dd>\n\n\n<dt>clusterCols</dt>\n<dd><p>boolean values determining if columns should be clustered\nor <code>hclust</code> object.</p></dd>\n\n\n<dt>clusteringDistanceRows</dt>\n<dd><p>distance measure used in clustering rows.\nPossible values are <code>\"correlation\"</code> for Pearson correlation and all\nthe distances supported by <code><a href=\"https://rdrr.io/r/stats/dist.html\" class=\"external-link\">dist</a></code>, such as <code>\"euclidean\"</code>,\netc. If the value is none of the above it is assumed that a distance matrix\nis provided.</p></dd>\n\n\n<dt>clusteringDistanceCols</dt>\n<dd><p>distance measure used in clustering columns.\nPossible values the same as for clusteringDistanceRows.</p></dd>\n\n\n<dt>clusteringMethod</dt>\n<dd><p>clustering method used. Accepts the same values as\n<code><a href=\"https://rdrr.io/r/stats/hclust.html\" class=\"external-link\">hclust</a></code>.</p></dd>\n\n\n<dt>clusteringCallback</dt>\n<dd><p>callback function to modify the clustering. Is\ncalled with two parameters: original <code>hclust</code> object and the matrix\nused for clustering. Must return a <code>hclust</code> object.</p></dd>\n\n\n<dt>cutreeRows</dt>\n<dd><p>number of clusters the rows are divided into, based on the\nhierarchical clustering (using cutree), if rows are not clustered, the\nargument is ignored</p></dd>\n\n\n<dt>cutreeCols</dt>\n<dd><p>similar to <code>cutreeRows</code>, but for columns</p></dd>\n\n\n<dt>treeHeightRow</dt>\n<dd><p>the height of a tree for rows, if these are clustered.\nDefault value 50 points.</p></dd>\n\n\n<dt>treeHeightCol</dt>\n<dd><p>the height of a tree for columns, if these are\nclustered. Default value 50 points.</p></dd>\n\n\n<dt>legend</dt>\n<dd><p>logical to determine if legend should be drawn or not.</p></dd>\n\n\n<dt>legendBreaks</dt>\n<dd><p>vector of breakpoints for the legend.</p></dd>\n\n\n<dt>legendLabels</dt>\n<dd><p>vector of labels for the <code>legendBreaks</code>.</p></dd>\n\n\n<dt>annotationRow</dt>\n<dd><p>data frame that specifies the annotations shown on left\nside of the heatmap. Each row defines the features for a specific row. The\nrows in the data and in the annotation are matched using corresponding row\nnames. Note that color schemes takes into account if variable is continuous\nor discrete.</p></dd>\n\n\n<dt>annotationCol</dt>\n<dd><p>similar to annotationRow, but for columns.</p></dd>\n\n\n<dt>annotation</dt>\n<dd><p>deprecated parameter that currently sets the annotationCol\nif it is missing.</p></dd>\n\n\n<dt>annotationColors</dt>\n<dd><p>list for specifying annotationRow and\nannotationCol track colors manually. It is  possible to define the colors\nfor only some of the features. Check examples for  details.</p></dd>\n\n\n<dt>annotationLegend</dt>\n<dd><p>boolean value showing if the legend for annotation\ntracks should be drawn.</p></dd>\n\n\n<dt>annotationNamesRow</dt>\n<dd><p>boolean value showing if the names for row\nannotation tracks should be drawn.</p></dd>\n\n\n<dt>annotationNamesCol</dt>\n<dd><p>boolean value showing if the names for column\nannotation tracks should be drawn.</p></dd>\n\n\n<dt>dropLevels</dt>\n<dd><p>logical to determine if unused levels are also shown in\nthe legend.</p></dd>\n\n\n<dt>showRownames</dt>\n<dd><p>boolean specifying if column names are be shown.</p></dd>\n\n\n<dt>showColnames</dt>\n<dd><p>boolean specifying if column names are be shown.</p></dd>\n\n\n<dt>main</dt>\n<dd><p>the title of the plot</p></dd>\n\n\n<dt>fontSize</dt>\n<dd><p>base fontsize for the plot</p></dd>\n\n\n<dt>fontSizeRow</dt>\n<dd><p>fontsize for rownames (Default: fontsize)</p></dd>\n\n\n<dt>fontSizeCol</dt>\n<dd><p>fontsize for colnames (Default: fontsize)</p></dd>\n\n\n<dt>displayNumbers</dt>\n<dd><p>logical determining if the numeric values are also\nprinted to the cells. If this is a matrix (with same dimensions as original\nmatrix), the contents of the matrix are shown instead of original values.</p></dd>\n\n\n<dt>numberFormat</dt>\n<dd><p>format strings (C printf style) of the numbers shown in\ncells. For example \"<code>%.2f</code>\" shows 2 decimal places and \"<code>%.1e</code>\"\nshows exponential notation (see more in <code><a href=\"https://rdrr.io/r/base/sprintf.html\" class=\"external-link\">sprintf</a></code>).</p></dd>\n\n\n<dt>numberColor</dt>\n<dd><p>color of the text</p></dd>\n\n\n<dt>fontSizeNumber</dt>\n<dd><p>fontsize of the numbers displayed in cells</p></dd>\n\n\n<dt>gapsRow</dt>\n<dd><p>vector of row indices that show shere to put gaps into\nheatmap. Used only if the rows are not clustered. See <code>cutreeRow</code>\nto see how to introduce gaps to clustered rows.</p></dd>\n\n\n<dt>gapsCol</dt>\n<dd><p>similar to gapsRow, but for columns.</p></dd>\n\n\n<dt>labelsRow</dt>\n<dd><p>custom labels for rows that are used instead of rownames.</p></dd>\n\n\n<dt>labelsCol</dt>\n<dd><p>similar to labelsRow, but for columns.</p></dd>\n\n\n<dt>fileName</dt>\n<dd><p>file path where to save the picture. Filetype is decided by\nthe extension in the path. Currently following formats are supported: png,\npdf, tiff, bmp, jpeg. Even if the plot does not fit into the plotting\nwindow, the file size is calculated so that the plot would fit there,\nunless specified otherwise.</p></dd>\n\n\n<dt>width</dt>\n<dd><p>manual option for determining the output file width in inches.</p></dd>\n\n\n<dt>height</dt>\n<dd><p>manual option for determining the output file height in inches.</p></dd>\n\n\n<dt>silent</dt>\n<dd><p>do not draw the plot (useful when using the gtable output)</p></dd>\n\n\n<dt>rowLabel</dt>\n<dd><p>row cluster labels for semi-clustering</p></dd>\n\n\n<dt>colLabel</dt>\n<dd><p>column cluster labels for semi-clustering</p></dd>\n\n\n<dt>rowGroupOrder</dt>\n<dd><p>Vector. Specifies the order of feature clusters when\nsemisupervised clustering is performed on the <code>y</code> labels.</p></dd>\n\n\n<dt>colGroupOrder</dt>\n<dd><p>Vector. Specifies the order of cell clusters when\nsemisupervised clustering is performed on the <code>z</code> labels.</p></dd>\n\n\n<dt>...</dt>\n<dd><p>graphical parameters for the text used in plot. Parameters\npassed to <code>grid.text</code>, see <code>gpar</code>.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>Invisibly a list of components</p><ul><li><p><code>treeRow</code> the clustering of rows as <code><a href=\"https://rdrr.io/r/stats/hclust.html\" class=\"external-link\">hclust</a></code>\n      object</p></li>\n<li><p><code>treeCol</code> the clustering of columns as <code><a href=\"https://rdrr.io/r/stats/hclust.html\" class=\"external-link\">hclust</a></code>\n      object</p></li>\n<li><p><code>kmeans</code> the kmeans clustering of rows if parameter\n      <code>kmeansK</code> was specified</p></li>\n</ul></div>\n    <div id=\"author\">\n    <h2>Author</h2>\n    <p>Raivo Kolde &lt;rkolde@gmail.com&gt;\n#@examples\n# Create test matrix\ntest = matrix(rnorm(200), 20, 10)\ntest[seq(10), seq(1, 10, 2)] = test[seq(10), seq(1, 10, 2)] + 3\ntest[seq(11, 20), seq(2, 10, 2)] = test[seq(11, 20), seq(2, 10, 2)] + 2\ntest[seq(15, 20), seq(2, 10, 2)] = test[seq(15, 20), seq(2, 10, 2)] + 4\ncolnames(test) = paste(\"Test\", seq(10), sep = \"\")\nrownames(test) = paste(\"Gene\", seq(20), sep = \"\")</p>\n<p># Draw heatmaps\npheatmap(test)\npheatmap(test, kmeansK = 2)\npheatmap(test, scale = \"row\", clusteringDistanceRows = \"correlation\")\npheatmap(test, color = colorRampPalette(c(\"navy\",\n    \"white\", \"firebrick3\"))(50))\npheatmap(test, cluster_row = FALSE)\npheatmap(test, legend = FALSE)</p>\n<p># Show text within cells\npheatmap(test, displayNumbers = TRUE)\npheatmap(test, displayNumbers = TRUE, numberFormat = \"%.1e\")\npheatmap(test, displayNumbers = matrix(ifelse(test &gt; 5,\n    \"*\", \"\"), nrow(test)))\npheatmap(test, cluster_row = FALSE,\n    legendBreaks = seq(-1, 4), legendLabels = c(\"0\",\n    \"1e-4\", \"1e-3\", \"1e-2\", \"1e-1\", \"1\"))</p>\n<p># Fix cell sizes and save to file with correct size\npheatmap(test, cellWidth = 15, cellHeight = 12, main = \"Example heatmap\")\npheatmap(test, cellWidth = 15, cellHeight = 12, fontSize = 8,\n    fileName = \"test.pdf\")</p>\n<p># Generate annotations for rows and columns\nannotationCol = data.frame(CellType = factor(rep(c(\"CT1\", \"CT2\"), 5)),\n    Time = seq(5))\nrownames(annotationCol) = paste(\"Test\", seq(10), sep = \"\")</p>\n<p>annotationRow = data.frame(GeneClass = factor(rep(c(\"Path1\",\n   \"Path2\",\n   \"Path3\"),\n   c(10, 4, 6))))\nrownames(annotationRow) = paste(\"Gene\", seq(20), sep = \"\")</p>\n<p># Display row and color annotations\npheatmap(test, annotationCol = annotationCol)\npheatmap(test, annotationCol = annotationCol, annotationLegend = FALSE)\npheatmap(test, annotationCol = annotationCol, annotationRow = annotationRow)</p>\n<p># Specify colors\nann_colors = list(Time = c(\"white\", \"firebrick\"),\n    CellType = c(CT1 = \"#1B9E77\", CT2 = \"#D95F02\"),\n    GeneClass = c(Path1 = \"#7570B3\", Path2 = \"#E7298A\", Path3 = \"#66A61E\"))</p>\n<p>pheatmap(test, annotationCol = annotationCol, annotationColors = ann_colors,\n    main = \"Title\")\npheatmap(test, annotationCol = annotationCol, annotationRow = annotationRow,\n    annotationColors = ann_colors)\npheatmap(test, annotationCol = annotationCol,\n    annotationColors = ann_colors[2])</p>\n<p># Gaps in heatmaps\npheatmap(test, annotationCol = annotationCol, clusterRows = FALSE,\n    gapsRow = c(10, 14))\npheatmap(test, annotationCol = annotationCol, clusterRows = FALSE,\n    gapsRow = c(10, 14), cutreeCol = 2)</p>\n<p># Show custom strings as row/col names\nlabelsRow = c(\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n\"\", \"\", \"Il10\", \"Il15\", \"Il1b\")</p>\n<p>pheatmap(test, annotationCol = annotationCol, labelsRow = labelsRow)</p>\n<p># Specifying clustering from distance matrix\ndrows = stats::dist(test, method = \"minkowski\")\ndcols = stats::dist(t(test), method = \"minkowski\")\npheatmap(test,\n    clusteringDistanceRows = drows,\n    clusteringDistanceCols = dcols)</p>\n<p># Modify ordering of the clusters using clustering callback option\ncallback = function(hc, mat) \n    sv = svd(t(mat))$v[, 1]\n    dend = reorder(as.dendrogram(hc), wts = sv)\n    as.hclust(dend)</p>\n<p>pheatmap(test, clusteringCallback = callback)</p>\n    </div>\n\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/simulateCells.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Simulate count data from the celda generative models. — simulateCells • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Simulate count data from the celda generative models. — simulateCells\"><meta property=\"og:description\" content=\"This function generates a SingleCellExperiment\n containing a simulated counts matrix in the &quot;counts&quot; assay slot, as\n well as various parameters used in the simulation which can be\n useful for running celda and are stored in metadata slot. The user\n must provide the desired model (one of celda_C, celda_G, celda_CG) as well\n as any desired tuning parameters for those model's simulation functions\n as detailed below.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Simulate count data from the celda generative models.</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/simulateCells.R\" class=\"external-link\"><code>R/simulateCells.R</code></a></small>\n    <div class=\"hidden name\"><code>simulateCells.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>This function generates a <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a>\n containing a simulated counts matrix in the <code>\"counts\"</code> assay slot, as\n well as various parameters used in the simulation which can be\n useful for running celda and are stored in <code>metadata</code> slot. The user\n must provide the desired model (one of celda_C, celda_G, celda_CG) as well\n as any desired tuning parameters for those model's simulation functions\n as detailed below.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">simulateCells</span><span class=\"op\">(</span></span>\n<span>  model <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"st\">\"celda_CG\"</span>, <span class=\"st\">\"celda_C\"</span>, <span class=\"st\">\"celda_G\"</span><span class=\"op\">)</span>,</span>\n<span>  S <span class=\"op\">=</span> <span class=\"fl\">5</span>,</span>\n<span>  CRange <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"fl\">50</span>, <span class=\"fl\">100</span><span class=\"op\">)</span>,</span>\n<span>  NRange <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"fl\">500</span>, <span class=\"fl\">1000</span><span class=\"op\">)</span>,</span>\n<span>  C <span class=\"op\">=</span> <span class=\"fl\">100</span>,</span>\n<span>  G <span class=\"op\">=</span> <span class=\"fl\">100</span>,</span>\n<span>  K <span class=\"op\">=</span> <span class=\"fl\">5</span>,</span>\n<span>  L <span class=\"op\">=</span> <span class=\"fl\">10</span>,</span>\n<span>  alpha <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  beta <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  gamma <span class=\"op\">=</span> <span class=\"fl\">5</span>,</span>\n<span>  delta <span class=\"op\">=</span> <span class=\"fl\">1</span>,</span>\n<span>  seed <span class=\"op\">=</span> <span class=\"fl\">12345</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>model</dt>\n<dd><p>Character. Options available in <code><a href=\"availableModels.html\">celda::availableModels</a></code>.\nCan be one of <code>\"celda_CG\"</code>, <code>\"celda_C\"</code>, or <code>\"celda_G\"</code>.\nDefault <code>\"celda_CG\"</code>.</p></dd>\n\n\n<dt>S</dt>\n<dd><p>Integer. Number of samples to simulate. Default 5. Only used if\n<code>model</code> is one of <code>\"celda_CG\"</code> or <code>\"celda_C\"</code>.</p></dd>\n\n\n<dt>CRange</dt>\n<dd><p>Integer vector. A vector of length 2 that specifies the lower\nand upper bounds of the number of cells to be generated in each sample.\nDefault c(50, 100). Only used if\n<code>model</code> is one of <code>\"celda_CG\"</code> or <code>\"celda_C\"</code>.</p></dd>\n\n\n<dt>NRange</dt>\n<dd><p>Integer vector. A vector of length 2 that specifies the lower\nand upper bounds of the number of counts generated for each cell. Default\nc(500, 1000).</p></dd>\n\n\n<dt>C</dt>\n<dd><p>Integer. Number of cells to simulate. Default 100. Only used if\n<code>model</code> is <code>\"celda_G\"</code>.</p></dd>\n\n\n<dt>G</dt>\n<dd><p>Integer. The total number of features to be simulated. Default 100.</p></dd>\n\n\n<dt>K</dt>\n<dd><p>Integer. Number of cell populations. Default 5. Only used if\n<code>model</code> is one of <code>\"celda_CG\"</code> or <code>\"celda_C\"</code>.</p></dd>\n\n\n<dt>L</dt>\n<dd><p>Integer. Number of feature modules. Default 10. Only used if\n<code>model</code> is one of <code>\"celda_CG\"</code> or <code>\"celda_G\"</code>.</p></dd>\n\n\n<dt>alpha</dt>\n<dd><p>Numeric. Concentration parameter for Theta. Adds a pseudocount\nto each cell population in each sample. Default 1. Only used if\n<code>model</code> is one of <code>\"celda_CG\"</code> or <code>\"celda_C\"</code>.</p></dd>\n\n\n<dt>beta</dt>\n<dd><p>Numeric. Concentration parameter for Phi. Adds a pseudocount to\neach feature module in each cell population. Default 1.</p></dd>\n\n\n<dt>gamma</dt>\n<dd><p>Numeric. Concentration parameter for Eta. Adds a pseudocount to\nthe number of features in each module. Default 5. Only used if\n<code>model</code> is one of <code>\"celda_CG\"</code> or <code>\"celda_G\"</code>.</p></dd>\n\n\n<dt>delta</dt>\n<dd><p>Numeric. Concentration parameter for Psi. Adds a pseudocount to\neach feature in each module. Default 1. Only used if\n<code>model</code> is one of <code>\"celda_CG\"</code> or <code>\"celda_G\"</code>.</p></dd>\n\n\n<dt>seed</dt>\n<dd><p>Integer. Passed to <a href=\"https://withr.r-lib.org/reference/with_seed.html\" class=\"external-link\">with_seed</a>. For reproducibility,\na default value of 12345 is used. If NULL, no calls to\n<a href=\"https://withr.r-lib.org/reference/with_seed.html\" class=\"external-link\">with_seed</a> are made.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object with\n simulated count matrix stored in the \"counts\" assay slot. Function\n parameter settings are stored in the metadata slot. For</p>\n<p></p>\n<p><code>\"celda_CG\"</code> and <code>\"celda_C\"</code> models,\n columns <code>celda_sample_label</code> and <code>celda_cell_cluster</code> in</p>\n<p></p>\n<p><a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">colData</a> contain simulated sample labels and\n cell population clusters. For <code>\"celda_CG\"</code> and <code>\"celda_G\"</code></p>\n\n\n<p>models, column <code>celda_feature_module</code> in</p>\n<p></p>\n<p><a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">rowData</a> contains simulated gene modules.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">simulateCells</span><span class=\"op\">(</span><span class=\"op\">)</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/simulateContamination.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Simulate contaminated count matrix — simulateContamination • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Simulate contaminated count matrix — simulateContamination\"><meta property=\"og:description\" content=\"This function generates a list containing two count matrices --\n one for real expression, the other one for contamination, as well as other\n parameters used in the simulation which can be useful for running\n decontamination.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Simulate contaminated count matrix</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/decon.R\" class=\"external-link\"><code>R/decon.R</code></a></small>\n    <div class=\"hidden name\"><code>simulateContamination.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>This function generates a list containing two count matrices --\n one for real expression, the other one for contamination, as well as other\n parameters used in the simulation which can be useful for running\n decontamination.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">simulateContamination</span><span class=\"op\">(</span></span>\n<span>  C <span class=\"op\">=</span> <span class=\"fl\">300</span>,</span>\n<span>  G <span class=\"op\">=</span> <span class=\"fl\">100</span>,</span>\n<span>  K <span class=\"op\">=</span> <span class=\"fl\">3</span>,</span>\n<span>  NRange <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"fl\">500</span>, <span class=\"fl\">1000</span><span class=\"op\">)</span>,</span>\n<span>  beta <span class=\"op\">=</span> <span class=\"fl\">0.1</span>,</span>\n<span>  delta <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"fl\">1</span>, <span class=\"fl\">10</span><span class=\"op\">)</span>,</span>\n<span>  numMarkers <span class=\"op\">=</span> <span class=\"fl\">3</span>,</span>\n<span>  seed <span class=\"op\">=</span> <span class=\"fl\">12345</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>C</dt>\n<dd><p>Integer. Number of cells to be simulated. Default <code>300</code>.</p></dd>\n\n\n<dt>G</dt>\n<dd><p>Integer. Number of genes to be simulated. Default <code>100</code>.</p></dd>\n\n\n<dt>K</dt>\n<dd><p>Integer. Number of cell populations to be simulated.\nDefault <code>3</code>.</p></dd>\n\n\n<dt>NRange</dt>\n<dd><p>Integer vector. A vector of length 2 that specifies the lower\nand upper bounds of the number of counts generated for each cell. Default\n<code>c(500, 1000)</code>.</p></dd>\n\n\n<dt>beta</dt>\n<dd><p>Numeric. Concentration parameter for Phi. Default <code>0.1</code>.</p></dd>\n\n\n<dt>delta</dt>\n<dd><p>Numeric or Numeric vector. Concentration parameter for Theta.\nIf input as a single numeric value, symmetric values for beta\ndistribution are specified; if input as a vector of lenght 2, the two\nvalues will be the shape1 and shape2 paramters of the beta distribution\nrespectively. Default <code>c(1, 5)</code>.</p></dd>\n\n\n<dt>numMarkers</dt>\n<dd><p>Integer. Number of markers for each cell population.\nDefault <code>3</code>.</p></dd>\n\n\n<dt>seed</dt>\n<dd><p>Integer. Passed to <code><a href=\"https://withr.r-lib.org/reference/with_seed.html\" class=\"external-link\">with_seed</a></code>.\nFor reproducibility, a default value of 12345 is used. If NULL, no calls to\n <code><a href=\"https://withr.r-lib.org/reference/with_seed.html\" class=\"external-link\">with_seed</a></code> are made.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>A list containing the <code>nativeMatirx</code> (real expression),\n<code>observedMatrix</code> (real expression + contamination), as well as other\nparameters used in the simulation.</p>\n    </div>\n    <div id=\"author\">\n    <h2>Author</h2>\n    <p>Shiyi Yang, Yuan Yin, Joshua Campbell</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"va\">contaminationSim</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">simulateContamination</span><span class=\"op\">(</span>K <span class=\"op\">=</span> <span class=\"fl\">3</span>, delta <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/c.html\" class=\"external-link\">c</a></span><span class=\"op\">(</span><span class=\"fl\">1</span>, <span class=\"fl\">10</span><span class=\"op\">)</span><span class=\"op\">)</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/splitModule.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Split celda feature module — splitModule • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Split celda feature module — splitModule\"><meta property=\"og:description\" content=\"Manually select a celda feature module to split into 2 or\n more modules. Useful for splitting up modules that show divergent\n expression of features in multiple cell clusters.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Split celda feature module</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/splitModule.R\" class=\"external-link\"><code>R/splitModule.R</code></a></small>\n    <div class=\"hidden name\"><code>splitModule.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Manually select a celda feature module to split into 2 or\n more modules. Useful for splitting up modules that show divergent\n expression of features in multiple cell clusters.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">splitModule</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  <span class=\"va\">module</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  n <span class=\"op\">=</span> <span class=\"fl\">2</span>,</span>\n<span>  seed <span class=\"op\">=</span> <span class=\"fl\">12345</span></span>\n<span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">splitModule</span><span class=\"op\">(</span></span>\n<span>  <span class=\"va\">x</span>,</span>\n<span>  <span class=\"va\">module</span>,</span>\n<span>  useAssay <span class=\"op\">=</span> <span class=\"st\">\"counts\"</span>,</span>\n<span>  altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span>,</span>\n<span>  n <span class=\"op\">=</span> <span class=\"fl\">2</span>,</span>\n<span>  seed <span class=\"op\">=</span> <span class=\"fl\">12345</span></span>\n<span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object\nwith the matrix located in the assay slot under <code>useAssay</code>.\nRows represent features and columns represent cells.</p></dd>\n\n\n<dt>module</dt>\n<dd><p>Integer. The module to be split.</p></dd>\n\n\n<dt>useAssay</dt>\n<dd><p>A string specifying which <a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">assay</a>\nslot to use for <code>x</code>. Default \"counts\".</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a> slot\nto use. Default <code>\"featureSubset\"</code>.</p></dd>\n\n\n<dt>n</dt>\n<dd><p>Integer. How many modules should <code>module</code> be split into.\nDefault <code>2</code>.</p></dd>\n\n\n<dt>seed</dt>\n<dd><p>Integer. Passed to <a href=\"https://withr.r-lib.org/reference/with_seed.html\" class=\"external-link\">with_seed</a>. For reproducibility,\na default value of 12345 is used. If NULL, no calls to\n<a href=\"https://withr.r-lib.org/reference/with_seed.html\" class=\"external-link\">with_seed</a> are made.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>A updated <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object with new\n feature modules stored in column <code>celda_feature_module</code> in</p>\n<p></p>\n<p><code><a href=\"https://rdrr.io/pkg/SummarizedExperiment/man/SummarizedExperiment-class.html\" class=\"external-link\">rowData</a>(x)</code>.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"co\"># Split module 5 into 2 new modules.</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sce</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">splitModule</span><span class=\"op\">(</span><span class=\"va\">sceCeldaCG</span>, module <span class=\"op\">=</span> <span class=\"fl\">5</span><span class=\"op\">)</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/subsetCeldaList.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Subset celda model from SCE object returned from\n celdaGridSearch — subsetCeldaList • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Subset celda model from SCE object returned from\n celdaGridSearch — subsetCeldaList\"><meta property=\"og:description\" content=\"Select a subset of models from a\n SingleCellExperiment object generated by\n celdaGridSearch that match the criteria in the argument\n params.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Subset celda model from SCE object returned from\n <code>celdaGridSearch</code></h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/celdaGridSearch.R\" class=\"external-link\"><code>R/celdaGridSearch.R</code></a></small>\n    <div class=\"hidden name\"><code>subsetCeldaList.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>Select a subset of models from a\n <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object generated by\n <a href=\"celdaGridSearch.html\">celdaGridSearch</a> that match the criteria in the argument\n <code>params</code>.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">subsetCeldaList</span><span class=\"op\">(</span><span class=\"va\">x</span>, <span class=\"va\">params</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for SingleCellExperiment</span></span>\n<span><span class=\"fu\">subsetCeldaList</span><span class=\"op\">(</span><span class=\"va\">x</span>, <span class=\"va\">params</span>, altExpName <span class=\"op\">=</span> <span class=\"st\">\"featureSubset\"</span><span class=\"op\">)</span></span>\n<span></span>\n<span><span class=\"co\"># S4 method for celdaList</span></span>\n<span><span class=\"fu\">subsetCeldaList</span><span class=\"op\">(</span><span class=\"va\">x</span>, <span class=\"va\">params</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>x</dt>\n<dd><p>Can be one of</p><ul><li><p>A <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object returned from\n <code>celdaGridSearch</code>, <code>recursiveSplitModule</code>,\n or <code>recursiveSplitCell</code>. Must contain a list named\n <code>\"celda_grid_search\"</code> in <code>metadata(x)</code>.</p></li>\n<li><p>celdaList object.</p></li>\n</ul></dd>\n\n\n<dt>params</dt>\n<dd><p>List. List of parameters used to subset the matching celda\nmodels in list <code>\"celda_grid_search\"</code> in <code>metadata(x)</code>.</p></dd>\n\n\n<dt>altExpName</dt>\n<dd><p>The name for the <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/altExps.html\" class=\"external-link\">altExp</a> slot\nto use. Default \"featureSubset\".</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>One of</p><ul><li><p>A new <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object containing\n all models matching the\n provided criteria in <code>params</code>. If only one celda model result in the\n <code>\"celda_grid_search\"</code> slot in <code>metadata(x)</code> matches\n the given criteria, a new <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object\n with the matching model stored in the\n metadata\n <code>\"celda_parameters\"</code> slot will be returned. Otherwise, a new\n <a href=\"https://rdrr.io/pkg/SingleCellExperiment/man/SingleCellExperiment.html\" class=\"external-link\">SingleCellExperiment</a> object with the subset models stored\n in the metadata\n <code>\"celda_grid_search\"</code> slot will be returned.</p></li>\n<li><p>A new <code>celdaList</code> object containing all models matching the\n provided criteria in <code>params</code>. If only one item in the\n <code>celdaList</code> matches the given criteria, the matching model will be\n returned directly instead of a <code>celdaList</code> object.</p></li>\n</ul></div>\n    <div id=\"see-also\">\n    <h2>See also</h2>\n    <div class=\"dont-index\"><p><a href=\"celdaGridSearch.html\">celdaGridSearch</a> can run Celda with multiple parameters and\n chains in parallel. <a href=\"selectBestModel.html\">selectBestModel</a> can get the best model for each\n combination of parameters.</p></div>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sceCeldaCGGridSearch</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">sceK5L10</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">subsetCeldaList</span><span class=\"op\">(</span><span class=\"va\">sceCeldaCGGridSearch</span>,</span></span>\n<span class=\"r-in\"><span>    params <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>K <span class=\"op\">=</span> <span class=\"fl\">5</span>, L <span class=\"op\">=</span> <span class=\"fl\">10</span><span class=\"op\">)</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">celdaCGGridSearchRes</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">resK5L10</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">subsetCeldaList</span><span class=\"op\">(</span><span class=\"va\">celdaCGGridSearchRes</span>,</span></span>\n<span class=\"r-in\"><span>    params <span class=\"op\">=</span> <span class=\"fu\"><a href=\"https://rdrr.io/r/base/list.html\" class=\"external-link\">list</a></span><span class=\"op\">(</span>K <span class=\"op\">=</span> <span class=\"fl\">5</span>, L <span class=\"op\">=</span> <span class=\"fl\">10</span><span class=\"op\">)</span><span class=\"op\">)</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/reference/topRank.html",
    "content": "<!DOCTYPE html>\n<!-- Generated by pkgdown: do not edit by hand --><html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>Identify features with the highest influence on clustering. — topRank • celda</title><!-- jquery --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script><!-- Bootstrap --><link href=\"https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/yeti/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js\" integrity=\"sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=\" crossorigin=\"anonymous\"></script><!-- bootstrap-toc --><link rel=\"stylesheet\" href=\"../bootstrap-toc.css\"><script src=\"../bootstrap-toc.js\"></script><!-- Font Awesome icons --><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css\" integrity=\"sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=\" crossorigin=\"anonymous\"><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css\" integrity=\"sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=\" crossorigin=\"anonymous\"><!-- clipboard.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js\" integrity=\"sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=\" crossorigin=\"anonymous\"></script><!-- headroom.js --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js\" integrity=\"sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js\" integrity=\"sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=\" crossorigin=\"anonymous\"></script><!-- pkgdown --><link href=\"../pkgdown.css\" rel=\"stylesheet\"><script src=\"../pkgdown.js\"></script><meta property=\"og:title\" content=\"Identify features with the highest influence on clustering. — topRank\"><meta property=\"og:description\" content=\"topRank() can quickly identify the top `n` rows for each column\n of a matrix. For example, this can be useful for identifying the top `n`\n features per cell.\"><!-- mathjax --><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js\" integrity=\"sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=\" crossorigin=\"anonymous\"></script><script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js\" integrity=\"sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=\" crossorigin=\"anonymous\"></script><!--[if lt IE 9]>\n<script src=\"https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js\"></script>\n<script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\n<![endif]--></head><body data-spy=\"scroll\" data-target=\"#toc\">\n    \n\n    <div class=\"container template-reference-topic\">\n      <header><div class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar\" aria-expanded=\"false\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <span class=\"navbar-brand\">\n        <a class=\"navbar-link\" href=\"../index.html\">celda</a>\n        <span class=\"version label label-default\" data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"\">1.18.2</span>\n      </span>\n    </div>\n\n    <div id=\"navbar\" class=\"navbar-collapse collapse\">\n      <ul class=\"nav navbar-nav\"><li>\n  <a href=\"https://www.camplab.net/celda\" class=\"external-link\">\n    <span class=\"fa fa-home fa-lg\"></span>\n     \n  </a>\n</li>\n<li>\n  <a href=\"../articles/articles/installation.html\">Installation</a>\n</li>\n<li class=\"dropdown\">\n  <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\n    Vignettes\n     \n    <span class=\"caret\"></span>\n  </a>\n  <ul class=\"dropdown-menu\" role=\"menu\"><li>\n      <a href=\"../articles/articles/celda_pbmc3k.html\">Celda - Analysis of PBMC3K</a>\n    </li>\n    <li>\n      <a href=\"../articles/articles/decontX_pbmc4k.html\">DecontX - Decontamination of PBMC4K</a>\n    </li>\n  </ul></li>\n<li>\n  <a href=\"../reference/index.html\">Reference</a>\n</li>\n<li>\n  <a href=\"../news/index.html\">News</a>\n</li>\n<li>\n  <a href=\"https://github.com/campbio/celda\" class=\"external-link\">\n    <span class=\"fa fa-github\"></span>\n     \n  </a>\n</li>\n      </ul><ul class=\"nav navbar-nav navbar-right\"><li>\n  <a href=\"https://github.com/campbio/celda/\" class=\"external-link\">\n    <span class=\"fab fa-github fa-lg\"></span>\n     \n  </a>\n</li>\n      </ul></div><!--/.nav-collapse -->\n  </div><!--/.container -->\n</div><!--/.navbar -->\n\n      \n\n      </header><div class=\"row\">\n  <div class=\"col-md-9 contents\">\n    <div class=\"page-header\">\n    <h1>Identify features with the highest influence on clustering.</h1>\n    <small class=\"dont-index\">Source: <a href=\"https://github.com/campbio/celda/blob/HEAD/R/topRank.R\" class=\"external-link\"><code>R/topRank.R</code></a></small>\n    <div class=\"hidden name\"><code>topRank.Rd</code></div>\n    </div>\n\n    <div class=\"ref-description\">\n    <p>topRank() can quickly identify the top `n` rows for each column\n of a matrix. For example, this can be useful for identifying the top `n`\n features per cell.</p>\n    </div>\n\n    <div id=\"ref-usage\">\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span><span class=\"fu\">topRank</span><span class=\"op\">(</span><span class=\"va\">matrix</span>, n <span class=\"op\">=</span> <span class=\"fl\">25</span>, margin <span class=\"op\">=</span> <span class=\"fl\">2</span>, threshold <span class=\"op\">=</span> <span class=\"fl\">0</span>, decreasing <span class=\"op\">=</span> <span class=\"cn\">TRUE</span><span class=\"op\">)</span></span></code></pre></div>\n    </div>\n\n    <div id=\"arguments\">\n    <h2>Arguments</h2>\n    <dl><dt>matrix</dt>\n<dd><p>Numeric matrix.</p></dd>\n\n\n<dt>n</dt>\n<dd><p>Integer. Maximum number of items above `threshold` returned for each\nranked row or column.</p></dd>\n\n\n<dt>margin</dt>\n<dd><p>Integer. Dimension of `matrix` to rank, with 1 for rows, 2 for\ncolumns. Default 2.</p></dd>\n\n\n<dt>threshold</dt>\n<dd><p>Numeric. Only return ranked rows or columns in the matrix\nthat are above this threshold. If NULL, then no threshold will be applied.\nDefault 0.</p></dd>\n\n\n<dt>decreasing</dt>\n<dd><p>Logical. Specifies if the rank should be decreasing.\nDefault TRUE.</p></dd>\n\n</dl></div>\n    <div id=\"value\">\n    <h2>Value</h2>\n    \n\n<p>List. The `index` variable provides the top `n` row (feature) indices\n contributing the most to each column (cell). The `names` variable provides\n the rownames corresponding to these indexes.</p>\n    </div>\n\n    <div id=\"ref-examples\">\n    <h2>Examples</h2>\n    <div class=\"sourceCode\"><pre class=\"sourceCode r\"><code><span class=\"r-in\"><span><span class=\"fu\"><a href=\"https://rdrr.io/r/utils/data.html\" class=\"external-link\">data</a></span><span class=\"op\">(</span><span class=\"va\">sampleCells</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">topRanksPerCell</span> <span class=\"op\">&lt;-</span> <span class=\"fu\">topRank</span><span class=\"op\">(</span><span class=\"va\">sampleCells</span>, n <span class=\"op\">=</span> <span class=\"fl\">5</span><span class=\"op\">)</span></span></span>\n<span class=\"r-in\"><span><span class=\"va\">topFeatureNamesForCell</span> <span class=\"op\">&lt;-</span> <span class=\"va\">topRanksPerCell</span><span class=\"op\">$</span><span class=\"va\">names</span><span class=\"op\">[</span><span class=\"fl\">1</span><span class=\"op\">]</span></span></span>\n</code></pre></div>\n    </div>\n  </div>\n  <div class=\"col-md-3 hidden-xs hidden-sm\" id=\"pkgdown-sidebar\">\n    <nav id=\"toc\" data-toggle=\"toc\" class=\"sticky-top\"><h2 data-toc-skip>Contents</h2>\n    </nav></div>\n</div>\n\n\n      <footer><div class=\"copyright\">\n  <p></p><p>Developed by Joshua Campbell, Shiyi Yang, Zhe Wang, Sean Corbett, Yusuke Koga.</p>\n</div>\n\n<div class=\"pkgdown\">\n  <p></p><p>Site built with <a href=\"https://pkgdown.r-lib.org/\" class=\"external-link\">pkgdown</a> 2.0.7.</p>\n</div>\n\n      </footer></div>\n\n  \n\n\n  \n\n  </body></html>\n\n"
  },
  {
    "path": "docs/sitemap.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n  <url>\n    <loc>/404.html</loc>\n  </url>\n  <url>\n    <loc>/CONDUCT.html</loc>\n  </url>\n  <url>\n    <loc>/LICENSE-text.html</loc>\n  </url>\n  <url>\n    <loc>/articles/articles/celda_pbmc3k.html</loc>\n  </url>\n  <url>\n    <loc>/articles/articles/decontX_pbmc4k.html</loc>\n  </url>\n  <url>\n    <loc>/articles/articles/installation.html</loc>\n  </url>\n  <url>\n    <loc>/articles/celda.html</loc>\n  </url>\n  <url>\n    <loc>/articles/celda_pbmc3k.html</loc>\n  </url>\n  <url>\n    <loc>/articles/decontX.html</loc>\n  </url>\n  <url>\n    <loc>/articles/decontX_pbmc4k.html</loc>\n  </url>\n  <url>\n    <loc>/articles/index.html</loc>\n  </url>\n  <url>\n    <loc>/articles/installation.html</loc>\n  </url>\n  <url>\n    <loc>/authors.html</loc>\n  </url>\n  <url>\n    <loc>/index.html</loc>\n  </url>\n  <url>\n    <loc>/news/index.html</loc>\n  </url>\n  <url>\n    <loc>/reference/appendCeldaList.html</loc>\n  </url>\n  <url>\n    <loc>/reference/availableModels.html</loc>\n  </url>\n  <url>\n    <loc>/reference/bestLogLikelihood.html</loc>\n  </url>\n  <url>\n    <loc>/reference/celda.html</loc>\n  </url>\n  <url>\n    <loc>/reference/celdaCGGridSearchRes.html</loc>\n  </url>\n  <url>\n    <loc>/reference/celdaCGMod.html</loc>\n  </url>\n  <url>\n    <loc>/reference/celdaCGSim.html</loc>\n  </url>\n  <url>\n    <loc>/reference/celdaCMod.html</loc>\n  </url>\n  <url>\n    <loc>/reference/celdaCSim.html</loc>\n  </url>\n  <url>\n    <loc>/reference/celdaClusters.html</loc>\n  </url>\n  <url>\n    <loc>/reference/celdaGMod.html</loc>\n  </url>\n  <url>\n    <loc>/reference/celdaGSim.html</loc>\n  </url>\n  <url>\n    <loc>/reference/celdaGridSearch.html</loc>\n  </url>\n  <url>\n    <loc>/reference/celdaHeatmap.html</loc>\n  </url>\n  <url>\n    <loc>/reference/celdaModel.html</loc>\n  </url>\n  <url>\n    <loc>/reference/celdaModules.html</loc>\n  </url>\n  <url>\n    <loc>/reference/celdaPerplexity-celdaList-method.html</loc>\n  </url>\n  <url>\n    <loc>/reference/celdaPerplexity.html</loc>\n  </url>\n  <url>\n    <loc>/reference/celdaProbabilityMap.html</loc>\n  </url>\n  <url>\n    <loc>/reference/celdaTsne.html</loc>\n  </url>\n  <url>\n    <loc>/reference/celdaUmap.html</loc>\n  </url>\n  <url>\n    <loc>/reference/celda_C.html</loc>\n  </url>\n  <url>\n    <loc>/reference/celda_CG.html</loc>\n  </url>\n  <url>\n    <loc>/reference/celda_G.html</loc>\n  </url>\n  <url>\n    <loc>/reference/celdatosce.html</loc>\n  </url>\n  <url>\n    <loc>/reference/clusterProbability.html</loc>\n  </url>\n  <url>\n    <loc>/reference/compareCountMatrix.html</loc>\n  </url>\n  <url>\n    <loc>/reference/contaminationSim.html</loc>\n  </url>\n  <url>\n    <loc>/reference/countChecksum-celdaList-method.html</loc>\n  </url>\n  <url>\n    <loc>/reference/countChecksum.html</loc>\n  </url>\n  <url>\n    <loc>/reference/decontX.html</loc>\n  </url>\n  <url>\n    <loc>/reference/decontXcounts.html</loc>\n  </url>\n  <url>\n    <loc>/reference/distinctColors.html</loc>\n  </url>\n  <url>\n    <loc>/reference/eigenMatMultInt.html</loc>\n  </url>\n  <url>\n    <loc>/reference/eigenMatMultNumeric.html</loc>\n  </url>\n  <url>\n    <loc>/reference/factorizeMatrix.html</loc>\n  </url>\n  <url>\n    <loc>/reference/fastNormProp.html</loc>\n  </url>\n  <url>\n    <loc>/reference/fastNormPropLog.html</loc>\n  </url>\n  <url>\n    <loc>/reference/fastNormPropSqrt.html</loc>\n  </url>\n  <url>\n    <loc>/reference/featureModuleLookup.html</loc>\n  </url>\n  <url>\n    <loc>/reference/featureModuleTable.html</loc>\n  </url>\n  <url>\n    <loc>/reference/geneSetEnrich.html</loc>\n  </url>\n  <url>\n    <loc>/reference/index.html</loc>\n  </url>\n  <url>\n    <loc>/reference/logLikelihood.html</loc>\n  </url>\n  <url>\n    <loc>/reference/logLikelihoodHistory.html</loc>\n  </url>\n  <url>\n    <loc>/reference/matrixNames.html</loc>\n  </url>\n  <url>\n    <loc>/reference/moduleHeatmap.html</loc>\n  </url>\n  <url>\n    <loc>/reference/nonzero.html</loc>\n  </url>\n  <url>\n    <loc>/reference/normalizeCounts.html</loc>\n  </url>\n  <url>\n    <loc>/reference/params.html</loc>\n  </url>\n  <url>\n    <loc>/reference/perplexity.html</loc>\n  </url>\n  <url>\n    <loc>/reference/plotCeldaViolin.html</loc>\n  </url>\n  <url>\n    <loc>/reference/plotDecontXContamination.html</loc>\n  </url>\n  <url>\n    <loc>/reference/plotDecontXMarkerExpression.html</loc>\n  </url>\n  <url>\n    <loc>/reference/plotDecontXMarkerPercentage.html</loc>\n  </url>\n  <url>\n    <loc>/reference/plotDimReduceCluster.html</loc>\n  </url>\n  <url>\n    <loc>/reference/plotDimReduceFeature.html</loc>\n  </url>\n  <url>\n    <loc>/reference/plotDimReduceGrid.html</loc>\n  </url>\n  <url>\n    <loc>/reference/plotDimReduceModule.html</loc>\n  </url>\n  <url>\n    <loc>/reference/plotGridSearchPerplexity.html</loc>\n  </url>\n  <url>\n    <loc>/reference/plotHeatmap.html</loc>\n  </url>\n  <url>\n    <loc>/reference/plotRPC.html</loc>\n  </url>\n  <url>\n    <loc>/reference/recodeClusterY.html</loc>\n  </url>\n  <url>\n    <loc>/reference/recodeClusterZ.html</loc>\n  </url>\n  <url>\n    <loc>/reference/recursiveSplitCell.html</loc>\n  </url>\n  <url>\n    <loc>/reference/recursiveSplitModule.html</loc>\n  </url>\n  <url>\n    <loc>/reference/reorderCelda.html</loc>\n  </url>\n  <url>\n    <loc>/reference/reportceldaCG.html</loc>\n  </url>\n  <url>\n    <loc>/reference/resList.html</loc>\n  </url>\n  <url>\n    <loc>/reference/resamplePerplexity.html</loc>\n  </url>\n  <url>\n    <loc>/reference/retrieveFeatureIndex.html</loc>\n  </url>\n  <url>\n    <loc>/reference/runParams.html</loc>\n  </url>\n  <url>\n    <loc>/reference/sampleCells.html</loc>\n  </url>\n  <url>\n    <loc>/reference/sampleLabel.html</loc>\n  </url>\n  <url>\n    <loc>/reference/sceCeldaC.html</loc>\n  </url>\n  <url>\n    <loc>/reference/sceCeldaCG.html</loc>\n  </url>\n  <url>\n    <loc>/reference/sceCeldaCGGridSearch.html</loc>\n  </url>\n  <url>\n    <loc>/reference/sceCeldaG.html</loc>\n  </url>\n  <url>\n    <loc>/reference/selectBestModel.html</loc>\n  </url>\n  <url>\n    <loc>/reference/selectFeatures.html</loc>\n  </url>\n  <url>\n    <loc>/reference/semiPheatmap.html</loc>\n  </url>\n  <url>\n    <loc>/reference/simulateCells.html</loc>\n  </url>\n  <url>\n    <loc>/reference/simulateContamination.html</loc>\n  </url>\n  <url>\n    <loc>/reference/splitModule.html</loc>\n  </url>\n  <url>\n    <loc>/reference/subsetCeldaList.html</loc>\n  </url>\n  <url>\n    <loc>/reference/topRank.html</loc>\n  </url>\n</urlset>\n"
  },
  {
    "path": "inst/rmarkdown/CeldaCG_PlotResults.Rmd",
    "content": "---\ntitle: \"Celda_CG Results\"\ndate: \"`r format(Sys.time(), '%B %d, %Y')`\"\nparams:\n  sce: sce\n  altExpName: altExpName\n  useAssay: useAssay\n  reducedDimName: reducedDimName\n  features: features\n  displayName: displayName\n  cellAnnot: cellAnnot\n  cellAnnotLabel: cellAnnotLabel\n  exactMatch: exactMatch\n  moduleFileName: moduleFileName\n  pdf: pdf\n  showSetup: showSetup\n  showSession: showSession\noutput: \n html_document:\n     toc: true\n     toc_float: true\n     number_sections: true\n     theme: cosmo\n     code_folding: hide\n---\n\n\n# Celda_CG Results\n\n## Setup\nThe following code loads required libraries, reads in parameters, checks input variables, and sets up display options for the **celda_CG Results** report.\n```{r setup, echo = showSetup}\nrequire(singleCellTK)\nrequire(celda)\nrequire(kableExtra)\nrequire(grid)\nrequire(knitr)\nrequire(ggplot2)\nrequire(gridExtra)\nrequire(SingleCellExperiment)\n\nsce <- params$sce\nfeatures <- params$features\naltExpName <- params$altExpName\nuseAssay <- params$useAssay\nreducedDimName <- params$reducedDimName\ndisplayName <- params$displayName\ncellAnnot <- params$cellAnnot\ncellAnnotLabel <- params$cellAnnotLabel\nexactMatch <- params$exactMatch\nmoduleFileName <- params$moduleFileName\npdf <- params$pdf\nshowSession <- params$showSession\n\ncellAnnotFinal <- NULL\nplotLabels <- c()\nif (length(cellAnnot) > 0) {\n  cellAnnotFinal <- c(cellAnnotFinal, cellAnnot)\n  plotLabels <- c(plotLabels, rep(FALSE, length(cellAnnot)))\n}\nif (length(cellAnnotLabel) > 0) {\n  cellAnnotFinal <- c(cellAnnotFinal, cellAnnotLabel)\n  plotLabels <- c(plotLabels, rep(TRUE, length(cellAnnotLabel)))\n}\n\nif (!is.null(cellAnnotFinal)) {\n  if (!all(cellAnnotFinal %in% colnames(colData(altExp(sce,\n                                                       e = altExpName))))) {\n    s <-\n      setdiff(cellAnnotFinal, colnames(colData(altExp(sce, e = altExpName))))\n    stop(\n      \"The following items in 'cellAnnot' or 'cellAnnotLabel' were not found \",\n      \"in the colData of the object: \",\n      paste0(s, \",\")\n    )\n  }\n}\n\nL <- max(as.integer(celdaModules(sce)))\nK <- max(as.integer(celdaClusters(sce)))\n\n# Define tab levels\ntab3 <- \"### %s {-}\n\"\ntab4 <- \"#### %s {-}\n\"\nspace <- \"\n\n\"\n\nmarkerHeight <- 9\nif (!is.null(features)) {\n  markerHeight <- max(9, 3 * (length(features) / 3))\n}\n\ndev <- ifelse(isTRUE(pdf), c(\"png\", \"pdf\"), c(\"png\"))\nopts_chunk$set(\n  echo = TRUE,\n  cache = FALSE,\n  cache.lazy = FALSE,\n  cache.comments = FALSE,\n  fig.align = \"center\",\n  fig.keep = \"all\",\n  dev = dev\n)\n```\n\n\n\n\n## Visualization of cells in 2-D embeddings {.tabset .tabset-fade}\nReduced dimensional 2-D plots created by algorithms such as tSNE and UMAP are useful for visualizing the relationship between cells. Each point on the plot represents a single cell. Cells closer together on the plot have more similar expression profiles across all genes. The tabs below show the `r reducedDimName` dimensions colored by different variables. The *Cluster* tab colors cells by the `r K` subpopulation labels identified by celda_CG, The *Sample Labels* tab colors cells by the sample label supplied to celda_CG. If no sample label was supplied to celda_CG, then all cells will be the same color. The *Cell Annotations* tab contains colors points by other pre-specified cell-level annotations.\n\n### Clusters\n```{r celda_clusters}\nplotDimReduceCluster(sce, reducedDimName = reducedDimName, labelClusters = TRUE)\n```\n\n### Sample Labels\n```{r celda_samples}\nplotSCEDimReduceColData(\n  altExp(sce, altExpName),\n  reducedDimName = reducedDimName,\n  colorBy = \"celda_sample_label\",\n  labelClusters = FALSE,\n  dotSize = 0.5\n)\n```\n\n\n### Cell Annotations {.tabset .tabset-fade}\n\n```{r celda_cellAnnot, results = \"asis\"}\nif (!is.null(cellAnnotFinal)) {\n  for (i in seq_along(cellAnnotFinal)) {\n    cat(sprintf(tab4, cellAnnotFinal[i]))\n\n    if(isTRUE(plotLabels[i])) {\n      conditionClass <- \"factor\"  \n    } else {\n      conditionClass <- NULL\n    }\n\n    print(\n      plotSCEDimReduceColData(\n        altExp(sce, altExpName),\n        colorBy = cellAnnotFinal[i],\n        conditionClass = conditionClass,\n        reducedDim = reducedDimName,\n        labelClusters = plotLabels[i],\n        dotSize = 0.5\n      )\n    )\n    cat(space)\n  }\n} else {\n  message(\n    \"No cell annotations are displayed. To plot cell annotations in this \",\n    \"section, you can pass the desired variables from the `colData` in the \",\n    \"SingleCellExperiment object via the 'cellAnnot' or 'cellAnnotLabel' \",\n    \"parameters.\"\n  )\n}\n```\n\n<br><br>\n\n## Modules {.tabset .tabset-fade}\nCelda performs bi-clustering of features into modules and cells into subpopulations.  Modules are groups of genes that are co-expressed across cells. The *Module Overview* tab contains the probabilities and heatmaps for each module. Module probability plots will color cells by the probability of each module on a 2-D embedding plot. Module heatmaps show the relative expression for the features in a module across the cells. Cells within the heatmap will be ordered from the lowest to highest probability of the module. The *Module Table* tab contains a complete table of all features in each module. \n\n### Module Overview {.tabset .tabset-fade}\n\nUse the tabs to select modules ranging from 1 to `r L`. Module probabilities on the 2-D embedding are scaled to range between 0 and 1. Each column on the heatmap represents a cell and each row represents a feature. Expression values for each feature are z-scored normalized across all cells after normalization. Red represents higher relative expression and blue represents lower relative expression. All cells are shown in the heatmap on the left. Only the top 100 cells with the lowest module probability and the 100 cells with the highest module probability are shown in the heatmap on the right. The column color bar displays the population assignment for each cell. \n\n```{r celda_module_heatmaps, results = \"asis\", fig.height = 15, fig.width = 10}\np2 <- moduleHeatmap(\n  sce,\n  topCells = NULL,\n  displayName = displayName,\n  moduleLabel = \"All cells\",\n  useRaster = TRUE,\n  returnAsList = TRUE\n)\np3 <- moduleHeatmap(\n  sce,\n  topCells = 100,\n  displayName = displayName,\n  moduleLabel = \"Top 100 cells\",\n  useRaster = TRUE,\n  returnAsList = TRUE\n)\n\nfig.list <- list()\nfor (i in seq_len(L)) {\n  p1 <- plotDimReduceModule(\n    sce,\n    reducedDimName = reducedDimName,\n    useAssay = useAssay,\n    altExpName = altExpName,\n    modules = i\n  )\n  # p2 <- moduleHeatmap(\n  #   sce,\n  #   featureModule = i,\n  #   topCells = NULL,\n  #   displayName = displayName,\n  #   moduleLabel = \"All cells\",\n  #   useRaster = TRUE\n  # )\n  # p3 <- moduleHeatmap(\n  #   sce,\n  #   featureModule = i,\n  #   topCells = 100,\n  #   displayName = displayName,\n  #   moduleLabel = \"Top 100 cells\",\n  #   useRaster = TRUE\n  # )\n\n  fig <- multi_panel_figure(rows = 2,\n                            columns = 2,\n                            figure_name = paste0(\"fig\", i))\n\n  fig <- fill_panel(fig,\n                    p1,\n                    row = 1,\n                    column = 1:2,\n                    label = \"\")\n  fig <- fill_panel(fig,\n                    p2[[i]],\n                    row = 2,\n                    column = 1,\n                    label = \"\")\n  fig <- fill_panel(fig,\n                    p3[[i]],\n                    row = 2,\n                    column = 2,\n                    label = \"\")\n  fig.list[[i]] <- fig\n}\nfor (i in seq_len(L)) {\n  cat(sprintf(tab4, paste0(\"L\", i)))\n  print(fig.list[[i]])\n  cat(space)\n}\n```\n\n### Module Probability Summary {.tabset .tabset-fade}\n\nCelda orders modules by hierarchical clustering and so modules with similar numbers will have more somewhat more similar expression patterns across cells. Module probability plots are shown for groups of modules in each tab to allow for a quick exploration of these patterns across cells. \n\n```{r celda_module_tabs, results = \"asis\", fig.height = 9, fig.width = 10}\ngrids <- seq(0, L, by = 16)\nif (tail(grids, 1) != L) {\n  grids <- c(grids, L)\n}\n\nfor (i in seq.int(1, length(grids) - 1)) {\n  modules <- seq(grids[i] + 1, grids[i + 1])\n  if (length(modules) > 1) {\n    label <- paste0(\"L\", modules[1], \"-\", \"L\", modules[length(modules)])\n  } else {\n    label <- paste0(\"L\", modules[1])\n  }\n  cat(sprintf(tab4, label))\n  print(\n    plotDimReduceModule(\n      sce,\n      reducedDimName = reducedDimName,\n      useAssay = useAssay,\n      altExpName = altExpName,\n      ncol = 4,\n      modules = modules\n    )\n  )\n  cat(space)\n}\n```\n\n\n### Module Table\nThis section displays a table of features in each module and can be used as a quick way to lookup features of interest. The features within each module are ordered from those with highest expression at the top to those with lower expression at the bottom (same as in the heatmaps in the previous tab).\n\n```{r celda_modules_table}\ntable <- featureModuleTable(\n    sce,\n    useAssay = useAssay,\n    altExpName = altExpName,\n    displayName = displayName\n  )\nkable(table, style = \"html\", row.names = FALSE) %>%\n  kable_styling(bootstrap_options = \"striped\") %>%\n  scroll_box(width = \"100%\", height = \"800px\")\n\nif (!is.null(moduleFileName)) {\n  featureModuleTable(\n    sce,\n    useAssay = useAssay,\n    altExpName = altExpName,\n    displayName = displayName,\n    outputFile = moduleFileName\n  )\n}\n```\n\n<br><br>\n\n## Expression of pre-selected markers {.tabset .tabset-fade}\nRelative expression profiles are shown for features that match: **`r features`**. The parameter `exactMatch` is set to  ```r exactMatch```. If this parameter was set to ```FALSE```, then  additional features that contain the name of any marker may also be shown.\n\n```{r plot_markers, fig.height = markerHeight, fig.width = 12}\nif (!is.null(features)) {\n  ix <- retrieveSCEIndex(\n    inSCE = sce,\n    IDs = features,\n    axis = \"row\",\n    by = displayName,\n    exactMatch = exactMatch\n  )\n  if (length(ix) > 0) {\n    print(\n      plotDimReduceFeature(\n        sce,\n        reducedDimName = \"celda_UMAP\",\n        features = features,\n        displayName = displayName,\n        colorHigh = \"red\",\n        colorMid = \"grey\",\n        colorLow = \"blue\",\n        ncol = 3\n      )\n    )\n  } else {\n    message(\"No matching markers were found.\")\n  }\n} else {\n  message(\"No features were supplied.\")\n}\n```\n\n\n## Overview Heatmaps {.tabset}\nOverview heatmaps can be used to visualize the relationship between modules and cell populations at high level.\n\n<br><br>\n\n### Probability Map\nThe probability matrix on the left contains the probability of each module within each cell subpopulation. This matrix can be used to gain insights into the absolute abundance of each module within a cell subpopulation. Modules with higher probability have a higher overall expression level compared to other modules within the same cell population. The relative probability heatmap on the right is produced by taking the z-score of the module probabilities across cell subpopulations. Examining the relative abundance can be useful for finding modules that exhibit specific patterns across cell populations even if they have an overall lower absolute probability compared to other modules.\n```{r celda_probability_map, echo = TRUE, eval = TRUE, fig.height = 20, fig.width = 10}\nprint(celdaProbabilityMap(sce))\n```\n\n## Session Information {.unnumbered}\n```{r session, eval = showSession, echo = showSession}\nsessionInfo()\n```\n\n"
  },
  {
    "path": "inst/rmarkdown/CeldaCG_Run.Rmd",
    "content": "---\ntitle: \"Celda_CG Run\"\ndate: \"`r format(Sys.time(), '%B %d, %Y')`\"\noutput: \n html_document:\n     toc: true\n     toc_float: true\n     number_sections: true\n     theme: cosmo\n     code_folding: hide\nparams:\n  sce: sce\n  L: L\n  K: K\n  sampleLabel: sampleLabel\n  altExpName: altExpName\n  useAssay: useAssay\n  initialL: initialL\n  maxL: maxL\n  initialK: initialK\n  maxK: maxK\n  minCell: minCell\n  minCount: minCount\n  maxFeatures: maxFeatures\n  sceFile: sceFile\n  showSession: showSession\n  pdf: pdf\n---\n\n\n# Introduction\n[Celda](https://github.com/campbio/celda) package (Cellular Latent Dirichlet Allocation) performs co-clustering of features into modules and cells into subpopulations using count data generated by single-cell genomic platforms. The results can then used to explore the different combination of modules that define each cell population.  \n\n# Run celda_CG\n\n## Setup\nThe following code loads required libraries, reads in parameters, checks input variables, and sets up display options for the **Celda_CG Run** report.\n```{r run_setup}\nrequire(singleCellTK)\nrequire(celda)\nrequire(knitr)\nrequire(gridExtra)\nrequire(ggplot2)\n\nsce <- params$sce\nL <- params$L\nK <- params$K\nsampleName <- params$sampleName\naltExpName <- params$altExpName\nuseAssay <- params$useAssay\ninitialL <- params$initialL\nmaxL <- params$maxL\ninitialK <- params$initialK\nmaxK <- params$maxK\nminCell <- params$minCell\nminCount <- params$minCount\nsceFile <- params$sceFile\nmaxFeatures <- params$maxFeatures\npdf <- params$pdf\nshowSession <- params$showSession\n\n# Set up Rmarkdown variables\ntab3 <- \"### %s {-}\n\"\ntab4 <- \"#### %s {-}\n\"\nspace <- \"\n\n\"\n\ndev <- ifelse(isTRUE(pdf), c(\"png\"), c(\"png\", \"pdf\"))\nknitr::opts_chunk$set(\n  echo = TRUE,\n  cache = FALSE,\n  cache.lazy = FALSE,\n  # don't do lazy-loading for big objects\n  cache.comments = FALSE,\n  fig.align = \"center\",\n  fig.keep = \"all\",\n  dev = dev\n)\n```\n\n\n## Selection of features\nBefore clustering, features that do not have at least `r minCount` counts in at least `r minCell` cells are excluded. If the number of features is more than `r maxFeatures`, then Seurat's VST function is used to select the `r maxFeatures` most variable features. While Celda can handle features with many zero counts, lowering the number of features can reduce computational time.\n```{r feature_select, fig.height = 9, fig.width = 18}\n# Select features with minimum counts across a minimum number of cells\nsce <- selectFeatures(\n  sce,\n  minCount = minCount,\n  minCell = minCell,\n  altExpName = altExpName,\n  useAssay = useAssay\n)\n\n# Use Seurat to find highly variable features if the number of rows is still\n# more than maxFeatures\nvarFilter <-\n  ifelse(nrow(altExp(sce, altExpName)) > maxFeatures, TRUE, FALSE)\nif (varFilter) {\n  temp.sce <- sce\n  temp.sce <-\n    seuratFindHVG(inSCE = temp.sce, useAssay = useAssay)\n  o <-\n    head(\n      order(\n        rowData(temp.sce)$seurat_variableFeatures_vst_varianceStandardized,\n        decreasing = TRUE\n      ),\n      n = maxFeatures\n    )\n  altExp(sce, altExpName) <-\n    subsetSCERows(temp.sce,\n                  index = o,\n                  returnAsAltExp = FALSE)\n}\n```\n\n## Determining the number of modules (L)\nTwo stepwise splitting procedures are implemented in celda to help determine the number of modules (L) and the number of cell populations (K), respectively. The ```recursiveSplitModule``` function fits different celda models for a range of L values between `r initialL` to `r maxL`. The first model is fit with ```r paste0(\"L = \", initialL)```. Then the `celda_G` model is used to split each module into two new modules and the likelihood is re-calculated. The split that produced the best overall likelihood out of all splits is used for the next model with `L+1` modules. Perplexity can be used as a measure of \"goodness of fit\" for discrete Bayesian models. The perplexity is calculated for each choice of L. The Rate of Perplexity Change (RPC) can be used to determine a better \"elbow\" in the perplexity plot. The elbow represents a dramatic shift in the amount that the perplexity decreases with each new module and is a good place to start looking at possible choices of ```L```. Note that sometimes going beyond the elbow can be helpful if certain modules should be further split up after visual inspection.\n\n```{r module_split, fig.height = 9, fig.width = 18}\n# Run recursiveModuleSplit to identify modules for different L\nmoduleSplit <-\n  recursiveSplitModule(\n    sce,\n    initialL = initialL,\n    maxL = maxL,\n    sampleLabel = sampleLabel,\n    altExpName = altExpName,\n    useAssay = useAssay\n  )\n\n# Plot perplexity to help choose L\nsep <- ifelse(maxL > 100, 10, 5)\np1 <-\n  plotGridSearchPerplexity(moduleSplit, altExpName = altExpName, sep = sep)\np2 <- plotRPC(moduleSplit, altExpName = altExpName,  sep = sep)\ngrid.arrange(p1, p2,  ncol = 2)\n```\n\n\n## Determining the number of cell populations (K)\nThe ```recursiveSplitCell``` function fits different celda models for a range of ```K``` values from `r initialK` to `r maxK`. The number of modules is set to ```L``` and the module labels from the ```recursiveSplitModule``` output are used for initialization. Similarly, the first model is fit with ```r paste0(\"K = \", initialK)```. Then the `celda_C` model is used to split each cell population into two new cell populations and the likelihood is re-calculated. The split that produced the best overall likelihood out of all splits is used for the next model with `K+1` cell populations. Perplexity and RPC are calculated as described in the previous section. The elbow can be used as a good starting point for possible choices of ```K```. Lastly, the final model is selected and the modules and cells are reordered using hierarchical clustering so that more similar modules and cell populations will have more similar values of L and K, respectively. Different choices for ```K``` are also visualized in reduced dimensional plots in the next section.\n\n```{r cell_split}\n# Select number of gene modules\nmoduleSplitSelect <-\n  subsetCeldaList(moduleSplit, params = list(L = L))\ninitial.modules <- celdaModules(moduleSplitSelect)\n\n# Split cell modules\ncellSplit <-\n  recursiveSplitCell(\n    sce,\n    initialK = initialK,\n    maxK = maxK,\n    yInit = initial.modules,\n    sampleLabel = sampleLabel,\n    altExpName = altExpName,\n    useAssay = useAssay,\n    reorder = FALSE)\n\n# Show results of clustering genes (perplexity plot)\np3 <-\n  plotGridSearchPerplexity(cellSplit, altExpName = altExpName, sep = 5) +\n  theme(legend.position = \"bottom\")\np4 <- plotRPC(cellSplit, altExpName = altExpName, sep = 5) +\n  theme(legend.position = \"bottom\")\ngrid.arrange(p3, p4,  ncol = 2)\n\n# Select the final model and reorder L/K values\nsce <- subsetCeldaList(cellSplit, params = list(K = K))\nsce <- reorderCelda(sce)\n```\n\n\n## Dimensionality Reduction {.tabset .tabset-fade}\nReduced dimensional 2-D plots created by algorithms such as tSNE and UMAP are useful for visualizing the relationship between cells. Each point on the plot represents a single cell. Cells closer together on the plot have more similar expression profiles across all genes. The following tSNEs and UMAPs are colored by different celda models with different choices of ```K```. This plots can be used to help select a final solution.\n\n\n### tSNE {.tabset .tabset-fade}\n```{r dimreduce_tsne, results = \"asis\"}\nsce <- celdaTsne(sce, useAssay = useAssay, altExpName = altExpName)\ntsne <- reducedDim(altExp(sce, altExpName), \"celda_tSNE\")\nfor (i in seq.int(initialK, maxK)) {\n  cat(sprintf(tab4, paste0(\"K = \", i)))\n  sce.temp <- subsetCeldaList(cellSplit, params = list(K = i))\n  print(\n    plotDimReduceCluster(\n      celdaClusters(sce.temp),\n      dim1 = tsne[, 1],\n      dim2 = tsne[, 2],\n      labelClusters = TRUE\n    )\n  )\n  cat(space)\n}\n```\n\n\n### UMAP {.tabset .tabset-fade}\n```{r dimreduce_umap, results = \"asis\"}\nsce <- celdaUmap(sce, useAssay = useAssay, altExpName = altExpName)\numap <- reducedDim(altExp(sce, altExpName), \"celda_UMAP\")\nfor (i in seq.int(initialK, maxK)) {\n  cat(sprintf(tab4, paste0(\"K = \", i)))\n  sce.temp <- subsetCeldaList(cellSplit, params = list(K = i))\n  print(\n    plotDimReduceCluster(\n      celdaClusters(sce.temp),\n      dim1 = umap[, 1],\n      dim2 = umap[, 2],\n      labelClusters = TRUE\n    )\n  )\n  cat(space)\n}\n```\n\n\n## Save the final model\nThe SCE object with the final celda model will be saved to the file: ```r basename(sceFile)```.\n```{r saving}\nif (!is.null(sceFile)) {\n  saveRDS(sce, sceFile)\n}\n```\n\n\n## Methods Summary\nCo-clustering of features into modules and cells into subpopulations was performed with the [celda](https://www.biorxiv.org/content/10.1101/2020.11.16.373274v2) package using the ```celda_CG``` model. Features that did not have at least `r minCount` counts in at least `r minCell` cells were excluded in the analysis. `r if(isTRUE(varFilter)) paste0(\"The top \", maxFeatures, \" variable features were selected with the Seurat VST method using the singleCellTK package.\")` The number of modules was identified using the ```recursiveSplitModule``` function with ```r paste0(\"initialL = \", initialL)``` and ```r paste0(\"maxL = \", maxL)```. The number of cell populations was identified using the ```recursiveSplitCell``` function with  ```r paste0(\"initialK = \", initialK)``` and ```r paste0(\"maxK = \", maxK)```. Final values of ```r paste0(\"L = \", L)```  and ```r paste0(\"K = \", K)``` were chosen for final analysis based on the curve for the [Rate of Perplexity Change](https://bmcbioinformatics.biomedcentral.com/articles/10.1186/1471-2105-16-S13-S8). [UMAPs](https://arxiv.org/abs/1602.00370) were generated using the ```celdaUmap``` function. [tSNEs](https://lvdmaaten.github.io/publications/papers/JMLR_2008.pdf) were generated with the ```celdaTsne``` function.\n\n\n## Session Information\n```{r session_info, eval = showSession}\nsessionInfo()\n```\n\n\n"
  },
  {
    "path": "man/appendCeldaList.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/misc.R\n\\name{appendCeldaList}\n\\alias{appendCeldaList}\n\\title{Append two celdaList objects}\n\\usage{\nappendCeldaList(list1, list2)\n}\n\\arguments{\n\\item{list1}{A celda_list object}\n\n\\item{list2}{A celda_list object to be joined with list_1}\n}\n\\value{\nA celdaList object. This object contains all resList entries and\n runParam records from both lists.\n}\n\\description{\nReturns a single celdaList representing the combination of two\n provided celdaList objects.\n}\n\\examples{\ndata(celdaCGGridSearchRes)\nappendedList <- appendCeldaList(\n  celdaCGGridSearchRes,\n  celdaCGGridSearchRes\n)\n}\n"
  },
  {
    "path": "man/availableModels.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/data.R\n\\docType{data}\n\\name{availableModels}\n\\alias{availableModels}\n\\title{available models}\n\\format{\nAn object of class \\code{character} of length 3.\n}\n\\usage{\navailableModels\n}\n\\description{\navailable models\n}\n\\keyword{datasets}\n"
  },
  {
    "path": "man/bestLogLikelihood.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/loglikelihood.R\n\\name{bestLogLikelihood}\n\\alias{bestLogLikelihood}\n\\alias{bestLogLikelihood,SingleCellExperiment-method}\n\\alias{bestLogLikelihood,celdaModel-method}\n\\title{Get the log-likelihood}\n\\usage{\nbestLogLikelihood(x, altExpName = \"featureSubset\")\n\n\\S4method{bestLogLikelihood}{SingleCellExperiment}(x, altExpName = \"featureSubset\")\n\n\\S4method{bestLogLikelihood}{celdaModel}(x)\n}\n\\arguments{\n\\item{x}{A \\linkS4class{SingleCellExperiment} object\nreturned by \\link{celda_C}, \\link{celda_G}, or \\link{celda_CG}, or a celda\nmodel object.}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n}\n\\value{\nNumeric. The log-likelihood at the final step of Gibbs sampling used\n to generate the model.\n}\n\\description{\nRetrieves the final log-likelihood from all iterations of Gibbs\n sampling used to generate a celdaModel.\n}\n\\examples{\ndata(sceCeldaCG)\nbestLogLikelihood(sceCeldaCG)\ndata(celdaCGMod)\nbestLogLikelihood(celdaCGMod)\n}\n"
  },
  {
    "path": "man/celda.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/misc.R\n\\name{celda}\n\\alias{celda}\n\\title{Celda models}\n\\usage{\ncelda()\n}\n\\value{\nNone\n}\n\\description{\nList of available Celda models with correpsonding descriptions.\n}\n\\examples{\ncelda()\n}\n"
  },
  {
    "path": "man/celdaCGGridSearchRes.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/data.R\n\\docType{data}\n\\name{celdaCGGridSearchRes}\n\\alias{celdaCGGridSearchRes}\n\\title{celdaCGGridSearchRes}\n\\format{\nAn object as returned from old celdaGridSearch()\n}\n\\usage{\nceldaCGGridSearchRes\n}\n\\description{\nExample results of old celdaGridSearch on celdaCGSim\n}\n\\keyword{datasets}\n"
  },
  {
    "path": "man/celdaCGMod.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/data.R\n\\docType{data}\n\\name{celdaCGMod}\n\\alias{celdaCGMod}\n\\title{celdaCGmod}\n\\format{\nA celda_CG object\n}\n\\usage{\nceldaCGMod\n}\n\\description{\ncelda_CG model object generated from \\code{celdaCGSim} using\n old \\code{celda_CG} function.\n}\n\\keyword{datasets}\n"
  },
  {
    "path": "man/celdaCGSim.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/data.R\n\\docType{data}\n\\name{celdaCGSim}\n\\alias{celdaCGSim}\n\\title{celdaCGSim}\n\\format{\nA list of counts and properties as returned from old simulateCells().\n}\n\\usage{\nceldaCGSim\n}\n\\description{\nAn deprecated example of simulated count matrix from the\n celda_CG model.\n}\n\\keyword{datasets}\n"
  },
  {
    "path": "man/celdaCMod.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/data.R\n\\docType{data}\n\\name{celdaCMod}\n\\alias{celdaCMod}\n\\title{celdaCMod}\n\\format{\nA celda_C object\n}\n\\usage{\nceldaCMod\n}\n\\description{\nOld celda_C results generated from celdaCSim\n}\n\\keyword{datasets}\n"
  },
  {
    "path": "man/celdaCSim.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/data.R\n\\docType{data}\n\\name{celdaCSim}\n\\alias{celdaCSim}\n\\title{celdaCSim}\n\\format{\nA list of counts and properties as returned from old simulateCells().\n}\n\\usage{\nceldaCSim\n}\n\\description{\nAn old example simulated count matrix from the celda_C model.\n}\n\\keyword{datasets}\n"
  },
  {
    "path": "man/celdaClusters.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/accessors.R\n\\name{celdaClusters}\n\\alias{celdaClusters}\n\\alias{celdaClusters,SingleCellExperiment-method}\n\\alias{celdaClusters,celdaModel-method}\n\\alias{celdaClusters<-}\n\\alias{celdaClusters<-,SingleCellExperiment-method}\n\\title{Get or set the cell cluster labels from a celda\n \\linkS4class{SingleCellExperiment} object or celda model\n object.}\n\\usage{\nceldaClusters(x, altExpName = \"featureSubset\")\n\n\\S4method{celdaClusters}{SingleCellExperiment}(x, altExpName = \"featureSubset\")\n\n\\S4method{celdaClusters}{celdaModel}(x)\n\nceldaClusters(x, altExpName = \"featureSubset\") <- value\n\n\\S4method{celdaClusters}{SingleCellExperiment}(x, altExpName = \"featureSubset\") <- value\n}\n\\arguments{\n\\item{x}{Can be one of\n\\itemize{\n\\item A \\linkS4class{SingleCellExperiment} object returned by\n\\link{celda_C}, or \\link{celda_CG}, with the matrix\nlocated in the \\code{useAssay} assay slot. The\na \\link{altExp} slot with name \\code{altExpName} will\nbe used. Rows represent features and columns represent cells.\n\\item Celda model object.}}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n\n\\item{value}{Character vector of cell cluster labels for replacements. Works\nonly if \\code{x} is a \\linkS4class{SingleCellExperiment} object.}\n}\n\\value{\nOne of\n\\itemize{\n \\item Character vector if \\code{x} is a\n \\linkS4class{SingleCellExperiment} object.\n Contains cell cluster labels for each cell in x.\n \\item List if \\code{x} is a celda model object. Contains cell cluster\n labels (for celda_C and celdaCG\n Models) and/or feature module labels (for celda_G and celdaCG Models).}\n}\n\\description{\nReturn or set the cell cluster labels determined\n by \\link{celda_C} or \\link{celda_CG} models.\n}\n\\examples{\ndata(sceCeldaCG)\nceldaClusters(sceCeldaCG)\ndata(celdaCGMod)\nceldaClusters(celdaCGMod)\n}\n"
  },
  {
    "path": "man/celdaGMod.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/data.R\n\\docType{data}\n\\name{celdaGMod}\n\\alias{celdaGMod}\n\\title{celdaGMod}\n\\format{\nA celda_G object\n}\n\\usage{\nceldaGMod\n}\n\\description{\nOld celda_G results generated from celdaGsim\n}\n\\keyword{datasets}\n"
  },
  {
    "path": "man/celdaGSim.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/data.R\n\\docType{data}\n\\name{celdaGSim}\n\\alias{celdaGSim}\n\\title{celdaGSim}\n\\format{\nA list of counts and properties as returned from old simulateCells()\n}\n\\usage{\nceldaGSim\n}\n\\description{\nAn old example simulated count matrix from the celda_G model.\n}\n\\keyword{datasets}\n"
  },
  {
    "path": "man/celdaGridSearch.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/celdaGridSearch.R\n\\name{celdaGridSearch}\n\\alias{celdaGridSearch}\n\\alias{celdaGridSearch,SingleCellExperiment-method}\n\\alias{celdaGridSearch,matrix-method}\n\\title{Run Celda in parallel with multiple parameters}\n\\usage{\nceldaGridSearch(\n  x,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  model,\n  paramsTest,\n  paramsFixed = NULL,\n  maxIter = 200,\n  nchains = 3,\n  cores = 1,\n  bestOnly = TRUE,\n  seed = 12345,\n  perplexity = TRUE,\n  verbose = TRUE,\n  logfilePrefix = \"Celda\"\n)\n\n\\S4method{celdaGridSearch}{SingleCellExperiment}(\n  x,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  model,\n  paramsTest,\n  paramsFixed = NULL,\n  maxIter = 200,\n  nchains = 3,\n  cores = 1,\n  bestOnly = TRUE,\n  seed = 12345,\n  perplexity = TRUE,\n  verbose = TRUE,\n  logfilePrefix = \"Celda\"\n)\n\n\\S4method{celdaGridSearch}{matrix}(\n  x,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  model,\n  paramsTest,\n  paramsFixed = NULL,\n  maxIter = 200,\n  nchains = 3,\n  cores = 1,\n  bestOnly = TRUE,\n  seed = 12345,\n  perplexity = TRUE,\n  verbose = TRUE,\n  logfilePrefix = \"Celda\"\n)\n}\n\\arguments{\n\\item{x}{A numeric \\link{matrix} of counts or a\n\\linkS4class{SingleCellExperiment}\nwith the matrix located in the assay slot under \\code{useAssay}.\nRows represent features and columns represent cells.}\n\n\\item{useAssay}{A string specifying the name of the\n\\link{assay} slot to use. Default \"counts\".}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n\n\\item{model}{Celda model. Options available in \\link{availableModels}.}\n\n\\item{paramsTest}{List. A list denoting the combinations of parameters to\nrun in a celda model. For example,\n\\code{list(K = seq(5, 10), L = seq(15, 20))}\nwill run all combinations of K from 5 to 10 and L from 15 to 20 in model\n\\link{celda_CG}.}\n\n\\item{paramsFixed}{List. A list denoting additional parameters to use in\neach celda model. Default NULL.}\n\n\\item{maxIter}{Integer. Maximum number of iterations of sampling to\nperform. Default 200.}\n\n\\item{nchains}{Integer. Number of random cluster initializations. Default 3.}\n\n\\item{cores}{Integer. The number of cores to use for parallel estimation of\nchains. Default 1.}\n\n\\item{bestOnly}{Logical. Whether to return only the chain with the highest\nlog likelihood per combination of parameters or return all chains. Default\nTRUE.}\n\n\\item{seed}{Integer. Passed to \\link[withr]{with_seed}. For reproducibility,\na default value of 12345 is used. Seed values\n\\code{seq(seed, (seed + nchains - 1))} will be supplied to each chain in\n\\code{nchains}. If NULL, no calls to\n\\link[withr]{with_seed} are made.}\n\n\\item{perplexity}{Logical. Whether to calculate perplexity for each model.\nIf FALSE, then perplexity can be calculated later with\n\\link{resamplePerplexity}. Default TRUE.}\n\n\\item{verbose}{Logical. Whether to print log messages during celda chain\nexecution. Default TRUE.}\n\n\\item{logfilePrefix}{Character. Prefix for log files from worker threads\nand main process. Default \"Celda\".}\n}\n\\value{\nA \\linkS4class{SingleCellExperiment} object. Function\n parameter settings and celda model results are stored in the\n \\link{metadata} \\code{\"celda_grid_search\"} slot.\n}\n\\description{\nRun Celda with different combinations of parameters and\n multiple chains in parallel. The variable \\link{availableModels} contains\n the potential models that can be utilized. Different parameters to be tested\n should be stored in a list and passed to the argument \\code{paramsTest}.\n Fixed parameters to be used in all models, such as \\code{sampleLabel}, can\n be passed as a list to the argument \\code{paramsFixed}. When\n \\code{verbose = TRUE}, output from each chain will be sent to a log file\n but not be displayed in \\code{stdout}.\n}\n\\examples{\n\\dontrun{\ndata(celdaCGSim)\n## Run various combinations of parameters with 'celdaGridSearch'\nceldaCGGridSearchRes <- celdaGridSearch(celdaCGSim$counts,\n  model = \"celda_CG\",\n  paramsTest = list(K = seq(4, 6), L = seq(9, 11)),\n  paramsFixed = list(sampleLabel = celdaCGSim$sampleLabel),\n  bestOnly = TRUE,\n  nchains = 1,\n  cores = 1)\n}\n}\n\\seealso{\n\\link{celda_G} for feature clustering, \\link{celda_C} for\n clustering of cells, and \\link{celda_CG} for simultaneous clustering of\n features and cells. \\link{subsetCeldaList} can subset the \\code{celdaList}\n object. \\link{selectBestModel} can get the best model for each combination\n of parameters.\n}\n"
  },
  {
    "path": "man/celdaHeatmap.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/celda_heatmap.R\n\\name{celdaHeatmap}\n\\alias{celdaHeatmap}\n\\alias{celdaHeatmap,SingleCellExperiment-method}\n\\title{Plot celda Heatmap}\n\\usage{\nceldaHeatmap(\n  sce,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  featureIx = NULL,\n  nfeatures = 25,\n  ...\n)\n\n\\S4method{celdaHeatmap}{SingleCellExperiment}(\n  sce,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  featureIx = NULL,\n  nfeatures = 25,\n  ...\n)\n}\n\\arguments{\n\\item{sce}{A \\link[SingleCellExperiment]{SingleCellExperiment} object\nreturned by \\link{celda_C}, \\link{celda_G}, or \\link{celda_CG}.}\n\n\\item{useAssay}{A string specifying which \\link{assay}\nslot to use. Default \"counts\".}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n\n\\item{featureIx}{Integer vector. Select features for display in heatmap. If\nNULL, no subsetting will be performed. Default NULL. \\strong{Only used for\n\\code{sce} containing celda_C model result returned by \\link{celda_C}.}}\n\n\\item{nfeatures}{Integer. Maximum number of features to select for each\ngene module. Default 25. \\strong{Only used for \\code{sce} containing\ncelda_CG or celda_G model results returned by \\link{celda_CG} or\n\\link{celda_G}.}}\n\n\\item{...}{Additional parameters passed to \\link{plotHeatmap}.}\n}\n\\value{\nlist A list containing dendrogram information and the heatmap grob\n}\n\\description{\nRender a stylable heatmap of count data based on celda\n clustering results.\n}\n\\examples{\ndata(sceCeldaCG)\nceldaHeatmap(sceCeldaCG)\n}\n\\seealso{\n`celdaTsne()` for generating 2-dimensional tSNE coordinates\n}\n"
  },
  {
    "path": "man/celdaModel.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/accessors.R\n\\name{celdaModel}\n\\alias{celdaModel}\n\\alias{celdaModel,SingleCellExperiment-method}\n\\title{Get celda model from a celda\n \\link[SingleCellExperiment]{SingleCellExperiment} object}\n\\usage{\nceldaModel(sce, altExpName = \"featureSubset\")\n\n\\S4method{celdaModel}{SingleCellExperiment}(sce, altExpName = \"featureSubset\")\n}\n\\arguments{\n\\item{sce}{A \\link[SingleCellExperiment]{SingleCellExperiment} object\nreturned by \\link{celda_C}, \\link{celda_G}, or \\link{celda_CG}.}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n}\n\\value{\nCharacter. The celda model. Can be one of \"celda_C\", \"celda_G\", or\n \"celda_CG\".\n}\n\\description{\nReturn the celda model for \\code{sce} returned by\n \\link{celda_C}, \\link{celda_G} or \\link{celda_CG}.\n}\n\\examples{\ndata(sceCeldaCG)\nceldaModel(sceCeldaCG)\n}\n"
  },
  {
    "path": "man/celdaModules.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/accessors.R\n\\name{celdaModules}\n\\alias{celdaModules}\n\\alias{celdaModules,SingleCellExperiment-method}\n\\alias{celdaModules<-}\n\\alias{celdaModules<-,SingleCellExperiment-method}\n\\title{Get or set the feature module labels from a celda\n \\linkS4class{SingleCellExperiment} object.}\n\\usage{\nceldaModules(sce, altExpName = \"featureSubset\")\n\n\\S4method{celdaModules}{SingleCellExperiment}(sce, altExpName = \"featureSubset\")\n\nceldaModules(sce, altExpName = \"featureSubset\") <- value\n\n\\S4method{celdaModules}{SingleCellExperiment}(sce, altExpName = \"featureSubset\") <- value\n}\n\\arguments{\n\\item{sce}{A \\linkS4class{SingleCellExperiment} object returned by\n\\link{celda_G}, or \\link{celda_CG}, with the matrix\nlocated in the \\code{useAssay} assay slot.\nRows represent features and columns represent cells.}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n\n\\item{value}{Character vector of feature module labels for replacements.\nWorks only if \\code{x} is a \\linkS4class{SingleCellExperiment} object.}\n}\n\\value{\nCharacter vector. Contains feature module labels for each\n feature in x.\n}\n\\description{\nReturn or set the feature module cluster labels determined\n by \\link{celda_G} or \\link{celda_CG} models.\n}\n\\examples{\ndata(sceCeldaCG)\nceldaModules(sceCeldaCG)\n}\n"
  },
  {
    "path": "man/celdaPerplexity-celdaList-method.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/accessors.R\n\\name{celdaPerplexity,celdaList-method}\n\\alias{celdaPerplexity,celdaList-method}\n\\title{Get perplexity for every model in a celdaList}\n\\usage{\n\\S4method{celdaPerplexity}{celdaList}(celdaList)\n}\n\\arguments{\n\\item{celdaList}{An object of class celdaList.}\n}\n\\value{\nList. Contains one celdaModel object for each of the parameters\n specified in the `runParams()` of the provided celda list.\n}\n\\description{\nReturns perplexity for each model in a celdaList as calculated\n by `perplexity().`\n}\n\\examples{\ndata(celdaCGGridSearchRes)\nceldaCGGridModelPerplexities <- celdaPerplexity(celdaCGGridSearchRes)\n}\n"
  },
  {
    "path": "man/celdaPerplexity.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/accessors.R\n\\name{celdaPerplexity}\n\\alias{celdaPerplexity}\n\\title{Get perplexity for every model in a celdaList}\n\\usage{\nceldaPerplexity(celdaList)\n}\n\\arguments{\n\\item{celdaList}{An object of class celdaList.}\n}\n\\value{\nList. Contains one celdaModel object for each of the parameters\n specified in the `runParams()` of the provided celda list.\n}\n\\description{\nReturns perplexity for each model in a celdaList as calculated\n by `perplexity().`\n}\n\\examples{\ndata(celdaCGGridSearchRes)\nceldaCGGridModelPerplexities <- celdaPerplexity(celdaCGGridSearchRes)\n}\n"
  },
  {
    "path": "man/celdaProbabilityMap.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/celdaProbabilityMap.R\n\\name{celdaProbabilityMap}\n\\alias{celdaProbabilityMap}\n\\alias{celdaProbabilityMap,SingleCellExperiment-method}\n\\title{Probability map for a celda model}\n\\usage{\nceldaProbabilityMap(\n  sce,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  level = c(\"cellPopulation\", \"sample\"),\n  ncols = 100,\n  col2 = circlize::colorRamp2(c(-2, 0, 2), c(\"#1E90FF\", \"#FFFFFF\", \"#CD2626\")),\n  title1 = \"Absolute probability\",\n  title2 = \"Relative expression\",\n  showColumnNames = TRUE,\n  showRowNames = TRUE,\n  rowNamesgp = grid::gpar(fontsize = 8),\n  colNamesgp = grid::gpar(fontsize = 12),\n  clusterRows = FALSE,\n  clusterColumns = FALSE,\n  showHeatmapLegend = TRUE,\n  heatmapLegendParam = list(title = NULL, legend_height = grid::unit(6, \"cm\")),\n  ...\n)\n\n\\S4method{celdaProbabilityMap}{SingleCellExperiment}(\n  sce,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  level = c(\"cellPopulation\", \"sample\"),\n  ncols = 100,\n  col2 = circlize::colorRamp2(c(-2, 0, 2), c(\"#1E90FF\", \"#FFFFFF\", \"#CD2626\")),\n  title1 = \"Absolute probability\",\n  title2 = \"Relative expression\",\n  showColumnNames = TRUE,\n  showRowNames = TRUE,\n  rowNamesgp = grid::gpar(fontsize = 8),\n  colNamesgp = grid::gpar(fontsize = 12),\n  clusterRows = FALSE,\n  clusterColumns = FALSE,\n  showHeatmapLegend = TRUE,\n  heatmapLegendParam = list(title = NULL, legend_height = grid::unit(6, \"cm\")),\n  ...\n)\n}\n\\arguments{\n\\item{sce}{A \\link[SingleCellExperiment]{SingleCellExperiment} object\nreturned by \\link{celda_C}, \\link{celda_G}, or \\link{celda_CG}.}\n\n\\item{useAssay}{A string specifying which \\link{assay}\nslot to use. Default \"counts\".}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n\n\\item{level}{Character. One of \"cellPopulation\" or \"Sample\".\n\"cellPopulation\" will display the absolute probabilities and relative\nnormalized expression of each module in each cell population.\n\\strong{\\code{level = \"cellPopulation\"} only works for celda_CG \\code{sce}\nobjects}. \"sample\" will display the absolute probabilities and relative\nnormalized abundance of each cell population in each sample. Default\n\"cellPopulation\".}\n\n\\item{ncols}{The number of colors (>1) to be in the color palette of\nthe absolute probability heatmap.}\n\n\\item{col2}{Passed to \\code{col} argument of \\link[ComplexHeatmap]{Heatmap}.\nSet color boundaries and colors for the relative expression heatmap.}\n\n\\item{title1}{Passed to \\code{column_title} argument of\n\\link[ComplexHeatmap]{Heatmap}. Figure title for the absolute probability\nheatmap.}\n\n\\item{title2}{Passed to \\code{column_title} argument of\n\\link[ComplexHeatmap]{Heatmap}. Figure title for the relative expression\nheatmap.}\n\n\\item{showColumnNames}{Passed to \\code{show_column_names} argument of\n\\link[ComplexHeatmap]{Heatmap}. Show column names.}\n\n\\item{showRowNames}{Passed to \\code{show_row_names} argument of\n\\link[ComplexHeatmap]{Heatmap}. Show row names.}\n\n\\item{rowNamesgp}{Passed to \\code{row_names_gp} argument of\n\\link[ComplexHeatmap]{Heatmap}. Set row name font.}\n\n\\item{colNamesgp}{Passed to \\code{column_names_gp} argument of\n\\link[ComplexHeatmap]{Heatmap}. Set column name font.}\n\n\\item{clusterRows}{Passed to \\code{cluster_rows} argument of\n\\link[ComplexHeatmap]{Heatmap}. Cluster rows.}\n\n\\item{clusterColumns}{Passed to \\code{cluster_columns} argument of\n\\link[ComplexHeatmap]{Heatmap}. Cluster columns.}\n\n\\item{showHeatmapLegend}{Passed to \\code{show_heatmap_legend} argument of\n\\link[ComplexHeatmap]{Heatmap}. Show heatmap legend.}\n\n\\item{heatmapLegendParam}{Passed to \\code{heatmap_legend_param} argument of\n\\link[ComplexHeatmap]{Heatmap}. Heatmap legend parameters.}\n\n\\item{...}{Additional parameters passed to \\link[ComplexHeatmap]{Heatmap}.}\n}\n\\value{\nA \\link[ComplexHeatmap]{HeatmapList} object containing 2\n \\link[ComplexHeatmap]{Heatmap-class} objects\n}\n\\description{\nRenders probability and relative expression heatmaps to\n visualize the relationship between features and cell populations (or cell\n populations and samples).\n}\n\\examples{\ndata(sceCeldaCG)\nceldaProbabilityMap(sceCeldaCG)\n}\n\\seealso{\n\\link{celda_C} for clustering cells. \\link{celda_CG} for\n clustering features and cells\n}\n"
  },
  {
    "path": "man/celdaTsne.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/celdatSNE.R\n\\name{celdaTsne}\n\\alias{celdaTsne}\n\\alias{celdaTsne,SingleCellExperiment-method}\n\\title{t-Distributed Stochastic Neighbor Embedding (t-SNE) dimension\n reduction for celda \\code{sce} object}\n\\usage{\nceldaTsne(\n  sce,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  maxCells = NULL,\n  minClusterSize = 100,\n  initialDims = 20,\n  modules = NULL,\n  perplexity = 20,\n  maxIter = 2500,\n  normalize = \"proportion\",\n  scaleFactor = NULL,\n  transformationFun = sqrt,\n  seed = 12345\n)\n\n\\S4method{celdaTsne}{SingleCellExperiment}(\n  sce,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  maxCells = NULL,\n  minClusterSize = 100,\n  initialDims = 20,\n  modules = NULL,\n  perplexity = 20,\n  maxIter = 2500,\n  normalize = \"proportion\",\n  scaleFactor = NULL,\n  transformationFun = sqrt,\n  seed = 12345\n)\n}\n\\arguments{\n\\item{sce}{A \\linkS4class{SingleCellExperiment} object\nreturned by \\link{celda_C}, \\link{celda_G}, or \\link{celda_CG}.}\n\n\\item{useAssay}{A string specifying which \\link{assay}\nslot to use. Default \"counts\".}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n\n\\item{maxCells}{Integer. Maximum number of cells to plot. Cells will be\nrandomly subsampled if \\code{ncol(counts) > maxCells}. Larger numbers of\ncells requires more memory. If \\code{NULL}, no subsampling will be\nperformed. Default \\code{NULL}.}\n\n\\item{minClusterSize}{Integer. Do not subsample cell clusters below this\nthreshold. Default 100.}\n\n\\item{initialDims}{Integer. PCA will be used to reduce the dimensionality\nof the dataset. The top 'initialDims' principal components will be used\nfor tSNE. Default 20.}\n\n\\item{modules}{Integer vector. Determines which feature modules to use for\ntSNE. If \\code{NULL}, all modules will be used. Default \\code{NULL}.}\n\n\\item{perplexity}{Numeric. Perplexity parameter for tSNE. Default 20.}\n\n\\item{maxIter}{Integer. Maximum number of iterations in tSNE generation.\nDefault 2500.}\n\n\\item{normalize}{Character. Passed to \\link{normalizeCounts} in\nnormalization step. Divides counts by the library sizes for each\ncell. One of 'proportion', 'cpm', 'median', or 'mean'. 'proportion' uses\nthe total counts for each cell as the library size. 'cpm' divides the\nlibrary size of each cell by one million to produce counts per million.\n'median' divides the library size of each cell by the median library size\nacross all cells. 'mean' divides the library size of each cell by the mean\nlibrary size across all cells.}\n\n\\item{scaleFactor}{Numeric. Sets the scale factor for cell-level\nnormalization. This scale factor is multiplied to each cell after the\nlibrary size of each cell had been adjusted in \\code{normalize}. Default\n\\code{NULL} which means no scale factor is applied.}\n\n\\item{transformationFun}{Function. Applys a transformation such as 'sqrt',\n'log', 'log2', 'log10', or 'log1p'. If \\code{NULL}, no transformation will\nbe applied. Occurs after applying normalization and scale factor. Default\n\\code{NULL}.}\n\n\\item{seed}{Integer. Passed to \\link[withr]{with_seed}. For reproducibility,\na default value of 12345 is used. If NULL, no calls to\n\\link[withr]{with_seed} are made.}\n}\n\\value{\n\\code{sce} with t-SNE coordinates\n (columns \"celda_tSNE1\" & \"celda_tSNE2\") added to\n \\code{\\link{reducedDim}(sce, \"celda_tSNE\")}.\n}\n\\description{\nEmbeds cells in two dimensions using \\link[Rtsne]{Rtsne} based\n on a celda model. For celda_C \\code{sce} objects, PCA on the normalized\n counts is used to reduce the number of features before applying t-SNE. For\n celda_CG and celda_G \\code{sce} objects, tSNE is run on module\n probabilities to reduce the number of features instead of using PCA.\n Module probabilities are square-root transformed before applying tSNE.\n}\n\\examples{\ndata(sceCeldaCG)\ntsneRes <- celdaTsne(sceCeldaCG)\n}\n"
  },
  {
    "path": "man/celdaUmap.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/celdaUMAP.R\n\\name{celdaUmap}\n\\alias{celdaUmap}\n\\alias{celdaUmap,SingleCellExperiment-method}\n\\title{Uniform Manifold Approximation and Projection (UMAP) dimension\n reduction for celda \\code{sce} object}\n\\usage{\nceldaUmap(\n  sce,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  maxCells = NULL,\n  minClusterSize = 100,\n  modules = NULL,\n  seed = 12345,\n  nNeighbors = 30,\n  minDist = 0.75,\n  spread = 1,\n  pca = TRUE,\n  initialDims = 50,\n  normalize = \"proportion\",\n  scaleFactor = NULL,\n  transformationFun = sqrt,\n  cores = 1,\n  ...\n)\n\n\\S4method{celdaUmap}{SingleCellExperiment}(\n  sce,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  maxCells = NULL,\n  minClusterSize = 100,\n  modules = NULL,\n  seed = 12345,\n  nNeighbors = 30,\n  minDist = 0.75,\n  spread = 1,\n  pca = TRUE,\n  initialDims = 50,\n  normalize = \"proportion\",\n  scaleFactor = NULL,\n  transformationFun = sqrt,\n  cores = 1,\n  ...\n)\n}\n\\arguments{\n\\item{sce}{A \\link[SingleCellExperiment]{SingleCellExperiment} object\nreturned by \\link{celda_C}, \\link{celda_G}, or \\link{celda_CG}.}\n\n\\item{useAssay}{A string specifying which \\link{assay}\nslot to use. Default \"counts\".}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n\n\\item{maxCells}{Integer. Maximum number of cells to plot. Cells will be\nrandomly subsampled if \\code{ncol(sce) > maxCells}. Larger numbers of cells\nrequires more memory. If NULL, no subsampling will be performed.\nDefault NULL.}\n\n\\item{minClusterSize}{Integer. Do not subsample cell clusters below this\nthreshold. Default 100.}\n\n\\item{modules}{Integer vector. Determines which features modules to use for\nUMAP. If NULL, all modules will be used. Default NULL.}\n\n\\item{seed}{Integer. Passed to \\link[withr]{with_seed}. For reproducibility,\na default value of 12345 is used. If NULL, no calls to\n\\link[withr]{with_seed} are made.}\n\n\\item{nNeighbors}{The size of local neighborhood used for\nmanifold approximation. Larger values result in more global\nviews of the manifold, while smaller values result in more\nlocal data being preserved. Default 30.\nSee \\link[uwot]{umap} for more information.}\n\n\\item{minDist}{The effective minimum distance between embedded points.\nSmaller values will result in a more clustered/clumped\nembedding where nearby points on the manifold are drawn\ncloser together, while larger values will result on a more\neven dispersal of points. Default 0.75.\nSee \\link[uwot]{umap} for more information.}\n\n\\item{spread}{The effective scale of embedded points. In combination with\n\\code{min_dist}, this determines how clustered/clumped the\n embedded points are. Default 1. See \\link[uwot]{umap} for more information.}\n\n\\item{pca}{Logical. Whether to perform\ndimensionality reduction with PCA before UMAP. Only works for celda_C\n\\code{sce} objects.}\n\n\\item{initialDims}{Integer. Number of dimensions from PCA to use as\ninput in UMAP. Default 50. Only works for celda_C \\code{sce} objects.}\n\n\\item{normalize}{Character. Passed to \\link{normalizeCounts} in\nnormalization step. Divides counts by the library sizes for each\ncell. One of 'proportion', 'cpm', 'median', or 'mean'. 'proportion' uses\nthe total counts for each cell as the library size. 'cpm' divides the\nlibrary size of each cell by one million to produce counts per million.\n'median' divides the library size of each cell by the median library size\nacross all cells. 'mean' divides the library size of each cell by the mean\nlibrary size across all cells.}\n\n\\item{scaleFactor}{Numeric. Sets the scale factor for cell-level\nnormalization. This scale factor is multiplied to each cell after the\nlibrary size of each cell had been adjusted in \\code{normalize}. Default\n\\code{NULL} which means no scale factor is applied.}\n\n\\item{transformationFun}{Function. Applys a transformation such as 'sqrt',\n'log', 'log2', 'log10', or 'log1p'. If \\code{NULL}, no transformation will\nbe applied. Occurs after applying normalization and scale factor. Default\n\\code{NULL}.}\n\n\\item{cores}{Number of threads to use. Default 1.}\n\n\\item{...}{Additional parameters to pass to \\link[uwot]{umap}.}\n}\n\\value{\n\\code{sce} with UMAP coordinates\n (columns \"celda_UMAP1\" & \"celda_UMAP2\") added to\n \\code{\\link{reducedDim}(sce, \"celda_UMAP\")}.\n}\n\\description{\nEmbeds cells in two dimensions using \\link[uwot]{umap} based on\n a celda model. For celda_C \\code{sce} objects, PCA on the normalized counts\n is used to reduce the number of features before applying UMAP. For celda_CG\n \\code{sce} object, UMAP is run on module probabilities to reduce the number\n of features instead of using PCA. Module probabilities are square-root\n transformed before applying UMAP.\n}\n\\examples{\ndata(sceCeldaCG)\numapRes <- celdaUmap(sceCeldaCG)\n}\n"
  },
  {
    "path": "man/celda_C.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/celda_C.R\n\\name{celda_C}\n\\alias{celda_C}\n\\alias{celda_C,SingleCellExperiment-method}\n\\alias{celda_C,ANY-method}\n\\title{Cell clustering with Celda}\n\\usage{\ncelda_C(\n  x,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  sampleLabel = NULL,\n  K,\n  alpha = 1,\n  beta = 1,\n  algorithm = c(\"EM\", \"Gibbs\"),\n  stopIter = 10,\n  maxIter = 200,\n  splitOnIter = 10,\n  splitOnLast = TRUE,\n  seed = 12345,\n  nchains = 3,\n  zInitialize = c(\"split\", \"random\", \"predefined\"),\n  countChecksum = NULL,\n  zInit = NULL,\n  logfile = NULL,\n  verbose = TRUE\n)\n\n\\S4method{celda_C}{SingleCellExperiment}(\n  x,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  sampleLabel = NULL,\n  K,\n  alpha = 1,\n  beta = 1,\n  algorithm = c(\"EM\", \"Gibbs\"),\n  stopIter = 10,\n  maxIter = 200,\n  splitOnIter = 10,\n  splitOnLast = TRUE,\n  seed = 12345,\n  nchains = 3,\n  zInitialize = c(\"split\", \"random\", \"predefined\"),\n  countChecksum = NULL,\n  zInit = NULL,\n  logfile = NULL,\n  verbose = TRUE\n)\n\n\\S4method{celda_C}{ANY}(\n  x,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  sampleLabel = NULL,\n  K,\n  alpha = 1,\n  beta = 1,\n  algorithm = c(\"EM\", \"Gibbs\"),\n  stopIter = 10,\n  maxIter = 200,\n  splitOnIter = 10,\n  splitOnLast = TRUE,\n  seed = 12345,\n  nchains = 3,\n  zInitialize = c(\"split\", \"random\", \"predefined\"),\n  countChecksum = NULL,\n  zInit = NULL,\n  logfile = NULL,\n  verbose = TRUE\n)\n}\n\\arguments{\n\\item{x}{A \\linkS4class{SingleCellExperiment}\nwith the matrix located in the assay slot under \\code{useAssay}.\nRows represent features and columns represent cells. Alternatively,\nany matrix-like object that can be coerced to a sparse matrix of class\n\"dgCMatrix\" can be directly used as input. The matrix will automatically be\nconverted to a \\linkS4class{SingleCellExperiment} object.}\n\n\\item{useAssay}{A string specifying the name of the\n\\link{assay} slot to use. Default \"counts\".}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n\n\\item{sampleLabel}{Vector or factor. Denotes the sample label for each cell\n(column) in the count matrix.}\n\n\\item{K}{Integer. Number of cell populations.}\n\n\\item{alpha}{Numeric. Concentration parameter for Theta. Adds a pseudocount\nto each cell population in each sample. Default 1.}\n\n\\item{beta}{Numeric. Concentration parameter for Phi. Adds a pseudocount to\neach feature in each cell population. Default 1.}\n\n\\item{algorithm}{String. Algorithm to use for clustering cell subpopulations.\nOne of 'EM' or 'Gibbs'. The EM algorithm is faster, especially for larger\nnumbers of cells. However, more chains may be required to ensure a good\nsolution is found. If 'EM' is selected, then 'stopIter' will be\nautomatically set to 1. Default 'EM'.}\n\n\\item{stopIter}{Integer. Number of iterations without improvement in the\nlog likelihood to stop inference. Default 10.}\n\n\\item{maxIter}{Integer. Maximum number of iterations of Gibbs sampling or\nEM to perform. Default 200.}\n\n\\item{splitOnIter}{Integer. On every `splitOnIter` iteration, a heuristic\nwill be applied to determine if a cell population should be reassigned and\nanother cell population should be split into two clusters. To disable\nsplitting, set to -1. Default 10.}\n\n\\item{splitOnLast}{Integer. After `stopIter` iterations have been\nperformed without improvement, a heuristic will be applied to determine if\na cell population should be reassigned and another cell population should be\nsplit into two clusters. If a split occurs, then `stopIter` will be reset.\nDefault TRUE.}\n\n\\item{seed}{Integer. Passed to \\link[withr]{with_seed}. For reproducibility,\na default value of 12345 is used. If NULL, no calls to\n\\link[withr]{with_seed} are made.}\n\n\\item{nchains}{Integer. Number of random cluster initializations. Default 3.}\n\n\\item{zInitialize}{Character. One of 'random', 'split', or 'predefined'.\nWith 'random', cells are randomly assigned to a populations. With 'split',\ncells will be split into sqrt(K) populations and then each population will\nbe subsequently split into another sqrt(K) populations. With 'predefined',\nvalues in `zInit` will be used to initialize `z`. Default 'split'.}\n\n\\item{countChecksum}{Character. An MD5 checksum for the `counts` matrix.\nDefault NULL.}\n\n\\item{zInit}{Integer vector. Sets initial starting values of z. 'zInit'\nis only used when `zInitialize = 'predfined'`. Default NULL.}\n\n\\item{logfile}{Character. Messages will be redirected to a file named\n`logfile`. If NULL, messages will be printed to stdout.  Default NULL.}\n\n\\item{verbose}{Logical. Whether to print log messages. Default TRUE.}\n}\n\\value{\nA \\link[SingleCellExperiment]{SingleCellExperiment} object. Function\n parameter settings are stored in the \\link{metadata}\n \\code{\"celda_parameters\"} slot.\n Columns \\code{celda_sample_label} and \\code{celda_cell_cluster} in\n \\link{colData} contain sample labels and celda cell\n population clusters.\n}\n\\description{\nClusters the columns of a count matrix containing single-cell\n data into K subpopulations. The\n \\code{useAssay} \\link{assay} slot in\n \\code{altExpName} \\link{altExp} slot will be used if\n it exists. Otherwise, the \\code{useAssay}\n \\link{assay} slot in \\code{x} will be used if\n \\code{x} is a \\linkS4class{SingleCellExperiment} object.\n}\n\\examples{\ndata(celdaCSim)\nsce <- celda_C(celdaCSim$counts,\n    K = celdaCSim$K,\n    sampleLabel = celdaCSim$sampleLabel,\n    nchains = 1)\n}\n\\seealso{\n\\link{celda_G} for feature clustering and \\link{celda_CG} for\n simultaneous clustering of features and cells. \\link{celdaGridSearch} can\n be used to run multiple values of K and multiple chains in parallel.\n}\n"
  },
  {
    "path": "man/celda_CG.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/celda_CG.R\n\\name{celda_CG}\n\\alias{celda_CG}\n\\alias{celda_CG,SingleCellExperiment-method}\n\\alias{celda_CG,ANY-method}\n\\title{Cell and feature clustering with Celda}\n\\usage{\ncelda_CG(\n  x,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  sampleLabel = NULL,\n  K,\n  L,\n  alpha = 1,\n  beta = 1,\n  delta = 1,\n  gamma = 1,\n  algorithm = c(\"EM\", \"Gibbs\"),\n  stopIter = 10,\n  maxIter = 200,\n  splitOnIter = 10,\n  splitOnLast = TRUE,\n  seed = 12345,\n  nchains = 3,\n  zInitialize = c(\"split\", \"random\", \"predefined\"),\n  yInitialize = c(\"split\", \"random\", \"predefined\"),\n  countChecksum = NULL,\n  zInit = NULL,\n  yInit = NULL,\n  logfile = NULL,\n  verbose = TRUE\n)\n\n\\S4method{celda_CG}{SingleCellExperiment}(\n  x,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  sampleLabel = NULL,\n  K,\n  L,\n  alpha = 1,\n  beta = 1,\n  delta = 1,\n  gamma = 1,\n  algorithm = c(\"EM\", \"Gibbs\"),\n  stopIter = 10,\n  maxIter = 200,\n  splitOnIter = 10,\n  splitOnLast = TRUE,\n  seed = 12345,\n  nchains = 3,\n  zInitialize = c(\"split\", \"random\", \"predefined\"),\n  yInitialize = c(\"split\", \"random\", \"predefined\"),\n  countChecksum = NULL,\n  zInit = NULL,\n  yInit = NULL,\n  logfile = NULL,\n  verbose = TRUE\n)\n\n\\S4method{celda_CG}{ANY}(\n  x,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  sampleLabel = NULL,\n  K,\n  L,\n  alpha = 1,\n  beta = 1,\n  delta = 1,\n  gamma = 1,\n  algorithm = c(\"EM\", \"Gibbs\"),\n  stopIter = 10,\n  maxIter = 200,\n  splitOnIter = 10,\n  splitOnLast = TRUE,\n  seed = 12345,\n  nchains = 3,\n  zInitialize = c(\"split\", \"random\", \"predefined\"),\n  yInitialize = c(\"split\", \"random\", \"predefined\"),\n  countChecksum = NULL,\n  zInit = NULL,\n  yInit = NULL,\n  logfile = NULL,\n  verbose = TRUE\n)\n}\n\\arguments{\n\\item{x}{A \\linkS4class{SingleCellExperiment}\nwith the matrix located in the assay slot under \\code{useAssay}.\nRows represent features and columns represent cells. Alternatively,\nany matrix-like object that can be coerced to a sparse matrix of class\n\"dgCMatrix\" can be directly used as input. The matrix will automatically be\nconverted to a \\linkS4class{SingleCellExperiment} object.}\n\n\\item{useAssay}{A string specifying the name of the\n\\link{assay} slot to use. Default \"counts\".}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n\n\\item{sampleLabel}{Vector or factor. Denotes the sample label for each cell\n(column) in the count matrix.}\n\n\\item{K}{Integer. Number of cell populations.}\n\n\\item{L}{Integer. Number of feature modules.}\n\n\\item{alpha}{Numeric. Concentration parameter for Theta. Adds a pseudocount\nto each cell population in each sample. Default 1.}\n\n\\item{beta}{Numeric. Concentration parameter for Phi. Adds a pseudocount to\neach feature module in each cell population. Default 1.}\n\n\\item{delta}{Numeric. Concentration parameter for Psi. Adds a pseudocount to\neach feature in each module. Default 1.}\n\n\\item{gamma}{Numeric. Concentration parameter for Eta. Adds a pseudocount to\nthe number of features in each module. Default 1.}\n\n\\item{algorithm}{String. Algorithm to use for clustering cell subpopulations.\nOne of 'EM' or 'Gibbs'. The EM algorithm for cell clustering is faster,\nespecially for larger numbers of cells. However, more chains may be required\nto ensure a good solution is found. Default 'EM'.}\n\n\\item{stopIter}{Integer. Number of iterations without improvement in the log\nlikelihood to stop inference. Default 10.}\n\n\\item{maxIter}{Integer. Maximum number of iterations of Gibbs sampling to\nperform. Default 200.}\n\n\\item{splitOnIter}{Integer. On every \\code{splitOnIter} iteration,\na heuristic\nwill be applied to determine if a cell population or feature module should\nbe reassigned and another cell population or feature module should be split\ninto two clusters. To disable splitting, set to -1. Default 10.}\n\n\\item{splitOnLast}{Integer. After \\code{stopIter} iterations have been\nperformed without improvement, a heuristic will be applied to determine if\na cell population or feature module should be reassigned and another cell\npopulation or feature module should be split into two clusters. If a split\noccurs, then 'stopIter' will be reset. Default TRUE.}\n\n\\item{seed}{Integer. Passed to \\link[withr]{with_seed}. For reproducibility,\na default value of 12345 is used. If NULL, no calls to\n\\link[withr]{with_seed} are made.}\n\n\\item{nchains}{Integer. Number of random cluster initializations. Default 3.}\n\n\\item{zInitialize}{Chararacter. One of 'random', 'split', or 'predefined'.\nWith 'random', cells are randomly assigned to a populations. With 'split',\ncells will be split into sqrt(K) populations and then each population will\nbe subsequently split into another sqrt(K) populations. With 'predefined',\nvalues in \\code{zInit} will be used to initialize \\code{z}. Default 'split'.}\n\n\\item{yInitialize}{Character. One of 'random', 'split', or 'predefined'.\nWith 'random', features are randomly assigned to a modules. With 'split',\nfeatures will be split into sqrt(L) modules and then each module will be\nsubsequently split into another sqrt(L) modules. With 'predefined', values\nin \\code{yInit} will be used to initialize \\code{y}. Default 'split'.}\n\n\\item{countChecksum}{Character. An MD5 checksum for the counts matrix.\nDefault NULL.}\n\n\\item{zInit}{Integer vector. Sets initial starting values of z. 'zInit'\nis only used when `zInitialize = 'predfined'`. Default NULL.}\n\n\\item{yInit}{Integer vector. Sets initial starting values of y.\n'yInit' is only be used when `yInitialize = \"predefined\"`. Default NULL.}\n\n\\item{logfile}{Character. Messages will be redirected to a file named\n`logfile`. If NULL, messages will be printed to stdout.  Default NULL.}\n\n\\item{verbose}{Logical. Whether to print log messages. Default TRUE.}\n}\n\\value{\nA \\linkS4class{SingleCellExperiment} object. Function\n parameter settings are stored in \\link{metadata}\n \\code{\"celda_parameters\"} in \\link{altExp} slot.\n In \\link{altExp} slot,\n columns \\code{celda_sample_label} and \\code{celda_cell_cluster} in\n \\link{colData} contain sample labels and celda cell\n population clusters. Column \\code{celda_feature_module} in\n \\link{rowData} contains feature modules.\n}\n\\description{\nClusters the rows and columns of a count matrix containing\n single-cell data into L modules and K subpopulations, respectively. The\n \\code{useAssay} \\link{assay} slot in\n \\code{altExpName} \\link{altExp} slot will be used if\n it exists. Otherwise, the \\code{useAssay}\n \\link{assay} slot in \\code{x} will be used if\n \\code{x} is a \\linkS4class{SingleCellExperiment} object.\n}\n\\examples{\ndata(celdaCGSim)\nsce <- celda_CG(celdaCGSim$counts,\n    K = celdaCGSim$K,\n    L = celdaCGSim$L,\n    sampleLabel = celdaCGSim$sampleLabel,\n    nchains = 1)\n}\n\\seealso{\n\\link{celda_G} for feature clustering and \\link{celda_C} for\n clustering cells. \\link{celdaGridSearch} can be used to run multiple\n values of K/L and multiple chains in parallel.\n}\n"
  },
  {
    "path": "man/celda_G.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/celda_G.R\n\\name{celda_G}\n\\alias{celda_G}\n\\alias{celda_G,SingleCellExperiment-method}\n\\alias{celda_G,ANY-method}\n\\title{Feature clustering with Celda}\n\\usage{\ncelda_G(\n  x,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  L,\n  beta = 1,\n  delta = 1,\n  gamma = 1,\n  stopIter = 10,\n  maxIter = 200,\n  splitOnIter = 10,\n  splitOnLast = TRUE,\n  seed = 12345,\n  nchains = 3,\n  yInitialize = c(\"split\", \"random\", \"predefined\"),\n  countChecksum = NULL,\n  yInit = NULL,\n  logfile = NULL,\n  verbose = TRUE\n)\n\n\\S4method{celda_G}{SingleCellExperiment}(\n  x,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  L,\n  beta = 1,\n  delta = 1,\n  gamma = 1,\n  stopIter = 10,\n  maxIter = 200,\n  splitOnIter = 10,\n  splitOnLast = TRUE,\n  seed = 12345,\n  nchains = 3,\n  yInitialize = c(\"split\", \"random\", \"predefined\"),\n  countChecksum = NULL,\n  yInit = NULL,\n  logfile = NULL,\n  verbose = TRUE\n)\n\n\\S4method{celda_G}{ANY}(\n  x,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  L,\n  beta = 1,\n  delta = 1,\n  gamma = 1,\n  stopIter = 10,\n  maxIter = 200,\n  splitOnIter = 10,\n  splitOnLast = TRUE,\n  seed = 12345,\n  nchains = 3,\n  yInitialize = c(\"split\", \"random\", \"predefined\"),\n  countChecksum = NULL,\n  yInit = NULL,\n  logfile = NULL,\n  verbose = TRUE\n)\n}\n\\arguments{\n\\item{x}{A \\linkS4class{SingleCellExperiment}\nwith the matrix located in the assay slot under \\code{useAssay}.\nRows represent features and columns represent cells. Alternatively,\nany matrix-like object that can be coerced to a sparse matrix of class\n\"dgCMatrix\" can be directly used as input. The matrix will automatically be\nconverted to a \\linkS4class{SingleCellExperiment} object.}\n\n\\item{useAssay}{A string specifying the name of the\n\\link{assay} slot to use. Default \"counts\".}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n\n\\item{L}{Integer. Number of feature modules.}\n\n\\item{beta}{Numeric. Concentration parameter for Phi. Adds a pseudocount to\neach feature module in each cell. Default 1.}\n\n\\item{delta}{Numeric. Concentration parameter for Psi. Adds a pseudocount to\neach feature in each module. Default 1.}\n\n\\item{gamma}{Numeric. Concentration parameter for Eta. Adds a pseudocount to\nthe number of features in each module. Default 1.}\n\n\\item{stopIter}{Integer. Number of iterations without improvement in the\nlog likelihood to stop inference. Default 10.}\n\n\\item{maxIter}{Integer. Maximum number of iterations of Gibbs sampling to\nperform. Default 200.}\n\n\\item{splitOnIter}{Integer. On every `splitOnIter` iteration, a heuristic\nwill be applied to determine if a feature module should be reassigned and\nanother feature module should be split into two clusters. To disable\nsplitting, set to -1. Default 10.}\n\n\\item{splitOnLast}{Integer. After `stopIter` iterations have been\nperformed without improvement, a heuristic will be applied to determine if\na cell population should be reassigned and another cell population should be\nsplit into two clusters. If a split occurs, then `stopIter` will be reset.\nDefault TRUE.}\n\n\\item{seed}{Integer. Passed to \\link[withr]{with_seed}. For reproducibility,\na default value of 12345 is used. If NULL, no calls to\n\\link[withr]{with_seed} are made.}\n\n\\item{nchains}{Integer. Number of random cluster initializations. Default 3.}\n\n\\item{yInitialize}{Chararacter. One of 'random', 'split', or 'predefined'.\nWith 'random', features are randomly assigned to a modules. With 'split',\nfeatures will be split into sqrt(L) modules and then each module will be\nsubsequently split into another sqrt(L) modules. With 'predefined', values\nin `yInit` will be used to initialize `y`. Default 'split'.}\n\n\\item{countChecksum}{Character. An MD5 checksum for the `counts` matrix.\nDefault NULL.}\n\n\\item{yInit}{Integer vector. Sets initial starting values of y.\n`yInit` can only be used when `yInitialize = 'predefined'`. Default NULL.}\n\n\\item{logfile}{Character. Messages will be redirected to a file named\n\\code{logfile}. If NULL, messages will be printed to stdout. Default NULL.}\n\n\\item{verbose}{Logical. Whether to print log messages. Default TRUE.}\n}\n\\value{\nA \\linkS4class{SingleCellExperiment} object. Function\n parameter settings are stored in the \\link{metadata}\n \\code{\"celda_parameters\"} slot. Column \\code{celda_feature_module} in\n \\link{rowData} contains feature modules.\n}\n\\description{\nClusters the rows of a count matrix containing single-cell data\n into L modules. The\n \\code{useAssay} \\link{assay} slot in\n \\code{altExpName} \\link{altExp} slot will be used if\n it exists. Otherwise, the \\code{useAssay}\n \\link{assay} slot in \\code{x} will be used if\n \\code{x} is a \\linkS4class{SingleCellExperiment} object.\n}\n\\examples{\ndata(celdaGSim)\nsce <- celda_G(celdaGSim$counts, L = celdaGSim$L, nchains = 1)\n}\n\\seealso{\n\\link{celda_C} for cell clustering and \\link{celda_CG} for\n simultaneous clustering of features and cells. \\link{celdaGridSearch} can\n be used to run multiple values of L and multiple chains in parallel.\n}\n"
  },
  {
    "path": "man/celdatosce.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/celdatosce.R\n\\name{celdatosce}\n\\alias{celdatosce}\n\\alias{celdatosce,celda_C-method}\n\\alias{celdatosce,celda_G-method}\n\\alias{celdatosce,celda_CG-method}\n\\alias{celdatosce,celdaList-method}\n\\title{Convert old celda model object to \\code{SCE} object}\n\\usage{\nceldatosce(\n  celdaModel,\n  counts,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\"\n)\n\n\\S4method{celdatosce}{celda_C}(\n  celdaModel,\n  counts,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\"\n)\n\n\\S4method{celdatosce}{celda_G}(\n  celdaModel,\n  counts,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\"\n)\n\n\\S4method{celdatosce}{celda_CG}(\n  celdaModel,\n  counts,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\"\n)\n\n\\S4method{celdatosce}{celdaList}(\n  celdaModel,\n  counts,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\"\n)\n}\n\\arguments{\n\\item{celdaModel}{A \\code{celdaModel} or \\code{celdaList} object generated\nusing older versions of \\code{celda}.}\n\n\\item{counts}{A numeric \\link{matrix} of counts used to generate\n\\code{celdaModel}. Dimensions and MD5 checksum will be checked by\n\\link{compareCountMatrix}.}\n\n\\item{useAssay}{A string specifying the name of the\n\\link{assay} slot to use. Default \"counts\".}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n}\n\\value{\nA \\linkS4class{SingleCellExperiment} object. Function\n parameter settings are stored in the \\link{metadata}\n \\code{\"celda_parameters\"} slot.\n Columns \\code{celda_sample_label} and \\code{celda_cell_cluster} in\n \\link{colData} contain sample labels and celda cell\n population clusters. Column \\code{celda_feature_module} in\n \\link{rowData} contain feature modules.\n}\n\\description{\nConvert a old celda model object (\\code{celda_C},\n \\code{celda_G}, or \\code{celda_CG} object) to a\n \\linkS4class{SingleCellExperiment} object containing celda model\n information in \\code{metadata} slot. Counts matrix is stored in the\n \\code{\"counts\"} assay slot in \\code{assays}.\n}\n\\examples{\ndata(celdaCMod, celdaCSim)\nsce <- celdatosce(celdaCMod, celdaCSim$counts)\ndata(celdaGMod, celdaGSim)\nsce <- celdatosce(celdaGMod, celdaGSim$counts)\ndata(celdaCGMod, celdaCGSim)\nsce <- celdatosce(celdaCGMod, celdaCGSim$counts)\ndata(celdaCGGridSearchRes, celdaCGSim)\nsce <- celdatosce(celdaCGGridSearchRes, celdaCGSim$counts)\n}\n"
  },
  {
    "path": "man/clusterProbability.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/clusterProbability.R\n\\name{clusterProbability}\n\\alias{clusterProbability}\n\\alias{clusterProbability,SingleCellExperiment-method}\n\\title{Get the conditional probabilities of cell in subpopulations from celda\n model}\n\\usage{\nclusterProbability(\n  sce,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  log = FALSE\n)\n\n\\S4method{clusterProbability}{SingleCellExperiment}(\n  sce,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  log = FALSE\n)\n}\n\\arguments{\n\\item{sce}{A \\linkS4class{SingleCellExperiment} object returned by\n\\link{celda_C}, \\link{celda_G}, or \\link{celda_CG}, with the matrix\nlocated in the \\code{useAssay} assay slot.\nRows represent features and columns represent cells.}\n\n\\item{useAssay}{A string specifying which \\link{assay}\nslot to use. Default \"counts\".}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n\n\\item{log}{Logical. If \\code{FALSE}, then the normalized conditional\nprobabilities will be returned. If \\code{TRUE}, then the unnormalized log\nprobabilities will be returned. Default \\code{FALSE}.}\n}\n\\value{\nA list containging a matrix for the conditional cell subpopulation\n cluster and/or feature module probabilities.\n}\n\\description{\nCalculate the conditional probability of each cell belonging to\n each subpopulation given all other cell cluster assignments and/or\n each feature belonging to each module given all other feature cluster\n assignments in a celda model.\n}\n\\examples{\ndata(sceCeldaCG)\nclusterProb <- clusterProbability(sceCeldaCG, log = TRUE)\ndata(sceCeldaC)\nclusterProb <- clusterProbability(sceCeldaC)\n}\n\\seealso{\n`celda_C()` for clustering cells\n}\n"
  },
  {
    "path": "man/compareCountMatrix.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/celda_functions.R\n\\name{compareCountMatrix}\n\\alias{compareCountMatrix}\n\\alias{compareCountMatrix,ANY,celdaModel-method}\n\\alias{compareCountMatrix,ANY,celdaList-method}\n\\title{Check count matrix consistency}\n\\usage{\ncompareCountMatrix(counts, celdaMod, errorOnMismatch = TRUE)\n\n\\S4method{compareCountMatrix}{ANY,celdaModel}(counts, celdaMod, errorOnMismatch = TRUE)\n\n\\S4method{compareCountMatrix}{ANY,celdaList}(counts, celdaMod, errorOnMismatch = TRUE)\n}\n\\arguments{\n\\item{counts}{Integer , Numeric, or Sparse matrix. Rows represent features\nand columns represent cells.}\n\n\\item{celdaMod}{A \\code{celdaModel} or \\code{celdaList} object.}\n\n\\item{errorOnMismatch}{Logical. Whether to throw an error in the event of\na mismatch. Default TRUE.}\n}\n\\value{\nReturns TRUE if provided count matrix matches the one used in the\n celda object and/or \\code{errorOnMismatch = FALSE}, FALSE otherwise.\n}\n\\description{\nChecks if the counts matrix is the same one used to generate\n the celda model object by comparing dimensions and MD5 checksum.\n}\n\\examples{\ndata(celdaCGSim, celdaCGMod)\ncompareCountMatrix(celdaCGSim$counts, celdaCGMod, errorOnMismatch = FALSE)\ndata(celdaCGSim, celdaCGGridSearchRes)\ncompareCountMatrix(celdaCGSim$counts, celdaCGGridSearchRes,\n    errorOnMismatch = FALSE)\n}\n"
  },
  {
    "path": "man/contaminationSim.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/data.R\n\\docType{data}\n\\name{contaminationSim}\n\\alias{contaminationSim}\n\\title{contaminationSim}\n\\format{\nA list\n}\n\\usage{\ncontaminationSim\n}\n\\description{\nA toy contamination data generated by\n \\link{simulateContamination}\n}\n\\keyword{datasets}\n"
  },
  {
    "path": "man/countChecksum-celdaList-method.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/accessors.R\n\\name{countChecksum,celdaList-method}\n\\alias{countChecksum,celdaList-method}\n\\title{Get the MD5 hash of the count matrix from the celdaList}\n\\usage{\n\\S4method{countChecksum}{celdaList}(celdaList)\n}\n\\arguments{\n\\item{celdaList}{An object of class celdaList.}\n}\n\\value{\nA character string of length 32 containing the MD5 digest of\n the count matrix.\n}\n\\description{\nReturns the MD5 hash of the count matrix used to generate the\n celdaList.\n}\n\\examples{\ndata(celdaCGGridSearchRes)\ncountChecksum <- countChecksum(celdaCGGridSearchRes)\n}\n"
  },
  {
    "path": "man/countChecksum.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/accessors.R\n\\name{countChecksum}\n\\alias{countChecksum}\n\\title{Get the MD5 hash of the count matrix from the celdaList}\n\\usage{\ncountChecksum(celdaList)\n}\n\\arguments{\n\\item{celdaList}{An object of class celdaList.}\n}\n\\value{\nA character string of length 32 containing the MD5 digest of\n the count matrix.\n}\n\\description{\nReturns the MD5 hash of the count matrix used to generate the\n celdaList.\n}\n\\examples{\ndata(celdaCGGridSearchRes)\ncountChecksum <- countChecksum(celdaCGGridSearchRes)\n}\n"
  },
  {
    "path": "man/decontX.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/decon.R\n\\name{decontX}\n\\alias{decontX}\n\\alias{decontX,SingleCellExperiment-method}\n\\alias{decontX,ANY-method}\n\\title{Contamination estimation with decontX}\n\\usage{\ndecontX(x, ...)\n\n\\S4method{decontX}{SingleCellExperiment}(\n  x,\n  assayName = \"counts\",\n  z = NULL,\n  batch = NULL,\n  background = NULL,\n  bgAssayName = NULL,\n  bgBatch = NULL,\n  maxIter = 500,\n  delta = c(10, 10),\n  estimateDelta = TRUE,\n  convergence = 0.001,\n  iterLogLik = 10,\n  varGenes = 5000,\n  dbscanEps = 1,\n  seed = 12345,\n  logfile = NULL,\n  verbose = TRUE\n)\n\n\\S4method{decontX}{ANY}(\n  x,\n  z = NULL,\n  batch = NULL,\n  background = NULL,\n  bgBatch = NULL,\n  maxIter = 500,\n  delta = c(10, 10),\n  estimateDelta = TRUE,\n  convergence = 0.001,\n  iterLogLik = 10,\n  varGenes = 5000,\n  dbscanEps = 1,\n  seed = 12345,\n  logfile = NULL,\n  verbose = TRUE\n)\n}\n\\arguments{\n\\item{x}{A numeric matrix of counts or a \\linkS4class{SingleCellExperiment}\nwith the matrix located in the assay slot under \\code{assayName}.\nCells in each batch will be subsetted and converted to a sparse matrix\nof class \\code{dgCMatrix} from package \\link{Matrix} before analysis. This\nobject should only contain filtered cells after cell calling. Empty\ncell barcodes (low expression droplets before cell calling) are not needed\nto run DecontX.}\n\n\\item{...}{For the generic, further arguments to pass to each method.}\n\n\\item{assayName}{Character. Name of the assay to use if \\code{x} is a\n\\linkS4class{SingleCellExperiment}.}\n\n\\item{z}{Numeric or character vector. Cell cluster labels. If NULL,\nPCA will be used to reduce the dimensionality of the dataset initially,\n'\\link[uwot]{umap}' from the 'uwot' package\nwill be used to further reduce the dataset to 2 dimenions and\nthe '\\link[dbscan]{dbscan}' function from the 'dbscan' package\nwill be used to identify clusters of broad cell types. Default NULL.}\n\n\\item{batch}{Numeric or character vector. Batch labels for cells.\nIf batch labels are supplied, DecontX is run on cells from each\nbatch separately. Cells run in different channels or assays\nshould be considered different batches. Default NULL.}\n\n\\item{background}{A numeric matrix of counts or a\n\\linkS4class{SingleCellExperiment} with the matrix located in the assay\nslot under \\code{assayName}. It should have the same data format as \\code{x}\nexcept it contains the empty droplets instead of cells. When supplied,\nempirical distribution of transcripts from these empty droplets\nwill be used as the contamination distribution. Default NULL.}\n\n\\item{bgAssayName}{Character. Name of the assay to use if \\code{background}\nis a \\linkS4class{SingleCellExperiment}. Default to same as\n\\code{assayName}.}\n\n\\item{bgBatch}{Numeric or character vector. Batch labels for\n\\code{background}. Its unique values should be the same as those in\n\\code{batch}, such that each batch of cells have their corresponding batch\nof empty droplets as background, pointed by this parameter. Default to NULL.}\n\n\\item{maxIter}{Integer. Maximum iterations of the EM algorithm. Default 500.}\n\n\\item{delta}{Numeric Vector of length 2. Concentration parameters for\nthe Dirichlet prior for the contamination in each cell. The first element\nis the prior for the native counts while the second element is the prior for\nthe contamination counts. These essentially act as pseudocounts for the\nnative and contamination in each cell. If \\code{estimateDelta = TRUE},\nthis is only used to produce a random sample of proportions for an initial\nvalue of contamination in each cell. Then\n\\code{\\link[MCMCprecision]{fit_dirichlet}} is used to update\n\\code{delta} in each iteration.\nIf \\code{estimateDelta = FALSE}, then \\code{delta} is fixed with these\nvalues for the entire inference procedure. Fixing \\code{delta} and\nsetting a high number in the second element will force \\code{decontX}\nto be more aggressive and estimate higher levels of contamination at\nthe expense of potentially removing native expression.\nDefault \\code{c(10, 10)}.}\n\n\\item{estimateDelta}{Boolean. Whether to update \\code{delta} at each\niteration.}\n\n\\item{convergence}{Numeric. The EM algorithm will be stopped if the maximum\ndifference in the contamination estimates between the previous and\ncurrent iterations is less than this. Default 0.001.}\n\n\\item{iterLogLik}{Integer. Calculate log likelihood every \\code{iterLogLik}\niteration. Default 10.}\n\n\\item{varGenes}{Integer. The number of variable genes to use in\ndimensionality reduction before clustering. Variability is calcualted using\n\\code{\\link[scran]{modelGeneVar}} function from the 'scran' package.\nUsed only when z is not provided. Default 5000.}\n\n\\item{dbscanEps}{Numeric. The clustering resolution parameter\nused in '\\link[dbscan]{dbscan}' to estimate broad cell clusters.\nUsed only when z is not provided. Default 1.}\n\n\\item{seed}{Integer. Passed to \\link[withr]{with_seed}. For reproducibility,\na default value of 12345 is used. If NULL, no calls to\n\\link[withr]{with_seed} are made.}\n\n\\item{logfile}{Character. Messages will be redirected to a file named\n`logfile`. If NULL, messages will be printed to stdout.  Default NULL.}\n\n\\item{verbose}{Logical. Whether to print log messages. Default TRUE.}\n}\n\\value{\nIf \\code{x} is a matrix-like object, a list will be returned\nwith the following items:\n\\describe{\n\\item{\\code{decontXcounts}:}{The decontaminated matrix. Values obtained\nfrom the variational inference procedure may be non-integer. However,\ninteger counts can be obtained by rounding,\ne.g. \\code{round(decontXcounts)}.}\n\\item{\\code{contamination}:}{Percentage of contamination in each cell.}\n\\item{\\code{estimates}:}{List of estimated parameters for each batch. If z\nwas not supplied, then the UMAP coordinates used to generated cell\ncluster labels will also be stored here.}\n\\item{\\code{z}:}{Cell population/cluster labels used for analysis.}\n\\item{\\code{runParams}:}{List of arguments used in the function call.}\n}\n\nIf \\code{x} is a \\linkS4class{SingleCellExperiment}, then the decontaminated\ncounts will be stored as an assay and can be accessed with\n\\code{decontXcounts(x)}. The contamination values and cluster labels\nwill be stored in \\code{colData(x)}. \\code{estimates} and \\code{runParams}\nwill be stored in \\code{metadata(x)$decontX}. The UMAPs used to generated\ncell cluster labels will be stored in\n\\code{reducedDims} slot in \\code{x}.\n}\n\\description{\nIdentifies contamination from factors such as ambient RNA\nin single cell genomic datasets.\n}\n\\examples{\n# Generate matrix with contamination\ns <- simulateContamination(seed = 12345)\n\nlibrary(SingleCellExperiment)\nsce <- SingleCellExperiment(list(counts = s$observedCounts))\nsce <- decontX(sce)\n\n# Plot contamination on UMAP\nplotDecontXContamination(sce)\n\n# Plot decontX cluster labels\numap <- reducedDim(sce)\nplotDimReduceCluster(x = sce$decontX_clusters,\n    dim1 = umap[, 1], dim2 = umap[, 2], )\n\n# Plot percentage of marker genes detected\n# in each cell cluster before decontamination\ns$markers\nplotDecontXMarkerPercentage(sce, markers = s$markers, assayName = \"counts\")\n\n# Plot percentage of marker genes detected\n# in each cell cluster after contamination\nplotDecontXMarkerPercentage(sce, markers = s$markers,\n                            assayName = \"decontXcounts\")\n\n# Plot percentage of marker genes detected in each cell\n# comparing original and decontaminated counts side-by-side\nplotDecontXMarkerPercentage(sce, markers = s$markers,\n                            assayName = c(\"counts\", \"decontXcounts\"))\n\n# Plot raw counts of indiviual markers genes before\n# and after decontamination\nplotDecontXMarkerExpression(sce, unlist(s$markers))\n}\n\\author{\nShiyi Yang, Yuan Yin, Joshua Campbell\n}\n"
  },
  {
    "path": "man/decontXcounts.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/decon.R\n\\name{decontXcounts}\n\\alias{decontXcounts}\n\\alias{decontXcounts<-}\n\\alias{decontXcounts,SingleCellExperiment-method}\n\\alias{decontXcounts<-,SingleCellExperiment-method}\n\\title{Get or set decontaminated counts matrix}\n\\usage{\ndecontXcounts(object, ...)\n\ndecontXcounts(object, ...) <- value\n\n\\S4method{decontXcounts}{SingleCellExperiment}(object, ...)\n\n\\S4method{decontXcounts}{SingleCellExperiment}(object, ...) <- value\n}\n\\arguments{\n\\item{object}{A \\linkS4class{SingleCellExperiment} object.}\n\n\\item{...}{For the generic, further arguments to pass to each method.}\n\n\\item{value}{A matrix to save as an assay called \\code{decontXcounts}}\n}\n\\value{\nIf getting, the assay from \\code{object} with the name\n\\code{decontXcounts} will be returned. If setting, a\n\\linkS4class{SingleCellExperiment} object will be returned with\n\\code{decontXcounts} listed in the \\code{assay} slot.\n}\n\\description{\nGets or sets the decontaminated counts matrix from a\na \\linkS4class{SingleCellExperiment} object.\n}\n\\seealso{\n\\code{\\link{assay}} and \\code{\\link{assay<-}}\n}\n"
  },
  {
    "path": "man/distinctColors.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/celda_functions.R\n\\name{distinctColors}\n\\alias{distinctColors}\n\\title{Create a color palette}\n\\usage{\ndistinctColors(\n  n,\n  hues = c(\"red\", \"cyan\", \"orange\", \"blue\", \"yellow\", \"purple\", \"green\", \"magenta\"),\n  saturationRange = c(0.7, 1),\n  valueRange = c(0.7, 1)\n)\n}\n\\arguments{\n\\item{n}{Integer. Number of colors to generate.}\n\n\\item{hues}{Character vector. Colors available from `colors()`. These will\nbe used as the base colors for the clustering scheme in HSV. Different\nsaturations and values will be generated for each hue. Default c(\"red\",\n\"cyan\", \"orange\", \"blue\", \"yellow\", \"purple\", \"green\", \"magenta\").}\n\n\\item{saturationRange}{Numeric vector. A vector of length 2 denoting the\nsaturation for HSV. Values must be in [0,1]. Default: c(0.25, 1).}\n\n\\item{valueRange}{Numeric vector. A vector of length 2 denoting the range\nof values for HSV. Values must be in [0,1]. Default: `c(0.5, 1)`.}\n}\n\\value{\nA vector of distinct colors that have been converted to HEX from HSV.\n}\n\\description{\nGenerate a palette of `n` distinct colors.\n}\n\\examples{\ncolorPal <- distinctColors(6) # can be used in plotting functions\n}\n"
  },
  {
    "path": "man/eigenMatMultInt.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/RcppExports.R\n\\name{eigenMatMultInt}\n\\alias{eigenMatMultInt}\n\\title{Fast matrix multiplication for double x int}\n\\usage{\neigenMatMultInt(A, B)\n}\n\\arguments{\n\\item{A}{a double matrix}\n\n\\item{B}{an integer matrix}\n}\n\\value{\nAn integer matrix representing the product of A and B\n}\n\\description{\nFast matrix multiplication for double x int\n}\n"
  },
  {
    "path": "man/eigenMatMultNumeric.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/RcppExports.R\n\\name{eigenMatMultNumeric}\n\\alias{eigenMatMultNumeric}\n\\title{Fast matrix multiplication for double x double}\n\\usage{\neigenMatMultNumeric(A, B)\n}\n\\arguments{\n\\item{A}{a double matrix}\n\n\\item{B}{an integer matrix}\n}\n\\value{\nAn integer matrix representing the product of A and B\n}\n\\description{\nFast matrix multiplication for double x double\n}\n"
  },
  {
    "path": "man/factorizeMatrix.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/factorizeMatrix.R\n\\name{factorizeMatrix}\n\\alias{factorizeMatrix}\n\\alias{factorizeMatrix,SingleCellExperiment,ANY-method}\n\\alias{factorizeMatrix,ANY,celda_CG-method}\n\\alias{factorizeMatrix,ANY,celda_C-method}\n\\alias{factorizeMatrix,ANY,celda_G-method}\n\\title{Generate factorized matrices showing each feature's influence on cell\n / gene clustering}\n\\usage{\nfactorizeMatrix(\n  x,\n  celdaMod,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  type = c(\"counts\", \"proportion\", \"posterior\")\n)\n\n\\S4method{factorizeMatrix}{SingleCellExperiment,ANY}(\n  x,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  type = c(\"counts\", \"proportion\", \"posterior\")\n)\n\n\\S4method{factorizeMatrix}{ANY,celda_CG}(x, celdaMod, type = c(\"counts\", \"proportion\", \"posterior\"))\n\n\\S4method{factorizeMatrix}{ANY,celda_C}(x, celdaMod, type = c(\"counts\", \"proportion\", \"posterior\"))\n\n\\S4method{factorizeMatrix}{ANY,celda_G}(x, celdaMod, type = c(\"counts\", \"proportion\", \"posterior\"))\n}\n\\arguments{\n\\item{x}{Can be one of\n\\itemize{\n\\item A \\linkS4class{SingleCellExperiment} object returned by\n\\link{celda_C}, \\link{celda_G} or \\link{celda_CG}, with the matrix\nlocated in the \\code{useAssay} assay slot in \\code{altExp(x, altExpName)}.\nRows represent features and columns represent cells.\n\\item Integer counts matrix. Rows represent features and columns represent\ncells. This matrix should be the same as the one used to generate\n\\code{celdaMod}.}}\n\n\\item{celdaMod}{Celda model object. Only works if \\code{x} is an integer\ncounts matrix.}\n\n\\item{useAssay}{A string specifying which \\link{assay}\nslot to use if \\code{x} is a \\linkS4class{SingleCellExperiment} object.\nDefault \"counts\".}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n\n\\item{type}{Character vector. A vector containing one or more of \"counts\",\n\"proportion\", or \"posterior\". \"counts\" returns the raw number of counts for\neach factorized matrix. \"proportions\" returns the normalized probabilities\nfor each factorized matrix, which are calculated by dividing the raw counts\nin each factorized matrix by the total counts in each column. \"posterior\"\nreturns the posterior estimates which include the addition of the Dirichlet\nconcentration parameter (essentially as a pseudocount). Default\n\\code{\"counts\"}.}\n}\n\\value{\nFor celda_CG model, A list with elements for \"counts\", \"proportions\",\n or \"posterior\" probabilities. Each element will be a list containing\n factorized matrices for \"module\", \"cellPopulation\", and \"sample\".\n Additionally, the contribution of each module in each individual cell will\n be included in the \"cell\" element of \"counts\" and \"proportions\" elements.\n\nFor celda_C model, a list with elements for \"counts\", \"proportions\",\n or \"posterior\" probabilities. Each element will be a list containing\n factorized matrices for \"module\" and \"sample\".\n\nFor celda_G model, a list with elements for \"counts\", \"proportions\",\n or \"posterior\" probabilities. Each element will be a list containing\n factorized matrices for \"module\" and \"cell\".\n}\n\\description{\nGenerates factorized matrices showing the contribution of each\n feature in each cell population or each cell population in each sample.\n}\n\\examples{\ndata(sceCeldaCG)\nfactorizedMatrices <- factorizeMatrix(sceCeldaCG, type = \"posterior\")\ndata(celdaCGSim, celdaCGMod)\nfactorizedMatrices <- factorizeMatrix(\n  celdaCGSim$counts,\n  celdaCGMod,\n  \"posterior\")\ndata(celdaCSim, celdaCMod)\nfactorizedMatrices <- factorizeMatrix(\n  celdaCSim$counts,\n  celdaCMod, \"posterior\"\n)\ndata(celdaGSim, celdaGMod)\nfactorizedMatrices <- factorizeMatrix(\n  celdaGSim$counts,\n  celdaGMod, \"posterior\"\n)\n}\n"
  },
  {
    "path": "man/fastNormProp.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/RcppExports.R\n\\name{fastNormProp}\n\\alias{fastNormProp}\n\\title{Fast normalization for numeric matrix}\n\\usage{\nfastNormProp(R_counts, R_alpha)\n}\n\\arguments{\n\\item{R_counts}{An integer matrix}\n\n\\item{R_alpha}{A double value to be added to the matrix as a pseudocount}\n}\n\\value{\nA numeric matrix where the columns have been normalized to proportions\n}\n\\description{\nFast normalization for numeric matrix\n}\n"
  },
  {
    "path": "man/fastNormPropLog.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/RcppExports.R\n\\name{fastNormPropLog}\n\\alias{fastNormPropLog}\n\\title{Fast normalization for numeric matrix}\n\\usage{\nfastNormPropLog(R_counts, R_alpha)\n}\n\\arguments{\n\\item{R_counts}{An integer matrix}\n\n\\item{R_alpha}{A double value to be added to the matrix as a pseudocount}\n}\n\\value{\nA numeric matrix where the columns have been normalized to proportions\n}\n\\description{\nFast normalization for numeric matrix\n}\n"
  },
  {
    "path": "man/fastNormPropSqrt.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/RcppExports.R\n\\name{fastNormPropSqrt}\n\\alias{fastNormPropSqrt}\n\\title{Fast normalization for numeric matrix}\n\\usage{\nfastNormPropSqrt(R_counts, R_alpha)\n}\n\\arguments{\n\\item{R_counts}{An integer matrix}\n\n\\item{R_alpha}{A double value to be added to the matrix as a pseudocount}\n}\n\\value{\nA numeric matrix where the columns have been normalized to proportions\n}\n\\description{\nFast normalization for numeric matrix\n}\n"
  },
  {
    "path": "man/featureModuleLookup.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/featureModuleLookup.R\n\\name{featureModuleLookup}\n\\alias{featureModuleLookup}\n\\alias{featureModuleLookup,SingleCellExperiment-method}\n\\title{Obtain the gene module of a gene of interest}\n\\usage{\nfeatureModuleLookup(\n  sce,\n  features,\n  altExpName = \"featureSubset\",\n  exactMatch = TRUE,\n  by = \"rownames\"\n)\n\n\\S4method{featureModuleLookup}{SingleCellExperiment}(\n  sce,\n  features,\n  altExpName = \"featureSubset\",\n  exactMatch = TRUE,\n  by = \"rownames\"\n)\n}\n\\arguments{\n\\item{sce}{A \\linkS4class{SingleCellExperiment} object returned by\n\\link{celda_G}, or \\link{celda_CG}, with the matrix\nlocated in the \\code{useAssay} assay slot.\nRows represent features and columns represent cells.}\n\n\\item{features}{Character vector. Identify feature modules for the specified\nfeature names. \\code{feature} must match the rownames of \\code{sce}.}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n\n\\item{exactMatch}{Logical. Whether to look for exactMatch of the gene name\nwithin counts matrix. Default \\code{TRUE}.}\n\n\\item{by}{Character. Where to search for \\code{features} in the sce object.\nIf set to \\code{\"rownames\"} then the features will be searched for among\nrownames(sce). This can also be set to one of the \\code{colnames} of\nrowData(sce). Default \\code{\"rownames\"}.}\n}\n\\value{\nNumeric vector containing the module numbers for each feature. If\nthe feature was not found, then an \\code{NA} value will be returned in that\nposition. If no features were found, then an error will be given.\n}\n\\description{\nThis function will output the corresponding feature module for\n a specified vector of genes from a celda_CG or celda_G \\code{celdaModel}.\n \\code{features} must match the rownames of \\code{sce}.\n}\n\\examples{\ndata(sceCeldaCG)\nmodule <- featureModuleLookup(sce = sceCeldaCG,\n    features = c(\"Gene_1\", \"Gene_XXX\"))\n}\n"
  },
  {
    "path": "man/featureModuleTable.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/celda_functions.R\n\\name{featureModuleTable}\n\\alias{featureModuleTable}\n\\title{Output a feature module table}\n\\usage{\nfeatureModuleTable(\n  sce,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  displayName = NULL,\n  outputFile = NULL\n)\n}\n\\arguments{\n\\item{sce}{A \\linkS4class{SingleCellExperiment} object returned by\n\\link{celda_G}, or \\link{celda_CG}, with the matrix\nlocated in the \\code{useAssay} assay slot.\nRows represent features and columns represent cells.}\n\n\\item{useAssay}{A string specifying which \\link{assay}\nslot to use. Default \"counts\".}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n\n\\item{displayName}{Character. The column name of\n\\code{rowData(sce)} that specifies the display names for\nthe features. Default \\code{NULL}, which displays the row names.}\n\n\\item{outputFile}{File name for feature module table. If NULL, file will\nnot be created. Default NULL.}\n}\n\\value{\nMatrix. Contains a list of features per each column (feature module)\n}\n\\description{\nCreates a table that contains the list of features in\n each feature module.\n}\n\\examples{\ndata(sceCeldaCG)\nfeatureModuleTable(sceCeldaCG)\n}\n"
  },
  {
    "path": "man/geneSetEnrich.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/geneSetEnrich.R\n\\name{geneSetEnrich}\n\\alias{geneSetEnrich}\n\\alias{geneSetEnrich,SingleCellExperiment-method}\n\\alias{geneSetEnrich,matrix-method}\n\\title{Gene set enrichment}\n\\usage{\ngeneSetEnrich(\n  x,\n  celdaModel,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  databases,\n  fdr = 0.05\n)\n\n\\S4method{geneSetEnrich}{SingleCellExperiment}(\n  x,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  databases,\n  fdr = 0.05\n)\n\n\\S4method{geneSetEnrich}{matrix}(x, celdaModel, databases, fdr = 0.05)\n}\n\\arguments{\n\\item{x}{A numeric \\link{matrix} of counts or a\n\\linkS4class{SingleCellExperiment}\nwith the matrix located in the assay slot under \\code{useAssay}.\nRows represent features and columns represent cells. Rownames of the\nmatrix or \\linkS4class{SingleCellExperiment} object should be gene names.}\n\n\\item{celdaModel}{Celda object of class \\code{celda_G} or \\code{celda_CG}.}\n\n\\item{useAssay}{A string specifying which \\link{assay}\nslot to use if \\code{x} is a\n\\linkS4class{SingleCellExperiment} object. Default \"counts\".}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n\n\\item{databases}{Character vector. Name of reference database. Available\ndatabases can be viewed by \\link[enrichR]{listEnrichrDbs}.}\n\n\\item{fdr}{False discovery rate (FDR). Numeric. Cutoff value for adjusted\np-value, terms with FDR below this value are considered significantly\nenriched.}\n}\n\\value{\nList of length 'L' where each member contains the significantly\n enriched terms for the corresponding module.\n}\n\\description{\nIdentify and return significantly-enriched terms for each gene\n module in a Celda object or a \\linkS4class{SingleCellExperiment} object.\n Performs gene set enrichment analysis for Celda\n identified modules using the \\link[enrichR]{enrichr}.\n}\n\\examples{\nlibrary(M3DExampleData)\ncounts <- M3DExampleData::Mmus_example_list$data\n# subset 500 genes for fast clustering\ncounts <- counts[seq(1501, 2000), ]\n# cluster genes into 10 modules for quick demo\nsce <- celda_G(x = as.matrix(counts), L = 10, verbose = FALSE)\ngse <- geneSetEnrich(sce,\n  databases = c(\"GO_Biological_Process_2018\", \"GO_Molecular_Function_2018\"))\n}\n\\author{\nAhmed Youssef, Zhe Wang\n}\n"
  },
  {
    "path": "man/logLikelihood.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/loglikelihood.R\n\\name{logLikelihood}\n\\alias{logLikelihood}\n\\alias{logLikelihood,SingleCellExperiment,ANY-method}\n\\alias{logLikelihood,matrix,celda_C-method}\n\\alias{logLikelihood,matrix,celda_G-method}\n\\alias{logLikelihood,matrix,celda_CG-method}\n\\title{Calculate the Log-likelihood of a celda model}\n\\usage{\nlogLikelihood(x, celdaMod, useAssay = \"counts\", altExpName = \"featureSubset\")\n\n\\S4method{logLikelihood}{SingleCellExperiment,ANY}(x, useAssay = \"counts\", altExpName = \"featureSubset\")\n\n\\S4method{logLikelihood}{matrix,celda_C}(x, celdaMod)\n\n\\S4method{logLikelihood}{matrix,celda_G}(x, celdaMod)\n\n\\S4method{logLikelihood}{matrix,celda_CG}(x, celdaMod)\n}\n\\arguments{\n\\item{x}{A \\linkS4class{SingleCellExperiment} object returned by\n\\link{celda_C}, \\link{celda_G}, or \\link{celda_CG}, with the matrix\nlocated in the \\code{useAssay} assay slot.\nRows represent features and columns represent cells.}\n\n\\item{celdaMod}{celda model object. Ignored if \\code{x} is a\n\\linkS4class{SingleCellExperiment} object.}\n\n\\item{useAssay}{A string specifying which \\link{assay}\nslot to use. Default \"counts\".}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n}\n\\value{\nThe log-likelihood of the cluster assignment for the\n provided \\linkS4class{SingleCellExperiment}.\n}\n\\description{\nCalculate the log-likelihood for cell population\n and feature module cluster assignments on the count matrix, per celda model.\n}\n\\examples{\ndata(sceCeldaC, sceCeldaCG)\nloglikC <- logLikelihood(sceCeldaC)\nloglikCG <- logLikelihood(sceCeldaCG)\n}\n\\seealso{\n`celda_C()` for clustering cells\n}\n"
  },
  {
    "path": "man/logLikelihoodHistory.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/loglikelihood.R\n\\name{logLikelihoodHistory}\n\\alias{logLikelihoodHistory}\n\\alias{logLikelihoodHistory,SingleCellExperiment-method}\n\\alias{logLikelihoodHistory,celdaModel-method}\n\\title{Get log-likelihood history}\n\\usage{\nlogLikelihoodHistory(x, altExpName = \"featureSubset\")\n\n\\S4method{logLikelihoodHistory}{SingleCellExperiment}(x, altExpName = \"featureSubset\")\n\n\\S4method{logLikelihoodHistory}{celdaModel}(x)\n}\n\\arguments{\n\\item{x}{A \\linkS4class{SingleCellExperiment} object\nreturned by \\link{celda_C}, \\link{celda_G}, or \\link{celda_CG}, or a celda\nmodel object.}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n}\n\\value{\nNumeric. The log-likelihood at each step of Gibbs sampling used to\n generate the model.\n}\n\\description{\nRetrieves the complete log-likelihood from all iterations of\n Gibbs sampling used to generate a celda model.\n}\n\\examples{\ndata(sceCeldaCG)\nlogLikelihoodHistory(sceCeldaCG)\ndata(celdaCGMod)\nlogLikelihoodHistory(celdaCGMod)\n}\n"
  },
  {
    "path": "man/matrixNames.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/accessors.R\n\\name{matrixNames}\n\\alias{matrixNames}\n\\alias{matrixNames,celdaModel-method}\n\\title{Get feature, cell and sample names from a celdaModel}\n\\usage{\nmatrixNames(celdaMod)\n\n\\S4method{matrixNames}{celdaModel}(celdaMod)\n}\n\\arguments{\n\\item{celdaMod}{celdaModel. Options available in `celda::availableModels`.}\n}\n\\value{\nList. Contains row, column, and sample character vectors\n corresponding to the values provided when the celdaModel was generated.\n}\n\\description{\nRetrieves the row, column, and sample names used to generate\n a celdaModel.\n}\n\\examples{\ndata(celdaCGMod)\nmatrixNames(celdaCGMod)\n}\n"
  },
  {
    "path": "man/moduleHeatmap.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/moduleHeatmap.R\n\\name{moduleHeatmap}\n\\alias{moduleHeatmap}\n\\alias{moduleHeatmap,SingleCellExperiment-method}\n\\title{Heatmap for featureModules}\n\\usage{\nmoduleHeatmap(\n  x,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  modules = NULL,\n  featureModule = NULL,\n  col = circlize::colorRamp2(c(-2, 0, 2), c(\"#1E90FF\", \"#FFFFFF\", \"#CD2626\")),\n  topCells = 100,\n  topFeatures = NULL,\n  normalizedCounts = NA,\n  normalize = \"proportion\",\n  transformationFun = sqrt,\n  scaleRow = scale,\n  showFeatureNames = TRUE,\n  displayName = NULL,\n  trim = c(-2, 2),\n  rowFontSize = NULL,\n  showHeatmapLegend = FALSE,\n  showTopAnnotationLegend = FALSE,\n  showTopAnnotationName = FALSE,\n  topAnnotationHeight = 5,\n  showModuleLabel = TRUE,\n  moduleLabel = \"auto\",\n  moduleLabelSize = NULL,\n  byrow = TRUE,\n  top = NA,\n  unit = \"mm\",\n  ncol = NULL,\n  useRaster = TRUE,\n  returnAsList = FALSE,\n  ...\n)\n\n\\S4method{moduleHeatmap}{SingleCellExperiment}(\n  x,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  modules = NULL,\n  featureModule = NULL,\n  col = circlize::colorRamp2(c(-2, 0, 2), c(\"#1E90FF\", \"#FFFFFF\", \"#CD2626\")),\n  topCells = 100,\n  topFeatures = NULL,\n  normalizedCounts = NA,\n  normalize = \"proportion\",\n  transformationFun = sqrt,\n  scaleRow = scale,\n  showFeatureNames = TRUE,\n  displayName = NULL,\n  trim = c(-2, 2),\n  rowFontSize = NULL,\n  showHeatmapLegend = FALSE,\n  showTopAnnotationLegend = FALSE,\n  showTopAnnotationName = FALSE,\n  topAnnotationHeight = 5,\n  showModuleLabel = TRUE,\n  moduleLabel = \"auto\",\n  moduleLabelSize = NULL,\n  byrow = TRUE,\n  top = NA,\n  unit = \"mm\",\n  ncol = NULL,\n  useRaster = TRUE,\n  returnAsList = FALSE,\n  ...\n)\n}\n\\arguments{\n\\item{x}{A numeric \\link{matrix} of counts or a\n\\linkS4class{SingleCellExperiment}\nwith the matrix located in the assay slot under \\code{useAssay}.\nRows represent features and columns represent cells. Celda\nresults must be present under \\code{metadata(altExp(x, altExpName))}.}\n\n\\item{useAssay}{A string specifying which \\link{assay}\nslot to use if \\code{x} is a\n\\linkS4class{SingleCellExperiment} object. Default \"counts\".}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n\n\\item{modules}{Integer Vector. The featureModule(s) to display.\nMultiple modules can be included in a vector. Default \\code{NULL} which\nplots all module heatmaps.}\n\n\\item{featureModule}{Same as \\code{modules}. Either can be used to specify\nthe modules to display.}\n\n\\item{col}{Passed to \\link[ComplexHeatmap]{Heatmap}. Set color boundaries\nand colors.}\n\n\\item{topCells}{Integer. Number of cells with the highest and lowest\nprobabilities for each module to include in the heatmap. For example, if\n\\code{topCells = 50}, the 50 cells with the lowest probabilities and\nthe 50 cells\nwith the highest probabilities for each featureModule will be included. If\nNULL, all cells will be plotted. Default 100.}\n\n\\item{topFeatures}{Integer. Plot `topFeatures` features with the highest\nprobabilities in the module heatmap for each featureModule. If \\code{NULL},\nplot all features in the module. Default \\code{NULL}.}\n\n\\item{normalizedCounts}{Integer matrix. Rows represent features and columns\nrepresent cells. If you have a normalized matrix result from\n\\link{normalizeCounts}, you can pass through the result here to\nskip the normalization step in this function. Make sure the colnames and\nrownames match the object in x. This matrix should\ncorrespond to one generated from this count matrix\n\\code{assay(altExp(x, altExpName), i = useAssay)}. If \\code{NA},\nnormalization will be carried out in the following form\n\\code{normalizeCounts(assay(altExp(x, altExpName), i = useAssay),\nnormalize = \"proportion\", transformationFun = sqrt)}.\nUse of this parameter is particularly useful for plotting many\nmodule heatmaps, where normalizing the counts matrix repeatedly would\nbe too time consuming. Default NA.}\n\n\\item{normalize}{Character. Passed to \\link{normalizeCounts} if\n\\code{normalizedCounts} is \\code{NA}.\nDivides counts by the library sizes for each cell. One of 'proportion',\n'cpm', 'median', or 'mean'. 'proportion' uses the total counts for each\ncell as the library size. 'cpm' divides the library size of each cell by\none million to produce counts per million. 'median' divides the library\nsize of each cell by the median library size across all cells. 'mean'\ndivides the library size of each cell by the mean library size across all\ncells. Default \"proportion\".}\n\n\\item{transformationFun}{Function. Passed to \\link{normalizeCounts} if\n\\code{normalizedCounts} is \\code{NA}. Applies a transformation such as\n\\link{sqrt}, \\link{log}, \\link{log2}, \\link{log10}, or \\link{log1p}.\nIf \\code{NULL}, no transformation will be applied. Occurs after\nnormalization. Default \\link{sqrt}.}\n\n\\item{scaleRow}{Function. Which function to use to scale each individual\nrow. Set to NULL to disable. Occurs after normalization and log\ntransformation. For example, \\link{scale} will Z-score transform each row.\nDefault \\link{scale}.}\n\n\\item{showFeatureNames}{Logical. Whether feature names should be displayed.\nDefault TRUE.}\n\n\\item{displayName}{Character. The column name of\n\\code{rowData(altExp(x, altExpName))} that specifies the display names for\nthe features. Default \\code{NULL}, which displays the row names. Only works\nif \\code{showFeaturenames} is \\code{TRUE} and \\code{x} is a\n\\linkS4class{SingleCellExperiment} object.}\n\n\\item{trim}{Numeric vector. Vector of length two that specifies the lower\nand upper bounds for plotting the data. This threshold is applied\nafter row scaling. Set to NULL to disable. Default \\code{c(-2,2)}.}\n\n\\item{rowFontSize}{Numeric. Font size for feature names. If \\code{NULL},\nthen the size will automatically be determined. Default \\code{NULL}.}\n\n\\item{showHeatmapLegend}{Passed to \\link[ComplexHeatmap]{Heatmap}. Show\nlegend for expression levels.}\n\n\\item{showTopAnnotationLegend}{Passed to\n\\link[ComplexHeatmap]{HeatmapAnnotation}. Show legend for cell annotation.}\n\n\\item{showTopAnnotationName}{Passed to\n\\link[ComplexHeatmap]{HeatmapAnnotation}. Show heatmap top annotation name.}\n\n\\item{topAnnotationHeight}{Passed to\n\\link[ComplexHeatmap]{HeatmapAnnotation}. Column annotation height.\n\\link[ComplexHeatmap]{rowAnnotation}. Show legend for module annotation.}\n\n\\item{showModuleLabel}{Show left side module labels.}\n\n\\item{moduleLabel}{The left side row titles for module heatmap. Must be\nvector of the same length as \\code{featureModule}. Default \"auto\", which\nautomatically pulls module labels from \\code{x}.}\n\n\\item{moduleLabelSize}{Passed to \\link{gpar}. The size of text (in points).}\n\n\\item{byrow}{Passed to \\link{matrix}. logical. If \\code{FALSE} (the default)\nthe figure panel is filled by columns, otherwise the figure panel is filled\nby rows.}\n\n\\item{top}{Passed to \\link[gridExtra]{marrangeGrob}. The title for each page.}\n\n\\item{unit}{Passed to \\link[grid]{unit}. Single\ncharacter object defining the unit of all dimensions defined.}\n\n\\item{ncol}{Integer. Number of columns of module heatmaps. If \\code{NULL},\nthen this will be automatically calculated so that the number of columns\nand rows will be approximately the same. Default \\code{NULL}.}\n\n\\item{useRaster}{Boolean. Rasterizing will make the heatmap a single object\nand reduced the memory of the plot and the size of a file. If \\code{NULL},\nthen rasterization will be automatically determined by the underlying\n\\link[ComplexHeatmap]{Heatmap} function. Default \\code{TRUE}.}\n\n\\item{returnAsList}{Boolean. If \\code{TRUE}, then a list of plots will be\nreturned instead of a single multi-panel figure. These plots can be\ndisplayed using the \\link[grid]{grid.draw} function. Default \\code{FALSE}.}\n\n\\item{...}{Additional parameters passed to \\link[ComplexHeatmap]{Heatmap}.}\n}\n\\value{\nA list object if plotting\n more than one module heatmaps. Otherwise a\n \\link[ComplexHeatmap]{HeatmapList} object is returned.\n}\n\\description{\nRenders a heatmap for selected \\code{featureModule}. Cells are\n ordered from those with the lowest probability of the module on the left to\n the highest probability on the right. Features are ordered from those\n with the highest probability in the module\n on the top to the lowest probability on the bottom.\n}\n\\examples{\ndata(sceCeldaCG)\nmoduleHeatmap(sceCeldaCG, displayName = \"rownames\")\n}\n"
  },
  {
    "path": "man/nonzero.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/RcppExports.R\n\\name{nonzero}\n\\alias{nonzero}\n\\title{get row and column indices of none zero elements in the matrix}\n\\usage{\nnonzero(R_counts)\n}\n\\arguments{\n\\item{R_counts}{A matrix}\n}\n\\value{\nAn integer matrix where each row is a row, column indices pair\n}\n\\description{\nget row and column indices of none zero elements in the matrix\n}\n"
  },
  {
    "path": "man/normalizeCounts.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/celda_functions.R\n\\name{normalizeCounts}\n\\alias{normalizeCounts}\n\\title{Normalization of count data}\n\\usage{\nnormalizeCounts(\n  counts,\n  normalize = c(\"proportion\", \"cpm\", \"median\", \"mean\"),\n  scaleFactor = NULL,\n  transformationFun = NULL,\n  scaleFun = NULL,\n  pseudocountNormalize = 0,\n  pseudocountTransform = 0\n)\n}\n\\arguments{\n\\item{counts}{Integer, Numeric or Sparse matrix. Rows represent features\nand columns represent cells.}\n\n\\item{normalize}{Character.\nDivides counts by the library sizes for each cell. One of 'proportion',\n'cpm', 'median', or 'mean'. 'proportion' uses the total counts for each\ncell as the library size. 'cpm' divides the library size of each cell by\none million to produce counts per million. 'median' divides the library\nsize of each cell by the median library size across all cells. 'mean'\ndivides the library size of each cell by the mean library size across all\ncells.}\n\n\\item{scaleFactor}{Numeric. Sets the scale factor for cell-level\nnormalization. This scale factor is multiplied to each cell after the\nlibrary size of each cell had been adjusted in \\code{normalize}. Default\n\\code{NULL} which means no scale factor is applied.}\n\n\\item{transformationFun}{Function. Applys a transformation such as\n\\link{sqrt}, \\link{log}, \\link{log2}, \\link{log10}, or \\link{log1p}.\nIf NULL, no transformation will be applied. Occurs after normalization.\nDefault NULL.}\n\n\\item{scaleFun}{Function. Scales the rows of the normalized and transformed\ncount matrix. For example, 'scale' can be used to z-score normalize the\nrows. Default NULL.}\n\n\\item{pseudocountNormalize}{Numeric. Add a pseudocount to counts before\nnormalization. Default 0.}\n\n\\item{pseudocountTransform}{Numeric. Add a pseudocount to normalized counts\nbefore applying the transformation function. Adding a pseudocount\ncan be useful before applying a log transformation. Default  0.}\n}\n\\value{\nNumeric Matrix. A normalized matrix.\n}\n\\description{\nPerforms normalization, transformation, and/or scaling of a\n counts matrix\n}\n\\examples{\ndata(celdaCGSim)\nnormalizedCounts <- normalizeCounts(celdaCGSim$counts, \"proportion\",\n  pseudocountNormalize = 1)\n}\n"
  },
  {
    "path": "man/params.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/accessors.R\n\\name{params}\n\\alias{params}\n\\alias{params,celdaModel-method}\n\\title{Get parameter values provided for celdaModel creation}\n\\usage{\nparams(celdaMod)\n\n\\S4method{params}{celdaModel}(celdaMod)\n}\n\\arguments{\n\\item{celdaMod}{celdaModel. Options available in\n\\code{celda::availableModels}.}\n}\n\\value{\nList. Contains the model-specific parameters for the provided celda\n model object depending on its class.\n}\n\\description{\nRetrieves the K/L, model priors (e.g. alpha, beta),\n and count matrix checksum parameters provided during the creation of the\n provided celdaModel.\n}\n\\examples{\ndata(celdaCGMod)\nparams(celdaCGMod)\n}\n"
  },
  {
    "path": "man/perplexity.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/perplexity.R\n\\name{perplexity}\n\\alias{perplexity}\n\\alias{perplexity,SingleCellExperiment,ANY-method}\n\\alias{perplexity,ANY,celda_CG-method}\n\\alias{perplexity,ANY,celda_C-method}\n\\alias{perplexity,ANY,celda_G-method}\n\\title{Calculate the perplexity of a celda model}\n\\usage{\nperplexity(\n  x,\n  celdaMod,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  newCounts = NULL\n)\n\n\\S4method{perplexity}{SingleCellExperiment,ANY}(\n  x,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  newCounts = NULL\n)\n\n\\S4method{perplexity}{ANY,celda_CG}(x, celdaMod, newCounts = NULL)\n\n\\S4method{perplexity}{ANY,celda_C}(x, celdaMod, newCounts = NULL)\n\n\\S4method{perplexity}{ANY,celda_G}(x, celdaMod, newCounts = NULL)\n}\n\\arguments{\n\\item{x}{Can be one of\n\\itemize{\n\\item A \\linkS4class{SingleCellExperiment} object returned by\n\\link{celda_C}, \\link{celda_G} or \\link{celda_CG}, with the matrix\nlocated in the \\code{useAssay} assay slot.\nRows represent features and columns represent cells.\n\\item Integer counts matrix. Rows represent features and columns represent\ncells. This matrix should be the same as the one used to generate\n\\code{celdaMod}.}}\n\n\\item{celdaMod}{Celda model object. Only works if \\code{x} is an integer\ncounts matrix.}\n\n\\item{useAssay}{A string specifying which \\link{assay}\nslot to use if \\code{x} is a \\linkS4class{SingleCellExperiment} object.\nDefault \"counts\".}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n\n\\item{newCounts}{A new counts matrix used to calculate perplexity. If NULL,\nperplexity will be calculated for the matrix in \\code{useAssay} slot in\n\\code{x}. Default NULL.}\n}\n\\value{\nNumeric. The perplexity for the provided \\code{x} (and\n \\code{celdaModel}).\n}\n\\description{\nPerplexity is a statistical measure of how well a probability\n model can predict new data. Lower perplexity indicates a better model.\n}\n\\examples{\ndata(sceCeldaCG)\nperplexity <- perplexity(sceCeldaCG)\ndata(celdaCGSim, celdaCGMod)\nperplexity <- perplexity(celdaCGSim$counts, celdaCGMod)\ndata(celdaCSim, celdaCMod)\nperplexity <- perplexity(celdaCSim$counts, celdaCMod)\ndata(celdaGSim, celdaGMod)\nperplexity <- perplexity(celdaGSim$counts, celdaGMod)\n}\n"
  },
  {
    "path": "man/plotCeldaViolin.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/plot_dr.R\n\\name{plotCeldaViolin}\n\\alias{plotCeldaViolin}\n\\alias{plotCeldaViolin,SingleCellExperiment-method}\n\\alias{plotCeldaViolin,ANY-method}\n\\title{Feature Expression Violin Plot}\n\\usage{\nplotCeldaViolin(\n  x,\n  celdaMod,\n  features,\n  displayName = NULL,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  exactMatch = TRUE,\n  plotDots = TRUE,\n  dotSize = 0.1\n)\n\n\\S4method{plotCeldaViolin}{SingleCellExperiment}(\n  x,\n  features,\n  displayName = NULL,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  exactMatch = TRUE,\n  plotDots = TRUE,\n  dotSize = 0.1\n)\n\n\\S4method{plotCeldaViolin}{ANY}(\n  x,\n  celdaMod,\n  features,\n  exactMatch = TRUE,\n  plotDots = TRUE,\n  dotSize = 0.1\n)\n}\n\\arguments{\n\\item{x}{Numeric matrix or a \\linkS4class{SingleCellExperiment} object\nwith the matrix located in the assay slot under \\code{useAssay}. Rows\nrepresent features and columns represent cells.}\n\n\\item{celdaMod}{Celda object of class \"celda_G\" or \"celda_CG\". Used only if\n\\code{x} is a matrix object.}\n\n\\item{features}{Character vector. Uses these genes for plotting.}\n\n\\item{displayName}{Character. The column name of\n\\code{rowData(x)} that specifies the display names for\nthe features. Default \\code{NULL}, which displays the row names. Only works\nif \\code{x} is a \\linkS4class{SingleCellExperiment} object.}\n\n\\item{useAssay}{A string specifying which \\link{assay}\nslot to use if \\code{x} is a\n\\linkS4class{SingleCellExperiment} object. Default \"counts\".}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n\n\\item{exactMatch}{Logical. Whether an exact match or a partial match using\n\\code{grep()} is used to look up the feature in the rownames of the counts\n matrix. Default \\code{TRUE}.}\n\n\\item{plotDots}{Boolean. If \\code{TRUE}, the\nexpression of features will be plotted as points in addition to the violin\ncurve. Default \\code{TRUE}.}\n\n\\item{dotSize}{Numeric. Size of points if \\code{plotDots = TRUE}.\nDefault \\code{0.1}.}\n}\n\\value{\nViolin plot for each feature, grouped by celda cluster\n}\n\\description{\nOutputs a violin plot for feature expression data.\n}\n\\examples{\ndata(sceCeldaCG)\nplotCeldaViolin(x = sceCeldaCG, features = \"Gene_1\")\ndata(celdaCGSim, celdaCGMod)\nplotCeldaViolin(x = celdaCGSim$counts,\n   celdaMod = celdaCGMod,\n   features = \"Gene_1\")\n}\n"
  },
  {
    "path": "man/plotDecontXContamination.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/plot_decontx.R\n\\name{plotDecontXContamination}\n\\alias{plotDecontXContamination}\n\\title{Plots contamination on UMAP coordinates}\n\\usage{\nplotDecontXContamination(\n  x,\n  batch = NULL,\n  colorScale = c(\"blue\", \"green\", \"yellow\", \"orange\", \"red\"),\n  size = 1\n)\n}\n\\arguments{\n\\item{x}{Either a \\linkS4class{SingleCellExperiment} with \\code{decontX}\nresults stored in \\code{metadata(x)$decontX} or the result from running\ndecontX on a count matrix.}\n\n\\item{batch}{Character. Batch of cells to plot. If \\code{NULL}, then\nthe first batch in the list will be selected. Default \\code{NULL}.}\n\n\\item{colorScale}{Character vector. Contains the color spectrum to be passed\nto \\code{scale_colour_gradientn} from package 'ggplot2'. Default\nc(\"blue\",\"green\",\"yellow\",\"orange\",\"red\").}\n\n\\item{size}{Numeric. Size of points in the scatterplot. Default 1.}\n}\n\\value{\nReturns a \\code{ggplot} object.\n}\n\\description{\nA scatter plot of the UMAP dimensions generated by DecontX with\ncells colored by the estimated percentation of contamation.\n}\n\\seealso{\nSee \\code{\\link{decontX}} for a full example of how to estimate\nand plot contamination.\n}\n\\author{\nShiyi Yang, Joshua Campbell\n}\n"
  },
  {
    "path": "man/plotDecontXMarkerExpression.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/plot_decontx.R\n\\name{plotDecontXMarkerExpression}\n\\alias{plotDecontXMarkerExpression}\n\\title{Plots expression of marker genes before and after decontamination}\n\\usage{\nplotDecontXMarkerExpression(\n  x,\n  markers,\n  groupClusters = NULL,\n  assayName = c(\"counts\", \"decontXcounts\"),\n  z = NULL,\n  exactMatch = TRUE,\n  by = \"rownames\",\n  log1p = FALSE,\n  ncol = NULL,\n  plotDots = FALSE,\n  dotSize = 0.1\n)\n}\n\\arguments{\n\\item{x}{Either a \\linkS4class{SingleCellExperiment}\nor a matrix-like object of counts.}\n\n\\item{markers}{Character Vector or List. A character vector\nor list of character vectors\nwith the names of the marker genes of interest.}\n\n\\item{groupClusters}{List. A named list that allows\ncell clusters labels coded in\n\\code{z} to be regrouped and renamed on the fly. For example,\n\\code{list(Tcells=c(1, 2), Bcells=7)} would recode clusters\n1 and 2 to \"Tcells\"\nand cluster 7 to \"Bcells\". Note that if this is used, clusters\nin \\code{z} not found\nin \\code{groupClusters} will be excluded. Default \\code{NULL}.}\n\n\\item{assayName}{Character vector. Name(s) of the assay(s) to\nplot if \\code{x} is a\n\\linkS4class{SingleCellExperiment}. If more than one assay is listed, then\nside-by-side violin plots will be generated.\nDefault \\code{c(\"counts\", \"decontXcounts\")}.}\n\n\\item{z}{Character, Integer, or Vector.\nIndicates the cluster labels for each cell.\nIf \\code{x} is a \\linkS4class{SingleCellExperiment} and \\code{z = NULL},\nthen the cluster labels from \\code{\\link{decontX}} will be retreived from the\n\\code{colData} of \\code{x} (i.e. \\code{colData(x)$decontX_clusters}).\nIf \\code{z} is a single character or integer, then that column will be\nretrived from \\code{colData} of \\code{x}. (i.e. \\code{colData(x)[,z]}).\nIf \\code{x} is a counts matrix, then \\code{z} will need to be a vector\nthe same length as the number of columns in \\code{x} that indicate\nthe cluster to which each cell belongs. Default \\code{NULL}.}\n\n\\item{exactMatch}{Boolean. Whether to only identify exact matches\nfor the markers or to identify partial matches using \\code{\\link{grep}}.\nSee \\code{\\link{retrieveFeatureIndex}} for more details.\nDefault \\code{TRUE}.}\n\n\\item{by}{Character. Where to search for the markers if \\code{x} is a\n\\linkS4class{SingleCellExperiment}. See \\code{\\link{retrieveFeatureIndex}}\nfor more details. If \\code{x} is a matrix, then this must be set to\n\\code{\"rownames\"}. Default \\code{\"rownames\"}.}\n\n\\item{log1p}{Boolean. Whether to apply the function \\code{log1p} to the data\nbefore plotting. This function will add a pseudocount of 1 and then log\ntransform the expression values. Default \\code{FALSE}.}\n\n\\item{ncol}{Integer. Number of columns to make in the plot.\nDefault \\code{NULL}.}\n\n\\item{plotDots}{Boolean. If \\code{TRUE}, the\nexpression of features will be plotted as points in addition to the violin\ncurve. Default \\code{FALSE}.}\n\n\\item{dotSize}{Numeric. Size of points if \\code{plotDots = TRUE}.\nDefault \\code{0.1}.}\n}\n\\value{\nReturns a \\code{ggplot} object.\n}\n\\description{\nGenerates a violin plot that shows the counts of marker\ngenes in cells across specific clusters or cell types. Can be used to view\nthe expression of marker genes in different cell types before and after\ndecontamination with \\code{\\link{decontX}}.\n}\n\\seealso{\nSee \\code{\\link{decontX}} for a full example of how to estimate\nand plot contamination.\n}\n\\author{\nShiyi Yang, Joshua Campbell\n}\n"
  },
  {
    "path": "man/plotDecontXMarkerPercentage.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/plot_decontx.R\n\\name{plotDecontXMarkerPercentage}\n\\alias{plotDecontXMarkerPercentage}\n\\title{Plots percentage of cells cell types expressing markers}\n\\usage{\nplotDecontXMarkerPercentage(\n  x,\n  markers,\n  groupClusters = NULL,\n  assayName = c(\"counts\", \"decontXcounts\"),\n  z = NULL,\n  threshold = 1,\n  exactMatch = TRUE,\n  by = \"rownames\",\n  ncol = round(sqrt(length(markers))),\n  labelBars = TRUE,\n  labelSize = 3\n)\n}\n\\arguments{\n\\item{x}{Either a \\linkS4class{SingleCellExperiment} or\na matrix-like object of counts.}\n\n\\item{markers}{List. A named list indicating the marker genes\nfor each cell type of\ninterest. Multiple markers can be supplied for each cell type. For example,\n\\code{list(Tcell_Markers=c(\"CD3E\", \"CD3D\"),\nBcell_Markers=c(\"CD79A\", \"CD79B\", \"MS4A1\")}\nwould specify markers for human T-cells and B-cells.\nA cell will be considered\n\"positive\" for a cell type if it has a count greater than \\code{threshold}\nfor at least one of the marker genes in the list.}\n\n\\item{groupClusters}{List. A named list that allows\ncell clusters labels coded in\n\\code{z} to be regrouped and renamed on the fly. For example,\n\\code{list(Tcells=c(1, 2), Bcells=7)} would recode\nclusters 1 and 2 to \"Tcells\"\nand cluster 7 to \"Bcells\". Note that if this is\nused, clusters in \\code{z} not found\nin \\code{groupClusters} will be excluded from the barplot.\nDefault \\code{NULL}.}\n\n\\item{assayName}{Character vector. Name(s) of the assay(s) to\nplot if \\code{x} is a\n\\linkS4class{SingleCellExperiment}. If more than one assay\nis listed, then side-by-side barplots will be generated.\nDefault \\code{c(\"counts\", \"decontXcounts\")}.}\n\n\\item{z}{Character, Integer, or Vector. Indicates the cluster labels\nfor each cell.\nIf \\code{x} is a \\linkS4class{SingleCellExperiment} and \\code{z = NULL},\nthen the cluster labels from \\code{\\link{decontX}} will be retived from the\n\\code{colData} of \\code{x} (i.e. \\code{colData(x)$decontX_clusters}).\nIf \\code{z} is a single character or integer,\nthen that column will be retrived\nfrom \\code{colData} of \\code{x}. (i.e. \\code{colData(x)[,z]}). If \\code{x}\nis a counts matrix, then \\code{z} will need\nto be a vector the same length as\nthe number of columns in \\code{x} that indicate\nthe cluster to which each cell\nbelongs. Default \\code{NULL}.}\n\n\\item{threshold}{Numeric. Markers greater than or equal to this value will\nbe considered detected in a cell. Default 1.}\n\n\\item{exactMatch}{Boolean. Whether to only identify exact matches\nfor the markers or to identify partial matches using \\code{\\link{grep}}. See\n\\code{\\link{retrieveFeatureIndex}} for more details. Default \\code{TRUE}.}\n\n\\item{by}{Character. Where to search for the markers if \\code{x} is a\n\\linkS4class{SingleCellExperiment}. See \\code{\\link{retrieveFeatureIndex}}\nfor more details. If \\code{x} is a matrix,\nthen this must be set to \\code{\"rownames\"}.Default \\code{\"rownames\"}.}\n\n\\item{ncol}{Integer. Number of columns to make in the plot.\nDefault \\code{round(sqrt(length(markers))}.}\n\n\\item{labelBars}{Boolean. Whether to display percentages above each bar\nDefault \\code{TRUE}.}\n\n\\item{labelSize}{Numeric. Size of the percentage labels in the barplot.\nDefault 3.}\n}\n\\value{\nReturns a \\code{ggplot} object.\n}\n\\description{\nGenerates a barplot that shows the percentage of\ncells within clusters or cell types that have detectable levels\nof given marker genes. Can be used to view the expression of\nmarker genes in different cell types before and after\ndecontamination with \\code{\\link{decontX}}.\n}\n\\seealso{\nSee \\code{\\link{decontX}} for a full example of how to estimate\nand plot contamination.\n}\n\\author{\nShiyi Yang, Joshua Campbell\n}\n"
  },
  {
    "path": "man/plotDimReduceCluster.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/plot_dr.R\n\\name{plotDimReduceCluster}\n\\alias{plotDimReduceCluster}\n\\alias{plotDimReduceCluster,SingleCellExperiment-method}\n\\alias{plotDimReduceCluster,vector-method}\n\\title{Plotting the cell labels on a dimension reduction plot}\n\\usage{\nplotDimReduceCluster(\n  x,\n  reducedDimName,\n  altExpName = \"featureSubset\",\n  dim1 = NULL,\n  dim2 = NULL,\n  size = 0.5,\n  xlab = NULL,\n  ylab = NULL,\n  specificClusters = NULL,\n  labelClusters = FALSE,\n  groupBy = NULL,\n  labelSize = 3.5\n)\n\n\\S4method{plotDimReduceCluster}{SingleCellExperiment}(\n  x,\n  reducedDimName,\n  altExpName = \"featureSubset\",\n  dim1 = 1,\n  dim2 = 2,\n  size = 0.5,\n  xlab = NULL,\n  ylab = NULL,\n  specificClusters = NULL,\n  labelClusters = FALSE,\n  groupBy = NULL,\n  labelSize = 3.5\n)\n\n\\S4method{plotDimReduceCluster}{vector}(\n  x,\n  dim1,\n  dim2,\n  size = 0.5,\n  xlab = \"Dimension_1\",\n  ylab = \"Dimension_2\",\n  specificClusters = NULL,\n  labelClusters = FALSE,\n  groupBy = NULL,\n  labelSize = 3.5\n)\n}\n\\arguments{\n\\item{x}{Integer vector of cell cluster labels or a\n\\linkS4class{SingleCellExperiment} object\ncontaining cluster labels for each cell in \\code{\"celda_cell_cluster\"}\ncolumn in \\code{colData(x)}.}\n\n\\item{reducedDimName}{The name of the dimension reduction slot in\n\\code{reducedDimNames(x)} if \\code{x} is a\n\\linkS4class{SingleCellExperiment} object. Ignored if both \\code{dim1} and\n\\code{dim2} are set.}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n\n\\item{dim1}{Integer or numeric vector. If \\code{reducedDimName} is supplied,\nthen, this will be used as an index to determine which dimension will be\nplotted on the x-axis. If \\code{reducedDimName} is not supplied, then this\nshould be a vector which will be plotted on the x-axis. Default \\code{1}.}\n\n\\item{dim2}{Integer or numeric vector. If \\code{reducedDimName} is supplied,\nthen, this will be used as an index to determine which dimension will be\nplotted on the y-axis. If \\code{reducedDimName} is not supplied, then this\nshould be a vector which will be plotted on the y-axis. Default \\code{2}.}\n\n\\item{size}{Numeric. Sets size of point on plot. Default \\code{0.5}.}\n\n\\item{xlab}{Character vector. Label for the x-axis. Default \\code{NULL}.}\n\n\\item{ylab}{Character vector. Label for the y-axis. Default \\code{NULL}.}\n\n\\item{specificClusters}{Numeric vector.\nOnly color cells in the specified clusters.\nAll other cells will be grey.\nIf NULL, all clusters will be colored. Default \\code{NULL}.}\n\n\\item{labelClusters}{Logical. Whether the cluster labels are plotted.\nDefault FALSE.}\n\n\\item{groupBy}{Character vector. Contains sample labels for each cell.\nIf NULL, all samples will be plotted together. Default NULL.}\n\n\\item{labelSize}{Numeric. Sets size of label if labelClusters is TRUE.\nDefault 3.5.}\n}\n\\value{\nThe plot as a ggplot object\n}\n\\description{\nCreate a scatterplot for each row of a normalized\n gene expression matrix where x and y axis are from a\n data dimension reduction tool.\n The cells are colored by \"celda_cell_cluster\" column in\n  \\code{colData(altExp(x, altExpName))} if \\code{x} is a\n  \\linkS4class{SingleCellExperiment} object, or \\code{x} if \\code{x} is\n  a integer vector of cell cluster labels.\n}\n\\examples{\ndata(sceCeldaCG)\nsce <- celdaTsne(sceCeldaCG)\nplotDimReduceCluster(x = sce,\n  reducedDimName = \"celda_tSNE\",\n  specificClusters = c(1, 2, 3))\nlibrary(SingleCellExperiment)\ndata(sceCeldaCG, celdaCGMod)\nsce <- celdaTsne(sceCeldaCG)\nplotDimReduceCluster(x = celdaClusters(celdaCGMod)$z,\n  dim1 = reducedDim(altExp(sce), \"celda_tSNE\")[, 1],\n  dim2 = reducedDim(altExp(sce), \"celda_tSNE\")[, 2],\n  specificClusters = c(1, 2, 3))\n}\n"
  },
  {
    "path": "man/plotDimReduceFeature.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/plot_dr.R\n\\name{plotDimReduceFeature}\n\\alias{plotDimReduceFeature}\n\\alias{plotDimReduceFeature,SingleCellExperiment-method}\n\\alias{plotDimReduceFeature,ANY-method}\n\\title{Plotting feature expression on a dimension reduction plot}\n\\usage{\nplotDimReduceFeature(\n  x,\n  features,\n  reducedDimName = NULL,\n  displayName = NULL,\n  dim1 = NULL,\n  dim2 = NULL,\n  headers = NULL,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  normalize = FALSE,\n  zscore = TRUE,\n  exactMatch = TRUE,\n  trim = c(-2, 2),\n  limits = c(-2, 2),\n  size = 0.5,\n  xlab = NULL,\n  ylab = NULL,\n  colorLow = \"blue4\",\n  colorMid = \"grey90\",\n  colorHigh = \"firebrick1\",\n  midpoint = 0,\n  ncol = NULL,\n  decreasing = FALSE\n)\n\n\\S4method{plotDimReduceFeature}{SingleCellExperiment}(\n  x,\n  features,\n  reducedDimName = NULL,\n  displayName = NULL,\n  dim1 = 1,\n  dim2 = 2,\n  headers = NULL,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  normalize = FALSE,\n  zscore = TRUE,\n  exactMatch = TRUE,\n  trim = c(-2, 2),\n  limits = c(-2, 2),\n  size = 0.5,\n  xlab = NULL,\n  ylab = NULL,\n  colorLow = \"blue4\",\n  colorMid = \"grey90\",\n  colorHigh = \"firebrick1\",\n  midpoint = 0,\n  ncol = NULL,\n  decreasing = FALSE\n)\n\n\\S4method{plotDimReduceFeature}{ANY}(\n  x,\n  features,\n  dim1,\n  dim2,\n  headers = NULL,\n  normalize = FALSE,\n  zscore = TRUE,\n  exactMatch = TRUE,\n  trim = c(-2, 2),\n  limits = c(-2, 2),\n  size = 0.5,\n  xlab = \"Dimension_1\",\n  ylab = \"Dimension_2\",\n  colorLow = \"blue4\",\n  colorMid = \"grey90\",\n  colorHigh = \"firebrick1\",\n  midpoint = 0,\n  ncol = NULL,\n  decreasing = FALSE\n)\n}\n\\arguments{\n\\item{x}{Numeric matrix or a \\linkS4class{SingleCellExperiment} object\nwith the matrix located in the assay slot under \\code{useAssay}. Rows\nrepresent features and columns represent cells.}\n\n\\item{features}{Character vector. Features in the rownames of counts to plot.}\n\n\\item{reducedDimName}{The name of the dimension reduction slot in\n\\code{reducedDimNames(x)} if \\code{x} is a\n\\linkS4class{SingleCellExperiment} object. If \\code{NULL}, then both\n\\code{dim1} and \\code{dim2} need to be set. Default \\code{NULL}.}\n\n\\item{displayName}{Character. The column name of\n\\code{rowData(x)} that specifies the display names for\nthe features. Default \\code{NULL}, which displays the row names. Only works\nif \\code{x} is a \\linkS4class{SingleCellExperiment} object. Overwrites\n\\code{headers}.}\n\n\\item{dim1}{Integer or numeric vector. If \\code{reducedDimName} is supplied,\nthen, this will be used as an index to determine which dimension will be\nplotted on the x-axis. If \\code{reducedDimName} is not supplied, then this\nshould be a vector which will be plotted on the x-axis. Default \\code{1}.}\n\n\\item{dim2}{Integer or numeric vector. If \\code{reducedDimName} is supplied,\nthen, this will be used as an index to determine which dimension will be\nplotted on the y-axis. If \\code{reducedDimName} is not supplied, then this\nshould be a vector which will be plotted on the y-axis. Default \\code{2}.}\n\n\\item{headers}{Character vector. If \\code{NULL}, the corresponding\nrownames are used as labels. Otherwise, these headers are used to label\nthe features. Only works if \\code{displayName} is \\code{NULL} and\n\\code{exactMatch} is \\code{FALSE}.}\n\n\\item{useAssay}{A string specifying which \\link{assay}\nslot to use if \\code{x} is a\n\\linkS4class{SingleCellExperiment} object. Default \"counts\".}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n\n\\item{normalize}{Logical. Whether to normalize the columns of `counts`.\nDefault \\code{FALSE}.}\n\n\\item{zscore}{Logical. Whether to scale each feature to have a mean 0\nand standard deviation of 1. Default \\code{TRUE}.}\n\n\\item{exactMatch}{Logical. Whether an exact match or a partial match using\n\\code{grep()} is used to look up the feature in the rownames of the counts\n matrix. Default TRUE.}\n\n\\item{trim}{Numeric vector. Vector of length two that specifies the lower\nand upper bounds for the data. This threshold is applied after row scaling.\nSet to NULL to disable. Default \\code{c(-1,1)}.}\n\n\\item{limits}{Passed to \\link{scale_colour_gradient2}. The range\nof color scale.}\n\n\\item{size}{Numeric. Sets size of point on plot. Default 1.}\n\n\\item{xlab}{Character vector. Label for the x-axis. If \\code{reducedDimName}\nis used, then this will be set to the column name of the first dimension of\nthat object. Default \"Dimension_1\".}\n\n\\item{ylab}{Character vector. Label for the y-axis. If \\code{reducedDimName}\nis used, then this will be set to the column name of the second dimension of\nthat object. Default \"Dimension_2\".}\n\n\\item{colorLow}{Character. A color available from `colors()`. The color\nwill be used to signify the lowest values on the scale.}\n\n\\item{colorMid}{Character. A color available from `colors()`. The color\nwill be used to signify the midpoint on the scale.}\n\n\\item{colorHigh}{Character. A color available from `colors()`. The color\nwill be used to signify the highest values on the scale.}\n\n\\item{midpoint}{Numeric. The value indicating the midpoint of the\ndiverging color scheme. If \\code{NULL}, defaults to the mean\nwith 10 percent of values trimmed. Default \\code{0}.}\n\n\\item{ncol}{Integer. Passed to \\link[ggplot2]{facet_wrap}. Specify the\nnumber of columns for facet wrap.}\n\n\\item{decreasing}{logical. Specifies the order of plotting the points.\nIf \\code{FALSE}, the points will be plotted in increasing order where\nthe points with largest values will be on top. \\code{TRUE} otherwise.\nIf \\code{NULL}, no sorting is performed. Points will be plotted in their\ncurrent order in \\code{x}. Default \\code{FALSE}.}\n}\n\\value{\nThe plot as a ggplot object\n}\n\\description{\nCreate a scatterplot for each row of a normalized gene\n expression matrix where x and y axis are from a data dimension\n reduction tool. The cells are colored by expression of\n the specified feature.\n}\n\\examples{\ndata(sceCeldaCG)\nsce <- celdaTsne(sceCeldaCG)\nplotDimReduceFeature(x = sce,\n  reducedDimName = \"celda_tSNE\",\n  normalize = TRUE,\n  features = c(\"Gene_98\", \"Gene_99\"),\n  exactMatch = TRUE)\nlibrary(SingleCellExperiment)\ndata(sceCeldaCG)\nsce <- celdaTsne(sceCeldaCG)\nplotDimReduceFeature(x = counts(sce),\n  dim1 = reducedDim(altExp(sce), \"celda_tSNE\")[, 1],\n  dim2 = reducedDim(altExp(sce), \"celda_tSNE\")[, 2],\n  normalize = TRUE,\n  features = c(\"Gene_98\", \"Gene_99\"),\n  exactMatch = TRUE)\n}\n"
  },
  {
    "path": "man/plotDimReduceGrid.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/plot_dr.R\n\\name{plotDimReduceGrid}\n\\alias{plotDimReduceGrid}\n\\alias{plotDimReduceGrid,SingleCellExperiment-method}\n\\alias{plotDimReduceGrid,ANY-method}\n\\title{Mapping the dimension reduction plot}\n\\usage{\nplotDimReduceGrid(\n  x,\n  reducedDimName,\n  dim1 = NULL,\n  dim2 = NULL,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  size = 1,\n  xlab = \"Dimension_1\",\n  ylab = \"Dimension_2\",\n  limits = c(-2, 2),\n  colorLow = \"blue4\",\n  colorMid = \"grey90\",\n  colorHigh = \"firebrick1\",\n  midpoint = 0,\n  varLabel = NULL,\n  ncol = NULL,\n  headers = NULL,\n  decreasing = FALSE\n)\n\n\\S4method{plotDimReduceGrid}{SingleCellExperiment}(\n  x,\n  reducedDimName,\n  dim1 = NULL,\n  dim2 = NULL,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  size = 1,\n  xlab = \"Dimension_1\",\n  ylab = \"Dimension_2\",\n  limits = c(-2, 2),\n  colorLow = \"blue4\",\n  colorMid = \"grey90\",\n  colorHigh = \"firebrick1\",\n  midpoint = 0,\n  varLabel = NULL,\n  ncol = NULL,\n  headers = NULL,\n  decreasing = FALSE\n)\n\n\\S4method{plotDimReduceGrid}{ANY}(\n  x,\n  dim1,\n  dim2,\n  size = 1,\n  xlab = \"Dimension_1\",\n  ylab = \"Dimension_2\",\n  limits = c(-2, 2),\n  colorLow = \"blue4\",\n  colorMid = \"grey90\",\n  colorHigh = \"firebrick1\",\n  midpoint = 0,\n  varLabel = NULL,\n  ncol = NULL,\n  headers = NULL,\n  decreasing = FALSE\n)\n}\n\\arguments{\n\\item{x}{Numeric matrix or a \\linkS4class{SingleCellExperiment} object\nwith the matrix located in the assay slot under \\code{useAssay}. Each\nrow of the matrix will be plotted as a separate facet.}\n\n\\item{reducedDimName}{The name of the dimension reduction slot in\n\\code{reducedDimNames(x)} if \\code{x} is a\n\\linkS4class{SingleCellExperiment} object. Ignored if both \\code{dim1} and\n\\code{dim2} are set.}\n\n\\item{dim1}{Numeric vector. Second dimension from data dimension\nreduction output.}\n\n\\item{dim2}{Numeric vector. Second dimension from data dimension\nreduction output.}\n\n\\item{useAssay}{A string specifying which \\link{assay}\nslot to use if \\code{x} is a\n\\linkS4class{SingleCellExperiment} object. Default \"counts\".}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n\n\\item{size}{Numeric. Sets size of point on plot. Default 1.}\n\n\\item{xlab}{Character vector. Label for the x-axis. Default 'Dimension_1'.}\n\n\\item{ylab}{Character vector. Label for the y-axis. Default 'Dimension_2'.}\n\n\\item{limits}{Passed to \\link{scale_colour_gradient2}. The range\nof color scale.}\n\n\\item{colorLow}{Character. A color available from `colors()`.\nThe color will be used to signify the lowest values on the scale.\nDefault \"blue4\".}\n\n\\item{colorMid}{Character. A color available from `colors()`.\nThe color will be used to signify the midpoint on the scale. Default\n\"grey90\".}\n\n\\item{colorHigh}{Character. A color available from `colors()`.\nThe color will be used to signify the highest values on the scale.\nDefault \"firebrick1\".}\n\n\\item{midpoint}{Numeric. The value indicating the midpoint of the\ndiverging color scheme. If \\code{NULL}, defaults to the mean\nwith 10 percent of values trimmed. Default \\code{0}.}\n\n\\item{varLabel}{Character vector. Title for the color legend.}\n\n\\item{ncol}{Integer. Passed to \\link[ggplot2]{facet_wrap}. Specify the\nnumber of columns for facet wrap.}\n\n\\item{headers}{Character vector. If `NULL`, the corresponding rownames are\nused as labels. Otherwise, these headers are used to label the genes.}\n\n\\item{decreasing}{logical. Specifies the order of plotting the points.\nIf \\code{FALSE}, the points will be plotted in increasing order where\nthe points with largest values will be on top. \\code{TRUE} otherwise.\nIf \\code{NULL}, no sorting is performed. Points will be plotted in their\ncurrent order in \\code{x}. Default \\code{FALSE}.}\n}\n\\value{\nThe plot as a ggplot object\n}\n\\description{\nCreates a scatterplot given two dimensions from a data\n dimension reduction tool (e.g tSNE) output.\n}\n\\examples{\ndata(sceCeldaCG)\nsce <- celdaTsne(sceCeldaCG)\nplotDimReduceGrid(x = sce,\n  reducedDimName = \"celda_tSNE\",\n  xlab = \"Dimension1\",\n  ylab = \"Dimension2\",\n  varLabel = \"tSNE\")\nlibrary(SingleCellExperiment)\ndata(sceCeldaCG)\nsce <- celdaTsne(sceCeldaCG)\nplotDimReduceGrid(x = counts(sce),\n  dim1 = reducedDim(altExp(sce), \"celda_tSNE\")[, 1],\n  dim2 = reducedDim(altExp(sce), \"celda_tSNE\")[, 2],\n  xlab = \"Dimension1\",\n  ylab = \"Dimension2\",\n  varLabel = \"tSNE\")\n}\n"
  },
  {
    "path": "man/plotDimReduceModule.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/plot_dr.R\n\\name{plotDimReduceModule}\n\\alias{plotDimReduceModule}\n\\alias{plotDimReduceModule,SingleCellExperiment-method}\n\\alias{plotDimReduceModule,ANY-method}\n\\title{Plotting Celda module probability on a\n dimension reduction plot}\n\\usage{\nplotDimReduceModule(\n  x,\n  reducedDimName,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  celdaMod,\n  modules = NULL,\n  dim1 = NULL,\n  dim2 = NULL,\n  size = 0.5,\n  xlab = NULL,\n  ylab = NULL,\n  rescale = TRUE,\n  limits = c(0, 1),\n  colorLow = \"grey90\",\n  colorHigh = \"firebrick1\",\n  ncol = NULL,\n  decreasing = FALSE\n)\n\n\\S4method{plotDimReduceModule}{SingleCellExperiment}(\n  x,\n  reducedDimName,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  modules = NULL,\n  dim1 = 1,\n  dim2 = 2,\n  size = 0.5,\n  xlab = NULL,\n  ylab = NULL,\n  rescale = TRUE,\n  limits = c(0, 1),\n  colorLow = \"grey90\",\n  colorHigh = \"firebrick1\",\n  ncol = NULL,\n  decreasing = FALSE\n)\n\n\\S4method{plotDimReduceModule}{ANY}(\n  x,\n  celdaMod,\n  modules = NULL,\n  dim1,\n  dim2,\n  size = 0.5,\n  xlab = \"Dimension_1\",\n  ylab = \"Dimension_2\",\n  rescale = TRUE,\n  limits = c(0, 1),\n  colorLow = \"grey90\",\n  colorHigh = \"firebrick1\",\n  ncol = NULL,\n  decreasing = FALSE\n)\n}\n\\arguments{\n\\item{x}{Numeric matrix or a \\linkS4class{SingleCellExperiment} object\nwith the matrix located in the assay slot under \\code{useAssay}. Rows\nrepresent features and columns represent cells.}\n\n\\item{reducedDimName}{The name of the dimension reduction slot in\n\\code{reducedDimNames(x)} if \\code{x} is a\n\\linkS4class{SingleCellExperiment} object. Ignored if both \\code{dim1} and\n\\code{dim2} are set.}\n\n\\item{useAssay}{A string specifying which \\link{assay}\nslot to use if \\code{x} is a\n\\linkS4class{SingleCellExperiment} object. Default \"counts\".}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n\n\\item{celdaMod}{Celda object of class \"celda_G\" or \"celda_CG\". Used only if\n\\code{x} is a matrix object.}\n\n\\item{modules}{Character vector. Module(s) from celda model to be plotted.\ne.g. c(\"1\", \"2\").}\n\n\\item{dim1}{Integer or numeric vector. If \\code{reducedDimName} is supplied,\nthen, this will be used as an index to determine which dimension will be\nplotted on the x-axis. If \\code{reducedDimName} is not supplied, then this\nshould be a vector which will be plotted on the x-axis. Default \\code{1}.}\n\n\\item{dim2}{Integer or numeric vector. If \\code{reducedDimName} is supplied,\nthen, this will be used as an index to determine which dimension will be\nplotted on the y-axis. If \\code{reducedDimName} is not supplied, then this\nshould be a vector which will be plotted on the y-axis. Default \\code{2}.}\n\n\\item{size}{Numeric. Sets size of point on plot. Default 0.5.}\n\n\\item{xlab}{Character vector. Label for the x-axis. Default \"Dimension_1\".}\n\n\\item{ylab}{Character vector. Label for the y-axis. Default \"Dimension_2\".}\n\n\\item{rescale}{Logical.\nWhether rows of the matrix should be rescaled to [0, 1]. Default TRUE.}\n\n\\item{limits}{Passed to \\link{scale_colour_gradient}. The range\nof color scale.}\n\n\\item{colorLow}{Character. A color available from `colors()`.\nThe color will be used to signify the lowest values on the scale.}\n\n\\item{colorHigh}{Character. A color available from `colors()`.\nThe color will be used to signify the highest values on the scale.}\n\n\\item{ncol}{Integer. Passed to \\link[ggplot2]{facet_wrap}. Specify the\nnumber of columns for facet wrap.}\n\n\\item{decreasing}{logical. Specifies the order of plotting the points.\nIf \\code{FALSE}, the points will be plotted in increasing order where\nthe points with largest values will be on top. \\code{TRUE} otherwise.\nIf \\code{NULL}, no sorting is performed. Points will be plotted in their\ncurrent order in \\code{x}. Default \\code{FALSE}.}\n}\n\\value{\nThe plot as a ggplot object\n}\n\\description{\nCreate a scatterplot for each row of a normalized\n gene expression matrix where x and y axis are from a data\n dimension reduction tool.\n The cells are colored by the module probability.\n}\n\\examples{\ndata(sceCeldaCG)\nsce <- celdaTsne(sceCeldaCG)\nplotDimReduceModule(x = sce,\n  reducedDimName = \"celda_tSNE\",\n  modules = c(\"1\", \"2\"))\nlibrary(SingleCellExperiment)\ndata(sceCeldaCG, celdaCGMod)\nsce <- celdaTsne(sceCeldaCG)\nplotDimReduceModule(x = counts(sce),\n  dim1 = reducedDim(altExp(sce), \"celda_tSNE\")[, 1],\n  dim2 = reducedDim(altExp(sce), \"celda_tSNE\")[, 2],\n  celdaMod = celdaCGMod,\n  modules = c(\"1\", \"2\"))\n}\n"
  },
  {
    "path": "man/plotGridSearchPerplexity.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/perplexity.R\n\\name{plotGridSearchPerplexity}\n\\alias{plotGridSearchPerplexity}\n\\alias{plotGridSearchPerplexity,SingleCellExperiment-method}\n\\alias{plotGridSearchPerplexity,celdaList-method}\n\\title{Visualize perplexity of a list of celda models}\n\\usage{\nplotGridSearchPerplexity(x, altExpName = \"featureSubset\", sep = 5, alpha = 0.5)\n\n\\S4method{plotGridSearchPerplexity}{SingleCellExperiment}(x, altExpName = \"featureSubset\", sep = 5, alpha = 0.5)\n\n\\S4method{plotGridSearchPerplexity}{celdaList}(x, sep = 5, alpha = 0.5)\n}\n\\arguments{\n\\item{x}{Can be one of\n\\itemize{\n \\item A \\linkS4class{SingleCellExperiment} object returned from\n \\code{celdaGridSearch}, \\code{recursiveSplitModule},\n or \\code{recursiveSplitCell}. Must contain a list named\n \\code{\"celda_grid_search\"} in \\code{metadata(x)}.\n \\item celdaList object.}}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\". Only works if \\code{x} is a\n\\linkS4class{SingleCellExperiment} object.}\n\n\\item{sep}{Numeric. Breaks in the x axis of the resulting plot.}\n\n\\item{alpha}{Numeric. Passed to \\link{geom_jitter}. Opacity of the points.\nValues of alpha range from 0 to 1, with lower values corresponding\nto more transparent colors.}\n}\n\\value{\nA ggplot plot object showing perplexity as a function of clustering\n parameters.\n}\n\\description{\nVisualize perplexity of every model in a celdaList, by unique\n K/L combinations\n}\n\\examples{\ndata(sceCeldaCGGridSearch)\nsce <- resamplePerplexity(sceCeldaCGGridSearch)\nplotGridSearchPerplexity(sce)\ndata(celdaCGSim, celdaCGGridSearchRes)\n## Run various combinations of parameters with 'celdaGridSearch'\nceldaCGGridSearchRes <- resamplePerplexity(\n  celdaCGSim$counts,\n  celdaCGGridSearchRes)\nplotGridSearchPerplexity(celdaCGGridSearchRes)\n}\n"
  },
  {
    "path": "man/plotHeatmap.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/plotHeatmap.R\n\\name{plotHeatmap}\n\\alias{plotHeatmap}\n\\title{Plots heatmap based on Celda model}\n\\usage{\nplotHeatmap(\n  counts,\n  z = NULL,\n  y = NULL,\n  scaleRow = scale,\n  trim = c(-2, 2),\n  featureIx = NULL,\n  cellIx = NULL,\n  clusterFeature = TRUE,\n  clusterCell = TRUE,\n  colorScheme = c(\"divergent\", \"sequential\"),\n  colorSchemeSymmetric = TRUE,\n  colorSchemeCenter = 0,\n  col = NULL,\n  annotationCell = NULL,\n  annotationFeature = NULL,\n  annotationColor = NULL,\n  breaks = NULL,\n  legend = TRUE,\n  annotationLegend = TRUE,\n  annotationNamesFeature = TRUE,\n  annotationNamesCell = TRUE,\n  showNamesFeature = FALSE,\n  showNamesCell = FALSE,\n  rowGroupOrder = NULL,\n  colGroupOrder = NULL,\n  hclustMethod = \"ward.D2\",\n  treeheightFeature = ifelse(clusterFeature, 50, 0),\n  treeheightCell = ifelse(clusterCell, 50, 0),\n  silent = FALSE,\n  ...\n)\n}\n\\arguments{\n\\item{counts}{Numeric or sparse matrix. Normalized counts matrix where rows\nrepresent features and columns represent cells. .}\n\n\\item{z}{Numeric vector. Denotes cell population labels.}\n\n\\item{y}{Numeric vector. Denotes feature module labels.}\n\n\\item{scaleRow}{Function. A function to scale each individual row. Set to\nNULL to disable. Occurs after normalization and log transformation. Defualt\nis 'scale' and thus will Z-score transform each row.}\n\n\\item{trim}{Numeric vector. Vector of length two that specifies the lower\nand upper bounds for the data. This threshold is applied after row scaling.\nSet to NULL to disable. Default c(-2,2).}\n\n\\item{featureIx}{Integer vector. Select features for display in heatmap. If\nNULL, no subsetting will be performed. Default NULL.}\n\n\\item{cellIx}{Integer vector. Select cells for display in heatmap. If NULL,\nno subsetting will be performed. Default NULL.}\n\n\\item{clusterFeature}{Logical. Determines whether rows should be clustered.\nDefault TRUE.}\n\n\\item{clusterCell}{Logical. Determines whether columns should be clustered.\nDefault TRUE.}\n\n\\item{colorScheme}{Character. One of \"divergent\" or \"sequential\". A\n\"divergent\" scheme is best for highlighting relative data (denoted by\n'colorSchemeCenter') such as gene expression data that has been normalized\nand centered. A \"sequential\" scheme is best for highlighting data that\nare ordered low to high such as raw counts or probabilities. Default\n\"divergent\".}\n\n\\item{colorSchemeSymmetric}{Logical. When the colorScheme is \"divergent\"\nand the data contains both positive and negative numbers, TRUE indicates\nthat the color scheme should be symmetric from\n\\code{[-max(abs(data)), max(abs(data))]}. For example, if the data ranges\ngoes from -1.5 to 2, then setting this to TRUE will force the color scheme\nto range from -2 to 2. Default TRUE.}\n\n\\item{colorSchemeCenter}{Numeric. Indicates the center of a \"divergent\"\ncolorScheme. Default 0.}\n\n\\item{col}{Color for the heatmap.}\n\n\\item{annotationCell}{Data frame. Additional annotations for each cell will\nbe shown in the column color bars. The format of the data frame should be\none row for each cell and one column for each annotation. Numeric variables\nwill be displayed as continuous color bars and factors will be displayed as\ndiscrete color bars. Default NULL.}\n\n\\item{annotationFeature}{A data frame for the feature annotations (rows).}\n\n\\item{annotationColor}{List. Contains color scheme for all annotations. See\n`?pheatmap` for more details.}\n\n\\item{breaks}{Numeric vector. A sequence of numbers that covers the range\nof values in the normalized `counts`. Values in the normalized `matrix` are\nassigned to each bin in `breaks`. Each break is assigned to a unique color\nfrom `col`. If NULL, then breaks are calculated automatically. Default NULL.}\n\n\\item{legend}{Logical. Determines whether legend should be drawn. Default\nTRUE.}\n\n\\item{annotationLegend}{Logical. Whether legend for all annotations should\nbe drawn. Default TRUE.}\n\n\\item{annotationNamesFeature}{Logical. Whether the names for features should\nbe shown. Default TRUE.}\n\n\\item{annotationNamesCell}{Logical. Whether the names for cells should be\nshown. Default TRUE.}\n\n\\item{showNamesFeature}{Logical. Specifies if feature names should be shown.\nDefault TRUE.}\n\n\\item{showNamesCell}{Logical. Specifies if cell names should be shown.\nDefault FALSE.}\n\n\\item{rowGroupOrder}{Vector. Specifies the order of feature clusters when\nsemisupervised clustering is performed on the \\code{y} labels.}\n\n\\item{colGroupOrder}{Vector. Specifies the order of cell clusters when\nsemisupervised clustering is performed on the \\code{z} labels.}\n\n\\item{hclustMethod}{Character. Specifies the method to use for the 'hclust'\nfunction. See `?hclust` for possible values. Default \"ward.D2\".}\n\n\\item{treeheightFeature}{Numeric. Width of the feature dendrogram. Set to 0\nto disable plotting of this dendrogram. Default: if clusterFeature == TRUE,\nthen treeheightFeature = 50, else treeheightFeature = 0.}\n\n\\item{treeheightCell}{Numeric. Height of the cell dendrogram. Set to 0 to\ndisable plotting of this dendrogram. Default: if clusterCell == TRUE, then\ntreeheightCell = 50, else treeheightCell = 0.}\n\n\\item{silent}{Logical. Whether to plot the heatmap.}\n\n\\item{...}{Other arguments to be passed to underlying pheatmap function.}\n}\n\\value{\nlist A list containing dendrogram information and the heatmap grob\n}\n\\description{\nRenders a heatmap based on a matrix of counts where rows are\n features and columns are cells.\n}\n\\examples{\ndata(celdaCGSim, celdaCGMod)\nplotHeatmap(celdaCGSim$counts,\n  z = celdaClusters(celdaCGMod)$z, y = celdaClusters(celdaCGMod)$y\n)\n}\n"
  },
  {
    "path": "man/plotRPC.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/perplexity.R\n\\name{plotRPC}\n\\alias{plotRPC}\n\\alias{plotRPC,SingleCellExperiment-method}\n\\alias{plotRPC,celdaList-method}\n\\title{Visualize perplexity differences of a list of celda models}\n\\usage{\nplotRPC(x, altExpName = \"featureSubset\", sep = 5, alpha = 0.5)\n\n\\S4method{plotRPC}{SingleCellExperiment}(x, altExpName = \"featureSubset\", sep = 5, alpha = 0.5)\n\n\\S4method{plotRPC}{celdaList}(x, sep = 5, alpha = 0.5)\n}\n\\arguments{\n\\item{x}{Can be one of\n\\itemize{\n \\item A \\linkS4class{SingleCellExperiment} object returned from\n \\code{celdaGridSearch}, \\code{recursiveSplitModule},\n or \\code{recursiveSplitCell}. Must contain a list named\n \\code{\"celda_grid_search\"} in \\code{metadata(x)}.\n \\item celdaList object.}}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n\n\\item{sep}{Numeric. Breaks in the x axis of the resulting plot.}\n\n\\item{alpha}{Numeric. Passed to \\link{geom_jitter}. Opacity of the points.\nValues of alpha range from 0 to 1, with lower values corresponding\nto more transparent colors.}\n}\n\\value{\nA ggplot plot object showing perplexity differences as a function of\n clustering parameters.\n}\n\\description{\nVisualize perplexity differences of every model in a celdaList,\n by unique K/L combinations.\n}\n\\examples{\ndata(sceCeldaCGGridSearch)\nsce <- resamplePerplexity(sceCeldaCGGridSearch)\nplotRPC(sce)\ndata(celdaCGSim, celdaCGGridSearchRes)\n## Run various combinations of parameters with 'celdaGridSearch'\nceldaCGGridSearchRes <- resamplePerplexity(\n  celdaCGSim$counts,\n  celdaCGGridSearchRes)\nplotRPC(celdaCGGridSearchRes)\n}\n"
  },
  {
    "path": "man/recodeClusterY.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/celda_functions.R\n\\name{recodeClusterY}\n\\alias{recodeClusterY}\n\\title{Recode feature module labels}\n\\usage{\nrecodeClusterY(sce, from, to, altExpName = \"featureSubset\")\n}\n\\arguments{\n\\item{sce}{\\linkS4class{SingleCellExperiment} object returned from\n\\link{celda_G} or \\link{celda_CG}. Must contain column\n\\code{celda_feature_module} in\n\\code{\\link{rowData}(altExp(sce, altExpName))}.}\n\n\\item{from}{Numeric vector. Unique values in the range of\n\\code{seq(celdaModules(sce))} that correspond to the original module labels\nin \\code{sce}.}\n\n\\item{to}{Numeric vector. Unique values in the range of\n\\code{seq(celdaModules(sce))} that correspond to the new module labels.}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n}\n\\value{\n@return \\linkS4class{SingleCellExperiment} object with recoded\n feature module labels.\n}\n\\description{\nRecode feature module clusters using a mapping in the\n \\code{from} and \\code{to} arguments.\n}\n\\examples{\ndata(sceCeldaCG)\nsceReorderedY <- recodeClusterY(sceCeldaCG, c(1, 3), c(3, 1))\n}\n"
  },
  {
    "path": "man/recodeClusterZ.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/celda_functions.R\n\\name{recodeClusterZ}\n\\alias{recodeClusterZ}\n\\title{Recode cell cluster labels}\n\\usage{\nrecodeClusterZ(sce, from, to, altExpName = \"featureSubset\")\n}\n\\arguments{\n\\item{sce}{\\linkS4class{SingleCellExperiment} object returned from\n\\link{celda_C} or \\link{celda_CG}. Must contain column\n\\code{celda_cell_cluster} in\n\\code{\\link{colData}(altExp(sce, altExpName))}.}\n\n\\item{from}{Numeric vector. Unique values in the range of\n\\code{seq(max(as.integer(celdaClusters(sce, altExpName = altExpName))))}\nthat correspond to the original cluster\nlabels in \\code{sce}.}\n\n\\item{to}{Numeric vector. Unique values in the range of\n\\code{seq(max(as.integer(celdaClusters(sce, altExpName = altExpName))))}\nthat correspond to the new cluster labels.}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n}\n\\value{\n\\linkS4class{SingleCellExperiment} object with recoded cell\n cluster labels.\n}\n\\description{\nRecode cell subpopulaton clusters using a mapping in the\n \\code{from} and \\code{to} arguments.\n}\n\\examples{\ndata(sceCeldaCG)\nsceReorderedZ <- recodeClusterZ(sceCeldaCG, c(1, 3), c(3, 1))\n}\n"
  },
  {
    "path": "man/recursiveSplitCell.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/recursiveSplit.R\n\\name{recursiveSplitCell}\n\\alias{recursiveSplitCell}\n\\alias{recursiveSplitCell,SingleCellExperiment-method}\n\\alias{recursiveSplitCell,matrix-method}\n\\title{Recursive cell splitting}\n\\usage{\nrecursiveSplitCell(\n  x,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  sampleLabel = NULL,\n  initialK = 5,\n  maxK = 25,\n  tempL = NULL,\n  yInit = NULL,\n  alpha = 1,\n  beta = 1,\n  delta = 1,\n  gamma = 1,\n  minCell = 3,\n  reorder = TRUE,\n  seed = 12345,\n  perplexity = TRUE,\n  doResampling = FALSE,\n  numResample = 5,\n  logfile = NULL,\n  verbose = TRUE\n)\n\n\\S4method{recursiveSplitCell}{SingleCellExperiment}(\n  x,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  sampleLabel = NULL,\n  initialK = 5,\n  maxK = 25,\n  tempL = NULL,\n  yInit = NULL,\n  alpha = 1,\n  beta = 1,\n  delta = 1,\n  gamma = 1,\n  minCell = 3,\n  reorder = TRUE,\n  seed = 12345,\n  perplexity = TRUE,\n  doResampling = FALSE,\n  numResample = 5,\n  logfile = NULL,\n  verbose = TRUE\n)\n\n\\S4method{recursiveSplitCell}{matrix}(\n  x,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  sampleLabel = NULL,\n  initialK = 5,\n  maxK = 25,\n  tempL = NULL,\n  yInit = NULL,\n  alpha = 1,\n  beta = 1,\n  delta = 1,\n  gamma = 1,\n  minCell = 3,\n  reorder = TRUE,\n  seed = 12345,\n  perplexity = TRUE,\n  doResampling = FALSE,\n  numResample = 5,\n  logfile = NULL,\n  verbose = TRUE\n)\n}\n\\arguments{\n\\item{x}{A numeric \\link{matrix} of counts or a\n\\linkS4class{SingleCellExperiment}\nwith the matrix located in the assay slot under \\code{useAssay}.\nRows represent features and columns represent cells.}\n\n\\item{useAssay}{A string specifying the name of the\n\\link{assay}\nslot to use. Default \"counts\".}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n\n\\item{sampleLabel}{Vector or factor. Denotes the sample label for each cell\n(column) in the count matrix.}\n\n\\item{initialK}{Integer. Initial number of cell populations to try.\nDefault \\code{5}.}\n\n\\item{maxK}{Integer. Maximum number of cell populations to try.\nDefault \\code{25}.}\n\n\\item{tempL}{Integer. Number of temporary modules to identify and use in cell\nsplitting. Only used if \\code{yInit = NULL}. Collapsing features to a\nrelatively smaller number of modules will increase the speed of clustering\nand tend to produce better cell populations. This number should be larger\nthan the number of true modules expected in the dataset. Default\n\\code{NULL.}}\n\n\\item{yInit}{Integer vector. Module labels for features. Cells will be\nclustered using the \\link{celda_CG} model based on the modules specified in\n\\code{yInit} rather than the counts of individual features. While the\nfeatures will be initialized to the module labels in \\code{yInit}, the\nlabels will be allowed to move within each new model with a different K.}\n\n\\item{alpha}{Numeric. Concentration parameter for Theta. Adds a pseudocount\nto each cell population in each sample. Default \\code{1}.}\n\n\\item{beta}{Numeric. Concentration parameter for Phi. Adds a pseudocount to\neach feature in each cell (if \\code{yInit} is NULL) or to each module in\neach cell population (if \\code{yInit} is set). Default \\code{1}.}\n\n\\item{delta}{Numeric. Concentration parameter for Psi. Adds a pseudocount\nto each feature in each module. Only used if \\code{yInit} is set. Default 1.}\n\n\\item{gamma}{Numeric. Concentration parameter for Eta. Adds a pseudocount\nto the number of features in each module. Only used if \\code{yInit} is set.\nDefault 1.}\n\n\\item{minCell}{Integer. Only attempt to split cell populations with at\nleast this many cells.}\n\n\\item{reorder}{Logical. Whether to reorder cell populations using\nhierarchical clustering after each model has been created. If FALSE, cell\npopulations numbers will correspond to the split which created the cell\npopulations (i.e. 'K15' was created at split 15, 'K16' was created at split\n16, etc.). Default TRUE.}\n\n\\item{seed}{Integer. Passed to \\link[withr]{with_seed}. For reproducibility,\na default value of 12345 is used. If NULL, no calls to\n\\link[withr]{with_seed} are made.}\n\n\\item{perplexity}{Logical. Whether to calculate perplexity for each model.\nIf FALSE, then perplexity can be calculated later with\n\\link{resamplePerplexity}. Default TRUE.}\n\n\\item{doResampling}{Boolean. If \\code{TRUE}, then each cell in the counts\nmatrix will be resampled according to a multinomial distribution to introduce\nnoise before calculating perplexity. Default \\code{FALSE}.}\n\n\\item{numResample}{Integer. The number of times to resample the counts matrix\nfor evaluating perplexity if \\code{doResampling} is set to \\code{TRUE}.\nDefault \\code{5}.}\n\n\\item{logfile}{Character. Messages will be redirected to a file named\n\"logfile\". If NULL, messages will be printed to stdout.  Default NULL.}\n\n\\item{verbose}{Logical. Whether to print log messages. Default TRUE.}\n}\n\\value{\nA \\linkS4class{SingleCellExperiment} object. Function\n parameter settings and celda model results are stored in the\n \\link{metadata} \\code{\"celda_grid_search\"} slot. The models in\n the list will be of class \\code{celda_C} if \\code{yInit = NULL} or\n \\code{celda_CG} if \\code{zInit} is set.\n}\n\\description{\nUses the \\link{celda_C} model to cluster cells into\n population for range of possible K's. The cell population labels of the\n previous \"K-1\" model are used as the initial values in the current model\n with K cell populations. The best split of an existing cell population is\n found to create the K-th cluster. This procedure is much faster than\n randomly initializing each model with a different K. If module labels for\n each feature are given in 'yInit', the \\link{celda_CG} model will be used to\n split cell populations based on those modules instead of individual\n features. Module labels will also be updated during sampling and thus\n may end up slightly different than \\code{yInit}.\n}\n\\examples{\ndata(sceCeldaCG)\n## Create models that range from K = 3 to K = 7 by recursively splitting\n## cell populations into two to produce \\link{celda_C} cell clustering models\nsce <- recursiveSplitCell(sceCeldaCG, initialK = 3, maxK = 7)\n\n## Alternatively, first identify features modules using\n## \\link{recursiveSplitModule}\nmoduleSplit <- recursiveSplitModule(sceCeldaCG, initialL = 3, maxL = 15)\nplotGridSearchPerplexity(moduleSplit)\nmoduleSplitSelect <- subsetCeldaList(moduleSplit, list(L = 10))\n\n## Then use module labels for initialization in \\link{recursiveSplitCell} to\n## produce \\link{celda_CG} bi-clustering models\ncellSplit <- recursiveSplitCell(sceCeldaCG,\n  initialK = 3, maxK = 7, yInit = celdaModules(moduleSplitSelect))\nplotGridSearchPerplexity(cellSplit)\nsce <- subsetCeldaList(cellSplit, list(K = 5, L = 10))\ndata(celdaCGSim, celdaCSim)\n## Create models that range from K = 3 to K = 7 by recursively splitting\n## cell populations into two to produce \\link{celda_C} cell clustering models\nsce <- recursiveSplitCell(celdaCSim$counts, initialK = 3, maxK = 7)\n\n## Alternatively, first identify features modules using\n## \\link{recursiveSplitModule}\nmoduleSplit <- recursiveSplitModule(celdaCGSim$counts,\n  initialL = 3, maxL = 15)\nplotGridSearchPerplexity(moduleSplit)\nmoduleSplitSelect <- subsetCeldaList(moduleSplit, list(L = 10))\n\n## Then use module labels for initialization in \\link{recursiveSplitCell} to\n## produce \\link{celda_CG} bi-clustering models\ncellSplit <- recursiveSplitCell(celdaCGSim$counts,\n  initialK = 3, maxK = 7, yInit = celdaModules(moduleSplitSelect))\nplotGridSearchPerplexity(cellSplit)\nsce <- subsetCeldaList(cellSplit, list(K = 5, L = 10))\n}\n\\seealso{\n\\link{recursiveSplitModule} for recursive splitting of feature\n modules.\n}\n"
  },
  {
    "path": "man/recursiveSplitModule.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/recursiveSplit.R\n\\name{recursiveSplitModule}\n\\alias{recursiveSplitModule}\n\\alias{recursiveSplitModule,SingleCellExperiment-method}\n\\alias{recursiveSplitModule,matrix-method}\n\\title{Recursive module splitting}\n\\usage{\nrecursiveSplitModule(\n  x,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  initialL = 10,\n  maxL = 100,\n  tempK = 100,\n  zInit = NULL,\n  sampleLabel = NULL,\n  alpha = 1,\n  beta = 1,\n  delta = 1,\n  gamma = 1,\n  minFeature = 3,\n  reorder = TRUE,\n  seed = 12345,\n  perplexity = TRUE,\n  doResampling = FALSE,\n  numResample = 5,\n  verbose = TRUE,\n  logfile = NULL\n)\n\n\\S4method{recursiveSplitModule}{SingleCellExperiment}(\n  x,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  initialL = 10,\n  maxL = 100,\n  tempK = 100,\n  zInit = NULL,\n  sampleLabel = NULL,\n  alpha = 1,\n  beta = 1,\n  delta = 1,\n  gamma = 1,\n  minFeature = 3,\n  reorder = TRUE,\n  seed = 12345,\n  perplexity = TRUE,\n  doResampling = FALSE,\n  numResample = 5,\n  verbose = TRUE,\n  logfile = NULL\n)\n\n\\S4method{recursiveSplitModule}{matrix}(\n  x,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  initialL = 10,\n  maxL = 100,\n  tempK = 100,\n  zInit = NULL,\n  sampleLabel = NULL,\n  alpha = 1,\n  beta = 1,\n  delta = 1,\n  gamma = 1,\n  minFeature = 3,\n  reorder = TRUE,\n  seed = 12345,\n  perplexity = TRUE,\n  doResampling = FALSE,\n  numResample = 5,\n  verbose = TRUE,\n  logfile = NULL\n)\n}\n\\arguments{\n\\item{x}{A numeric \\link{matrix} of counts or a\n\\linkS4class{SingleCellExperiment}\nwith the matrix located in the assay slot under \\code{useAssay}.\nRows represent features and columns represent cells.}\n\n\\item{useAssay}{A string specifying which \\link{assay}\nslot to use if \\code{x} is a\n\\link[SingleCellExperiment]{SingleCellExperiment} object. Default \"counts\".}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n\n\\item{initialL}{Integer. Initial number of modules.}\n\n\\item{maxL}{Integer. Maximum number of modules.}\n\n\\item{tempK}{Integer. Number of temporary cell populations to identify and\nuse in module splitting. Only used if \\code{zInit = NULL} Collapsing cells\nto a relatively smaller number of cell popluations will increase the\nspeed of module clustering and tend to produce better modules. This number\nshould be larger than the number of true cell populations expected in the\ndataset. Default \\code{100}.}\n\n\\item{zInit}{Integer vector. Collapse cells to cell populations based on\nlabels in \\code{zInit} and then perform module splitting. If NULL, no\ncollapsing will be performed unless \\code{tempK} is specified.\nDefault \\code{NULL}.}\n\n\\item{sampleLabel}{Vector or factor. Denotes the sample label for each cell\n(column) in the count matrix. Default \\code{NULL}.}\n\n\\item{alpha}{Numeric. Concentration parameter for Theta. Adds a pseudocount\nto each cell population in each sample. Only used if \\code{zInit} is set.\nDefault \\code{1}.}\n\n\\item{beta}{Numeric. Concentration parameter for Phi. Adds a pseudocount\nto each feature module in each cell. Default 1.}\n\n\\item{delta}{Numeric. Concentration parameter for Psi. Adds a pseudocount\nto each feature in each module. Default 1.}\n\n\\item{gamma}{Numeric. Concentration parameter for Eta. Adds a pseudocount\nto the number of features in each module. Default 1.}\n\n\\item{minFeature}{Integer. Only attempt to split modules with at least this\nmany features.}\n\n\\item{reorder}{Logical. Whether to reorder modules using hierarchical\nclustering after each model has been created. If FALSE, module numbers will\ncorrespond to the split which created the module (i.e. 'L15' was created at\nsplit 15, 'L16' was created at split 16, etc.). Default TRUE.}\n\n\\item{seed}{Integer. Passed to \\link[withr]{with_seed}. For reproducibility,\na default value of 12345 is used. If NULL, no calls to\n\\link[withr]{with_seed} are made.}\n\n\\item{perplexity}{Logical. Whether to calculate perplexity for each model.\nIf FALSE, then perplexity can be calculated later with\n\\link{resamplePerplexity}. Default \\code{TRUE}.}\n\n\\item{doResampling}{Boolean. If \\code{TRUE}, then each cell in the counts\nmatrix will be resampled according to a multinomial distribution to introduce\nnoise before calculating perplexity. Default \\code{FALSE}.}\n\n\\item{numResample}{Integer. The number of times to resample the counts matrix\nfor evaluating perplexity if \\code{doResampling} is set to \\code{TRUE}.\nDefault \\code{5}.}\n\n\\item{verbose}{Logical. Whether to print log messages. Default TRUE.}\n\n\\item{logfile}{Character. Messages will be redirected to a file named\n\"logfile\". If NULL, messages will be printed to stdout.  Default NULL.}\n}\n\\value{\nA \\linkS4class{SingleCellExperiment} object. Function\n parameter settings and celda model results are stored in the\n \\link{metadata} \\code{\"celda_grid_search\"} slot. The models in\n the list will be of class \\link{celda_G} if \\code{zInit = NULL} or\n \\link{celda_CG} if \\code{zInit} is set.\n}\n\\description{\nUses the \\link{celda_G} model to cluster features into modules\n for a range of possible L's. The module labels of the previous \"L-1\" model\n are used as the initial values in the current model with L modules. The best\n split of an existing module is found to create the L-th module. This\n procedure is much faster than randomly initializing each model with a\n different L.\n}\n\\examples{\ndata(sceCeldaCG)\n## Create models that range from L=3 to L=20 by recursively splitting modules\n## into two\nmoduleSplit <- recursiveSplitModule(sceCeldaCG, initialL = 3, maxL = 20)\n\n## Example results with perplexity\nplotGridSearchPerplexity(moduleSplit)\n\n## Select model for downstream analysis\nceldaMod <- subsetCeldaList(moduleSplit, list(L = 10))\ndata(celdaCGSim)\n## Create models that range from L=3 to L=20 by recursively splitting modules\n## into two\nmoduleSplit <- recursiveSplitModule(celdaCGSim$counts,\n  initialL = 3, maxL = 20)\n\n## Example results with perplexity\nplotGridSearchPerplexity(moduleSplit)\n\n## Select model for downstream analysis\nceldaMod <- subsetCeldaList(moduleSplit, list(L = 10))\n}\n\\seealso{\n\\code{recursiveSplitCell} for recursive splitting of cell\n populations.\n}\n"
  },
  {
    "path": "man/reorderCelda.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/reorderCelda.R\n\\name{reorderCelda}\n\\alias{reorderCelda}\n\\alias{reorderCelda,SingleCellExperiment,ANY-method}\n\\alias{reorderCelda,matrix,celda_CG-method}\n\\alias{reorderCelda,matrix,celda_C-method}\n\\alias{reorderCelda,matrix,celda_G-method}\n\\title{Reorder cells populations and/or features modules using\n hierarchical clustering}\n\\usage{\nreorderCelda(\n  x,\n  celdaMod,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  method = \"complete\"\n)\n\n\\S4method{reorderCelda}{SingleCellExperiment,ANY}(\n  x,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  method = \"complete\"\n)\n\n\\S4method{reorderCelda}{matrix,celda_CG}(x, celdaMod, method = \"complete\")\n\n\\S4method{reorderCelda}{matrix,celda_C}(x, celdaMod, method = \"complete\")\n\n\\S4method{reorderCelda}{matrix,celda_G}(x, celdaMod, method = \"complete\")\n}\n\\arguments{\n\\item{x}{Can be one of\n\\itemize{\n\\item A \\linkS4class{SingleCellExperiment} object returned by\n\\link{celda_C}, \\link{celda_G} or \\link{celda_CG}, with the matrix\nlocated in the \\code{useAssay} assay slot in \\code{altExp(x, altExpName)}.\nRows represent features and columns represent cells.\n\\item Integer count matrix. Rows represent features and columns represent\ncells. This matrix should be the same as the one used to generate\n\\code{celdaMod}.}}\n\n\\item{celdaMod}{Celda model object. Only works if \\code{x} is an integer\ncounts matrix. Ignored if \\code{x} is a\n\\linkS4class{SingleCellExperiment} object.}\n\n\\item{useAssay}{A string specifying which \\link{assay}\nslot to use if \\code{x} is a \\linkS4class{SingleCellExperiment} object.\nDefault \"counts\".}\n\n\\item{altExpName}{The name for the \\link{altExp} slot.\nDefault \"featureSubset\".}\n\n\\item{method}{Passed to \\link{hclust}. The agglomeration method\nto be used to be used. Default \"complete\".}\n}\n\\value{\nA \\linkS4class{SingleCellExperiment} object (or Celda model object)\n with updated cell cluster and/or feature module labels.\n}\n\\description{\nApply hierarchical clustering to reorder the cell populations\n and/or feature modules and group similar ones together based\n on the cosine distance of the factorized matrix\n from \\link{factorizeMatrix}.\n}\n\\examples{\ndata(sceCeldaCG)\nreordersce <- reorderCelda(sceCeldaCG)\ndata(celdaCGSim, celdaCGMod)\nreorderCeldaCG <- reorderCelda(celdaCGSim$counts, celdaCGMod)\ndata(celdaCSim, celdaCMod)\nreorderCeldaC <- reorderCelda(celdaCSim$counts, celdaCMod)\ndata(celdaGSim, celdaGMod)\nreorderCeldaG <- reorderCelda(celdaGSim$counts, celdaGMod)\n}\n"
  },
  {
    "path": "man/reportceldaCG.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/reports.R\n\\name{reportceldaCG}\n\\alias{reportceldaCG}\n\\alias{reportCeldaCGRun}\n\\alias{reportCeldaCGPlotResults}\n\\title{Generate an HTML report for celda_CG}\n\\usage{\nreportCeldaCGRun(\n  sce,\n  L,\n  K,\n  sampleLabel = NULL,\n  altExpName = \"featureSubset\",\n  useAssay = \"counts\",\n  initialL = 10,\n  maxL = 150,\n  initialK = 5,\n  maxK = 50,\n  minCell = 3,\n  minCount = 3,\n  maxFeatures = 5000,\n  output_file = \"CeldaCG_RunReport\",\n  output_sce_prefix = \"celda_cg\",\n  output_dir = \".\",\n  pdf = FALSE,\n  showSession = TRUE\n)\n\nreportCeldaCGPlotResults(\n  sce,\n  reducedDimName,\n  features = NULL,\n  displayName = NULL,\n  altExpName = \"featureSubset\",\n  useAssay = \"counts\",\n  cellAnnot = NULL,\n  cellAnnotLabel = NULL,\n  exactMatch = TRUE,\n  moduleFilePrefix = \"module_features\",\n  output_file = \"CeldaCG_ResultReport\",\n  output_dir = \".\",\n  pdf = FALSE,\n  showSetup = TRUE,\n  showSession = TRUE\n)\n}\n\\arguments{\n\\item{sce}{A \\linkS4class{SingleCellExperiment} with the matrix located in\nthe assay slot under \\code{useAssay}. Rows represent features and columns\nrepresent cells.}\n\n\\item{L}{Integer. Final number of feature modules. See \\code{celda_CG} for\nmore information.}\n\n\\item{K}{Integer. Final number of cell populations. See \\code{celda_CG} for\nmore information.}\n\n\\item{sampleLabel}{Vector or factor. Denotes the sample label for each cell\n(column) in the count matrix.}\n\n\\item{altExpName}{The name for the \\link{altExp} slot to use. Default\n\\code{\"featureSubset\"}.}\n\n\\item{useAssay}{A string specifying which \\link{assay} slot to use. Default\n\\code{\"counts\"}.}\n\n\\item{initialL}{Integer. Minimum number of modules to try. See\n\\link{recursiveSplitModule} for more information. Defailt \\code{10}.}\n\n\\item{maxL}{Integer. Maximum number of modules to try. See\n\\link{recursiveSplitModule} for more information. Default \\code{150}.}\n\n\\item{initialK}{Integer. Initial number of cell populations to try.}\n\n\\item{maxK}{Integer. Maximum number of cell populations to try.}\n\n\\item{minCell}{Integer. Minimum number of cells required for feature\nselection. See \\link{selectFeatures} for more information. Default\n\\code{3}.}\n\n\\item{minCount}{Integer. Minimum number of counts required for feature\nselection. See \\link{selectFeatures} for more information. Default\n\\code{3}.}\n\n\\item{maxFeatures}{Integer. Maximum number of features to include. If the\nnumber of features after filtering for \\code{minCell} and \\code{minCount}\nare greater than \\code{maxFeature}, then Seurat's VST function is used to\nselect the top variable features. Default \\code{5000}.}\n\n\\item{output_file}{Character. Prefix of the html file. Default\n\\code{\"CeldaCG_ResultReport\"}.}\n\n\\item{output_sce_prefix}{Character. The \\code{sce} object with\n\\code{celda_CG} results will be saved to an \\code{.rds} file starting with\nthis prefix. Default \\code{celda_cg}.}\n\n\\item{output_dir}{Character. Path to save the html file. Default \\code{.}.}\n\n\\item{pdf}{Boolean. Whether to create PDF versions of each plot in addition\nto PNGs. Default \\code{FALSE}.}\n\n\\item{showSession}{Boolean. Whether to show the session information at the\nend. Default \\code{TRUE}.}\n\n\\item{reducedDimName}{Character. Name of the reduced dimensional object to be\nused in 2-D scatter plots throughout the report. Default \\code{celda_UMAP}.}\n\n\\item{features}{Character vector.  Expression of these features will be\ndisplayed on a reduced dimensional plot defined by \\code{reducedDimName}.\nIf \\code{NULL}, then no plotting of features on a reduced dimensinoal plot\nwill be performed. Default \\code{NULL}.}\n\n\\item{displayName}{Character. The name to use for display in scatter plots\nand heatmaps. If \\code{NULL}, then the rownames of the \\code{sce} object\nwill be used. This can also be set to the name of a column in the row data\nof \\code{sce} or \\code{altExp(sce, altExpName)}. Default \\code{NULL}.}\n\n\\item{cellAnnot}{Character vector. The cell-level annotations to display on\nthe reduced dimensional plot. These variables should be present in the\ncolumn data of the \\code{sce} object. Default \\code{NULL}.}\n\n\\item{cellAnnotLabel}{Character vector. Additional cell-level annotations\nto display on the reduced dimensional plot. Variables will be treated\nas categorial and labels for each group will be placed on the plot.\nThese variables should be present in the column data of the \\code{sce}\nobject. Default \\code{NULL}.}\n\n\\item{exactMatch}{Boolean. Whether to only identify exact matches or to\nidentify partial matches using \\code{\\link{grep}}. Default \\code{FALSE}.}\n\n\\item{moduleFilePrefix}{Character. The features in each module will be\nwritten to a a csv file starting with this name. If \\code{NULL}, then no\nfile will be written. Default \\code{\"module_features\"}.}\n\n\\item{showSetup}{Boolean. Whether to show the setup code at the beginning.\nDefault \\code{TRUE}.}\n}\n\\value{\n.html file\n}\n\\description{\n\\code{reportCeldaCGRun} will run \\link{recursiveSplitModule} and\n  \\link{recursiveSplitCell} to find the number of modules (\\code{L}) and the\n  number of cell populations (\\code{K}). A final \\link{celda_CG} model will\n  be selected from \\link{recursiveSplitCell}. After a \\link{celda_CG} model\n  has been fit, \\code{reportCeldaCGPlotResults} can be used to create an HTML\n  report for visualization and exploration of the \\link{celda_CG} model\n  results. Some of the plotting and feature selection functions require the\n  installation of the Bioconductor package \\code{singleCellTK}.\n}\n\\examples{\ndata(sceCeldaCG)\n\\dontrun{\nlibrary(SingleCellExperiment)\nsceCeldaCG$sum <- colSums(counts(sceCeldaCG))\nrowData(sceCeldaCG)$rownames <- rownames(sceCeldaCG)\nsceCeldaCG <- reportCeldaCGRun(sceCeldaCG,\n    initialL = 5, maxL = 20, initialK = 5,\n    maxK = 20, L = 10, K = 5)\nreportCeldaCGPlotResults(sce = sceCeldaCG,\n    reducedDimName = \"celda_UMAP\",\n    features = c(\"Gene_1\", \"Gene_100\"),\n    displayName = \"rownames\",\n    cellAnnot=\"sum\")\n}\n}\n"
  },
  {
    "path": "man/resList.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/accessors.R\n\\name{resList}\n\\alias{resList}\n\\alias{resList,SingleCellExperiment-method}\n\\alias{resList,celdaList-method}\n\\title{Get final celdaModels from a celda model \\code{SCE} or celdaList\n object}\n\\usage{\nresList(x, altExpName = \"featureSubset\")\n\n\\S4method{resList}{SingleCellExperiment}(x, altExpName = \"featureSubset\")\n\n\\S4method{resList}{celdaList}(x)\n}\n\\arguments{\n\\item{x}{An object of class \\linkS4class{SingleCellExperiment} or\n\\code{celdaList}.}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n}\n\\value{\nList. Contains one celdaModel object for each of the parameters\n specified in \\code{runParams(x)}.\n}\n\\description{\nReturns all celda models generated during a\n \\link{celdaGridSearch} run.\n}\n\\examples{\ndata(sceCeldaCGGridSearch)\nceldaCGGridModels <- resList(sceCeldaCGGridSearch)\ndata(celdaCGGridSearchRes)\nceldaCGGridModels <- resList(celdaCGGridSearchRes)\n}\n"
  },
  {
    "path": "man/resamplePerplexity.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/perplexity.R\n\\name{resamplePerplexity}\n\\alias{resamplePerplexity}\n\\alias{resamplePerplexity,SingleCellExperiment-method}\n\\alias{resamplePerplexity,ANY-method}\n\\title{Calculate and visualize perplexity of all models in a celdaList}\n\\usage{\nresamplePerplexity(\n  x,\n  celdaList,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  doResampling = FALSE,\n  numResample = 5,\n  seed = 12345\n)\n\n\\S4method{resamplePerplexity}{SingleCellExperiment}(\n  x,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  doResampling = FALSE,\n  numResample = 5,\n  seed = 12345\n)\n\n\\S4method{resamplePerplexity}{ANY}(\n  x,\n  celdaList,\n  doResampling = FALSE,\n  numResample = 5,\n  seed = 12345\n)\n}\n\\arguments{\n\\item{x}{A numeric \\link{matrix} of counts or a\n\\linkS4class{SingleCellExperiment} returned from \\link{celdaGridSearch}\nwith the matrix located in the assay slot under \\code{useAssay}.\nRows represent features and columns represent cells. Must contain\n\"celda_grid_search\" slot in \\code{metadata(x)} if \\code{x} is a\n\\linkS4class{SingleCellExperiment} object.}\n\n\\item{celdaList}{Object of class 'celdaList'. Used only if \\code{x} is a\nmatrix object.}\n\n\\item{useAssay}{A string specifying which \\link{assay}\nslot to use if \\code{x} is a\n\\linkS4class{SingleCellExperiment} object. Default \"counts\".}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n\n\\item{doResampling}{Boolean. If \\code{TRUE}, then each cell in the counts\nmatrix will be resampled according to a multinomial distribution to introduce\nnoise before calculating perplexity. Default \\code{FALSE}.}\n\n\\item{numResample}{Integer. The number of times to resample the counts matrix\nfor evaluating perplexity if \\code{doResampling} is set to \\code{TRUE}.\nDefault \\code{5}.}\n\n\\item{seed}{Integer. Passed to \\link[withr]{with_seed}. For reproducibility,\na default value of \\code{12345} is used. If \\code{NULL}, no calls to\n\\link[withr]{with_seed} are made.}\n}\n\\value{\nA \\linkS4class{SingleCellExperiment} object or\n \\code{celdaList} object with a \\code{perplexity}\n property, detailing the perplexity of all K/L combinations that appeared in\n the celdaList's models.\n}\n\\description{\nCalculates the perplexity of each model's cluster assignments\n given the provided countMatrix, as well as resamplings of that count\n matrix, providing a distribution of perplexities and a better sense of the\n quality of a given K/L choice.\n}\n\\examples{\ndata(sceCeldaCGGridSearch)\nsce <- resamplePerplexity(sceCeldaCGGridSearch)\nplotGridSearchPerplexity(sce)\ndata(celdaCGSim, celdaCGGridSearchRes)\nceldaCGGridSearchRes <- resamplePerplexity(\n  celdaCGSim$counts,\n  celdaCGGridSearchRes\n)\nplotGridSearchPerplexity(celdaCGGridSearchRes)\n}\n"
  },
  {
    "path": "man/retrieveFeatureIndex.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/celda_functions.R\n\\name{retrieveFeatureIndex}\n\\alias{retrieveFeatureIndex}\n\\title{Retrieve row index for a set of features}\n\\usage{\nretrieveFeatureIndex(\n  features,\n  x,\n  by = \"rownames\",\n  exactMatch = TRUE,\n  removeNA = FALSE\n)\n}\n\\arguments{\n\\item{features}{Character vector of feature names to find in the rows of\n\\code{x}.}\n\n\\item{x}{A data.frame, matrix, or \\linkS4class{SingleCellExperiment}\nobject to search.}\n\n\\item{by}{Character. Where to search for features in \\code{x}. If set to\n\\code{\"rownames\"} then the features will be searched for among\n\\code{rownames(x)}. If \\code{x} inherits from class\n\\linkS4class{SummarizedExperiment}, then \\code{by} can be one of the\nfields in the row annotation data.frame (i.e. one of\n\\code{colnames(rowData(x))}).}\n\n\\item{exactMatch}{Boolean. Whether to only identify exact matches\nor to identify partial matches using \\code{\\link{grep}}.}\n\n\\item{removeNA}{Boolean. If set to \\code{FALSE}, features not found in\n\\code{x} will be given \\code{NA} and the returned vector will be the same\nlength as \\code{features}. If set to \\code{TRUE}, then the \\code{NA}\nvalues will be removed from the returned vector. Default \\code{FALSE}.}\n}\n\\value{\nA vector of row indices for the matching features in \\code{x}.\n}\n\\description{\nThis will return indices of features among the rownames\nor rowData of a data.frame, matrix, or a \\linkS4class{SummarizedExperiment}\nobject including a \\linkS4class{SingleCellExperiment}.\nPartial matching (i.e. grepping) can be used by setting\n\\code{exactMatch = FALSE}.\n}\n\\examples{\ndata(celdaCGSim)\nretrieveFeatureIndex(c(\"Gene_1\", \"Gene_5\"), celdaCGSim$counts)\nretrieveFeatureIndex(c(\"Gene_1\", \"Gene_5\"), celdaCGSim$counts,\n                                            exactMatch = FALSE)\n}\n\\seealso{\n'\\link[scater]{retrieveFeatureInfo}' from package \\code{'scater'}\nand \\code{link{regex}} for how to use regular expressions when\n\\code{exactMatch = FALSE}.\n}\n\\author{\nYusuke Koga, Joshua Campbell\n}\n"
  },
  {
    "path": "man/runParams.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/accessors.R\n\\name{runParams}\n\\alias{runParams}\n\\alias{runParams,SingleCellExperiment-method}\n\\alias{runParams,celdaList-method}\n\\title{Get run parameters from a celda model\n \\code{SingleCellExperiment} or \\code{celdaList} object}\n\\usage{\nrunParams(x, altExpName = \"featureSubset\")\n\n\\S4method{runParams}{SingleCellExperiment}(x, altExpName = \"featureSubset\")\n\n\\S4method{runParams}{celdaList}(x)\n}\n\\arguments{\n\\item{x}{An object of class \\linkS4class{SingleCellExperiment} or class\n\\code{celdaList}.}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n}\n\\value{\nData Frame. Contains details on the various K/L parameters, chain\n parameters, seed, and final log-likelihoods derived for each model in the\n provided celdaList.\n}\n\\description{\nReturns details on the clustering parameters and model\n priors from the celdaList object when it was created.\n}\n\\examples{\ndata(sceCeldaCGGridSearch)\nrunParams(sceCeldaCGGridSearch)\ndata(celdaCGGridSearchRes)\nrunParams(celdaCGGridSearchRes)\n}\n"
  },
  {
    "path": "man/sampleCells.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/data.R\n\\docType{data}\n\\name{sampleCells}\n\\alias{sampleCells}\n\\title{sampleCells}\n\\format{\nA matrix of simulated gene counts with 10 rows (genes) and 10\n columns (cells).\n}\n\\source{\n\\url{http://github.com/campbio/celda}\n}\n\\usage{\nsampleCells\n}\n\\description{\nA matrix of simulated gene counts.\n}\n\\details{\nA toy count matrix for use with celda.\n\nGenerated by Josh Campbell.\n}\n\\keyword{datasets}\n"
  },
  {
    "path": "man/sampleLabel.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/accessors.R\n\\name{sampleLabel}\n\\alias{sampleLabel}\n\\alias{sampleLabel,SingleCellExperiment-method}\n\\alias{sampleLabel<-}\n\\alias{sampleLabel<-,SingleCellExperiment-method}\n\\alias{sampleLabel,celdaModel-method}\n\\title{Get or set sample labels from a celda\n \\linkS4class{SingleCellExperiment}  object}\n\\usage{\nsampleLabel(x, altExpName = \"featureSubset\")\n\n\\S4method{sampleLabel}{SingleCellExperiment}(x, altExpName = \"featureSubset\")\n\nsampleLabel(x, altExpName = \"featureSubset\") <- value\n\n\\S4method{sampleLabel}{SingleCellExperiment}(x, altExpName = \"featureSubset\") <- value\n\n\\S4method{sampleLabel}{celdaModel}(x)\n}\n\\arguments{\n\\item{x}{Can be one of\n\\itemize{\n\\item A \\linkS4class{SingleCellExperiment} object returned by\n\\link{celda_C}, \\link{celda_G}, or \\link{celda_CG}, with the matrix\nlocated in the \\code{useAssay} assay slot.\nRows represent features and columns represent cells.\n\\item A celda model object.}}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n\n\\item{value}{Character vector of sample labels for replacements. Works\nonly is \\code{x} is a \\linkS4class{SingleCellExperiment} object.}\n}\n\\value{\nCharacter vector. Contains the sample labels provided at model\n creation, or those automatically generated by celda.\n}\n\\description{\nReturn or set the sample labels for the cells in \\code{sce}.\n}\n\\examples{\ndata(sceCeldaCG)\nsampleLabel(sceCeldaCG)\ndata(celdaCGMod)\nsampleLabel(celdaCGMod)\n}\n"
  },
  {
    "path": "man/sceCeldaC.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/data.R\n\\docType{data}\n\\name{sceCeldaC}\n\\alias{sceCeldaC}\n\\title{sceCeldaC}\n\\format{\nA \\linkS4class{SingleCellExperiment} object\n}\n\\usage{\nsceCeldaC\n}\n\\description{\nA \\linkS4class{SingleCellExperiment} object containing the\n results of running \\link{selectFeatures} and \\link{celda_C} on\n \\link{celdaCSim}.\n}\n\\examples{\ndata(celdaCSim)\nsceCeldaC <- selectFeatures(celdaCSim$counts)\nsceCeldaC <- celda_C(sceCeldaC,\n    K = celdaCSim$K,\n    sampleLabel = celdaCSim$sampleLabel,\n    nchains = 1)\n}\n\\keyword{datasets}\n"
  },
  {
    "path": "man/sceCeldaCG.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/data.R\n\\docType{data}\n\\name{sceCeldaCG}\n\\alias{sceCeldaCG}\n\\title{sceCeldaCG}\n\\format{\nA \\linkS4class{SingleCellExperiment} object\n}\n\\usage{\nsceCeldaCG\n}\n\\description{\nA \\linkS4class{SingleCellExperiment} object containing the\n results of running \\link{selectFeatures} and \\link{celda_CG} on\n \\link{celdaCGSim}.\n}\n\\examples{\ndata(celdaCGSim)\nsceCeldaCG <- selectFeatures(celdaCGSim$counts)\nsceCeldaCG <- celda_CG(sceCeldaCG,\n    K = celdaCGSim$K,\n    L = celdaCGSim$L,\n    sampleLabel = celdaCGSim$sampleLabel,\n    nchains = 1)\n}\n\\keyword{datasets}\n"
  },
  {
    "path": "man/sceCeldaCGGridSearch.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/data.R\n\\docType{data}\n\\name{sceCeldaCGGridSearch}\n\\alias{sceCeldaCGGridSearch}\n\\title{sceCeldaCGGridSearch}\n\\format{\nA \\linkS4class{SingleCellExperiment} object\n}\n\\usage{\nsceCeldaCGGridSearch\n}\n\\description{\nA \\linkS4class{SingleCellExperiment} object containing the\n results of running \\link{selectFeatures} and \\link{celdaGridSearch} on\n \\link{celdaCGSim}.\n}\n\\examples{\ndata(celdaCGSim)\nsce <- selectFeatures(celdaCGSim$counts)\nsceCeldaCGGridSearch <- celdaGridSearch(sce,\n    model = \"celda_CG\",\n    paramsTest = list(K = seq(4, 6), L = seq(9, 11)),\n    paramsFixed = list(sampleLabel = celdaCGSim$sampleLabel),\n    bestOnly = TRUE,\n    nchains = 1,\n    cores = 1,\n    verbose = FALSE)\n}\n\\keyword{datasets}\n"
  },
  {
    "path": "man/sceCeldaG.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/data.R\n\\docType{data}\n\\name{sceCeldaG}\n\\alias{sceCeldaG}\n\\title{sceCeldaG}\n\\format{\nA \\linkS4class{SingleCellExperiment} object\n}\n\\usage{\nsceCeldaG\n}\n\\description{\nA \\linkS4class{SingleCellExperiment} object containing the\n results of running \\link{selectFeatures} and \\link{celda_G} on\n \\link{celdaGSim}.\n}\n\\examples{\ndata(celdaGSim)\nsceCeldaG <- selectFeatures(celdaGSim$counts)\nsceCeldaG <- celda_G(sceCeldaG, L = celdaGSim$L, nchains = 1)\n}\n\\keyword{datasets}\n"
  },
  {
    "path": "man/selectBestModel.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/celdaGridSearch.R\n\\name{selectBestModel}\n\\alias{selectBestModel}\n\\alias{selectBestModel,SingleCellExperiment-method}\n\\alias{selectBestModel,celdaList-method}\n\\title{Select best chain within each combination of parameters}\n\\usage{\nselectBestModel(x, asList = FALSE, altExpName = \"featureSubset\")\n\n\\S4method{selectBestModel}{SingleCellExperiment}(x, asList = FALSE, altExpName = \"featureSubset\")\n\n\\S4method{selectBestModel}{celdaList}(x, asList = FALSE)\n}\n\\arguments{\n\\item{x}{Can be one of\n\\itemize{\n \\item A \\linkS4class{SingleCellExperiment} object returned from\n \\code{celdaGridSearch}, \\code{recursiveSplitModule},\n or \\code{recursiveSplitCell}. Must contain a list named\n \\code{\"celda_grid_search\"} in \\code{metadata(x)}.\n \\item celdaList object.}}\n\n\\item{asList}{\\code{TRUE} or \\code{FALSE}. Whether to return the\nbest model as a\n\\code{celdaList} object or not. If \\code{FALSE}, return the best model as a\ncorresponding celda model object.}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n}\n\\value{\nOne of\n\\itemize{\n \\item A new \\linkS4class{SingleCellExperiment} object containing\n one model with the best log-likelihood for each set of parameters in\n \\code{metadata(x)}. If there is only one set of parameters,\n a new \\linkS4class{SingleCellExperiment} object\n with the matching model stored in the\n \\link{metadata}\n \\code{\"celda_parameters\"} slot will be returned. Otherwise, a new\n \\linkS4class{SingleCellExperiment} object with the subset models stored\n in the \\link{metadata}\n \\code{\"celda_grid_search\"} slot will be returned.\n \\item A new \\code{celdaList} object containing one model with the best\n log-likelihood for each set of parameters. If only one set of parameters\n is in the \\code{celdaList}, the best model will be returned directly\n instead of a \\code{celdaList} object.}\n}\n\\description{\nSelect the chain with the best log likelihood for each\n combination of tested parameters from a \\code{SCE} object gererated by\n \\link{celdaGridSearch} or from a \\code{celdaList} object.\n}\n\\examples{\ndata(sceCeldaCGGridSearch)\n## Returns same result as running celdaGridSearch with \"bestOnly = TRUE\"\nsce <- selectBestModel(sceCeldaCGGridSearch)\ndata(celdaCGGridSearchRes)\n## Returns same result as running celdaGridSearch with \"bestOnly = TRUE\"\ncgsBest <- selectBestModel(celdaCGGridSearchRes)\n}\n\\seealso{\n\\link{celdaGridSearch} \\link{subsetCeldaList}\n}\n"
  },
  {
    "path": "man/selectFeatures.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/selectFeatures.R\n\\name{selectFeatures}\n\\alias{selectFeatures}\n\\alias{selectFeatures,SingleCellExperiment-method}\n\\alias{selectFeatures,matrix-method}\n\\title{Simple feature selection by feature counts}\n\\usage{\nselectFeatures(\n  x,\n  minCount = 3,\n  minCell = 3,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\"\n)\n\n\\S4method{selectFeatures}{SingleCellExperiment}(\n  x,\n  minCount = 3,\n  minCell = 3,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\"\n)\n\n\\S4method{selectFeatures}{matrix}(\n  x,\n  minCount = 3,\n  minCell = 3,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\"\n)\n}\n\\arguments{\n\\item{x}{A numeric \\link{matrix} of counts or a\n\\linkS4class{SingleCellExperiment}\nwith the matrix located in the assay slot under \\code{useAssay}.\nRows represent features and columns represent cells.}\n\n\\item{minCount}{Minimum number of counts required for feature selection.}\n\n\\item{minCell}{Minimum number of cells required for feature selection.}\n\n\\item{useAssay}{A string specifying the name of the\n\\link{assay} slot to use. Default \"counts\".}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n}\n\\value{\nA \\linkS4class{SingleCellExperiment} object with a\n \\code{altExpName} \\link{altExp} slot. Function\n parameter settings are stored in the \\link{metadata}\n \\code{\"select_features\"} slot.\n}\n\\description{\nA simple heuristic feature selection procedure.\n Select features with at least \\code{minCount} counts\n in at least \\code{minCell} cells. A \\linkS4class{SingleCellExperiment}\n object with subset features will be stored in the\n \\link{altExp} slot with name \\code{altExpName}.\n The name of the \\code{assay} slot in \\link{altExp}\n will be the same as \\code{useAssay}.\n}\n\\examples{\ndata(sceCeldaCG)\nsce <- selectFeatures(sceCeldaCG)\ndata(celdaCGSim)\nsce <- selectFeatures(celdaCGSim$counts)\n}\n"
  },
  {
    "path": "man/semiPheatmap.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/semi_pheatmap.R\n\\name{semiPheatmap}\n\\alias{semiPheatmap}\n\\title{A function to draw clustered heatmaps.}\n\\usage{\nsemiPheatmap(\n  mat,\n  color = colorRampPalette(rev(brewer.pal(n = 7, name = \"RdYlBu\")))(100),\n  kmeansK = NA,\n  breaks = NA,\n  borderColor = \"grey60\",\n  cellWidth = NA,\n  cellHeight = NA,\n  scale = \"none\",\n  clusterRows = TRUE,\n  clusterCols = TRUE,\n  clusteringDistanceRows = \"euclidean\",\n  clusteringDistanceCols = \"euclidean\",\n  clusteringMethod = \"complete\",\n  clusteringCallback = .identity2,\n  cutreeRows = NA,\n  cutreeCols = NA,\n  treeHeightRow = ifelse(clusterRows, 50, 0),\n  treeHeightCol = ifelse(clusterCols, 50, 0),\n  legend = TRUE,\n  legendBreaks = NA,\n  legendLabels = NA,\n  annotationRow = NA,\n  annotationCol = NA,\n  annotation = NA,\n  annotationColors = NA,\n  annotationLegend = TRUE,\n  annotationNamesRow = TRUE,\n  annotationNamesCol = TRUE,\n  dropLevels = TRUE,\n  showRownames = TRUE,\n  showColnames = TRUE,\n  main = NA,\n  fontSize = 10,\n  fontSizeRow = fontSize,\n  fontSizeCol = fontSize,\n  displayNumbers = FALSE,\n  numberFormat = \"\\%.2f\",\n  numberColor = \"grey30\",\n  fontSizeNumber = 0.8 * fontSize,\n  gapsRow = NULL,\n  gapsCol = NULL,\n  labelsRow = NULL,\n  labelsCol = NULL,\n  fileName = NA,\n  width = NA,\n  height = NA,\n  silent = FALSE,\n  rowLabel,\n  colLabel,\n  rowGroupOrder = NULL,\n  colGroupOrder = NULL,\n  ...\n)\n}\n\\arguments{\n\\item{mat}{numeric matrix of the values to be plotted.}\n\n\\item{color}{vector of colors used in heatmap.}\n\n\\item{kmeansK}{the number of kmeans clusters to make, if we want to\nagggregate the rows before drawing heatmap. If NA then the rows are not\naggregated.}\n\n\\item{breaks}{Numeric vector. A sequence of numbers that covers the range\nof values in the normalized `counts`. Values in the normalized `matrix` are\nassigned to each bin in `breaks`. Each break is assigned to a unique color\nfrom `col`. If NULL, then breaks are calculated automatically. Default NULL.}\n\n\\item{borderColor}{color of cell borders on heatmap, use NA if no border\nshould be drawn.}\n\n\\item{cellWidth}{individual cell width in points. If left as NA, then the\nvalues depend on the size of plotting window.}\n\n\\item{cellHeight}{individual cell height in points. If left as NA, then the\nvalues depend on the size of plotting window.}\n\n\\item{scale}{character indicating if the values should be centered and\nscaled in either the row direction or the column direction, or none.\nCorresponding values are \\code{\"row\"}, \\code{\"column\"} and \\code{\"none\"}.}\n\n\\item{clusterRows}{boolean values determining if rows should be clustered or\n\\code{hclust} object,}\n\n\\item{clusterCols}{boolean values determining if columns should be clustered\nor \\code{hclust} object.}\n\n\\item{clusteringDistanceRows}{distance measure used in clustering rows.\nPossible values are \\code{\"correlation\"} for Pearson correlation and all\nthe distances supported by \\code{\\link{dist}}, such as \\code{\"euclidean\"},\netc. If the value is none of the above it is assumed that a distance matrix\nis provided.}\n\n\\item{clusteringDistanceCols}{distance measure used in clustering columns.\nPossible values the same as for clusteringDistanceRows.}\n\n\\item{clusteringMethod}{clustering method used. Accepts the same values as\n\\code{\\link{hclust}}.}\n\n\\item{clusteringCallback}{callback function to modify the clustering. Is\ncalled with two parameters: original \\code{hclust} object and the matrix\nused for clustering. Must return a \\code{hclust} object.}\n\n\\item{cutreeRows}{number of clusters the rows are divided into, based on the\nhierarchical clustering (using cutree), if rows are not clustered, the\nargument is ignored}\n\n\\item{cutreeCols}{similar to \\code{cutreeRows}, but for columns}\n\n\\item{treeHeightRow}{the height of a tree for rows, if these are clustered.\nDefault value 50 points.}\n\n\\item{treeHeightCol}{the height of a tree for columns, if these are\nclustered. Default value 50 points.}\n\n\\item{legend}{logical to determine if legend should be drawn or not.}\n\n\\item{legendBreaks}{vector of breakpoints for the legend.}\n\n\\item{legendLabels}{vector of labels for the \\code{legendBreaks}.}\n\n\\item{annotationRow}{data frame that specifies the annotations shown on left\nside of the heatmap. Each row defines the features for a specific row. The\nrows in the data and in the annotation are matched using corresponding row\nnames. Note that color schemes takes into account if variable is continuous\nor discrete.}\n\n\\item{annotationCol}{similar to annotationRow, but for columns.}\n\n\\item{annotation}{deprecated parameter that currently sets the annotationCol\nif it is missing.}\n\n\\item{annotationColors}{list for specifying annotationRow and\nannotationCol track colors manually. It is  possible to define the colors\nfor only some of the features. Check examples for  details.}\n\n\\item{annotationLegend}{boolean value showing if the legend for annotation\ntracks should be drawn.}\n\n\\item{annotationNamesRow}{boolean value showing if the names for row\nannotation tracks should be drawn.}\n\n\\item{annotationNamesCol}{boolean value showing if the names for column\nannotation tracks should be drawn.}\n\n\\item{dropLevels}{logical to determine if unused levels are also shown in\nthe legend.}\n\n\\item{showRownames}{boolean specifying if column names are be shown.}\n\n\\item{showColnames}{boolean specifying if column names are be shown.}\n\n\\item{main}{the title of the plot}\n\n\\item{fontSize}{base fontsize for the plot}\n\n\\item{fontSizeRow}{fontsize for rownames (Default: fontsize)}\n\n\\item{fontSizeCol}{fontsize for colnames (Default: fontsize)}\n\n\\item{displayNumbers}{logical determining if the numeric values are also\nprinted to the cells. If this is a matrix (with same dimensions as original\nmatrix), the contents of the matrix are shown instead of original values.}\n\n\\item{numberFormat}{format strings (C printf style) of the numbers shown in\ncells. For example \"\\code{\\%.2f}\" shows 2 decimal places and \"\\code{\\%.1e}\"\nshows exponential notation (see more in \\code{\\link{sprintf}}).}\n\n\\item{numberColor}{color of the text}\n\n\\item{fontSizeNumber}{fontsize of the numbers displayed in cells}\n\n\\item{gapsRow}{vector of row indices that show shere to put gaps into\nheatmap. Used only if the rows are not clustered. See \\code{cutreeRow}\nto see how to introduce gaps to clustered rows.}\n\n\\item{gapsCol}{similar to gapsRow, but for columns.}\n\n\\item{labelsRow}{custom labels for rows that are used instead of rownames.}\n\n\\item{labelsCol}{similar to labelsRow, but for columns.}\n\n\\item{fileName}{file path where to save the picture. Filetype is decided by\nthe extension in the path. Currently following formats are supported: png,\npdf, tiff, bmp, jpeg. Even if the plot does not fit into the plotting\nwindow, the file size is calculated so that the plot would fit there,\nunless specified otherwise.}\n\n\\item{width}{manual option for determining the output file width in inches.}\n\n\\item{height}{manual option for determining the output file height in inches.}\n\n\\item{silent}{do not draw the plot (useful when using the gtable output)}\n\n\\item{rowLabel}{row cluster labels for semi-clustering}\n\n\\item{colLabel}{column cluster labels for semi-clustering}\n\n\\item{rowGroupOrder}{Vector. Specifies the order of feature clusters when\nsemisupervised clustering is performed on the \\code{y} labels.}\n\n\\item{colGroupOrder}{Vector. Specifies the order of cell clusters when\nsemisupervised clustering is performed on the \\code{z} labels.}\n\n\\item{\\dots}{graphical parameters for the text used in plot. Parameters\npassed to \\code{\\link{grid.text}}, see \\code{\\link{gpar}}.}\n}\n\\value{\nInvisibly a list of components\n\\itemize{\n    \\item \\code{treeRow} the clustering of rows as \\code{\\link{hclust}}\n      object\n    \\item \\code{treeCol} the clustering of columns as \\code{\\link{hclust}}\n      object\n    \\item \\code{kmeans} the kmeans clustering of rows if parameter\n      \\code{kmeansK} was specified\n}\n}\n\\description{\nA function to draw clustered heatmaps where one has better\n control over some graphical parameters such as cell size, etc.\n\nThe function also allows to aggregate the rows using kmeans clustering.\n This is advisable if number of rows is so big that R cannot handle their\n hierarchical clustering anymore, roughly more than 1000. Instead of showing\n all the rows separately one can cluster the rows in advance and show only\n the cluster centers. The number of clusters can be tuned with parameter\n kmeansK.\n}\n\\author{\nRaivo Kolde <rkolde@gmail.com>\n#@examples\n# Create test matrix\ntest = matrix(rnorm(200), 20, 10)\ntest[seq(10), seq(1, 10, 2)] = test[seq(10), seq(1, 10, 2)] + 3\ntest[seq(11, 20), seq(2, 10, 2)] = test[seq(11, 20), seq(2, 10, 2)] + 2\ntest[seq(15, 20), seq(2, 10, 2)] = test[seq(15, 20), seq(2, 10, 2)] + 4\ncolnames(test) = paste(\"Test\", seq(10), sep = \"\")\nrownames(test) = paste(\"Gene\", seq(20), sep = \"\")\n\n# Draw heatmaps\npheatmap(test)\npheatmap(test, kmeansK = 2)\npheatmap(test, scale = \"row\", clusteringDistanceRows = \"correlation\")\npheatmap(test, color = colorRampPalette(c(\"navy\",\n    \"white\", \"firebrick3\"))(50))\npheatmap(test, cluster_row = FALSE)\npheatmap(test, legend = FALSE)\n\n# Show text within cells\npheatmap(test, displayNumbers = TRUE)\npheatmap(test, displayNumbers = TRUE, numberFormat = \"\\%.1e\")\npheatmap(test, displayNumbers = matrix(ifelse(test > 5,\n    \"*\", \"\"), nrow(test)))\npheatmap(test, cluster_row = FALSE,\n    legendBreaks = seq(-1, 4), legendLabels = c(\"0\",\n    \"1e-4\", \"1e-3\", \"1e-2\", \"1e-1\", \"1\"))\n\n# Fix cell sizes and save to file with correct size\npheatmap(test, cellWidth = 15, cellHeight = 12, main = \"Example heatmap\")\npheatmap(test, cellWidth = 15, cellHeight = 12, fontSize = 8,\n    fileName = \"test.pdf\")\n\n# Generate annotations for rows and columns\nannotationCol = data.frame(CellType = factor(rep(c(\"CT1\", \"CT2\"), 5)),\n    Time = seq(5))\nrownames(annotationCol) = paste(\"Test\", seq(10), sep = \"\")\n\nannotationRow = data.frame(GeneClass = factor(rep(c(\"Path1\",\n   \"Path2\",\n   \"Path3\"),\n   c(10, 4, 6))))\nrownames(annotationRow) = paste(\"Gene\", seq(20), sep = \"\")\n\n# Display row and color annotations\npheatmap(test, annotationCol = annotationCol)\npheatmap(test, annotationCol = annotationCol, annotationLegend = FALSE)\npheatmap(test, annotationCol = annotationCol, annotationRow = annotationRow)\n\n# Specify colors\nann_colors = list(Time = c(\"white\", \"firebrick\"),\n    CellType = c(CT1 = \"#1B9E77\", CT2 = \"#D95F02\"),\n    GeneClass = c(Path1 = \"#7570B3\", Path2 = \"#E7298A\", Path3 = \"#66A61E\"))\n\npheatmap(test, annotationCol = annotationCol, annotationColors = ann_colors,\n    main = \"Title\")\npheatmap(test, annotationCol = annotationCol, annotationRow = annotationRow,\n    annotationColors = ann_colors)\npheatmap(test, annotationCol = annotationCol,\n    annotationColors = ann_colors[2])\n\n# Gaps in heatmaps\npheatmap(test, annotationCol = annotationCol, clusterRows = FALSE,\n    gapsRow = c(10, 14))\npheatmap(test, annotationCol = annotationCol, clusterRows = FALSE,\n    gapsRow = c(10, 14), cutreeCol = 2)\n\n# Show custom strings as row/col names\nlabelsRow = c(\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\",\n\"\", \"\", \"Il10\", \"Il15\", \"Il1b\")\n\npheatmap(test, annotationCol = annotationCol, labelsRow = labelsRow)\n\n# Specifying clustering from distance matrix\ndrows = stats::dist(test, method = \"minkowski\")\ndcols = stats::dist(t(test), method = \"minkowski\")\npheatmap(test,\n    clusteringDistanceRows = drows,\n    clusteringDistanceCols = dcols)\n\n# Modify ordering of the clusters using clustering callback option\ncallback = function(hc, mat) {\n    sv = svd(t(mat))$v[, 1]\n    dend = reorder(as.dendrogram(hc), wts = sv)\n    as.hclust(dend)\n}\n\npheatmap(test, clusteringCallback = callback)\n}\n"
  },
  {
    "path": "man/simulateCells.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/simulateCells.R\n\\name{simulateCells}\n\\alias{simulateCells}\n\\title{Simulate count data from the celda generative models.}\n\\usage{\nsimulateCells(\n  model = c(\"celda_CG\", \"celda_C\", \"celda_G\"),\n  S = 5,\n  CRange = c(50, 100),\n  NRange = c(500, 1000),\n  C = 100,\n  G = 100,\n  K = 5,\n  L = 10,\n  alpha = 1,\n  beta = 1,\n  gamma = 5,\n  delta = 1,\n  seed = 12345\n)\n}\n\\arguments{\n\\item{model}{Character. Options available in \\code{celda::availableModels}.\nCan be one of \\code{\"celda_CG\"}, \\code{\"celda_C\"}, or \\code{\"celda_G\"}.\nDefault \\code{\"celda_CG\"}.}\n\n\\item{S}{Integer. Number of samples to simulate. Default 5. Only used if\n\\code{model} is one of \\code{\"celda_CG\"} or \\code{\"celda_C\"}.}\n\n\\item{CRange}{Integer vector. A vector of length 2 that specifies the lower\nand upper bounds of the number of cells to be generated in each sample.\nDefault c(50, 100). Only used if\n\\code{model} is one of \\code{\"celda_CG\"} or \\code{\"celda_C\"}.}\n\n\\item{NRange}{Integer vector. A vector of length 2 that specifies the lower\nand upper bounds of the number of counts generated for each cell. Default\nc(500, 1000).}\n\n\\item{C}{Integer. Number of cells to simulate. Default 100. Only used if\n\\code{model} is \\code{\"celda_G\"}.}\n\n\\item{G}{Integer. The total number of features to be simulated. Default 100.}\n\n\\item{K}{Integer. Number of cell populations. Default 5. Only used if\n\\code{model} is one of \\code{\"celda_CG\"} or \\code{\"celda_C\"}.}\n\n\\item{L}{Integer. Number of feature modules. Default 10. Only used if\n\\code{model} is one of \\code{\"celda_CG\"} or \\code{\"celda_G\"}.}\n\n\\item{alpha}{Numeric. Concentration parameter for Theta. Adds a pseudocount\nto each cell population in each sample. Default 1. Only used if\n\\code{model} is one of \\code{\"celda_CG\"} or \\code{\"celda_C\"}.}\n\n\\item{beta}{Numeric. Concentration parameter for Phi. Adds a pseudocount to\neach feature module in each cell population. Default 1.}\n\n\\item{gamma}{Numeric. Concentration parameter for Eta. Adds a pseudocount to\nthe number of features in each module. Default 5. Only used if\n\\code{model} is one of \\code{\"celda_CG\"} or \\code{\"celda_G\"}.}\n\n\\item{delta}{Numeric. Concentration parameter for Psi. Adds a pseudocount to\neach feature in each module. Default 1. Only used if\n\\code{model} is one of \\code{\"celda_CG\"} or \\code{\"celda_G\"}.}\n\n\\item{seed}{Integer. Passed to \\link[withr]{with_seed}. For reproducibility,\na default value of 12345 is used. If NULL, no calls to\n\\link[withr]{with_seed} are made.}\n}\n\\value{\nA \\link[SingleCellExperiment]{SingleCellExperiment} object with\n simulated count matrix stored in the \"counts\" assay slot. Function\n parameter settings are stored in the \\link{metadata} slot. For\n \\code{\"celda_CG\"} and \\code{\"celda_C\"} models,\n columns \\code{celda_sample_label} and \\code{celda_cell_cluster} in\n \\link{colData} contain simulated sample labels and\n cell population clusters. For \\code{\"celda_CG\"} and \\code{\"celda_G\"}\n models, column \\code{celda_feature_module} in\n \\link{rowData} contains simulated gene modules.\n}\n\\description{\nThis function generates a \\linkS4class{SingleCellExperiment}\n containing a simulated counts matrix in the \\code{\"counts\"} assay slot, as\n well as various parameters used in the simulation which can be\n useful for running celda and are stored in \\code{metadata} slot. The user\n must provide the desired model (one of celda_C, celda_G, celda_CG) as well\n as any desired tuning parameters for those model's simulation functions\n as detailed below.\n}\n\\examples{\nsce <- simulateCells()\n}\n"
  },
  {
    "path": "man/simulateContamination.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/decon.R\n\\name{simulateContamination}\n\\alias{simulateContamination}\n\\title{Simulate contaminated count matrix}\n\\usage{\nsimulateContamination(\n  C = 300,\n  G = 100,\n  K = 3,\n  NRange = c(500, 1000),\n  beta = 0.1,\n  delta = c(1, 10),\n  numMarkers = 3,\n  seed = 12345\n)\n}\n\\arguments{\n\\item{C}{Integer. Number of cells to be simulated. Default \\code{300}.}\n\n\\item{G}{Integer. Number of genes to be simulated. Default \\code{100}.}\n\n\\item{K}{Integer. Number of cell populations to be simulated.\nDefault \\code{3}.}\n\n\\item{NRange}{Integer vector. A vector of length 2 that specifies the lower\nand upper bounds of the number of counts generated for each cell. Default\n\\code{c(500, 1000)}.}\n\n\\item{beta}{Numeric. Concentration parameter for Phi. Default \\code{0.1}.}\n\n\\item{delta}{Numeric or Numeric vector. Concentration parameter for Theta.\nIf input as a single numeric value, symmetric values for beta\ndistribution are specified; if input as a vector of lenght 2, the two\nvalues will be the shape1 and shape2 paramters of the beta distribution\nrespectively. Default \\code{c(1, 5)}.}\n\n\\item{numMarkers}{Integer. Number of markers for each cell population.\nDefault \\code{3}.}\n\n\\item{seed}{Integer. Passed to \\code{\\link[withr]{with_seed}}.\nFor reproducibility, a default value of 12345 is used. If NULL, no calls to\n \\code{\\link[withr]{with_seed}} are made.}\n}\n\\value{\nA list containing the \\code{nativeMatirx} (real expression),\n\\code{observedMatrix} (real expression + contamination), as well as other\nparameters used in the simulation.\n}\n\\description{\nThis function generates a list containing two count matrices --\n one for real expression, the other one for contamination, as well as other\n parameters used in the simulation which can be useful for running\n decontamination.\n}\n\\examples{\ncontaminationSim <- simulateContamination(K = 3, delta = c(1, 10))\n}\n\\author{\nShiyi Yang, Yuan Yin, Joshua Campbell\n}\n"
  },
  {
    "path": "man/splitModule.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/splitModule.R\n\\name{splitModule}\n\\alias{splitModule}\n\\alias{splitModule,SingleCellExperiment-method}\n\\title{Split celda feature module}\n\\usage{\nsplitModule(\n  x,\n  module,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  n = 2,\n  seed = 12345\n)\n\n\\S4method{splitModule}{SingleCellExperiment}(\n  x,\n  module,\n  useAssay = \"counts\",\n  altExpName = \"featureSubset\",\n  n = 2,\n  seed = 12345\n)\n}\n\\arguments{\n\\item{x}{A \\linkS4class{SingleCellExperiment} object\nwith the matrix located in the assay slot under \\code{useAssay}.\nRows represent features and columns represent cells.}\n\n\\item{module}{Integer. The module to be split.}\n\n\\item{useAssay}{A string specifying which \\link{assay}\nslot to use for \\code{x}. Default \"counts\".}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \\code{\"featureSubset\"}.}\n\n\\item{n}{Integer. How many modules should \\code{module} be split into.\nDefault \\code{2}.}\n\n\\item{seed}{Integer. Passed to \\link[withr]{with_seed}. For reproducibility,\na default value of 12345 is used. If NULL, no calls to\n\\link[withr]{with_seed} are made.}\n}\n\\value{\nA updated \\linkS4class{SingleCellExperiment} object with new\n feature modules stored in column \\code{celda_feature_module} in\n \\code{\\link{rowData}(x)}.\n}\n\\description{\nManually select a celda feature module to split into 2 or\n more modules. Useful for splitting up modules that show divergent\n expression of features in multiple cell clusters.\n}\n\\examples{\ndata(sceCeldaCG)\n# Split module 5 into 2 new modules.\nsce <- splitModule(sceCeldaCG, module = 5)\n}\n"
  },
  {
    "path": "man/subsetCeldaList.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/celdaGridSearch.R\n\\name{subsetCeldaList}\n\\alias{subsetCeldaList}\n\\alias{subsetCeldaList,SingleCellExperiment-method}\n\\alias{subsetCeldaList,celdaList-method}\n\\title{Subset celda model from SCE object returned from\n \\code{celdaGridSearch}}\n\\usage{\nsubsetCeldaList(x, params, altExpName = \"featureSubset\")\n\n\\S4method{subsetCeldaList}{SingleCellExperiment}(x, params, altExpName = \"featureSubset\")\n\n\\S4method{subsetCeldaList}{celdaList}(x, params)\n}\n\\arguments{\n\\item{x}{Can be one of\n\\itemize{\n \\item A \\linkS4class{SingleCellExperiment} object returned from\n \\code{celdaGridSearch}, \\code{recursiveSplitModule},\n or \\code{recursiveSplitCell}. Must contain a list named\n \\code{\"celda_grid_search\"} in \\code{metadata(x)}.\n \\item celdaList object.}}\n\n\\item{params}{List. List of parameters used to subset the matching celda\nmodels in list \\code{\"celda_grid_search\"} in \\code{metadata(x)}.}\n\n\\item{altExpName}{The name for the \\link{altExp} slot\nto use. Default \"featureSubset\".}\n}\n\\value{\nOne of\n\\itemize{\n \\item A new \\linkS4class{SingleCellExperiment} object containing\n all models matching the\n provided criteria in \\code{params}. If only one celda model result in the\n \\code{\"celda_grid_search\"} slot in \\code{metadata(x)} matches\n the given criteria, a new \\linkS4class{SingleCellExperiment} object\n with the matching model stored in the\n \\link{metadata}\n \\code{\"celda_parameters\"} slot will be returned. Otherwise, a new\n \\linkS4class{SingleCellExperiment} object with the subset models stored\n in the \\link{metadata}\n \\code{\"celda_grid_search\"} slot will be returned.\n \\item A new \\code{celdaList} object containing all models matching the\n provided criteria in \\code{params}. If only one item in the\n \\code{celdaList} matches the given criteria, the matching model will be\n returned directly instead of a \\code{celdaList} object.}\n}\n\\description{\nSelect a subset of models from a\n \\linkS4class{SingleCellExperiment} object generated by\n \\link{celdaGridSearch} that match the criteria in the argument\n \\code{params}.\n}\n\\examples{\ndata(sceCeldaCGGridSearch)\nsceK5L10 <- subsetCeldaList(sceCeldaCGGridSearch,\n    params = list(K = 5, L = 10))\ndata(celdaCGGridSearchRes)\nresK5L10 <- subsetCeldaList(celdaCGGridSearchRes,\n    params = list(K = 5, L = 10))\n}\n\\seealso{\n\\link{celdaGridSearch} can run Celda with multiple parameters and\n chains in parallel. \\link{selectBestModel} can get the best model for each\n combination of parameters.\n}\n"
  },
  {
    "path": "man/topRank.Rd",
    "content": "% Generated by roxygen2: do not edit by hand\n% Please edit documentation in R/topRank.R\n\\name{topRank}\n\\alias{topRank}\n\\title{Identify features with the highest influence on clustering.}\n\\usage{\ntopRank(matrix, n = 25, margin = 2, threshold = 0, decreasing = TRUE)\n}\n\\arguments{\n\\item{matrix}{Numeric matrix.}\n\n\\item{n}{Integer. Maximum number of items above `threshold` returned for each\nranked row or column.}\n\n\\item{margin}{Integer. Dimension of `matrix` to rank, with 1 for rows, 2 for\ncolumns. Default 2.}\n\n\\item{threshold}{Numeric. Only return ranked rows or columns in the matrix\nthat are above this threshold. If NULL, then no threshold will be applied.\nDefault 0.}\n\n\\item{decreasing}{Logical. Specifies if the rank should be decreasing.\nDefault TRUE.}\n}\n\\value{\nList. The `index` variable provides the top `n` row (feature) indices\n contributing the most to each column (cell). The `names` variable provides\n the rownames corresponding to these indexes.\n}\n\\description{\ntopRank() can quickly identify the top `n` rows for each column\n of a matrix. For example, this can be useful for identifying the top `n`\n features per cell.\n}\n\\examples{\ndata(sampleCells)\ntopRanksPerCell <- topRank(sampleCells, n = 5)\ntopFeatureNamesForCell <- topRanksPerCell$names[1]\n}\n"
  },
  {
    "path": "src/DecontX.cpp",
    "content": "#include <RcppEigen.h>\n#include <Rcpp.h>\n// [[Rcpp::depends(RcppEigen)]]\nusing namespace Rcpp;\n\n// [[Rcpp::export]]\nRcpp::List decontXEM(const Eigen::MappedSparseMatrix<double> &counts,\n                     const NumericVector &counts_colsums,\n                     const NumericVector &theta,\n                     const bool &estimate_eta,\n                     const NumericMatrix &eta,\n                     const NumericMatrix &phi,\n                     const IntegerVector &z,\n                     const bool &estimate_delta,\n                     const NumericVector &delta,\n                     const double &pseudocount)\n{\n\n  // Perform error checking\n  if (counts.cols() != theta.size())\n  {\n    stop(\"Length of 'theta' must be equal to the number of columns in 'counts'.\");\n  }\n  if (counts.cols() != z.size())\n  {\n    stop(\"Length of 'z' must be equal to the number of columns in 'counts'.\");\n  }\n  if (counts.cols() != counts_colsums.size())\n  {\n    stop(\"Length of 'counts_colsums' must be equal to the number of columns in 'counts'.\");\n  }\n  if (counts.rows() != phi.nrow())\n  {\n    stop(\"The number of rows in 'phi' must be equal to the number of rows in 'counts'.\");\n  }\n  if (counts.rows() != eta.nrow())\n  {\n    stop(\"The number of rows in 'eta' must be equal to the number of rows in 'counts'.\");\n  }\n  if (phi.ncol() != eta.ncol())\n  {\n    stop(\"The number of columns in 'eta' must be equal to the number of columns in 'phi'.\");\n  }\n  if (min(z) < 1 || max(z) > eta.ncol())\n  {\n    stop(\"The entries in 'z' need to be between 1 and the number of columns in eta and phi.\");\n  }\n  if (delta.size() != 2 || sum(delta < 0) > 0)\n  {\n    stop(\"'delta' must be a numeric vector of length 2 with positive integers.\");\n  }\n\n  // Declare variables and functions\n  NumericVector new_theta(theta.size());\n  NumericVector native_total(theta.size());\n  NumericMatrix new_phi(phi.nrow(), phi.ncol());\n  // Instantiate new_eta but only update it when estimate_eta is TRUE\n  NumericMatrix new_eta(eta.nrow(), eta.ncol());\n\n\n  // Obtaining 'fit_dirichlet' function from MCMCprecision package\n  Environment pkg = Environment::namespace_env(\"MCMCprecision\");\n  Function f = pkg[\"fit_dirichlet\"];\n\n  int i;\n  int j;\n  int k;\n  int nr = phi.nrow();\n  double x;\n  double pcontamin;\n  double pnative;\n  double normp;\n  double px;\n  for (int j = 0; j < counts.cols(); ++j)\n  {\n    for (Eigen::MappedSparseMatrix<double>::InnerIterator i_(counts, j); i_; ++i_)\n    {\n      i = i_.index();\n      x = i_.value();\n      k = z[j] - 1;\n\n      // Calculate variational probabilities\n      // Removing the log/exp speeds it up and produces the same result since\n      // there are only 2 probabilities being multiplied\n\n      //pnative = log(phi(i,k) + pseudocount) + log(theta(j) + pseudocount);\n      //pcontamin = log(eta(i,k) + pseudocount) + log(1 - theta(j) + pseudocount);\n      pnative = (phi[nr * k + i] + pseudocount) * (theta[j] + pseudocount);\n      pcontamin = (eta[nr * k + i] + pseudocount) * (1 - theta[j] + pseudocount);\n\n      // Normalize probabilities and add to proper components\n      //normp = exp(pnative) / (exp(pcontamin) + exp(pnative));\n      normp = pnative / (pcontamin + pnative);\n      px = normp * x;\n      new_phi(i, k) += px;\n      native_total(j) += px;\n    }\n  }\n\n  // Calculate Eta using Weights from Phi\n  if (estimate_eta == TRUE)\n  {\n    NumericVector phi_rowsum = rowSums(new_phi);\n    for (i = 0; i < new_eta.ncol(); i++)\n    {\n      for (j = 0; j < new_eta.nrow(); j++)\n      {\n        new_eta(j, i) = phi_rowsum[j] - new_phi(j, i);\n      }\n    }\n  }\n\n  // Normalize Phi\n  NumericVector phi_colsum = colSums(new_phi);\n  for (i = 0; i < new_phi.ncol(); i++)\n  {\n    new_phi(_, i) = new_phi(_, i) / phi_colsum[i];\n  }\n\n  // Normalize Eta\n  if (estimate_eta == TRUE)\n  {\n    NumericVector eta_colsum = colSums(new_eta);\n    for (i = 0; i < new_phi.ncol(); i++)\n    {\n      new_eta(_, i) = new_eta(_, i) / eta_colsum[i];\n    }\n  }\n\n  // Update Theta\n  NumericVector contamination_prop = (counts_colsums - native_total) / counts_colsums;\n  NumericVector native_prop = 1 - contamination_prop;\n  NumericMatrix theta_raw = cbind(native_prop, contamination_prop);\n\n  NumericVector new_delta = delta;\n  if (estimate_delta == TRUE)\n  {\n    Rcpp::List result = f(Named(\"x\", theta_raw));\n    new_delta = result[\"alpha\"];\n  }\n\n  // Estimate new theta\n  new_theta = (native_total + new_delta[0]) / (counts_colsums + sum(new_delta));\n\n  // If not to estimate new_eta, just return input eta\n  if (estimate_eta == FALSE)\n  {\n    new_eta = eta;\n  }\n\n  return Rcpp::List::create(Rcpp::Named(\"phi\") = new_phi,\n                            Rcpp::Named(\"eta\") = new_eta,\n                            Rcpp::Named(\"theta\") = new_theta,\n                            Rcpp::Named(\"delta\") = new_delta,\n                            Rcpp::Named(\"contamination\") = contamination_prop);\n}\n\n// [[Rcpp::export]]\ndouble decontXLogLik(const Eigen::MappedSparseMatrix<double> &counts,\n                     const NumericVector &theta,\n                     const NumericMatrix &eta,\n                     const NumericMatrix &phi,\n                     const IntegerVector &z,\n                     const double &pseudocount)\n{\n\n  // Perform error checking\n  if (counts.cols() != theta.size())\n  {\n    stop(\"Length of 'theta' must be equal to the number of columns in 'counts'.\");\n  }\n  if (counts.cols() != z.size())\n  {\n    stop(\"Length of 'z' must be equal to the number of columns in 'counts'.\");\n  }\n  if (counts.rows() != phi.nrow())\n  {\n    stop(\"The number of rows in 'phi' must be equal to the number of rows in 'counts'.\");\n  }\n  if (counts.rows() != eta.nrow())\n  {\n    stop(\"The number of rows in 'eta' must be equal to the number of rows in 'counts'.\");\n  }\n  if (phi.ncol() != eta.ncol())\n  {\n    stop(\"The number of columns in 'eta' must be equal to the number of columns in 'phi'.\");\n  }\n  if (min(z) < 1 || max(z) > eta.ncol())\n  {\n    stop(\"The entries in 'z' need to be between 1 and the number of columns in eta and phi.\");\n  }\n\n  // Declare variables and functions\n  double loglik = 0;\n\n  int i;\n  int k;\n  double x;\n  int nr = phi.nrow();\n\n  // Original R code:\n  // ll <- sum(Matrix::t(counts) * log(theta * t(phi)[z, ] +\n  //       (1 - theta) * t(eta)[z, ] + 1e-20))\n\n  for (int j = 0; j < counts.cols(); ++j)\n  {\n    for (Eigen::MappedSparseMatrix<double>::InnerIterator i_(counts, j); i_; ++i_)\n    {\n      i = i_.index();\n      x = i_.value();\n      k = z[j] - 1;\n\n      loglik += x * log((phi[nr * k + i] * theta[j]) + (eta[nr * k + i] * (1 - theta[j])) + pseudocount);\n    }\n  }\n\n  return loglik;\n}\n\n// [[Rcpp::export]]\nRcpp::List decontXInitialize(const Eigen::MappedSparseMatrix<double> &counts,\n                             const NumericVector &theta,\n                             const IntegerVector &z,\n                             const double &pseudocount)\n{\n\n  // Perform error checking\n  if (counts.cols() != theta.size())\n  {\n    stop(\"Length of 'theta' must be equal to the number of columns in 'counts'.\");\n  }\n  if (counts.cols() != z.size())\n  {\n    stop(\"Length of 'z' must be equal to the number of columns in 'counts'.\");\n  }\n\n  // Declare variables and functions\n  NumericMatrix new_phi(counts.rows(), max(z));\n  NumericMatrix new_eta(counts.rows(), max(z));\n  std::fill(new_phi.begin(), new_phi.end(), pseudocount);\n  std::fill(new_eta.begin(), new_eta.end(), pseudocount);\n\n  int k;\n  int i;\n  double x;\n  for (int j = 0; j < counts.cols(); ++j)\n  {\n    for (Eigen::MappedSparseMatrix<double>::InnerIterator i_(counts, j); i_; ++i_)\n    {\n      i = i_.index();\n      x = i_.value();\n      k = z[j] - 1;\n\n      new_phi(i, k) += x * theta(j);\n    }\n  }\n\n  // Calculate Eta using Weights from Phi\n  NumericVector phi_rowsum = rowSums(new_phi);\n  int j;\n  for (i = 0; i < new_eta.ncol(); i++)\n  {\n    for (j = 0; j < new_eta.nrow(); j++)\n    {\n      new_eta(j, i) = phi_rowsum[j] - new_phi(j, i);\n    }\n  }\n\n  // Normalize Phi and Eta\n  NumericVector phi_colsum = colSums(new_phi);\n  NumericVector eta_colsum = colSums(new_eta);\n  for (i = 0; i < new_phi.ncol(); i++)\n  {\n    new_phi(_, i) = new_phi(_, i) / phi_colsum[i];\n    new_eta(_, i) = new_eta(_, i) / eta_colsum[i];\n  }\n\n  return Rcpp::List::create(Rcpp::Named(\"phi\") = new_phi,\n                            Rcpp::Named(\"eta\") = new_eta);\n}\n\n// [[Rcpp::export]]\nEigen::SparseMatrix<double> calculateNativeMatrix(const Eigen::MappedSparseMatrix<double> &counts,\n                                                  const NumericVector &theta,\n                                                  const NumericMatrix &eta,\n                                                  const NumericMatrix &phi,\n                                                  const IntegerVector &z,\n                                                  const double &pseudocount)\n{\n\n  // Perform error checking\n  if (counts.cols() != theta.size())\n  {\n    stop(\"Length of 'theta' must be equal to the number of columns in 'counts'.\");\n  }\n  if (counts.cols() != z.size())\n  {\n    stop(\"Length of 'z' must be equal to the number of columns in 'counts'.\");\n  }\n  if (counts.rows() != phi.nrow())\n  {\n    stop(\"The number of rows in 'phi' must be equal to the number of rows in 'counts'.\");\n  }\n  if (counts.rows() != eta.nrow())\n  {\n    stop(\"The number of rows in 'eta' must be equal to the number of rows in 'counts'.\");\n  }\n  if (phi.ncol() != eta.ncol())\n  {\n    stop(\"The number of columns in 'eta' must be equal to the number of columns in 'phi'.\");\n  }\n  if (min(z) < 1 || max(z) > eta.ncol())\n  {\n    stop(\"The entries in 'z' need to be between 1 and the number of columns in eta and phi.\");\n  }\n\n  Eigen::SparseMatrix<double> native_matrix = counts;\n\n  int i;\n  int k;\n  double x;\n  double pcontamin;\n  double pnative;\n  double normp;\n  for (int j = 0; j < counts.cols(); ++j)\n  {\n    for (Eigen::MappedSparseMatrix<double>::InnerIterator i_(counts, j); i_; ++i_)\n    {\n      i = i_.index();\n      x = i_.value();\n      k = z[j] - 1;\n\n      // Calculate variational probabilities\n      pnative = log(phi(i, k) + pseudocount) + log(theta(j) + pseudocount);\n      pcontamin = log(eta(i, k) + pseudocount) + log(1 - theta(j) + pseudocount);\n\n      // Normalize probabilities and add to proper components\n      normp = exp(pnative) / (exp(pcontamin) + exp(pnative));\n      native_matrix.coeffRef(i, j) *= normp;\n    }\n  }\n\n  return native_matrix;\n}\n"
  },
  {
    "path": "src/Makevars",
    "content": "\n## With R 3.1.0 or later, you can uncomment the following line to tell R to \n## enable compilation with C++11 (where available)\n##\n## Also, OpenMP support in Armadillo prefers C++11 support. However, for wider\n## availability of the package we do not yet enforce this here.  It is however\n## recommended for client packages to set it.\n##\n## And with R 3.4.0, and RcppArmadillo 0.7.960.*, we turn C++11 on as OpenMP\n## support within Armadillo prefers / requires it\n\nPKG_CXXFLAGS = $(SHLIB_OPENMP_CXXFLAGS) \nPKG_LIBS = $(SHLIB_OPENMP_CXXFLAGS) $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS)\n"
  },
  {
    "path": "src/Makevars.win",
    "content": "\n## With R 3.1.0 or later, you can uncomment the following line to tell R to \n## enable compilation with C++11 (where available)\n##\n## Also, OpenMP support in Armadillo prefers C++11 support. However, for wider\n## availability of the package we do not yet enforce this here.  It is however\n## recommended for client packages to set it.\n##\n## And with R 3.4.0, and RcppArmadillo 0.7.960.*, we turn C++11 on as OpenMP\n## support within Armadillo prefers / requires it\n\nPKG_CXXFLAGS = $(SHLIB_OPENMP_CXXFLAGS) \nPKG_LIBS = $(SHLIB_OPENMP_CXXFLAGS) $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS)\n"
  },
  {
    "path": "src/RcppExports.cpp",
    "content": "// Generated by using Rcpp::compileAttributes() -> do not edit by hand\n// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393\n\n#include <RcppEigen.h>\n#include <Rcpp.h>\n\nusing namespace Rcpp;\n\n#ifdef RCPP_USE_GLOBAL_ROSTREAM\nRcpp::Rostream<true>&  Rcpp::Rcout = Rcpp::Rcpp_cout_get();\nRcpp::Rostream<false>& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get();\n#endif\n\n// decontXEM\nRcpp::List decontXEM(const Eigen::MappedSparseMatrix<double>& counts, const NumericVector& counts_colsums, const NumericVector& theta, const bool& estimate_eta, const NumericMatrix& eta, const NumericMatrix& phi, const IntegerVector& z, const bool& estimate_delta, const NumericVector& delta, const double& pseudocount);\nRcppExport SEXP _celda_decontXEM(SEXP countsSEXP, SEXP counts_colsumsSEXP, SEXP thetaSEXP, SEXP estimate_etaSEXP, SEXP etaSEXP, SEXP phiSEXP, SEXP zSEXP, SEXP estimate_deltaSEXP, SEXP deltaSEXP, SEXP pseudocountSEXP) {\nBEGIN_RCPP\n    Rcpp::RObject rcpp_result_gen;\n    Rcpp::RNGScope rcpp_rngScope_gen;\n    Rcpp::traits::input_parameter< const Eigen::MappedSparseMatrix<double>& >::type counts(countsSEXP);\n    Rcpp::traits::input_parameter< const NumericVector& >::type counts_colsums(counts_colsumsSEXP);\n    Rcpp::traits::input_parameter< const NumericVector& >::type theta(thetaSEXP);\n    Rcpp::traits::input_parameter< const bool& >::type estimate_eta(estimate_etaSEXP);\n    Rcpp::traits::input_parameter< const NumericMatrix& >::type eta(etaSEXP);\n    Rcpp::traits::input_parameter< const NumericMatrix& >::type phi(phiSEXP);\n    Rcpp::traits::input_parameter< const IntegerVector& >::type z(zSEXP);\n    Rcpp::traits::input_parameter< const bool& >::type estimate_delta(estimate_deltaSEXP);\n    Rcpp::traits::input_parameter< const NumericVector& >::type delta(deltaSEXP);\n    Rcpp::traits::input_parameter< const double& >::type pseudocount(pseudocountSEXP);\n    rcpp_result_gen = Rcpp::wrap(decontXEM(counts, counts_colsums, theta, estimate_eta, eta, phi, z, estimate_delta, delta, pseudocount));\n    return rcpp_result_gen;\nEND_RCPP\n}\n// decontXLogLik\ndouble decontXLogLik(const Eigen::MappedSparseMatrix<double>& counts, const NumericVector& theta, const NumericMatrix& eta, const NumericMatrix& phi, const IntegerVector& z, const double& pseudocount);\nRcppExport SEXP _celda_decontXLogLik(SEXP countsSEXP, SEXP thetaSEXP, SEXP etaSEXP, SEXP phiSEXP, SEXP zSEXP, SEXP pseudocountSEXP) {\nBEGIN_RCPP\n    Rcpp::RObject rcpp_result_gen;\n    Rcpp::RNGScope rcpp_rngScope_gen;\n    Rcpp::traits::input_parameter< const Eigen::MappedSparseMatrix<double>& >::type counts(countsSEXP);\n    Rcpp::traits::input_parameter< const NumericVector& >::type theta(thetaSEXP);\n    Rcpp::traits::input_parameter< const NumericMatrix& >::type eta(etaSEXP);\n    Rcpp::traits::input_parameter< const NumericMatrix& >::type phi(phiSEXP);\n    Rcpp::traits::input_parameter< const IntegerVector& >::type z(zSEXP);\n    Rcpp::traits::input_parameter< const double& >::type pseudocount(pseudocountSEXP);\n    rcpp_result_gen = Rcpp::wrap(decontXLogLik(counts, theta, eta, phi, z, pseudocount));\n    return rcpp_result_gen;\nEND_RCPP\n}\n// decontXInitialize\nRcpp::List decontXInitialize(const Eigen::MappedSparseMatrix<double>& counts, const NumericVector& theta, const IntegerVector& z, const double& pseudocount);\nRcppExport SEXP _celda_decontXInitialize(SEXP countsSEXP, SEXP thetaSEXP, SEXP zSEXP, SEXP pseudocountSEXP) {\nBEGIN_RCPP\n    Rcpp::RObject rcpp_result_gen;\n    Rcpp::RNGScope rcpp_rngScope_gen;\n    Rcpp::traits::input_parameter< const Eigen::MappedSparseMatrix<double>& >::type counts(countsSEXP);\n    Rcpp::traits::input_parameter< const NumericVector& >::type theta(thetaSEXP);\n    Rcpp::traits::input_parameter< const IntegerVector& >::type z(zSEXP);\n    Rcpp::traits::input_parameter< const double& >::type pseudocount(pseudocountSEXP);\n    rcpp_result_gen = Rcpp::wrap(decontXInitialize(counts, theta, z, pseudocount));\n    return rcpp_result_gen;\nEND_RCPP\n}\n// calculateNativeMatrix\nEigen::SparseMatrix<double> calculateNativeMatrix(const Eigen::MappedSparseMatrix<double>& counts, const NumericVector& theta, const NumericMatrix& eta, const NumericMatrix& phi, const IntegerVector& z, const double& pseudocount);\nRcppExport SEXP _celda_calculateNativeMatrix(SEXP countsSEXP, SEXP thetaSEXP, SEXP etaSEXP, SEXP phiSEXP, SEXP zSEXP, SEXP pseudocountSEXP) {\nBEGIN_RCPP\n    Rcpp::RObject rcpp_result_gen;\n    Rcpp::RNGScope rcpp_rngScope_gen;\n    Rcpp::traits::input_parameter< const Eigen::MappedSparseMatrix<double>& >::type counts(countsSEXP);\n    Rcpp::traits::input_parameter< const NumericVector& >::type theta(thetaSEXP);\n    Rcpp::traits::input_parameter< const NumericMatrix& >::type eta(etaSEXP);\n    Rcpp::traits::input_parameter< const NumericMatrix& >::type phi(phiSEXP);\n    Rcpp::traits::input_parameter< const IntegerVector& >::type z(zSEXP);\n    Rcpp::traits::input_parameter< const double& >::type pseudocount(pseudocountSEXP);\n    rcpp_result_gen = Rcpp::wrap(calculateNativeMatrix(counts, theta, eta, phi, z, pseudocount));\n    return rcpp_result_gen;\nEND_RCPP\n}\n// cG_calcGibbsProbY_Simple\nNumericVector cG_calcGibbsProbY_Simple(const IntegerMatrix counts, IntegerVector nGbyTS, IntegerMatrix nTSbyC, IntegerVector nbyTS, IntegerVector nbyG, const IntegerVector y, const int L, const int index, const double gamma, const double beta, const double delta);\nRcppExport SEXP _celda_cG_calcGibbsProbY_Simple(SEXP countsSEXP, SEXP nGbyTSSEXP, SEXP nTSbyCSEXP, SEXP nbyTSSEXP, SEXP nbyGSEXP, SEXP ySEXP, SEXP LSEXP, SEXP indexSEXP, SEXP gammaSEXP, SEXP betaSEXP, SEXP deltaSEXP) {\nBEGIN_RCPP\n    Rcpp::RObject rcpp_result_gen;\n    Rcpp::RNGScope rcpp_rngScope_gen;\n    Rcpp::traits::input_parameter< const IntegerMatrix >::type counts(countsSEXP);\n    Rcpp::traits::input_parameter< IntegerVector >::type nGbyTS(nGbyTSSEXP);\n    Rcpp::traits::input_parameter< IntegerMatrix >::type nTSbyC(nTSbyCSEXP);\n    Rcpp::traits::input_parameter< IntegerVector >::type nbyTS(nbyTSSEXP);\n    Rcpp::traits::input_parameter< IntegerVector >::type nbyG(nbyGSEXP);\n    Rcpp::traits::input_parameter< const IntegerVector >::type y(ySEXP);\n    Rcpp::traits::input_parameter< const int >::type L(LSEXP);\n    Rcpp::traits::input_parameter< const int >::type index(indexSEXP);\n    Rcpp::traits::input_parameter< const double >::type gamma(gammaSEXP);\n    Rcpp::traits::input_parameter< const double >::type beta(betaSEXP);\n    Rcpp::traits::input_parameter< const double >::type delta(deltaSEXP);\n    rcpp_result_gen = Rcpp::wrap(cG_calcGibbsProbY_Simple(counts, nGbyTS, nTSbyC, nbyTS, nbyG, y, L, index, gamma, beta, delta));\n    return rcpp_result_gen;\nEND_RCPP\n}\n// cG_CalcGibbsProbY_ori\nNumericVector cG_CalcGibbsProbY_ori(const int index, const IntegerMatrix& counts, const IntegerMatrix& nTSbyC, const IntegerVector& nbyTS, const IntegerVector& nGbyTS, const IntegerVector& nbyG, const IntegerVector& y, const int L, const int nG, const NumericVector& lg_beta, const NumericVector& lg_gamma, const NumericVector& lg_delta, const double delta);\nRcppExport SEXP _celda_cG_CalcGibbsProbY_ori(SEXP indexSEXP, SEXP countsSEXP, SEXP nTSbyCSEXP, SEXP nbyTSSEXP, SEXP nGbyTSSEXP, SEXP nbyGSEXP, SEXP ySEXP, SEXP LSEXP, SEXP nGSEXP, SEXP lg_betaSEXP, SEXP lg_gammaSEXP, SEXP lg_deltaSEXP, SEXP deltaSEXP) {\nBEGIN_RCPP\n    Rcpp::RObject rcpp_result_gen;\n    Rcpp::RNGScope rcpp_rngScope_gen;\n    Rcpp::traits::input_parameter< const int >::type index(indexSEXP);\n    Rcpp::traits::input_parameter< const IntegerMatrix& >::type counts(countsSEXP);\n    Rcpp::traits::input_parameter< const IntegerMatrix& >::type nTSbyC(nTSbyCSEXP);\n    Rcpp::traits::input_parameter< const IntegerVector& >::type nbyTS(nbyTSSEXP);\n    Rcpp::traits::input_parameter< const IntegerVector& >::type nGbyTS(nGbyTSSEXP);\n    Rcpp::traits::input_parameter< const IntegerVector& >::type nbyG(nbyGSEXP);\n    Rcpp::traits::input_parameter< const IntegerVector& >::type y(ySEXP);\n    Rcpp::traits::input_parameter< const int >::type L(LSEXP);\n    Rcpp::traits::input_parameter< const int >::type nG(nGSEXP);\n    Rcpp::traits::input_parameter< const NumericVector& >::type lg_beta(lg_betaSEXP);\n    Rcpp::traits::input_parameter< const NumericVector& >::type lg_gamma(lg_gammaSEXP);\n    Rcpp::traits::input_parameter< const NumericVector& >::type lg_delta(lg_deltaSEXP);\n    Rcpp::traits::input_parameter< const double >::type delta(deltaSEXP);\n    rcpp_result_gen = Rcpp::wrap(cG_CalcGibbsProbY_ori(index, counts, nTSbyC, nbyTS, nGbyTS, nbyG, y, L, nG, lg_beta, lg_gamma, lg_delta, delta));\n    return rcpp_result_gen;\nEND_RCPP\n}\n// cG_CalcGibbsProbY_fastRow\nNumericVector cG_CalcGibbsProbY_fastRow(const int index, const IntegerMatrix& counts, const IntegerMatrix& nTSbyC, const IntegerVector& nbyTS, const IntegerVector& nGbyTS, const IntegerVector& nbyG, const IntegerVector& y, const int L, const int nG, const NumericVector& lg_beta, const NumericVector& lg_gamma, const NumericVector& lg_delta, const double delta);\nRcppExport SEXP _celda_cG_CalcGibbsProbY_fastRow(SEXP indexSEXP, SEXP countsSEXP, SEXP nTSbyCSEXP, SEXP nbyTSSEXP, SEXP nGbyTSSEXP, SEXP nbyGSEXP, SEXP ySEXP, SEXP LSEXP, SEXP nGSEXP, SEXP lg_betaSEXP, SEXP lg_gammaSEXP, SEXP lg_deltaSEXP, SEXP deltaSEXP) {\nBEGIN_RCPP\n    Rcpp::RObject rcpp_result_gen;\n    Rcpp::RNGScope rcpp_rngScope_gen;\n    Rcpp::traits::input_parameter< const int >::type index(indexSEXP);\n    Rcpp::traits::input_parameter< const IntegerMatrix& >::type counts(countsSEXP);\n    Rcpp::traits::input_parameter< const IntegerMatrix& >::type nTSbyC(nTSbyCSEXP);\n    Rcpp::traits::input_parameter< const IntegerVector& >::type nbyTS(nbyTSSEXP);\n    Rcpp::traits::input_parameter< const IntegerVector& >::type nGbyTS(nGbyTSSEXP);\n    Rcpp::traits::input_parameter< const IntegerVector& >::type nbyG(nbyGSEXP);\n    Rcpp::traits::input_parameter< const IntegerVector& >::type y(ySEXP);\n    Rcpp::traits::input_parameter< const int >::type L(LSEXP);\n    Rcpp::traits::input_parameter< const int >::type nG(nGSEXP);\n    Rcpp::traits::input_parameter< const NumericVector& >::type lg_beta(lg_betaSEXP);\n    Rcpp::traits::input_parameter< const NumericVector& >::type lg_gamma(lg_gammaSEXP);\n    Rcpp::traits::input_parameter< const NumericVector& >::type lg_delta(lg_deltaSEXP);\n    Rcpp::traits::input_parameter< const double >::type delta(deltaSEXP);\n    rcpp_result_gen = Rcpp::wrap(cG_CalcGibbsProbY_fastRow(index, counts, nTSbyC, nbyTS, nGbyTS, nbyG, y, L, nG, lg_beta, lg_gamma, lg_delta, delta));\n    return rcpp_result_gen;\nEND_RCPP\n}\n// cG_CalcGibbsProbY\nNumericVector cG_CalcGibbsProbY(const int index, const NumericVector& counts, const NumericMatrix& nTSbyC, const NumericVector& nbyTS, const IntegerVector& nGbyTS, const NumericVector& nbyG, const IntegerVector& y, const int L, const int nG, const NumericVector& lg_beta, const NumericVector& lg_gamma, const NumericVector& lg_delta, const double delta);\nRcppExport SEXP _celda_cG_CalcGibbsProbY(SEXP indexSEXP, SEXP countsSEXP, SEXP nTSbyCSEXP, SEXP nbyTSSEXP, SEXP nGbyTSSEXP, SEXP nbyGSEXP, SEXP ySEXP, SEXP LSEXP, SEXP nGSEXP, SEXP lg_betaSEXP, SEXP lg_gammaSEXP, SEXP lg_deltaSEXP, SEXP deltaSEXP) {\nBEGIN_RCPP\n    Rcpp::RObject rcpp_result_gen;\n    Rcpp::RNGScope rcpp_rngScope_gen;\n    Rcpp::traits::input_parameter< const int >::type index(indexSEXP);\n    Rcpp::traits::input_parameter< const NumericVector& >::type counts(countsSEXP);\n    Rcpp::traits::input_parameter< const NumericMatrix& >::type nTSbyC(nTSbyCSEXP);\n    Rcpp::traits::input_parameter< const NumericVector& >::type nbyTS(nbyTSSEXP);\n    Rcpp::traits::input_parameter< const IntegerVector& >::type nGbyTS(nGbyTSSEXP);\n    Rcpp::traits::input_parameter< const NumericVector& >::type nbyG(nbyGSEXP);\n    Rcpp::traits::input_parameter< const IntegerVector& >::type y(ySEXP);\n    Rcpp::traits::input_parameter< const int >::type L(LSEXP);\n    Rcpp::traits::input_parameter< const int >::type nG(nGSEXP);\n    Rcpp::traits::input_parameter< const NumericVector& >::type lg_beta(lg_betaSEXP);\n    Rcpp::traits::input_parameter< const NumericVector& >::type lg_gamma(lg_gammaSEXP);\n    Rcpp::traits::input_parameter< const NumericVector& >::type lg_delta(lg_deltaSEXP);\n    Rcpp::traits::input_parameter< const double >::type delta(deltaSEXP);\n    rcpp_result_gen = Rcpp::wrap(cG_CalcGibbsProbY(index, counts, nTSbyC, nbyTS, nGbyTS, nbyG, y, L, nG, lg_beta, lg_gamma, lg_delta, delta));\n    return rcpp_result_gen;\nEND_RCPP\n}\n// eigenMatMultInt\nSEXP eigenMatMultInt(const Eigen::Map<Eigen::MatrixXd> A, const Eigen::Map< Eigen::MatrixXi> B);\nRcppExport SEXP _celda_eigenMatMultInt(SEXP ASEXP, SEXP BSEXP) {\nBEGIN_RCPP\n    Rcpp::RObject rcpp_result_gen;\n    Rcpp::RNGScope rcpp_rngScope_gen;\n    Rcpp::traits::input_parameter< const Eigen::Map<Eigen::MatrixXd> >::type A(ASEXP);\n    Rcpp::traits::input_parameter< const Eigen::Map< Eigen::MatrixXi> >::type B(BSEXP);\n    rcpp_result_gen = Rcpp::wrap(eigenMatMultInt(A, B));\n    return rcpp_result_gen;\nEND_RCPP\n}\n// eigenMatMultNumeric\nSEXP eigenMatMultNumeric(const Eigen::Map<Eigen::MatrixXd> A, const Eigen::Map< Eigen::MatrixXd> B);\nRcppExport SEXP _celda_eigenMatMultNumeric(SEXP ASEXP, SEXP BSEXP) {\nBEGIN_RCPP\n    Rcpp::RObject rcpp_result_gen;\n    Rcpp::RNGScope rcpp_rngScope_gen;\n    Rcpp::traits::input_parameter< const Eigen::Map<Eigen::MatrixXd> >::type A(ASEXP);\n    Rcpp::traits::input_parameter< const Eigen::Map< Eigen::MatrixXd> >::type B(BSEXP);\n    rcpp_result_gen = Rcpp::wrap(eigenMatMultNumeric(A, B));\n    return rcpp_result_gen;\nEND_RCPP\n}\n// fastNormProp\nSEXP fastNormProp(NumericMatrix R_counts, double R_alpha);\nRcppExport SEXP _celda_fastNormProp(SEXP R_countsSEXP, SEXP R_alphaSEXP) {\nBEGIN_RCPP\n    Rcpp::RObject rcpp_result_gen;\n    Rcpp::RNGScope rcpp_rngScope_gen;\n    Rcpp::traits::input_parameter< NumericMatrix >::type R_counts(R_countsSEXP);\n    Rcpp::traits::input_parameter< double >::type R_alpha(R_alphaSEXP);\n    rcpp_result_gen = Rcpp::wrap(fastNormProp(R_counts, R_alpha));\n    return rcpp_result_gen;\nEND_RCPP\n}\n// fastNormPropLog\nSEXP fastNormPropLog(NumericMatrix R_counts, double R_alpha);\nRcppExport SEXP _celda_fastNormPropLog(SEXP R_countsSEXP, SEXP R_alphaSEXP) {\nBEGIN_RCPP\n    Rcpp::RObject rcpp_result_gen;\n    Rcpp::RNGScope rcpp_rngScope_gen;\n    Rcpp::traits::input_parameter< NumericMatrix >::type R_counts(R_countsSEXP);\n    Rcpp::traits::input_parameter< double >::type R_alpha(R_alphaSEXP);\n    rcpp_result_gen = Rcpp::wrap(fastNormPropLog(R_counts, R_alpha));\n    return rcpp_result_gen;\nEND_RCPP\n}\n// fastNormPropSqrt\nSEXP fastNormPropSqrt(NumericMatrix R_counts, double R_alpha);\nRcppExport SEXP _celda_fastNormPropSqrt(SEXP R_countsSEXP, SEXP R_alphaSEXP) {\nBEGIN_RCPP\n    Rcpp::RObject rcpp_result_gen;\n    Rcpp::RNGScope rcpp_rngScope_gen;\n    Rcpp::traits::input_parameter< NumericMatrix >::type R_counts(R_countsSEXP);\n    Rcpp::traits::input_parameter< double >::type R_alpha(R_alphaSEXP);\n    rcpp_result_gen = Rcpp::wrap(fastNormPropSqrt(R_counts, R_alpha));\n    return rcpp_result_gen;\nEND_RCPP\n}\n// nonzero\nSEXP nonzero(NumericMatrix R_counts);\nRcppExport SEXP _celda_nonzero(SEXP R_countsSEXP) {\nBEGIN_RCPP\n    Rcpp::RObject rcpp_result_gen;\n    Rcpp::RNGScope rcpp_rngScope_gen;\n    Rcpp::traits::input_parameter< NumericMatrix >::type R_counts(R_countsSEXP);\n    rcpp_result_gen = Rcpp::wrap(nonzero(R_counts));\n    return rcpp_result_gen;\nEND_RCPP\n}\n// colSumByGroupSparse\nRcpp::NumericMatrix colSumByGroupSparse(const Eigen::MappedSparseMatrix<double>& counts, const IntegerVector& group, const int& K);\nRcppExport SEXP _celda_colSumByGroupSparse(SEXP countsSEXP, SEXP groupSEXP, SEXP KSEXP) {\nBEGIN_RCPP\n    Rcpp::RObject rcpp_result_gen;\n    Rcpp::RNGScope rcpp_rngScope_gen;\n    Rcpp::traits::input_parameter< const Eigen::MappedSparseMatrix<double>& >::type counts(countsSEXP);\n    Rcpp::traits::input_parameter< const IntegerVector& >::type group(groupSEXP);\n    Rcpp::traits::input_parameter< const int& >::type K(KSEXP);\n    rcpp_result_gen = Rcpp::wrap(colSumByGroupSparse(counts, group, K));\n    return rcpp_result_gen;\nEND_RCPP\n}\n// rowSumByGroupSparse\nRcpp::NumericMatrix rowSumByGroupSparse(const Eigen::MappedSparseMatrix<double>& counts, const IntegerVector& group, const int& L);\nRcppExport SEXP _celda_rowSumByGroupSparse(SEXP countsSEXP, SEXP groupSEXP, SEXP LSEXP) {\nBEGIN_RCPP\n    Rcpp::RObject rcpp_result_gen;\n    Rcpp::RNGScope rcpp_rngScope_gen;\n    Rcpp::traits::input_parameter< const Eigen::MappedSparseMatrix<double>& >::type counts(countsSEXP);\n    Rcpp::traits::input_parameter< const IntegerVector& >::type group(groupSEXP);\n    Rcpp::traits::input_parameter< const int& >::type L(LSEXP);\n    rcpp_result_gen = Rcpp::wrap(rowSumByGroupSparse(counts, group, L));\n    return rcpp_result_gen;\nEND_RCPP\n}\n// colSumByGroupChangeSparse\nRcpp::NumericMatrix colSumByGroupChangeSparse(const Eigen::MappedSparseMatrix<double>& counts, const NumericMatrix& px, const IntegerVector& group, const IntegerVector& pgroup, const int& K);\nRcppExport SEXP _celda_colSumByGroupChangeSparse(SEXP countsSEXP, SEXP pxSEXP, SEXP groupSEXP, SEXP pgroupSEXP, SEXP KSEXP) {\nBEGIN_RCPP\n    Rcpp::RObject rcpp_result_gen;\n    Rcpp::RNGScope rcpp_rngScope_gen;\n    Rcpp::traits::input_parameter< const Eigen::MappedSparseMatrix<double>& >::type counts(countsSEXP);\n    Rcpp::traits::input_parameter< const NumericMatrix& >::type px(pxSEXP);\n    Rcpp::traits::input_parameter< const IntegerVector& >::type group(groupSEXP);\n    Rcpp::traits::input_parameter< const IntegerVector& >::type pgroup(pgroupSEXP);\n    Rcpp::traits::input_parameter< const int& >::type K(KSEXP);\n    rcpp_result_gen = Rcpp::wrap(colSumByGroupChangeSparse(counts, px, group, pgroup, K));\n    return rcpp_result_gen;\nEND_RCPP\n}\n// rowSumByGroupChangeSparse\nRcpp::NumericMatrix rowSumByGroupChangeSparse(const Eigen::MappedSparseMatrix<double>& counts, const NumericMatrix& px, const IntegerVector& group, const IntegerVector& pgroup, const int& L);\nRcppExport SEXP _celda_rowSumByGroupChangeSparse(SEXP countsSEXP, SEXP pxSEXP, SEXP groupSEXP, SEXP pgroupSEXP, SEXP LSEXP) {\nBEGIN_RCPP\n    Rcpp::RObject rcpp_result_gen;\n    Rcpp::RNGScope rcpp_rngScope_gen;\n    Rcpp::traits::input_parameter< const Eigen::MappedSparseMatrix<double>& >::type counts(countsSEXP);\n    Rcpp::traits::input_parameter< const NumericMatrix& >::type px(pxSEXP);\n    Rcpp::traits::input_parameter< const IntegerVector& >::type group(groupSEXP);\n    Rcpp::traits::input_parameter< const IntegerVector& >::type pgroup(pgroupSEXP);\n    Rcpp::traits::input_parameter< const int& >::type L(LSEXP);\n    rcpp_result_gen = Rcpp::wrap(rowSumByGroupChangeSparse(counts, px, group, pgroup, L));\n    return rcpp_result_gen;\nEND_RCPP\n}\n\nRcppExport SEXP _colSumByGroup(SEXP, SEXP);\nRcppExport SEXP _colSumByGroup_numeric(SEXP, SEXP);\nRcppExport SEXP _colSumByGroupChange(SEXP, SEXP, SEXP, SEXP);\nRcppExport SEXP _colSumByGroupChange_numeric(SEXP, SEXP, SEXP, SEXP);\nRcppExport SEXP _perplexityG(SEXP, SEXP, SEXP, SEXP);\nRcppExport SEXP _rowSumByGroup(SEXP, SEXP);\nRcppExport SEXP _rowSumByGroup_numeric(SEXP, SEXP);\nRcppExport SEXP _rowSumByGroupChange(SEXP, SEXP, SEXP, SEXP);\nRcppExport SEXP _rowSumByGroupChange_numeric(SEXP, SEXP, SEXP, SEXP);\n\nstatic const R_CallMethodDef CallEntries[] = {\n    {\"_celda_decontXEM\", (DL_FUNC) &_celda_decontXEM, 10},\n    {\"_celda_decontXLogLik\", (DL_FUNC) &_celda_decontXLogLik, 6},\n    {\"_celda_decontXInitialize\", (DL_FUNC) &_celda_decontXInitialize, 4},\n    {\"_celda_calculateNativeMatrix\", (DL_FUNC) &_celda_calculateNativeMatrix, 6},\n    {\"_celda_cG_calcGibbsProbY_Simple\", (DL_FUNC) &_celda_cG_calcGibbsProbY_Simple, 11},\n    {\"_celda_cG_CalcGibbsProbY_ori\", (DL_FUNC) &_celda_cG_CalcGibbsProbY_ori, 13},\n    {\"_celda_cG_CalcGibbsProbY_fastRow\", (DL_FUNC) &_celda_cG_CalcGibbsProbY_fastRow, 13},\n    {\"_celda_cG_CalcGibbsProbY\", (DL_FUNC) &_celda_cG_CalcGibbsProbY, 13},\n    {\"_celda_eigenMatMultInt\", (DL_FUNC) &_celda_eigenMatMultInt, 2},\n    {\"_celda_eigenMatMultNumeric\", (DL_FUNC) &_celda_eigenMatMultNumeric, 2},\n    {\"_celda_fastNormProp\", (DL_FUNC) &_celda_fastNormProp, 2},\n    {\"_celda_fastNormPropLog\", (DL_FUNC) &_celda_fastNormPropLog, 2},\n    {\"_celda_fastNormPropSqrt\", (DL_FUNC) &_celda_fastNormPropSqrt, 2},\n    {\"_celda_nonzero\", (DL_FUNC) &_celda_nonzero, 1},\n    {\"_celda_colSumByGroupSparse\", (DL_FUNC) &_celda_colSumByGroupSparse, 3},\n    {\"_celda_rowSumByGroupSparse\", (DL_FUNC) &_celda_rowSumByGroupSparse, 3},\n    {\"_celda_colSumByGroupChangeSparse\", (DL_FUNC) &_celda_colSumByGroupChangeSparse, 5},\n    {\"_celda_rowSumByGroupChangeSparse\", (DL_FUNC) &_celda_rowSumByGroupChangeSparse, 5},\n    {\"_colSumByGroup\",               (DL_FUNC) &_colSumByGroup,               2},\n    {\"_colSumByGroup_numeric\",       (DL_FUNC) &_colSumByGroup_numeric,       2},\n    {\"_colSumByGroupChange\",         (DL_FUNC) &_colSumByGroupChange,         4},\n    {\"_colSumByGroupChange_numeric\", (DL_FUNC) &_colSumByGroupChange_numeric, 4},\n    {\"_perplexityG\",                 (DL_FUNC) &_perplexityG,                 4},\n    {\"_rowSumByGroup\",               (DL_FUNC) &_rowSumByGroup,               2},\n    {\"_rowSumByGroup_numeric\",       (DL_FUNC) &_rowSumByGroup_numeric,       2},\n    {\"_rowSumByGroupChange\",         (DL_FUNC) &_rowSumByGroupChange,         4},\n    {\"_rowSumByGroupChange_numeric\", (DL_FUNC) &_rowSumByGroupChange_numeric, 4},\n    {NULL, NULL, 0}\n};\n\nRcppExport void R_init_celda(DllInfo *dll) {\n    R_registerRoutines(dll, NULL, CallEntries, NULL, NULL);\n    R_useDynamicSymbols(dll, FALSE);\n}\n"
  },
  {
    "path": "src/cG_calcGibbsProbY.cpp",
    "content": "#include <Rcpp.h>\nusing namespace Rcpp;\n// [[Rcpp::depends(Rcpp)]]\n\n//Contains a version that is more simple to implement and understand as it matches the equations more directly \n// However it is many times slower. It is useful to use as a sanity check when modifying the faster function. \n// [[Rcpp::export]]\nNumericVector cG_calcGibbsProbY_Simple(const IntegerMatrix counts,\n\tIntegerVector nGbyTS,\n\tIntegerMatrix nTSbyC,\n\tIntegerVector nbyTS,\n\tIntegerVector nbyG, \n\tconst IntegerVector y,  \n\tconst int L,  \n\tconst int index, \n\tconst double gamma, \n\tconst double beta, \n\tconst double delta) {\n  int index0 = index - 1;\n  int current_y = y[index0] - 1;\n  \n  NumericVector probs(L);\n\n  nGbyTS[current_y] -= 1;\n  nbyTS[current_y] -= nbyG[index0];\n  nTSbyC(current_y,_) = nTSbyC(current_y,_) - counts(index0,_);\n\n  for (int i = 0; i < L; i++) {\n    nGbyTS[i] += 1;\n    nbyTS[i] += nbyG[index0];    \n    nTSbyC(i,_) = nTSbyC(i,_) + counts(index0,_);\n\n    probs[i] += sum(lgamma(nGbyTS + gamma));\n    probs[i] += sum(lgamma(nTSbyC + beta));\t  \n    probs[i] += sum(lgamma(nGbyTS * delta));\n    probs[i] -= sum(lgamma(nbyTS + (nGbyTS * delta)));\n    \n    nGbyTS[i] -= 1;\n    nbyTS[i] -= nbyG[index0];        \n    nTSbyC(i,_) = nTSbyC(i,_) - counts(index0,_);\n  }\n  \n  nGbyTS[current_y] += 1;\n  nbyTS[current_y] += nbyG[index0];  \n  nTSbyC(current_y,_) = nTSbyC(current_y,_) + counts(index0,_);\n  \n  return(probs);\n}\n\n\n\n// [[Rcpp::export]]\nNumericVector cG_CalcGibbsProbY_ori(const int index,\n\tconst IntegerMatrix& counts,\n\tconst IntegerMatrix& nTSbyC,\n\tconst IntegerVector& nbyTS,\n\tconst IntegerVector& nGbyTS,\t\n\tconst IntegerVector& nbyG,\n\tconst IntegerVector& y, \n\tconst int L, \n\tconst int nG,\n\tconst NumericVector& lg_beta,\n\tconst NumericVector& lg_gamma,\n\tconst NumericVector& lg_delta,\n\tconst double delta) {\n\n  int index0 = index - 1;\n  int current_y = y[index0] - 1;\n  int i, j, k;\n  \n  NumericVector probs(L);\n  NumericVector nTSbyC_prob1(L);\n  NumericVector nTSbyC_prob2(L);  \n  \n  // Calculate probabilities related to the \"n.TS.by.C\" part of equation one time up front\n  // The first vector represents when the current feature is added to that module\n  // The second vector represents when the current feature is NOT added to that module\n  for (int col = 0; col < counts.ncol(); col++) {\n    j = col * L + current_y; // Index for the current module in the n.TS.by.C matrix\n    k = col * nG + index0; // Index for the current feature in counts matrix\n\tfor (int row = 0; row < L; row++) {\n\t  if (row == current_y) {\n\t\tnTSbyC_prob1[row] += lg_beta[nTSbyC[j] - counts[k]];\n\t\tnTSbyC_prob2[row] += lg_beta[nTSbyC[j]];\n\t  } else {\n\t\tnTSbyC_prob1[row] += lg_beta[nTSbyC[col * L + row]];\n\t\tnTSbyC_prob2[row] += lg_beta[nTSbyC[col * L + row] + counts[k]];\n\t  }\n\t}\n  }\n\n  // Calculate the probabilities for each module\n  // If statements determine whether to add or subtract counts from each probability\n  for (i = 0; i < L; i++) {\n\tfor(j = 0; j < L; j++) {\n\t  if((i == j) & (i != current_y)) {\n\t\tprobs[i] += lg_gamma[nGbyTS[j] + 1];\n\t\tprobs[i] += nTSbyC_prob2[j];\n\t\tprobs[i] += lg_delta[nGbyTS[j] + 1];\n\t\tprobs[i] -= lgamma(nbyTS[j] + nbyG[index0] + ((nGbyTS[j] + 1) * delta));\n\t  } else if ((j == current_y) & (i != current_y)) {\n\t\tprobs[i] += lg_gamma[nGbyTS[j] - 1];;\n\t\tprobs[i] += nTSbyC_prob1[j];\t\t  \n\t\tprobs[i] += lg_delta[nGbyTS[j] - 1];\n\t\tprobs[i] -= lgamma(nbyTS[j] - nbyG[index0] + ((nGbyTS[j] - 1) * delta));\n\t  } else {\n\t\tprobs[i] += lg_gamma[nGbyTS[j]];;\n\t\tprobs[i] += lg_delta[nGbyTS[j]];\n\t\tprobs[i] -= lgamma(nbyTS[j] + (nGbyTS[j] * delta));\n\t\t\n\t\tif(j == current_y) {\n\t\t  probs[i] += nTSbyC_prob2[j];\n\t\t} else {\n\t\t  probs[i] += nTSbyC_prob1[j];          \n\t\t}\n\t  } \n\t}\n  }\n\n  return(probs);\n}\n\n\n// [[Rcpp::export]]\nNumericVector cG_CalcGibbsProbY_fastRow(const int index,\n\tconst IntegerMatrix& counts,\n\tconst IntegerMatrix& nTSbyC,\n\tconst IntegerVector& nbyTS,\n\tconst IntegerVector& nGbyTS,\t\n\tconst IntegerVector& nbyG,\n\tconst IntegerVector& y, \n\tconst int L, \n\tconst int nG,\n\tconst NumericVector& lg_beta,\n\tconst NumericVector& lg_gamma,\n\tconst NumericVector& lg_delta,\n\tconst double delta) {\n\n  int index0 = index - 1;\n  int current_y = y[index0] - 1;\n  int i;\n  \n  NumericVector probs(L);\n  \n  // Calculate probabilities related to the \"n.TS.by.C\" part of equation one time up front\n  // The first case of if statement represents when the current feature is already added to that module\n  // The second case represents when the current feature is NOT YET added to that module\n  for (i = 0; i < L; i++) {\n    if (i == current_y ) {\n      for (int col = 0; col < counts.ncol(); col++) {\n        probs[i] += lg_beta[nTSbyC(i, col)];\n\tprobs[i] -= lg_beta[nTSbyC(i, col) - counts(index0, col)];\n      }\n    } else {\n      for (int col = 0; col < counts.ncol(); col++) {\n        probs[i] += lg_beta[nTSbyC(i, col) + counts(index0, col)];\n\tprobs[i] -= lg_beta[nTSbyC(i, col)];\n      }\n    }\n  }\n\n  // Calculate the probabilities for each module\n  // If statements determine whether to add or subtract counts from each probability\n  for (i = 0; i < L; i++) {\n    if (i == current_y) {\n      probs[i] += lg_gamma[nGbyTS[i]];\n      probs[i] -= lg_gamma[nGbyTS[i] - 1];\n      probs[i] += lg_delta[nGbyTS[i]];\n      probs[i] -= lg_delta[nGbyTS[i] - 1];\n      probs[i] += lgamma(nbyTS[i] - nbyG[index0] + (nGbyTS[i] - 1) * delta);\n      probs[i] -= lgamma(nbyTS[i] + nGbyTS[i] * delta);\n    } else {\n      probs[i] += lg_gamma[nGbyTS[i] + 1];\n      probs[i] -= lg_gamma[nGbyTS[i]];\n      probs[i] += lg_delta[nGbyTS[i] + 1];\n      probs[i] -= lg_delta[nGbyTS[i]];\n      probs[i] += lgamma(nbyTS[i] + nGbyTS[i] * delta);\n      probs[i] -= lgamma(nbyTS[i] + nbyG[index0] + (nGbyTS[i] + 1) * delta);\n    }\n  }\n\n  return(probs);\n}\n\n\n// [[Rcpp::export]]\nNumericVector cG_CalcGibbsProbY(const int index,\n\tconst NumericVector& counts,\n\tconst NumericMatrix& nTSbyC,\n\tconst NumericVector& nbyTS,\n\tconst IntegerVector& nGbyTS,\t\n\tconst NumericVector& nbyG,\n\tconst IntegerVector& y, \n\tconst int L, \n\tconst int nG,\n\tconst NumericVector& lg_beta,\n\tconst NumericVector& lg_gamma,\n\tconst NumericVector& lg_delta,\n\tconst double delta) {\n\n  int index0 = index - 1;\n  int current_y = y[index0] - 1;\n  //int current_y = y;\n  int i;\n  int j,k;\n  \n  NumericVector probs(L);\n  \n  // Calculate probabilities related to the \"n.TS.by.C\" part of equation one time up front\n  // The first case of if statement represents when the current feature is already added to that module\n  // The second case represents when the current feature is NOT YET added to that module\n  for (int col = 0; col < counts.length(); col++) {\n    //k = col * nG + index0; // Index for the current feature in counts matrix, used when the whole matrix was passed to this function rather than just the row\n    k = col; // Index for the current feature in counts matrix\n    for (i = 0; i < L; i++) {\n      j = col * L + i; // Index for the current module in the n.TS.by.C matrix\n      if (i == current_y) {\n        probs[i] += lg_beta[nTSbyC[j]];\n\tprobs[i] -= lg_beta[nTSbyC[j] - counts[k]];\n      } else {\n        probs[i] += lg_beta[nTSbyC[j] + counts[k]];\n\tprobs[i] -= lg_beta[nTSbyC[j]];\n      }\n    }\n  }\n\n\n  // Calculate the probabilities for each module\n  // If statements determine whether to add or subtract counts from each probability\n  for (i = 0; i < L; i++) {\n    if (i == current_y) {\n      probs[i] += lg_gamma[nGbyTS[i]];\n      probs[i] -= lg_gamma[nGbyTS[i] - 1];\n      probs[i] += lg_delta[nGbyTS[i]];\n      probs[i] -= lg_delta[nGbyTS[i] - 1];\n      probs[i] += lgamma(nbyTS[i] - nbyG[index0] + (nGbyTS[i] - 1) * delta);\n      probs[i] -= lgamma(nbyTS[i] + nGbyTS[i] * delta);\n    } else {\n      probs[i] += lg_gamma[nGbyTS[i] + 1];\n      probs[i] -= lg_gamma[nGbyTS[i]];\n      probs[i] += lg_delta[nGbyTS[i] + 1];\n      probs[i] -= lg_delta[nGbyTS[i]];\n      probs[i] += lgamma(nbyTS[i] + nGbyTS[i] * delta);\n      probs[i] -= lgamma(nbyTS[i] + nbyG[index0] + (nGbyTS[i] + 1) * delta);\n    }\n  }\n\n  return(probs);\n}\n"
  },
  {
    "path": "src/eigenMatMultInt.cpp",
    "content": "// [[Rcpp::depends(RcppEigen)]]\n\n#include <RcppEigen.h>\n\n//' Fast matrix multiplication for double x int\n//' \n//' @param A a double matrix\n//' @param B an integer matrix\n//' @return An integer matrix representing the product of A and B\n// [[Rcpp::export]]\nSEXP eigenMatMultInt(const Eigen::Map<Eigen::MatrixXd> A, const Eigen::Map< Eigen::MatrixXi> B){\n  Eigen::MatrixXd C = A.transpose() * B.cast<double>();\n  return Rcpp::wrap(C);\n}\n\n\n//' Fast matrix multiplication for double x double\n//' \n//' @param A a double matrix\n//' @param B an integer matrix\n//' @return An integer matrix representing the product of A and B\n// [[Rcpp::export]]\nSEXP eigenMatMultNumeric(const Eigen::Map<Eigen::MatrixXd> A, const Eigen::Map< Eigen::MatrixXd> B){\n  Eigen::MatrixXd C = A.transpose() * B;\n  return Rcpp::wrap(C);\n}\n"
  },
  {
    "path": "src/matrixNorm.cpp",
    "content": "// [[Rcpp::depends(Rcpp)]]\n#include <Rcpp.h>\nusing namespace Rcpp ;\n\n//' Fast normalization for numeric matrix\n//' \n//' @param R_counts An integer matrix\n//' @param R_alpha A double value to be added to the matrix as a pseudocount\n//' @return A numeric matrix where the columns have been normalized to proportions\n// [[Rcpp::export]]\nSEXP fastNormProp(NumericMatrix R_counts, double R_alpha) {\n\n  // Get colSums and instantiate new matrix\n  NumericVector cs = colSums(R_counts);\n  NumericMatrix res = NumericMatrix(R_counts.nrow(), R_counts.ncol());\n  \n  // Normalize cell counts to proportions after adding pseudocount  \n  double alpha_tot = R_counts.nrow() * R_alpha;\n  for (int i = 0; i < R_counts.ncol(); ++i) {\n    if (cs[i] + alpha_tot == 0) {\n      stop(\"Division by 0. Make sure colSums of counts does not contain 0 after rounding counts to integers.\");\n    }\n    res(_,i) = (R_counts(_,i) + R_alpha) / (cs[i] + alpha_tot);\n  }\n  \n  return Rcpp::wrap(res);\n}\n\n\n//' Fast normalization for numeric matrix\n//' \n//' @param R_counts An integer matrix\n//' @param R_alpha A double value to be added to the matrix as a pseudocount\n//' @return A numeric matrix where the columns have been normalized to proportions\n// [[Rcpp::export]]\nSEXP fastNormPropLog(NumericMatrix R_counts, double R_alpha) {\n\n  // Get colSums and instantiate new matrix\n  NumericVector cs = colSums(R_counts);\n  NumericMatrix res = NumericMatrix(R_counts.nrow(), R_counts.ncol());\n  \n  // Normalize cell counts to proportions after adding pseudocount  \n  double alpha_tot = R_counts.nrow() * R_alpha;\n  for (int i = 0; i < R_counts.ncol(); ++i) {\n    if (cs[i] + alpha_tot == 0) {\n      stop(\"Division by 0. Make sure colSums of counts does not contain 0 after rounding counts to integers.\");\n    }\n    res(_,i) = log((R_counts(_,i) + R_alpha) / (cs[i] + alpha_tot));\n  }\n  \n  return Rcpp::wrap(res);\n}\n\n\n//' Fast normalization for numeric matrix\n//' \n//' @param R_counts An integer matrix\n//' @param R_alpha A double value to be added to the matrix as a pseudocount\n//' @return A numeric matrix where the columns have been normalized to proportions\n// [[Rcpp::export]]\nSEXP fastNormPropSqrt(NumericMatrix R_counts, double R_alpha) {\n\n  // Get colSums and instantiate new matrix\n  NumericVector cs = colSums(R_counts);\n  NumericMatrix res = NumericMatrix(R_counts.nrow(), R_counts.ncol());\n  \n  // Normalize cell counts to proportions after adding pseudocount  \n  double alpha_tot = R_counts.nrow() * R_alpha;\n  for (int i = 0; i < R_counts.ncol(); ++i) {\n    if (cs[i] + alpha_tot == 0) {\n      stop(\"Division by 0. Make sure colSums of counts does not contain 0 after rounding counts to integers.\");\n    }\n    res(_,i) = sqrt((R_counts(_,i) + R_alpha) / (cs[i] + alpha_tot));\n  }\n  \n  return Rcpp::wrap(res);\n}\n\n\n\n//' get row and column indices of none zero elements in the matrix\n//' \n//' @param R_counts A matrix\n//' @return An integer matrix where each row is a row, column indices pair \n// [[Rcpp::export]]\nSEXP nonzero(NumericMatrix R_counts) {\n  \n  IntegerVector row(1);\n  IntegerVector col(1);\n  NumericVector val(1);\n  \n  int nR = R_counts.nrow();\n  int nC = R_counts.ncol();\n  double x;\n  \n  for (int c = 0; c < nC; c++) {\n    for (int r = 0; r < nR; r++) {\n      x = R_counts[c * nR + r];\n      if (x != 0) {\n        row.push_back(r + 1);\n        col.push_back(c + 1);\n        val.push_back(x);\n      }\n    }\n  }\n  \n  row.erase(0);\n  col.erase(0);\n  val.erase(0);\n  \n  List res;\n  res[\"row\"] = row;\n  res[\"col\"] = col;\n  res[\"val\"] = val;\n  \n  return(res);\n}\n\n"
  },
  {
    "path": "src/matrixSums.c",
    "content": "#include <R.h>\n#include <Rinternals.h>\n#include <R_ext/RS.h>\n\nSEXP _rowSumByGroup(SEXP R_x, SEXP R_group)\n{\n  int i, j;\n  int nr = nrows(R_x);\n  int nc = ncols(R_x);\n  int *x = INTEGER(R_x);\n\n  // If the grouping variable is not a factor, throw an error\n  if (!isFactor(R_group)) {\n    error(\"The grouping argument must be a factor\");\n  }\n\n  int *group = INTEGER(R_group);\n  int nl = nlevels(R_group);\n  // If the sizes of the grouping variable and matrix do not match, throw an error\n  if (LENGTH(R_group) != nr) {\n    error(\"The length of the grouping argument must match the number of rows in the matrix\");\n  }\n  for (i = 0; i < nr; i++) {\n    if(group[i] == NA_INTEGER) {\n      error(\"Labels in group and pgroup must not be NA.\");\n    }\n  }  \n  \n  // Allocate a variable for the return matrix\n  SEXP R_ans;\n  PROTECT(R_ans = allocMatrix(INTSXP, nl, nc));\n  // Set a pointer to the return matrix and initialize the memory\n  int *ans = INTEGER(R_ans);\n  Memzero(ans, nl * nc);\n\n  // Sum the totals for each element of the 'group' variable\n  // Note: columns are iterated over before rows because the compiler appears to store expressions like\n  //       'j * nr' in a temporary variable (as they do not change within inner loop);\n  //       swapping the order of the outer and inner loops slows down the code ~10X\n  for (j = 0; j < nc; j++) {\n    for (i = 0; i < nr; i++) {\n      ans[j * nl + group[i] - 1] += x[j * nr + i];\n    }\n  }\n\n  UNPROTECT(1);\n  return(R_ans);\n}\n\nSEXP _colSumByGroup(SEXP R_x, SEXP R_group)\n{\n  int i, j;\n  int nr = nrows(R_x);\n  int nc = ncols(R_x);\n  int *x = INTEGER(R_x);\n\n  // If the grouping variable is not a factor, throw an error\n  if (!isFactor(R_group)) {\n    error(\"The grouping argument must be a factor\");\n  }\n\n  int *group = INTEGER(R_group);\n  int nl = nlevels(R_group);\n  // If the sizes of the grouping variable and matrix do not match, throw an error\n  if (LENGTH(R_group) != nc) {\n    error(\"The length of the grouping argument must match the number of columns in the matrix\");\n  }\n  for (i = 0; i < nc; i++) {\n    if(group[i] == NA_INTEGER) {\n      error(\"Labels in group and pgroup must not be NA.\");\n    }\n  }  \n  \n  // Allocate a variable for the return matrix\n  SEXP R_ans;\n  PROTECT(R_ans = allocMatrix(INTSXP, nr, nl));\n  // Set a pointer to the return matrix and initialize the memory\n  int *ans = INTEGER(R_ans);\n  Memzero(ans, nr * nl);\n\n  // Sum the totals for each element of the 'group' variable\n  // Note: columns are iterated over before rows because the compiler appears to store expressions like\n  //       'j * nr' in a temporary variable (as they do not change within inner loop);\n  //       swapping the order of the outer and inner loops slows down the code ~10X\n  for (j = 0; j < nc; j++) {\n    for (i = 0; i < nr; i++) {\n      ans[(group[j] - 1) * nr + i] += x[j * nr + i];\n    }\n  }\n\n  UNPROTECT(1);\n  return(R_ans);\n}\n\n\n\nSEXP _rowSumByGroupChange(SEXP R_x, SEXP R_px, SEXP R_group, SEXP R_pgroup)\n{\n  int i, j;\n  int nr = nrows(R_x);\n  int nc = ncols(R_x);\n  int *x = INTEGER(R_x);\n  int *px = INTEGER(R_px);    \n  int *group = INTEGER(R_group);\n  int *pgroup = INTEGER(R_pgroup);\n  \n  // If the grouping variable is not a factor, throw an error\n  if (!isFactor(R_group) || !isFactor(R_pgroup)) {\n    error(\"The grouping arguments must be factors\");\n  }\n  int nl = nlevels(R_group);\n  int nlp = nlevels(R_pgroup);\n  if(nl != nlp || nl != nrows(R_px)) {\n    error(\"group and pgroup must have the same number of levels equal to row number of px\");\n  }\n  \n  if(nc != ncols(R_px)) {\n    error(\"x and the previously summed matrix, px, must have the same number of columns.\");\n  }\n  if(length(R_group) != length(R_pgroup) || length(R_group) != nr) {\n    error(\"group label and previous group label must be the same length as the number of rows in x.\");\n  }\n  for (i = 0; i < nr; i++) {\n    if(group[i] == NA_INTEGER || pgroup[i] == NA_INTEGER) {\n      error(\"Labels in group and pgroup must not be NA.\");\n    }\n  }  \n\n  int g_ix;\n  int pg_ix;\n  for (i = 0; i < nr; i++) {\n    if(pgroup[i] != group[i]) {\n      for (j = 0; j < nc; j++) {\n        pg_ix = (j * nl) + (pgroup[i] - 1);\n        g_ix = (j * nl) + (group[i] - 1);\n        px[pg_ix] -= x[j * nr + i];\n        px[g_ix] += x[j * nr + i];      \n      }\n    }\n  }\n\n  return(R_px);\n}\n\n\n\nSEXP _colSumByGroupChange(SEXP R_x, SEXP R_px, SEXP R_group, SEXP R_pgroup)\n{\n  int i, j;\n  int nr = nrows(R_x);\n  int nc = ncols(R_x);\n  int *x = INTEGER(R_x);\n  int *px = INTEGER(R_px);  \n  int *group = INTEGER(R_group);\n  int *pgroup = INTEGER(R_pgroup);\n  \n  // If the grouping variable is not a factor, throw an error\n  if (!isFactor(R_group) || !isFactor(R_pgroup)) {\n    error(\"The grouping arguments must be factors\");\n  }\n  int nl = nlevels(R_group);\n  int nlp = nlevels(R_pgroup);\n  if(nl != nlp || nl != ncols(R_px)) {\n    error(\"group and pgroup must have the same number of levels equal to column number of px\");\n  }\n\n  if(nr != nrows(R_px)) {\n    error(\"x and the previously summed matrix, pxc must have the same number of rows\");\n  }\n  if(length(R_group) != length(R_pgroup) || length(R_group) != nc) {\n    error(\"group label and previous group label must be the same length as the number of columns in x.\");\n  }\n  for (i = 0; i < nc; i++) {\n    if(group[i] == NA_INTEGER || pgroup[i] == NA_INTEGER) {\n      error(\"Labels in group and pgroup must not be NA.\");\n    }\n  }  \n  \n  // Sum the totals for each element of the 'group' variable,\n  // But only where the group label is different than the previous label\n  // Note: columns are iterated over before rows because the compiler appears to store expressions like\n  //       'j * nr' in a temporary variable (as they do not change within inner loop);\n  //       swapping the order of the outer and inner loops slows down the code ~10X\n  for (j = 0; j < nc; j++) {\n    if(group[j] != pgroup[j]) {\n      for (i = 0; i < nr; i++) {\n        px[(group[j]-1) * nr + i] += x[j * nr + i];\n        px[(pgroup[j]-1) * nr + i] -= x[j * nr + i];\n      }\n    }\n  }\n\n  return(R_px);\n}\n\n\n\nSEXP _rowSumByGroup_numeric(SEXP R_x, SEXP R_group)\n{\n  int i, j;\n  int nr = nrows(R_x);\n  int nc = ncols(R_x);\n  double *x = REAL(R_x);\n\n  // If the grouping variable is not a factor, throw an error\n  if (!isFactor(R_group)) {\n    error(\"The grouping argument must be a factor\");\n  }\n\n  int *group = INTEGER(R_group);\n  int nl = nlevels(R_group);\n  // If the sizes of the grouping variable and matrix do not match, throw an error\n  if (LENGTH(R_group) != nr) {\n    error(\"The length of the grouping argument must match the number of rows in the matrix\");\n  }\n\n  // Allocate a variable for the return matrix\n  SEXP R_ans;\n  PROTECT(R_ans = allocMatrix(REALSXP, nl, nc));\n  // Set a pointer to the return matrix and initialize the memory\n  double *ans = REAL(R_ans);\n  Memzero(ans, nl * nc);\n\n  // Sum the totals for each element of the 'group' variable\n  // Note: columns are iterated over before rows because the compiler appears to store expressions like\n  //       'j * nr' in a temporary variable (as they do not change within inner loop);\n  //       swapping the order of the outer and inner loops slows down the code ~10X\n  for (j = 0; j < nc; j++) {\n    for (i = 0; i < nr; i++) {\n      ans[j * nl + group[i] - 1] += x[j * nr + i];\n    }\n  }\n\n  UNPROTECT(1);\n  return(R_ans);\n}\n\n\n\nSEXP _colSumByGroup_numeric(SEXP R_x, SEXP R_group)\n{\n  int i, j;\n  int nr = nrows(R_x);\n  int nc = ncols(R_x);\n  double *x = REAL(R_x);\n\n  // If the grouping variable is not a factor, throw an error\n  if (!isFactor(R_group)) {\n    error(\"The grouping argument must be a factor\");\n  }\n\n  int *group = INTEGER(R_group);\n  int nl = nlevels(R_group);\n  // If the sizes of the grouping variable and matrix do not match, throw an error\n  if (LENGTH(R_group) != nc) {\n    error(\"The length of the grouping argument must match the number of columns in the matrix\");\n  }\n  \n  // Allocate a variable for the return matrix\n  SEXP R_ans;\n  PROTECT(R_ans = allocMatrix(REALSXP, nr, nl));\n  // Set a pointer to the return matrix and initialize the memory\n  double *ans = REAL(R_ans);\n  Memzero(ans, nr * nl);\n\n  // Sum the totals for each element of the 'group' variable\n  // Note: columns are iterated over before rows because the compiler appears to store expressions like\n  //       'j * nr' in a temporary variable (as they do not change within inner loop);\n  //       swapping the order of the outer and inner loops slows down the code ~10X\n  for (j = 0; j < nc; j++) {\n    for (i = 0; i < nr; i++) {\n      ans[(group[j] - 1) * nr + i] += x[j * nr + i];\n    }\n  }\n\n  UNPROTECT(1);\n  return(R_ans);\n}\n\n\n\nSEXP _rowSumByGroupChange_numeric(SEXP R_x, SEXP R_px, SEXP R_group, SEXP R_pgroup)\n{\n  int i, j;\n  int nr = nrows(R_x);\n  int nc = ncols(R_x);\n  double *x = REAL(R_x);\n  double *px = REAL(R_px);    \n  int *group = INTEGER(R_group);\n  int *pgroup = INTEGER(R_pgroup);\n  \n  // If the grouping variable is not a factor, throw an error\n  if (!isFactor(R_group) || !isFactor(R_pgroup)) {\n    error(\"The grouping arguments must be factors\");\n  }\n  int nl = nlevels(R_group);\n  int nlp = nlevels(R_pgroup);\n  if(nl != nlp || nl != nrows(R_px)) {\n    error(\"group and pgroup must have the same number of levels equal to row number of px\");\n  }\n  \n  if(nc != ncols(R_px)) {\n    error(\"x and the previously summed matrix, px, must have the same number of columns.\");\n  }\n  if(length(R_group) != length(R_pgroup) || length(R_group) != nr) {\n    error(\"group label and previous group label must be the same length as the number of rows in x.\");\n  }\n  for (i = 0; i < nr; i++) {\n    if(group[i] == NA_INTEGER || pgroup[i] == NA_INTEGER) {\n      error(\"Labels in group and pgroup must not be NA.\");\n    }\n  }  \n  \n  int g_ix;\n  int pg_ix;\n  for (i = 0; i < nr; i++) {\n    if(pgroup[i] != group[i]) {\n      for (j = 0; j < nc; j++) {\n        pg_ix = (j * nl) + (pgroup[i] - 1);\n        g_ix = (j * nl) + (group[i] - 1);\n        px[pg_ix] -= x[j * nr + i];\n        px[g_ix] += x[j * nr + i];      \n      }\n    }\n  }\n  \n  return(R_px);\n}\n\n\n\nSEXP _colSumByGroupChange_numeric(SEXP R_x, SEXP R_px, SEXP R_group, SEXP R_pgroup)\n{\n  int i, j;\n  int nr = nrows(R_x);\n  int nc = ncols(R_x);\n  double *x = REAL(R_x);\n  double *px = REAL(R_px);  \n  int *group = INTEGER(R_group);\n  int *pgroup = INTEGER(R_pgroup);\n  \n  // If the grouping variable is not a factor, throw an error\n  if (!isFactor(R_group) || !isFactor(R_pgroup)) {\n    error(\"The grouping arguments must be factors\");\n  }\n  int nl = nlevels(R_group);\n  int nlp = nlevels(R_pgroup);\n  if(nl != nlp || nl != ncols(R_px)) {\n    error(\"group and pgroup must have the same number of levels equal to column number of px\");\n  }\n  \n  if(nr != nrows(R_px)) {\n    error(\"x and the previously summed matrix, pxc must have the same number of rows\");\n  }\n  if(length(R_group) != length(R_pgroup) || length(R_group) != nc) {\n    error(\"group label and previous group label must be the same length as the number of columns in x.\");\n  }\n  for (i = 0; i < nc; i++) {\n    if(group[i] == NA_INTEGER || pgroup[i] == NA_INTEGER) {\n      error(\"Labels in group and pgroup must not be NA.\");\n    }\n  }  \n  \n  // Sum the totals for each element of the 'group' variable,\n  // But only where the group label is different than the previous label\n  // Note: columns are iterated over before rows because the compiler appears to store expressions like\n  //       'j * nr' in a temporary variable (as they do not change within inner loop);\n  //       swapping the order of the outer and inner loops slows down the code ~10X\n  for (j = 0; j < nc; j++) {\n    if(group[j] != pgroup[j]) {\n      for (i = 0; i < nr; i++) {\n        px[(group[j]-1) * nr + i] += x[j * nr + i];\n        px[(pgroup[j]-1) * nr + i] -= x[j * nr + i];\n      }\n    }\n  }\n  \n  return(R_px);\n}\n\n\n\n"
  },
  {
    "path": "src/matrixSumsSparse.cpp",
    "content": "#include <RcppEigen.h>\n#include <Rcpp.h>\n// [[Rcpp::depends(RcppEigen)]]\nusing namespace Rcpp;\n\n// Function to sum the counts for all cells that belong to a population together\n//Performs the same function as .colSumByGroup but for sparse matrices\n// [[Rcpp::export]]\nRcpp::NumericMatrix colSumByGroupSparse(\n    const Eigen::MappedSparseMatrix<double> &counts,\n    const IntegerVector &group,\n    const int &K)\n{\n  // Perform error checking\n  if (counts.cols() != group.size())\n  {\n    stop(\"Length of 'group' must be equal to the number of columns in 'counts'.\");\n  }\n  if (min(group) < 1 || max(group) > K)\n  {\n    stop(\"The entries in 'group' need to be between 1 and 'K'\");\n  }\n  if(K > counts.cols()) {\n    stop(\"'K' cannot be bigger than the number of columns in 'counts'.\");\n  }\n  \n  NumericMatrix x(counts.rows(), K); \n\n  for (int j = 0; j < counts.cols(); ++j)\n  {\n    for (Eigen::MappedSparseMatrix<double>::InnerIterator i_(counts, j); i_; ++i_)\n    {\n      x(i_.index(), group[j] - 1) += i_.value();\n    }\n  }\n\n  return x;\n}\n\n\n// Function to sum the counts for all features that belong to a module together\n//Performs the same function as .rowSumByGroup but for sparse matrices\n// [[Rcpp::export]]\nRcpp::NumericMatrix rowSumByGroupSparse(\n    const Eigen::MappedSparseMatrix<double> &counts,\n    const IntegerVector &group,\n    const int &L)\n{\n  // Perform error checking\n  if (counts.rows() != group.size())\n  {\n    stop(\"Length of 'group' must be equal to the number of rows in 'counts'.\");\n  }\n  if (min(group) < 1 || max(group) > L)\n  {\n    stop(\"The entries in 'group' need to be between 1 and 'L'.\");\n  }\n  if(L > counts.rows()) {\n    stop(\"'L' cannot be bigger than the number of rows in 'counts'.\");\n  }\n  \n  NumericMatrix x(L, counts.cols()); \n  \n  for (int j = 0; j < counts.cols(); ++j)\n  {\n    for (Eigen::MappedSparseMatrix<double>::InnerIterator i_(counts, j); i_; ++i_)\n    {\n      x(group[i_.index()] - 1, j) += i_.value();\n    }\n  }\n  \n  return x;\n}\n\n\n\n\n\n\n\n// Function to change the counts for a cells previously assigned to one group\n// that have now been assigned to another group. Performs the same function\n// as .colSumByGroupChange but for sparse matrices\n// [[Rcpp::export]]\nRcpp::NumericMatrix colSumByGroupChangeSparse(\n    const Eigen::MappedSparseMatrix<double> &counts,\n    const NumericMatrix &px,\n    const IntegerVector &group,\n    const IntegerVector &pgroup,\n    const int &K)\n{\n  // Perform error checking\n  if (counts.cols() != group.size())\n  {\n    stop(\"Length of 'group' must be equal to the number of columns in 'counts'.\");\n  }\n  if(group.size() != pgroup.size())\n  {\n    stop(\"Length of 'group' must equal 'pgroup'.\");  \n  }\n  if (min(group) < 1 || max(group) > K)\n  {\n    stop(\"The entries in 'group' need to be between 1 and 'K'.\");\n  }\n  if (min(pgroup) < 1 || max(pgroup) > K)\n  {\n    stop(\"The entries in 'pgroup' need to be between 1 and 'K'.\");\n  }\n  if(px.rows() != counts.rows()) \n  {\n    stop(\"'px' and 'counts' must have the same number of rows.\");\n  }\n  if(K > counts.cols()) {\n    stop(\"'K' cannot be bigger than the number of columns in 'counts'.\");\n  }\n  \n  NumericMatrix x = px; \n  \n  for (int j = 0; j < counts.cols(); ++j)\n  {\n    if(group[j] != pgroup[j]) {\n      for (Eigen::MappedSparseMatrix<double>::InnerIterator i_(counts, j); i_; ++i_)\n      {\n        x(i_.index(), group[j] - 1) += i_.value();\n        x(i_.index(), pgroup[j] - 1) -= i_.value();\n      }\n    }\n  }\n  \n  return x;\n}\n\n\n\n\n\n// Function to change the counts for a features previously assigned to one group\n// that have now been assigned to another group. Performs the same function\n// as .rowSumByGroupChange but for sparse matrices\n// [[Rcpp::export]]\nRcpp::NumericMatrix rowSumByGroupChangeSparse(\n    const Eigen::MappedSparseMatrix<double> &counts,\n    const NumericMatrix &px,\n    const IntegerVector &group,\n    const IntegerVector &pgroup,\n    const int &L)\n{\n  // Perform error checking\n  if (counts.rows() != group.size())\n  {\n    stop(\"Length of 'group' must be equal to the number of rows in 'counts'.\");\n  }\n  if(group.size() != pgroup.size())\n  {\n    stop(\"Length of 'group' must equal 'pgroup'.\");\n  }\n  if (min(group) < 1 || max(group) > L)\n  {\n    stop(\"The entries in 'group' need to be between 1 and 'L'.\");\n  }\n  if (min(pgroup) < 1 || max(pgroup) > L)\n  {\n    stop(\"The entries in 'pgroup' need to be between 1 and 'L'.\");\n  }\n  if(px.cols() != counts.cols()) \n  {\n    stop(\"'px' and 'counts' must have the same number of rows.\");\n  }\n  if(L > counts.rows()) {\n    stop(\"'L' cannot be bigger than the number of rows in 'counts'.\");\n  }\n  \n  NumericMatrix x = px;\n  \n  for (int j = 0; j < counts.cols(); ++j)\n  {\n    for (Eigen::MappedSparseMatrix<double>::InnerIterator i_(counts, j); i_; ++i_)\n    {\n      if(group[i_.index()] != pgroup[i_.index()]) {\n        x(group[i_.index()] - 1, j) += i_.value();\n        x(pgroup[i_.index()] - 1, j) -= i_.value();\n      }\n    }\n  }\n  \n  return x;\n}\n\n\n"
  },
  {
    "path": "src/perplexity.c",
    "content": "#include <R.h>\n#include <Rinternals.h>\n#include <R_ext/RS.h>\n\nSEXP _perplexityG(SEXP R_x, SEXP R_phi, SEXP R_psi, SEXP R_group)\n{\n  int i, j;\n  int nr = nrows(R_x);\n  int nc = ncols(R_x);\n  int nl = nlevels(R_group);\n  \n  // If the grouping variable is not a factor, throw an error\n  if (!isFactor(R_group)) {\n    error(\"The grouping argument must be a factor\");\n  }\n  // If the length of the grouping variable and matrix do not match, throw an error\n  if (LENGTH(R_group) != nr) {\n    error(\"The length of the grouping argument must match the number of rows in the matrix.\");\n  }\n  if (ncols(R_phi) != nc) {\n    error(\"The R_phi and R_x must have the same number of colums.\");\n  }  \n  if (nrows(R_phi) != nl) {\n    error(\"R_phi must have the same number of rows as the number of levels in R_group.\");\n  }  \n  if (nrows(R_psi) != nr) {\n    error(\"The R_psi and R_x must have the same number of rows.\");\n  }  \n  if (ncols(R_psi) != nl) {\n    error(\"R_phi must have the same number of columns as the number of levels in R_group.\");\n  }  \n  \n  // Create pointers\n  int *group = INTEGER(R_group);\n  double *phi = REAL(R_phi);\n  double *psi = REAL(R_psi);\n  int *x = INTEGER(R_x);  \n  \n  // Make sure values are not NA and within the range of the number of rows\n  for (i = 0; i < nr; i++) {\n    if(group[i] == NA_INTEGER || group[i] < 0 || group[i] > nr) {\n      error(\"Labels in group and pgroup must not be NA and must less than or equal to the number of rows in the matrix.\");\n    }\n  }  \n  \n  // Allocate a variable for the return matrix\n  \n  \n  double ans = 0;\n  // Multiply the probabilties, log transform, and multiply against the counts to derive log(p(x))\n  for (j = 0; j < nc; j++) {\n    for (i = 0; i < nr; i++) {\n      ans += x[j * nr + i] * log(phi[j * nl + (group[i]-1)] * psi[nr * (group[i]-1) + i]);\n    }\n  }\n  \n  SEXP R_ans = PROTECT(allocVector(REALSXP, 1));\n  REAL(R_ans)[0] = ans;\n  \n  UNPROTECT(1);\n  return(R_ans);\n}  \n\n"
  },
  {
    "path": "tests/testthat/test-celda-functions.R",
    "content": "# library(celda)\n# context(\"Testing miscellaneous celda functions\")\n#\n# data(celdaCGGridSearchRes)\n# celdaCGSim <- simulateCells(\"celda_CG\", K = 5, L = 10)\n# modelCG <- celda_CG(\n#     counts = celdaCGSim$counts,\n#     sampleLabel = celdaCGSim$sampleLabel,\n#     K = celdaCGSim$K,\n#     L = celdaCGSim$L,\n#     algorithm = \"EM\",\n#     verbose = FALSE,\n#     nchains = 1)\n#\n# factorized <- factorizeMatrix(celdaMod = modelCG, counts = celdaCGSim$counts)\n#\n# test_that(desc = \"Testing compareCountMatrix with numeric matrix input\", {\n#     # Case from GitHub issue #137\n#     counts <- celdaCGSim$counts\n#     storage.mode(counts) <- \"numeric\"\n#     expect_true(compareCountMatrix(counts, modelCG, errorOnMismatch = TRUE))\n# })\n#\n# test_that(desc = \"Testing appendCeldaList\", {\n#     expect_error(\n#         appendCeldaList(celdaCGGridSearchRes, matrix(0)),\n#         \"Both parameters to appendCeldaList must be of class celdaList.\"\n#     )\n#     modifiedEgList <- celdaCGGridSearchRes\n#     modifiedEgList@countChecksum <- \"abcd12345\"\n#     expect_warning(\n#         appendCeldaList(celdaCGGridSearchRes, modifiedEgList),\n#         paste0(\"Provided lists have different countChecksums and may have\",\n#         \" been generated from different count matrices. Using checksum\",\n#         \" from first list...\"))\n#     expect_equal(length(celdaCGGridSearchRes@resList) * 2,\n#         length(appendCeldaList(celdaCGGridSearchRes,\n#             celdaCGGridSearchRes)@resList))\n# })\n\n\n# miscellaneous fxns\n# functions used internally\ntest_that(desc = \"Invoking error from distinctColors function\", {\n  expect_error(distinctColors(n = 3, hues = \"xx\"),\n               paste0(\"Only color names listed in the 'color' function can be\",\n                      \" used in 'hues'\"))\n})\n\ntest_that(desc = \"Invoking error from sample labels function\", {\n  expect_error(.processSampleLabels(\"Sample_1\", 5),\n               paste0(\"'sampleLabel' must be the same length as the number\",\n                      \" of columns in the 'counts' matrix.\"))\n})\n\ntest_that(desc = \"Invoking error from .logMessages function\", {\n  expect_error(.logMessages(date(), logfile = 5))\n})\n\ntest_that(desc = paste0(\"miscellaneous distance fxns that are not directly\",\n                        \" used within celda, but will be tested\"), {\n                          x <- data.frame(x = seq(2, 4), y = seq(1, 3))\n                          expect_equal(class(.hellingerDist(x)), \"dist\")\n                          expect_equal(class(.spearmanDist(x)), \"dist\")\n                        })\n"
  },
  {
    "path": "tests/testthat/test-celda_C.R",
    "content": "# celda_C\nlibrary(celda)\nlibrary(SingleCellExperiment)\nlibrary(Matrix)\ncontext(\"Testing celda_C\")\n\nsceceldaCSim <- simulateCells(\"celda_C\", K = 10)\ncounts(sceceldaCSim) <- as(counts(sceceldaCSim), \"dgCMatrix\")\nscesf <- selectFeatures(sceceldaCSim)\nK <- S4Vectors::metadata(sceceldaCSim)$celda_simulateCellscelda_C$K\ncounts <- SummarizedExperiment::assay(scesf, \"counts\")\nsce <- celda_C(scesf,\n    sampleLabel = sampleLabel(scesf),\n    K = K,\n    algorithm = \"EM\",\n    verbose = FALSE,\n    nchains = 1)\nfactorized <- factorizeMatrix(sce)\n\n# celda_C\ntest_that(desc = \"Testing simulation and celda_C model\", {\n    #expect_equal(typeof(counts), \"integer\")\n    expect_true(all(sweep(factorized$counts$sample,\n        2,\n        colSums(factorized$counts$sample),\n        \"/\") == factorized$proportions$sample))\n    expect_true(ncol(factorized$proportions$module) == K)\n    expect_true(all(is.numeric(logLikelihoodHistory(sce))))\n    expect_equal(max(logLikelihoodHistory(sce)), bestLogLikelihood(sce))\n})\n\n# clusterProbability\ntest_that(desc = \"Testing clusterProbability with celda_C\", {\n    expect_true(all(round(rowSums(clusterProbability(sce)[[1]])) == 1))\n})\n\n# celdaGridSearch and perplexity calculations\ntest_that(desc = \"Testing celdaGridSearch with celda_C\", {\n    celdaCResList <- celdaGridSearch(scesf,\n        model = \"celda_C\",\n        nchains = 2,\n        paramsTest = list(K = c(5, 6)),\n        paramsFixed = list(sampleLabel = sampleLabel(scesf)),\n        maxIter = 2,\n        verbose = FALSE,\n        bestOnly = FALSE,\n        perplexity = FALSE)\n    expect_error(celdaGridSearch(scesf,\n        model = \"celda_C\",\n        paramsTest = list(K = c(4, 5), M = c(3, 4)),\n        paramsFixed = list(sampleLabel = sampleLabel(scesf)),\n        bestOnly = FALSE),\n        paste0(\"The following elements in 'paramsTest' are not arguments of\",\n            \" 'celda_C': M\"))\n\n    expect_error(celdaGridSearch(scesf,\n        model = \"celda_C\",\n        nchains = 1,\n        maxIter = 1,\n        paramsTest = list(K = c(4, 5), sampleLabel = \"Sample\"),\n        paramsFixed = list(sampleLabel = sampleLabel(scesf))),\n        paste0(\"Setting parameters such as 'z.init', 'y.init', and\",\n            \" 'sampleLabel' in 'paramsTest' is not currently supported.\"))\n\n    expect_error(celdaGridSearch(scesf,\n        model = \"celda_C\",\n        nchains = 1,\n        maxIter = 1,\n        paramsTest = list(),\n        paramsFixed = list(sampleLabel = sampleLabel(scesf))),\n        paste0(\"The following arguments are not in 'paramsTest' or\",\n            \" 'paramsFixed' but are required for 'celda_C': K\"))\n\n    expect_error(celdaGridSearch(scesf,\n        model = \"celda_C\",\n        nchains = 1,\n        maxIter = 1,\n        paramsTest = list(K = c(9, 10)),\n        paramsFixed = list(sampleLabel = sampleLabel(scesf),\n            xxx = \"xxx\")),\n        paste0(\"The following elements in 'paramsFixed' are not arguments\",\n            \" of 'celda_C': xxx\"))\n\n    expect_true(class(S4Vectors::metadata(\n        altExp(celdaCResList))$celda_grid_search)[1] == \"celdaList\")\n    expect_equal(names(runParams(celdaCResList)),\n        c(\"index\", \"chain\", \"K\", \"seed\", \"logLikelihood\"))\n    expect_error(plotGridSearchPerplexity(celdaCResList))\n\n    celdaCResList <- resamplePerplexity(celdaCResList, numResample = 2)\n    expect_equal(is.null(altExp(\n        celdaCResList)@metadata$celda_grid_search@perplexity),\n        FALSE)\n    expect_true(is(celdaCResList, \"SingleCellExperiment\"))\n    expect_error(resamplePerplexity(celdaCResList, numResample = \"2\"),\n        \"The 'numResample' parameter needs to be an integer greater than 0.\")\n\n    plotObj <- plotGridSearchPerplexity(celdaCResList)\n    expect_is(plotObj, \"ggplot\")\n\n    celdaCResIndex1 <- subsetCeldaList(celdaCResList, params = list(index = 1))\n\n    expect_true(all(\"celda_grid_search\" %in%\n            names(altExp(celdaCResList)@metadata) &&\n            \"celda_parameters\" %in% names(altExp(celdaCResIndex1)@metadata)))\n\n    expect_error(subsetCeldaList(celdaCResList, params = list(K = 11)))\n    expect_error(subsetCeldaList(celdaCResList, params = list(K = 5, M = 10)))\n\n    celdaCResK5 <- subsetCeldaList(celdaCResList, params = list(K = 5))\n    sce2 <- selectBestModel(celdaCResK5)\n    res <- perplexity(sce)\n    res2 <- perplexity(sce, newCounts = as.matrix(counts + 1))\n\n    expect_error(res <- perplexity(sce, newCounts = counts[-1, ]))\n})\n\n# # logLikelihood\n# test_that(desc = \"Testing logLikelihood.celda_C\", {\n#     expect_lt(logLikelihood(sce), 0)\n#     fakeZ <- celdaCSim$z\n#     fakeZ[1] <- celdaCSim$K + 1\n#     expect_error(logLikelihood(model = \"celda_C\",\n#         z = fakeZ,\n#         counts = celdaCSim$counts,\n#         K = celdaCSim$K,\n#         alpha = 1,\n#         beta = 1,\n#         sampleLabel = sampleLabel(sceceldaCSim)),\n#         \"An entry in z contains a value greater than the provided K.\")\n# })\n#\n# # Gibbs sampling\n# test_that(desc = \"Testing celda_C with Gibbs sampling\", {\n#     res <- celda_C(sceceldaCSim,\n#         sampleLabel = sampleLabel(sceceldaCSim),\n#         K = celdaCSim$K,\n#         algorithm = \"Gibbs\",\n#         maxIter = 5,\n#         nchain = 1)\n#     expect_is(res, \"celda_C\")\n# })\n#\n# # normalizeCounts\n# test_that(desc = paste0(\"Making sure normalizeCounts doesn't change\",\n#     \" dimensions of counts matrix\"), {\n#         normCounts <- normalizeCounts(celdaCSim$counts)\n#         expect_equal(dim(normCounts), dim(celdaCSim$counts))\n#         expect_equal(rownames(normCounts), rownames(celdaCSim$counts))\n#         expect_equal(colnames(normCounts), colnames(celdaCSim$counts))\n#         expect_error(normalizeCounts(celdaCSim$counts,\n#             transformationFun = \"scale\"),\n#             \"'transformationFun' needs to be of class 'function'\")\n#         expect_error(normalizeCounts(celdaCSim$counts, scaleFun = \"scale\"),\n#             \"'scaleFun' needs to be of class 'function'\")\n#     })\n#\n# # recodeClusterZ\n# test_that(desc = \"Testing recodeClusterZ with celda_C\", {\n#     expect_error(recodeClusterY(celdaMod = modelC,\n#         from = c(1, 2, 3, 4, 5),\n#         to = c(5, 4, 3, 2, 1)))\n#     expect_error(recodeClusterZ(celdaMod = modelC,\n#         from = NULL,\n#         to = \"\"))\n#     expect_error(recodeClusterZ(celdaMod = modelC,\n#         from = c(1, 2, 3, 4, 5),\n#         to = c(1, 2, 3, 4, 6)))\n#     expect_error(recodeClusterZ(celdaMod = modelC,\n#         from = c(1, 2, 3, 4, 6),\n#         to = c(1, 2, 3, 4, 5)))\n#     newRecoded <- recodeClusterZ(celdaMod = modelC,\n#         from = c(1, 2, 3, 4, 5),\n#         to = c(5, 4, 3, 2, 1))\n#     expect_equal(modelC@clusters$z == 1, newRecoded@clusters$z == 5)\n# })\n#\n# # compareCountMatrix\n# # test_that(desc = \"Testing CompareCountMatrix with celda_C\", {\n# #     expect_true(compareCountMatrix(counts = celdaCSim$counts,\n# #         celdaMod = modelC))\n# #\n# #     lessCells <- celdaCSim$counts[, seq(100)]\n# #     expect_error(compareCountMatrix(counts = lessCells, celdaMod = modelC),\n# #         paste0(\"The provided celda object was generated from a counts\",\n# #         \" matrix with a different number of cells than the one provided.\"))\n# #\n# #     countsMatrixError <- matrix(data = 1,\n# #         nrow = nrow(celdaCSim$counts),\n# #         ncol = ncol(celdaCSim$counts))\n# #     expect_false(compareCountMatrix(counts = countsMatrixError,\n# #         celdaMod = modelC,\n# #         errorOnMismatch = FALSE))\n# #     expect_error(compareCountMatrix(counts = countsMatrixError,\n# #         celdaMod = modelC,\n# #         errorOnMismatch = TRUE))\n# # })\n#\n# # topRank\n# test_that(desc = \"Checking topRank to see if it runs without errors\", {\n#     topRank <- topRank(matrix = factorized$proportions$module,\n#     threshold = NULL)\n#     expect_equal(names(topRank), c(\"index\", \"names\"))\n#     topRank <- topRank(matrix = factorized$proportions$module, n = 1000)\n# })\n#\n# # plotHeatmap\n# test_that(desc = \"Testing plotHeatmap with celda_C\", {\n#     expect_error(plotHeatmap(counts = celdaCSim$counts, z = modelC@params$K),\n#         \"Length of z must match number of columns in counts matrix\")\n#     expect_error(plotHeatmap(\n#         counts = celdaCSim$counts,\n#         z = modelC@clusters$z,\n#         scaleRow = modelC),\n#         \"'scaleRow' needs to be of class 'function'\")\n#     expect_error(plotHeatmap(counts = celdaCSim$counts,\n#         z = modelC@clusters$z,\n#         trim = 3),\n#         paste0(\"'trim' should be a 2 element vector specifying the lower and\",\n#             \" upper boundaries\"))\n# })\n#\n# # plotHeatmap with annotationCell\n# # test_that(desc = \"Testing plotHeatmap with celda_C, including annotations\",\n# #     {\n# #     annot <- as.data.frame(c(rep(x = 1,\n# #         times = ncol(celdaCSim$counts) - 100),\n# #         rep(x = 2, 100)))\n# #\n# #     rownames(annot) <- colnames(celdaCSim$counts)\n# #     expect_equal(names(plotHeatmap(\n# #         celdaMod = modelC,\n# #         counts = celdaCSim$counts,\n# #         annotationCell = annot,\n# #         z = modelC@clusters$z)),\n# #         c(\"tree_row\", \"tree_col\", \"gtable\"))\n# #\n# #     rownames(annot) <- NULL\n# #     expect_equal(names(plotHeatmap(celdaMod = modelC,\n# #         counts = celdaCSim$counts,\n# #         annotation.feature = as.matrix(annot),\n# #         z = modelC@clusters$z)),\n# #         c(\"tree_row\", \"tree_col\", \"gtable\"))\n# #\n# #     rownames(annot) <- rev(colnames(celdaCSim$counts))\n# #     expect_error(plotHeatmap(celdaMod = modelC,\n# #         counts = celdaCSim$counts,\n# #         annotationCell = annot,\n# #         z = modelC@clusters$z),\n# #         paste0(\"Row names of 'annotationCell' are different than the\",\n# #             \" column names of 'counts'\")\n# #     )\n# # })\n#\n# # celdaHeatmap\n# # test_that(desc = \"Testing celdaHeatmap with celda_C\", {\n# #     expect_equal(names(celdaHeatmap(celdaMod = modelC,\n# #         counts = celdaCSim$counts)),\n# #         c(\"tree_row\", \"tree_col\", \"gtable\"))\n# # })\n#\n# # celdaProbabilityMap\n# # test_that(desc = \"Testing celdaProbabiltyMap.celda_C for sample level\", {\n# #     plotObj <- celdaProbabilityMap(counts = celdaCSim$counts,\n# #         celdaMod = modelC,\n# #         level = \"sample\")\n# #     expect_true(!is.null(plotObj))\n# #\n# #     ## Without a sample label\n# #     modelC <- celda_C(celdaCSim$counts,\n# #         sampleLabel = NULL,\n# #         K = celdaCSim$K,\n# #         maxIter = 5,\n# #         nchain = 1)\n# #     plotObj <- celdaProbabilityMap(counts = celdaCSim$counts,\n# #         celdaMod = modelC,\n# #         level = \"sample\")\n# #     expect_true(!is.null(plotObj))\n# # })\n#\n# test_that(desc = paste0(\"Testing celdaTsne with celda_C when model class is\",\n#     \"changed, should error\"), {\n#         modelX <- modelC\n#         class(modelX) <- \"celda_X\"\n#         expect_error(celdaTsne(counts = celdaCSim$counts,\n#             celdaMod = modelX,\n#             maxCells = length(modelC@clusters$z),\n#             minClusterSize = 10),\n#             \"unable to find\")\n#     })\n#\n# test_that(desc = \"Testing celdaTsne with celda_C including all cells\", {\n#     tsne <- celdaTsne(counts = celdaCSim$counts,\n#         celdaMod = modelC,\n#         maxCells = length(modelC@clusters$z),\n#         minClusterSize = 10)\n#     plotObj <- plotDimReduceCluster(tsne[, 1],\n#         tsne[, 2],\n#         modelC@clusters$z,\n#         labelClusters = TRUE)\n#     expect_true(ncol(tsne) == 2 & nrow(tsne) == length(modelC@clusters$z))\n#     expect_true(!is.null(plotObj))\n# })\n#\n# test_that(desc = paste0(\"Testing celdaTsne with celda_C including\",\n#     \" a subset of cells\"), {\n#     expect_success(expect_error(tsne <- celdaTsne(counts = celdaCSim$counts,\n#         celdaMod = modelC,\n#         maxCells = 50,\n#         minClusterSize = 50)))\n#     tsne <- celdaTsne(counts = celdaCSim$counts,\n#         celdaMod = modelC,\n#         maxCells = 100,\n#         minClusterSize = 10)\n#     plotObj <- plotDimReduceCluster(tsne[, 1], tsne[, 2], modelC@clusters$z)\n#     expect_true(ncol(tsne) == 2 &\n#             nrow(tsne) == length(modelC@clusters$z) &&\n#             sum(!is.na(tsne[, 1])) == 100)\n#     expect_true(!is.null(plotObj))\n# })\n#\n# test_that(desc = paste0(\"Testing celdaUmap with celda_C when model class is\",\n#     \" changed, should error\"), {\n#         modelX <- modelC\n#         class(modelX) <- \"celda_X\"\n#         expect_error(celdaUmap(counts = celdaCSim$counts,\n#             celdaMod = modelX,\n#             maxCells = length(modelC@clusters$z),\n#             minClusterSize = 10),\n#             \"unable to find\")\n#     })\n#\n# # test_that(desc = \"Testing celdaUmap with celda_C including all cells\", {\n# #     umap <- celdaUmap(counts = celdaCSim$counts,\n# #         celdaMod = modelC,\n# #         maxCells = length(modelC@clusters$z),\n# #         minClusterSize = 10)\n# #     plotObj <- plotDimReduceCluster(umap[, 1], umap[, 2], modelC@clusters$z)\n# #     expect_true(ncol(umap) == 2 &\n# #             nrow(umap) == length(modelC@clusters$z))\n# #     expect_true(!is.null(plotObj))\n# # })\n#\n# test_that(desc = paste0(\"Testing celdaUmap with celda_C including\",\n#     \" a subset of cells\"), {\n#     expect_success(expect_error(umap <- celdaUmap(\n#         counts = celdaCSim$counts,\n#         celdaMod = modelC,\n#         maxCells = 50,\n#         minClusterSize = 50)))\n#     umap <- celdaUmap(counts = celdaCSim$counts,\n#         celdaMod = modelC,\n#         maxCells = 100,\n#         minClusterSize = 10)\n#     plotObj <- plotDimReduceCluster(umap[, 1], umap[, 2], modelC@clusters$z)\n#     expect_true(ncol(umap) == 2 &\n#             nrow(umap) == length(modelC@clusters$z) &&\n#             sum(!is.na(umap[, 1])) == 100)\n#     expect_true(!is.null(plotObj))\n# })\n#\n# # featureModuleLookup\n# test_that(desc = \"Testing featureModuleLookup with celda_C\", {\n#     expect_error(featureModuleLookup(celdaCSim$counts, modelC, \"test_feat\"))\n# })\n#\n# # .cCSplitZ\n# test_that(desc = \"Testing error checking for .cCSplitZ\", {\n#     r <- simulateCells(\"celda_C\",\n#         S = 1,\n#         CRange = c(50, 100),\n#         K = 2)\n#     dc <- .cCDecomposeCounts(r$counts, r$sampleLabel, r$z, r$K)\n#     res <- .cCSplitZ(r$counts,\n#         dc$mCPByS,\n#         dc$nGByCP,\n#         dc$nCP,\n#         s = as.integer(r$sampleLabel),\n#         z = r$z,\n#         K = r$K,\n#         nS = dc$nS,\n#         nG = dc$nG,\n#         alpha = 1,\n#         beta = 1,\n#         zProb = NULL,\n#         minCell = 1000)\n#     expect_true(grepl(\"Cluster sizes too small\", res$message))\n# })\n#\n# test_that(desc = \"Testing perplexity.celda_C\", {\n#     expect_true(is.numeric(perplexity(celdaCSim$counts, modelC)))\n#\n#     class(modelC) <- c(\"celda_CG\")\n#     expect_error(perplexity.celda_C(celdaCSim$counts, modelC),\n#         \"could not find function \\\"perplexity.celda_C\\\"\")\n# })\n"
  },
  {
    "path": "tests/testthat/test-celda_CG.R",
    "content": "# celda_CG\nlibrary(celda)\ncontext(\"Testing celda_CG\")\n\nK <- 5\nL <- 10\nceldaCGSim <- simulateCells(\"celda_CG\", K = K, L = L)\ncounts(celdaCGSim) <- as(counts(celdaCGSim), \"dgCMatrix\")\nceldaCGSim <- selectFeatures(celdaCGSim, 0, 0)\nmodelCG <- celda_CG(celdaCGSim,\n    sampleLabel = celdaCGSim$celda_sample_label,\n    K = K,\n    L = L,\n    zInitialize = \"random\",\n    yInitialize = \"random\",\n    nchains = 1,\n    algorithm = \"EM\",\n    verbose = FALSE)\nfactorized <- factorizeMatrix(modelCG)\n\n# celda_CG\ntest_that(desc = \"Testing simulation and celda_CG model\", {\n    expect_true(all(sweep(factorized$counts$cell,\n        2,\n        colSums(counts(altExp(celdaCGSim))),\n        \"/\") == factorized$proportions$cell))\n    expect_equal(K,\n        ncol(factorized$proportions$cellPopulation))\n    expect_equal(L,\n        nrow(factorized$proportions$cellPopulation))\n})\n\n# Cluster probabilities\ntest_that(desc = \"Testing clusterProbability with celda_CG\", {\n    clustProb <- clusterProbability(modelCG)\n    expect_true(all(round(rowSums(clustProb$zProbability), 10) == 1) &\n            nrow(clustProb$zProbability) == ncol(modelCG))\n    expect_true(all(round(rowSums(clustProb$yProbability), 10) == 1) &\n            nrow(clustProb$yProbability) == nrow(modelCG))\n    clustProb <- clusterProbability(modelCG, log = TRUE)\n})\n\ntest_that(desc = paste0(\"Testing simulateCells celda_CG error checking with\",\n    \" low gamma\"), {\n        expect_warning(simulateCells(model = \"celda_CG\", gamma = 0.1))\n    })\n\ntest_that(desc = paste0(\"Testing simulateCells celda_CG, make sure all genes\",\n    \" expressed\"), {\n        simCellsLow <- simulateCells(model = \"celda_CG\",\n            G = 1000,\n            C = 300,\n            CRange = c(1, 100),\n            NRange = c(1, 100))\n        expect_true(all(rowSums(counts(simCellsLow)) > 0))\n    })\n\n\n# Ensure logLikelihood calculates the expected values\ntest_that(desc = \"Testing logLikelihood functions for celda_CG\", {\n    expect_lt(logLikelihood(modelCG), 0)\n\n    fakeZ <- as.integer(celdaClusters(modelCG))\n    fakeZ[1] <- K + 1\n    expect_error(.logLikelihoodcelda_CG(\n      K = K,\n      L = L,\n      y = as.integer(celdaModules(modelCG)),\n      z = fakeZ,\n      delta = 1,\n      gamma = 1,\n      beta = 1,\n      alpha = 1,\n      s = modelCG$celda_sample_label,\n      counts = counts(altExp(modelCG))),\n        paste0(\"Assigned value of cell cluster greater than the total \",\n        \"number of cell clusters!\"))\n\n    fakeY <- as.integer(celdaModules(modelCG))\n    fakeY[1] <- L + 1\n    expect_error(.logLikelihoodcelda_CG(\n        y = fakeY,\n        z = as.integer(celdaClusters(modelCG)),\n        delta = 1,\n        gamma = 1,\n        beta = 1,\n        alpha = 1,\n        K = K,\n        L = L,\n        s = modelCG$celda_sample_label,\n        counts = counts(altExp(modelCG))),\n        paste0(\"Assigned value of feature module greater than the total \",\n        \"number of feature modules!\"))\n})\n\n# normalizeCounts\ntest_that(desc = \"Testing normalizeCounts with celda_CG\", {\n    normCounts <- normalizeCounts(counts(celdaCGSim))\n    expect_equal(dim(normCounts), dim(counts(celdaCGSim)))\n    expect_equal(rownames(normCounts), rownames(counts(celdaCGSim)))\n    expect_equal(colnames(normCounts), colnames(counts(celdaCGSim)))\n    expect_error(normalizeCounts(counts(celdaCGSim),\n        transformationFun = \"scale\"),\n        \"'transformationFun' needs to be of class 'function'\")\n    expect_error(normalizeCounts(counts(celdaCGSim), scaleFun = \"scale\"),\n        \"'scaleFun' needs to be of class 'function'\")\n})\n\n# recodeClusterY\ntest_that(desc = \"Testing recodeClusterY with celda_CG\", {\n    expect_error(recodeClusterY(modelCG,\n        from = NULL,\n        to = \"\"))\n    expect_error(recodeClusterY(modelCG,\n        from = c(1, 2, 3, 4, 5),\n        to = c(1, 2, 4, 3, 6)))\n    expect_error(recodeClusterY(modelCG,\n        from = c(1, 2, 3, 4, 6),\n        to = c(1, 2, 4, 3, 5)))\n    newRecoded <- recodeClusterY(modelCG,\n        from = c(1, 2, 3, 4, 5),\n        to = c(3, 2, 1, 4, 5))\n    expect_equal(celdaModules(modelCG) == 1, celdaModules(newRecoded) == 3)\n})\n\n# recodeClusterZ\ntest_that(desc = \"Testing recodeClusterZ with celda_CG\", {\n    expect_error(recodeClusterZ(modelCG,\n        from = NULL,\n        to = \"\"))\n    expect_error(recodeClusterZ(modelCG,\n        from = c(1, 2, 3, 4, 5),\n        to = c(1, 2, 3, 4, 6)))\n    expect_error(recodeClusterZ(modelCG,\n        from = c(1, 2, 3, 4, 6),\n        to = c(1, 2, 3, 4, 5)))\n    newRecoded <- recodeClusterZ(modelCG,\n        from = c(1, 2, 3, 4, 5),\n        to = c(5, 4, 3, 2, 1))\n    expect_equal(celdaClusters(modelCG) == 1, celdaClusters(newRecoded) == 5)\n})\n\n\n# topRank\ntest_that(desc = \"Testing topRank with celda_CG\", {\n    topRank <- topRank(matrix = factorized$proportions$module,\n        n = 1000,\n        threshold = NULL)\n    expect_equal(names(topRank), c(\"index\", \"names\"))\n})\n\n# celdaHeatmap\ntest_that(desc = \"Testing celdaHeatmap with celda_CG\", {\n  plt <- celdaHeatmap(modelCG)\n  expect_equal(class(plt), c(\"gtable\", \"gTree\", \"grob\", \"gDesc\"))\n})\n\n# moduleHeatmap\ntest_that(desc = \"Testing moduleHeatmap with celda_CG\", {\n    plt <- moduleHeatmap(modelCG, featureModule = c(2, 3),\n                         topCells = 10, topFeatures = 10)\n    expect_is(plt, \"list\")\n})\n\n# celdaProbabiltyMap\ntest_that(desc = \"Testing celdaProbabiltyMap\", {\n  plotObj <- celdaProbabilityMap(modelCG)\n  plotObj <- celdaProbabilityMap(modelCG, level = \"cellPopulation\")\n  expect_true(!is.null(plotObj))\n})\n\n\ntest_that(desc = \"Testing celdaUmap and celdaTsne with celda_CG\", {\n  modelCG <- celdaUmap(modelCG, maxCells = 100, minClusterSize = 10)\n  modelCG <- celdaTsne(modelCG, maxCells = 100, minClusterSize = 10)\n  plotObj <- plotDimReduceCluster(modelCG, \"celda_UMAP\")\n  expect_true(!is.null(plotObj))\n})\n\n# featureModuleLookup\ntest_that(desc = \"Testing featureModuleLookup with celda_CG\", {\n    res <- featureModuleLookup(modelCG, \"Gene_1\")\n    expect_true(res == celdaModules(modelCG)[1])\n\n    expect_error(featureModuleLookup(modelCG, \"XXXXXXX\"))\n})\n\n\ntest_that(desc = \"Testing perplexity of celda_CG\", {\n    expect_true(is.numeric(perplexity(modelCG)))\n})\n\ntest_that(desc = \"Testing featureModuleTable\", {\n    table <- featureModuleTable(modelCG,  outputFile = NULL)\n    expect_equal(ncol(table), 10)\n})\n\ntest_that(desc = \"Testing plotCeldaViolin with celda_CG\", {\n    violin <- plotCeldaViolin(modelCG, features = \"Gene_1\")\n    expect_is(violin, \"ggplot\")\n})\n"
  },
  {
    "path": "tests/testthat/test-celda_G.R",
    "content": "# # celda_G\n# library(celda)\n# context(\"Testing celda_G\")\n#\n# celdaGSim <- simulateCells(\"celda_G\", L = 5, G = 100)\n# modelG <- celda_G(counts = celdaGSim$counts,\n#         L = celdaGSim$L,\n#         verbose = FALSE)\n# factorized <- factorizeMatrix(counts = celdaGSim$counts, celdaMod = modelG)\n#\n# test_that(desc = \"Testing celda_G model with numeric input matrix\", {\n#     # Github Issue #347\n#     numericCounts <- celdaGSim$counts\n#     storage.mode(numericCounts) <- \"numeric\"\n#     expect_true(is(celda_G(counts = numericCounts,\n#         L = celdaGSim$L,\n#         maxIter = 1,\n#         verbose = FALSE),\n#         \"celda_G\"))\n# })\n#\n# test_that(desc = \"Testing clusterProbability with celda_G\", {\n#     expect_true(ncol(clusterProbability(celdaGSim$counts,\n#         modelG)$yProbability) == celdaGSim$L)\n# })\n#\n# test_that(desc = paste0(\"Testing simulateCells.celda_G error checking with\",\n#     \" low gamma\"), {\n#     expect_error(simulateCells(model = \"celda_G\", gamma = 0.000001))\n# })\n#\n# test_that(desc = paste0(\"Testing simulateCells.celda_G, make sure all genes\",\n#     \" expressed\"), {\n#         simCellsLow <- simulateCells(model = \"celda_G\",\n#             G = 1000,\n#             C = 300,\n#             NRange = c(1, 10))\n#         expect_true(all(rowSums(simCellsLow$counts) > 0))\n#     })\n#\n# # test_that(desc = \"Testing LogLikelihood functions\", {\n# #     expect_true(all(is.numeric(logLikelihoodHistory(celdaMod = modelG))))\n# #     expect_equal(max(logLikelihoodHistory(celdaMod = modelG)),\n# #         bestLogLikelihood(modelG))\n# # })\n#\n# # test_that(desc = \"Testing celdaGridSearch with celda_G\", {\n# #     celdaGRes <- celdaGridSearch(counts = celdaGSim$counts,\n# #         model = \"celda_G\",\n# #         nchains = 2,\n# #         paramsTest = list(L = c(5, 10)),\n# #         maxIter = 1,\n# #         verbose = FALSE,\n# #         bestOnly = FALSE,\n# #         perplexity = FALSE)\n# #\n# #     expect_error(celdaGridSearch(counts = celdaGSim$counts,\n# #         model = \"celda_G\",\n# #         paramsTest = list(L = 10, M = 4),\n# #         bestOnly = FALSE),\n# #         paste0(\"The following elements in 'paramsTest' are not\",\n# #         \" arguments of 'celda_G': M\"))\n# #\n# #     expect_error(celdaGridSearch(counts = celdaGSim$counts,\n# #         model = \"celda_G\",\n# #         nchains = 1,\n# #         paramsTest = list(L = c(4, 5), yInit = 10)),\n# #         paste0(\"Setting parameters such as 'z.init', 'yInit', and\",\n# #             \" 'sample.label' in 'paramsTest' is not currently supported.\"))\n# #\n# #     expect_error(celdaGridSearch(counts = celdaGSim$counts,\n# #         model = \"celda_G\",\n# #         nchains = 1,\n# #         paramsTest = list()),\n# #         paste0(\"The following arguments are not in 'paramsTest' or\",\n# #             \" 'paramsFixed' but are required for 'celda_G': L\"))\n# #\n# #     expect_error(celdaGridSearch(counts = celdaGSim$counts,\n# #         model = \"celda_G\",\n# #         nchains = 1,\n# #         paramsTest = list(L = 10),\n# #         paramsFixed = list(xxx = \"xxx\")),\n# #         paste0(\"The following elements in 'paramsFixed' are not arguments\",\n# #             \" of 'celda_G': xxx\"))\n# #\n# #     expect_warning(celdaGridSearch(counts = celdaGSim$counts,\n# #         model = \"celda_G\",\n# #         paramsTest = list(L = c(5, 6), nchains = 2)),\n# #         paste0(\"Parameter 'nchains' should not be used within the\",\n# #             \" paramsTest list\"))\n# #\n# #     expect_true(is(celdaGRes, \"celdaList\"))\n# #     expect_error(plotGridSearchPerplexity(celdaGRes))\n# #     expect_equal(names(runParams(celdaGRes)),\n# #         c(\"index\", \"chain\", \"L\", \"log_likelihood\"))\n# #\n# #     celdaGRes <- resamplePerplexity(celdaGSim$counts, celdaGRes,\n# #     numResample = 2)\n# #     expect_equal(is.null(celdaGRes@perplexity), FALSE)\n# #     expect_is(celdaGRes, \"celdaList\")\n# #     expect_error(resamplePerplexity(celdaGSim$counts,\n# #         celdaGRes, numResample = \"2\"))\n# #     expect_error(resamplePerplexity(celdaGSim$counts,\n# #         \"celdaGRes\", numResample = 2))\n# #\n# #     plotObj <- plotGridSearchPerplexity(celdaGRes)\n# #     expect_is(plotObj, \"ggplot\")\n# #\n# #     celdaCRes <- celdaGridSearch(counts = celdaGSim$counts,\n# #         model = \"celda_C\",\n# #         nchains = 2,\n# #         paramsTest = list(K = c(5, 10)),\n# #         maxIter = 1,\n# #         verbose = FALSE,\n# #         bestOnly = TRUE)\n# #     expect_error(plotGridSearchPerplexity.celda_G(celdaCRes))\n# #\n# #     celdaGResIndex1 <- subsetCeldaList(celdaGRes, params = list(index = 1))\n# #     expect_true(all(is(celdaGResIndex1, \"celda_G\") &&\n# #             !is(celdaGResIndex1, \"celdaList\")))\n# #\n# #     expect_error(subsetCeldaList(celdaGRes, params = list(L = 11)))\n# #     expect_error(subsetCeldaList(celdaGRes, params = list(L = 5, M = 10)))\n# #\n# #     celdaGResL5 <- subsetCeldaList(celdaGRes, params = list(L = 5))\n# #     modelG <- selectBestModel(celdaGResL5)\n# #     res <- perplexity(celdaGSim$counts, modelG)\n# #     res2 <- perplexity(celdaGSim$counts,\n# #         modelG, newCounts = celdaGSim$counts + 1)\n# #\n# #     expect_error(res <- perplexity(celdaGSim$counts, modelG,\n# #         newCounts = celdaGSim$counts[-1, ]))\n# # })\n#\n# # logLikelihood\n# test_that(desc = \"Testing logLikelihood.celda_G\", {\n#     expect_lt(logLikelihood(model = \"celda_G\",\n#         counts = celdaGSim$counts,\n#         y = celdaGSim$y,\n#         L = celdaGSim$L,\n#         delta = 1,\n#         gamma = 1,\n#         beta = 1),\n#         0)\n#\n#     fakeY <- celdaGSim$y\n#     fakeY[1] <- celdaGSim$L + 1\n#     expect_error(logLikelihood(model = \"celda_G\",\n#         counts = celdaGSim$counts,\n#         y = fakeY,\n#         L = celdaGSim$L,\n#         delta = 1,\n#         gamma = 1,\n#         beta = 1),\n#         \"An entry in y contains a value greater than the provided L.\")\n# })\n#\n# # normalizeCounts\n# test_that(desc = paste0(\"Making sure normalizeCounts doesn't change\",\n#     \" dimensions of counts matrix\"), {\n#         normCounts <- normalizeCounts(celdaGSim$counts)\n#         expect_equal(dim(normCounts), dim(celdaGSim$counts))\n#         expect_equal(rownames(normCounts), rownames(celdaGSim$counts))\n#         expect_equal(colnames(normCounts), colnames(celdaGSim$counts))\n#         expect_error(normalizeCounts(celdaGSim$counts,\n#             transformationFun = \"scale\"),\n#             \"'transformationFun' needs to be of class 'function'\")\n#         expect_error(normalizeCounts(celdaGSim$counts, scaleFun = \"scale\"),\n#             \"'scaleFun' needs to be of class 'function'\")\n#     })\n#\n# # recodeClusterY\n# test_that(desc = \"Testing recodeClusterY with celda_G\", {\n#     expect_error(recodeClusterZ(celdaMod = modelG,\n#         from = c(1, 2, 3, 4, 5),\n#         to = c(5, 4, 3, 2, 1)))\n#     expect_error(recodeClusterY(celdaMod = modelG,\n#         from = NULL,\n#         to = \"\"))\n#     expect_error(recodeClusterY(celdaMod = modelG,\n#         from = c(1, 2, 3, 4, 5),\n#         to = c(1, 2, 3, 4, 6)))\n#     expect_error(recodeClusterY(celdaMod = modelG,\n#         from = c(1, 2, 3, 4, 6),\n#         to = c(1, 2, 3, 4, 5)))\n#     newRecoded <- recodeClusterY(celdaMod = modelG,\n#         from = c(1, 2, 3, 4, 5),\n#         to = c(5, 4, 3, 2, 1))\n#     expect_equal(modelG@clusters$y == 1, newRecoded@clusters$y == 5)\n# })\n#\n# # compareCountMatrix\n# test_that(desc = \"Testing CompareCountMatrix with celda_G\", {\n#     expect_true(compareCountMatrix(counts = celdaGSim$counts,\n#         celdaMod = modelG))\n#     lessFeatures <- celdaGSim$counts[1:50, ]\n#     expect_error(compareCountMatrix(counts = lessFeatures, celdaMod = modelG),\n#         paste0(\"The provided celda object was generated from a counts matrix\",\n#             \" with a different number of features than the one provided.\"))\n#\n#     countsMatrixError <- matrix(data = 1,\n#         nrow = nrow(celdaGSim$counts),\n#         ncol = ncol(celdaGSim$counts))\n#     expect_false(compareCountMatrix(counts = countsMatrixError,\n#         celdaMod = modelG,\n#         errorOnMismatch = FALSE))\n#     expect_error(compareCountMatrix(counts = countsMatrixError,\n#         celdaMod = modelG,\n#         errorOnMismatch = TRUE))\n# })\n#\n# # topRank\n# test_that(desc = \"Testing topRank function with celda_G\", {\n#     topRank <- topRank(matrix = factorized$proportions$module,\n#         n = 1000,\n#         threshold = NULL)\n#     expect_equal(names(topRank),\n#         c(\"index\", \"names\"))\n#     expect_equal(names(topRank(matrix = factorized$proportions$module)),\n#         c(\"index\", \"names\"))\n# })\n#\n# # plotHeatmap\n# test_that(desc = \"Testing plotHeatmap with celda_G\", {\n#     expect_error(plotHeatmap(counts = celdaGSim$counts, y = modelG@params$L),\n#         \"Length of y must match number of rows in counts matrix\")\n#     expect_error(plotHeatmap(counts = celdaGSim$counts,\n#         y = modelG@clusters$y,\n#         scaleRow = \"scale\"),\n#         \"'scaleRow' needs to be of class 'function'\")\n#     expect_error(plotHeatmap(counts = celdaGSim$counts,\n#         y = modelG@clusters$y,\n#         trim = 3),\n#         paste0(\"'trim' should be a 2 element vector specifying the lower\",\n#             \" and upper boundaries\"))\n# })\n#\n# # test_that(desc = \"Testing plotHeatmap with celda_G, including annotations\",\n# #     {\n# #     annot <- as.data.frame(c(rep(x = 1,\n# #         times = nrow(celdaGSim$counts) - 100), rep(x = 2, 100)))\n# #     rownames(annot) <- rownames(celdaGSim$counts)\n# #     colnames(annot) <- \"label\"\n# #\n# #     expect_equal(names(plotHeatmap(celdaMod = modelG,\n# #         counts = celdaGSim$counts,\n# #         annotationFeature = annot,\n# #         y = modelG@clusters$y)),\n# #         c(\"treeRow\", \"treeCol\", \"gtable\"))\n# #\n# #     rownames(annot) <- NULL\n# #     expect_equal(names(plotHeatmap(celdaMod = modelG,\n# #         counts = celdaGSim$counts,\n# #         annotationFeature = as.matrix(annot),\n# #         y = modelG@clusters$y)),\n# #         c(\"treeRow\", \"treeCol\", \"gtable\"))\n# #\n# #     rownames(annot) <- rev(rownames(celdaGSim$counts))\n# #     expect_error(plotHeatmap(celdaMod = modelG,\n# #         counts = celdaGSim$counts,\n# #         annotationFeature = annot,\n# #         y = modelG@clusters$y),\n# #         paste0(\"Row names of 'annotationFeature' are different than\",\n# #         \" the row names of 'counts'\"))\n# # })\n#\n# # celdaHeatmap\n# test_that(desc = \"Testing celdaHeatmap with celda_G\", {\n#     expect_equal(names(celdaHeatmap(celdaMod = modelG,\n#         counts = celdaGSim$counts)),\n#         c(\"treeRow\", \"treeCol\", \"gtable\"))\n# })\n#\n# # moduleHeatmap\n# test_that(desc = \"Testing moduleHeatmap with celda_G\", {\n#     expect_equal(names(moduleHeatmap(celdaGSim$counts,\n#         celdaMod = modelG,\n#         topCells = 300,\n#         featureModule = c(1, 2))),\n#         c(\"treeRow\", \"treeCol\", \"gtable\"))\n#     expect_equal(names(moduleHeatmap(celdaGSim$counts,\n#         celdaMod = modelG,\n#         topFeatures = 15,\n#         topCells = 15,\n#         normalizedCounts = NA)),\n#         c(\"treeRow\", \"treeCol\", \"gtable\"))\n#\n#     expect_error(moduleHeatmap(\"counts\", celdaMod = modelG),\n#         \"'counts' should be a numeric count matrix\")\n#     expect_error(moduleHeatmap(celdaGSim$counts, celdaMod = \"modelG\"),\n#         \"'celdaMod' should be an object of class celda_G or celda_CG\")\n# })\n#\n# # plotDimReduceModule\n# test_that(desc = \"Testing plotDimReduceModule with celda_G\", {\n#     celdaTsne <- celdaTsne(counts = celdaGSim$counts,\n#         maxIter = 50,\n#         celdaMod = modelG)\n#     expect_equal(names(plotDimReduceModule(\n#         dim1 = celdaTsne[, 1],\n#         dim2 = celdaTsne[, 2],\n#         counts = celdaGSim$counts,\n#         celdaMod = modelG)),\n#         c(\"data\",\n#             \"layers\",\n#             \"scales\",\n#             \"mapping\",\n#             \"theme\",\n#             \"coordinates\",\n#             \"facet\",\n#             \"plot_env\",\n#             \"labels\"))\n#     expect_equal(names(plotDimReduceModule(dim1 = celdaTsne[, 1],\n#         dim2 = celdaTsne[, 2],\n#         counts = celdaGSim$counts,\n#         celdaMod = modelG,\n#         modules = c(1, 2),\n#         rescale = FALSE)),\n#         c(\"data\",\n#             \"layers\",\n#             \"scales\",\n#             \"mapping\",\n#             \"theme\",\n#             \"coordinates\",\n#             \"facet\",\n#             \"plot_env\",\n#             \"labels\"))\n#     expect_error(plotDimReduceModule(dim1 = celdaTsne[, 1],\n#         dim2 = celdaTsne[, 2],\n#         counts = celdaGSim$counts,\n#         celdaMod = modelG,\n#         modules = c(11, 12)))\n# })\n#\n# # celdaTsne\n# test_that(desc = paste0(\"Testing celdaTsne with celda_G when model class is\",\n#     \" changed, should error\"), {\n#         modelX <- modelG\n#         class(modelX) <- \"celda_X\"\n#         expect_error(celdaTsne(counts = celdaGSim$counts, celdaMod = modelX),\n#             \"unable to find\")\n#     })\n#\n# # test_that(desc = \"Testing celdaTsne with celda_C including all cells\", {\n# #     tsne <- celdaTsne(counts = celdaGSim$counts,\n# #         celdaMod = modelG,\n# #         maxCells = ncol(celdaGSim$counts))\n# #     plotObj <- plotDimReduceCluster(tsne[, 1],\n# #         tsne[, 2], rep(1, ncol(celdaGSim$counts)))\n# #     expect_true(ncol(tsne) == 2 & nrow(tsne) == ncol(celdaGSim$counts))\n# #     expect_true(!is.null(plotObj))\n# #\n# #     tsne <- celdaTsne(counts = celdaGSim$counts,\n# #         celdaMod = modelG,\n# #         maxCells = ncol(celdaGSim$counts),\n# #         modules = c(1, 2))\n# #     expect_error(tsne <- celdaTsne(counts = celdaGSim$counts,\n# #         celdaMod = modelG,\n# #         maxCells = ncol(celdaGSim$counts),\n# #         modules = seq(1000, 1005)))\n# # })\n#\n# test_that(desc = paste0(\"Testing celdaTsne with celda_G including\",\n#     \" a subset of cells\"), {\n#     tsne <- celdaTsne(counts = celdaGSim$counts,\n#         celdaMod = modelG,\n#         maxCells = 100)\n#     plotObj <- plotDimReduceCluster(tsne[, 1],\n#         tsne[, 2], rep(1, ncol(celdaGSim$counts)))\n#     expect_true(ncol(tsne) == 2 & nrow(tsne) == ncol(celdaGSim$counts) &&\n#             sum(!is.na(tsne[, 1])) == 100)\n#     expect_true(!is.null(plotObj))\n# })\n#\n# # celdaUmap\n# test_that(desc = paste0(\"Testing celdaUmap with celda_G when model class is\",\n#     \" changed, should error\"), {\n#         modelX <- modelG\n#         class(modelX) <- \"celda_X\"\n#         expect_error(celdaUmap(counts = celdaGSim$counts, celdaMod = modelX),\n#             \"unable to find\")\n#     })\n#\n# test_that(desc = \"Testing celdaUmap with celda_C including all cells\", {\n#     umap <- celdaUmap(counts = celdaGSim$counts,\n#         celdaMod = modelG,\n#         maxCells = ncol(celdaGSim$counts))\n#     plotObj <- plotDimReduceCluster(umap[, 1],\n#         umap[, 2], rep(1, ncol(celdaGSim$counts)))\n#     expect_true(ncol(umap) == 2 & nrow(umap) == ncol(celdaGSim$counts))\n#     expect_true(!is.null(plotObj))\n#\n#     umap <- celdaUmap(counts = celdaGSim$counts,\n#         celdaMod = modelG,\n#         maxCells = ncol(celdaGSim$counts),\n#         modules = c(1, 2))\n#     expect_error(umap <- celdaUmap(counts = celdaGSim$counts,\n#         celdaMod = modelG,\n#         maxCells = ncol(celdaGSim$counts),\n#         modules = seq(1000, 1005)))\n# })\n#\n# test_that(desc = paste0(\"Testing celdaUmap with celda_G including\",\n#     \" a subset of cells\"), {\n#     umap <- celdaUmap(counts = celdaGSim$counts,\n#         celdaMod = modelG,\n#         maxCells = 100)\n#     plotObj <- plotDimReduceCluster(umap[, 1],\n#         umap[, 2], rep(1, ncol(celdaGSim$counts)))\n#     expect_true(ncol(umap) == 2 & nrow(umap) == ncol(celdaGSim$counts) &&\n#             sum(!is.na(umap[, 1])) == 100)\n#     expect_true(!is.null(plotObj))\n# })\n#\n# # featureModuleLookup\n# test_that(desc = \"Testing featureModuleLookup with celda_G\", {\n#     res <- featureModuleLookup(celdaGSim$counts, modelG, \"Gene_1\")\n#     expect_true(res == modelG@clusters$y[1])\n#     res <- featureModuleLookup(celdaGSim$counts,\n#         modelG, \"Gene_2\", exactMatch = FALSE)\n#     expect_true(length(res) == 11)\n#     res <- featureModuleLookup(celdaGSim$counts, modelG, \"XXXXXXX\")\n#     expect_true(grepl(\"No feature\", res))\n# })\n#\n# # .cGSplitY\n# test_that(desc = \"Testing error checking for .cGSplitY\", {\n#     r <- simulateCells(\"celda_G\",\n#         C = 100,\n#         G = 100,\n#         L = 2)\n#     dc <- .cGDecomposeCounts(r$counts, r$y, r$L)\n#     res <- .cGSplitY(r$counts,\n#         r$y,\n#         dc$nTSByC,\n#         dc$nByTS,\n#         dc$nByG,\n#         dc$nGByTS,\n#         dc$nM,\n#         dc$nG,\n#         r$L,\n#         beta = 1,\n#         delta = 1,\n#         gamma = 1,\n#         yProb = NULL,\n#         minFeature = 1000)\n#     expect_true(grepl(\"Cluster sizes too small\", res$message))\n# })\n#\n# test_that(desc = \"Testing perplexity.celda_G\", {\n#     expect_true(is.numeric(perplexity(celdaGSim$counts, modelG)))\n#     class(modelG) <- c(\"celda_C\")\n#     expect_error(perplexity.celda_G(celdaGSim$counts, modelG),\n#         \"could not find function \\\"perplexity.celda_G\\\"\")\n# })\n"
  },
  {
    "path": "tests/testthat/test-decon.R",
    "content": "library(celda)\ncontext(\"Testing DecontX functions\")\n\ndeconSim <- simulateContamination(K = 10, delta = c(1, 5))\nmodelDecontXoneBatch <- decontX(deconSim$observedCounts,\n        z = deconSim$z,\n        maxIter = 2)\n\ndeconSim2 <- simulateContamination(K = 10, delta = c(1, 5))\nbatchDecontX <- decontX(cbind(deconSim$observedCounts,\n    deconSim2$observedCounts),\n        z = c(deconSim$z, deconSim2$z),\n        batch = rep(seq(2), each = ncol(deconSim$observedCounts)),\n        maxIter = 2)\n\ntest_that(desc = \"Testing simulateContamination\", {\n    expect_equivalent(object = colSums(deconSim$observedCounts),\n        expected = deconSim$NByC)\n    expect_equal(object = dim(deconSim$phi),\n        expected = dim(deconSim$eta))\n    expect_equal(typeof(deconSim$observedCounts), \"integer\")\n    expect_warning(simulateContamination(K = 101, C = 10))\n    expect_error(simulateContamination(K = 3, G = 2, numMarkers = 10))\n})\n\n## DecontX\ntest_that(desc = \"Testing DecontX on counts matrix\", {\n  s <- simulateContamination()\n  res <- decontX(s$observedCounts)\n  p <- plotDecontXMarkerPercentage(s$observedCounts,\n                                   z = res$z,\n                                   markers = s$markers)\n  p <- plotDecontXMarkerPercentage(res$decontXcounts,\n                                   z = res$z,\n                                   markers = s$markers)\n  p <- plotDecontXMarkerExpression(s$observedCounts,\n                                   s$markers[[1]],\n                                   z = s$z)\n  p <- plotDecontXContamination(res)\n\n  # test with background input\n  b <- s$observedCounts[, 1:5]\n  colnames(b) <- paste(colnames(b), \"_\", sep = \"\")\n  res <- decontX(s$observedCounts,\n                 background = b)\n})\n\ntest_that(desc = \"Testing DecontX on SCE\", {\n  s <- simulateContamination()\n  sce <- SingleCellExperiment::SingleCellExperiment(\n                               list(counts = s$observedCounts))\n  sce <- decontX(sce)\n  p <- plotDecontXContamination(sce)\n  p <- plotDecontXMarkerPercentage(sce,\n                                   z = s$z,\n                                   markers = s$markers,\n                                   assayName = \"decontXcounts\")\n  p <- plotDecontXMarkerExpression(sce, s$markers[[1]])\n  newz <- paste0(\"X\", s$z)\n  sce$newz2 <- newz\n  p <- plotDecontXMarkerPercentage(sce,\n                                   z = \"newz2\",\n                                   markers = s$markers,\n                                   assayName = \"decontXcounts\")\n  sce <- decontX(sce, estimateDelta = FALSE)\n\n  # test with background input\n  bg <- sce[, 1:5]\n  colnames(bg) <- paste(colnames(bg), \"_\", sep = \"\")\n  sce <- decontX(sce, background = bg)\n})\n\n\n## .decontXoneBatch\ntest_that(desc = \"Testing .decontXoneBatch\", {\n    expect_error(decontX(x = deconSim$observedCounts,\n        z = deconSim$z, delta = c(1, -1)))\n    expect_error(decontX(x = deconSim$observedCounts,\n        z = deconSim$z, delta = c(1, 1, 1)))\n    expect_error(decontX(x = deconSim$observedCounts,\n        z = c(deconSim$z, 1)),\n        paste0(\"'z' must be of the same length as the number of cells in the\",\n            \" 'counts' matrix.\"))\n    expect_error(.decontXoneBatch(counts = deconSim$observedCounts,\n        z = rep(1, ncol(\n            deconSim$observedCounts))),\n        \"No need to decontaminate when only one cluster is in the dataset.\")\n    countsNA <- deconSim$observedCounts\n    countsNA[1, 1] <- NA\n    expect_error(.decontXoneBatch(counts = countsNA, z = deconSim$z),\n        \"Missing value in 'counts' matrix.\")\n})\n"
  },
  {
    "path": "tests/testthat/test-intialize_cluster.R",
    "content": "# test_that(desc = \"Test 'random' initialization for all models\", {\n#     simRes <- simulateCells(model = \"celda_CG\")\n#     modelCG <- celda_CG(simRes$counts,\n#         simRes$sampleLabel,\n#         K = simRes$K,\n#         L = simRes$L,\n#         zInitialize = \"random\",\n#         yInitialize = \"random\",\n#         maxIter = 5,\n#         splitOnLast = FALSE,\n#         splitOnIter = -1)\n#     expect_true(is(modelCG, \"celda_CG\"))\n#     modelG <- celda_G(simRes$counts,\n#         L = simRes$L,\n#         yInitialize = \"random\",\n#         maxIter = 5,\n#         splitOnLast = FALSE,\n#         splitOnIter = -1)\n#     expect_true(is(modelG, \"celda_G\"))\n#     modelC <- celda_C(simRes$counts,\n#         simRes$sampleLabel,\n#         K = simRes$K,\n#         zInitialize = \"random\",\n#         maxIter = 5,\n#         splitOnLast = FALSE,\n#         splitOnIter = -1)\n#     expect_true(is(modelC, \"celda_C\"))\n# })\n#\n# test_that(desc = \"Testing .initializeCluster for random initialization\", {\n#     ## Completely random\n#     z <- .initializeCluster(10, 100)\n#     expect_true(length(z) == 100 & length(unique(z) == 10))\n#     expect_error(z <- .initializeCluster(100, 10))\n#\n#     ## With all values initialized\n#     initZ <- rep(seq(10), each = 10)\n#     z <- .initializeCluster(10, 100, initial = initZ)\n#     expect_true(all(initZ == z))\n#     expect_error(z <- .initializeCluster(10, 100, initial = initZ[seq(99)]))\n#     expect_error(z <- .initializeCluster(11, 100, initial = initZ))\n#     expect_error(z <- .initializeCluster(10, 99, initial = initZ))\n#\n#     ## With only a few values initialized\n#     fixedZ <- rep(NA, 100)\n#     fixedZ[seq(10)] <- 1\n#     z <- .initializeCluster(10, 100, fixed = fixedZ)\n#     expect_true(all(z[seq(10)] == 1) &\n#             length(z) == 100 & length(unique(z)) == 10)\n#     expect_error(z <- .initializeCluster(10, 100, fixed = fixedZ[seq(99)]))\n#     fixedZ[seq(10)] <- 11\n#     expect_error(z <- .initializeCluster(10, 100, fixed = fixedZ))\n# })\n"
  },
  {
    "path": "tests/testthat/test-matrixSums.R",
    "content": "library(celda)\ncontext(\"Testing error checking in C-level matrix sum functions\")\n\n## Test internal error checking\nmat <- matrix(seq(5), ncol = 10, nrow = 10)\nlabel1 <- rep(seq(2), each = 5)\nlabel2 <- as.factor(seq(100))\nlabel3 <- as.factor(label1)\nlabel4 <- label3\nlabel4[seq(2)] <- 2\nlabel5 <- as.factor(rep(seq(5), each = 2))\n\ntest_that(desc = \"Testing .rowSumByGroup\", {\n    expect_error(.Call(\"_rowSumByGroup\", mat, label1))\n    expect_error(.Call(\"_rowSumByGroup\", mat, label2))\n    res <- .Call(\"_rowSumByGroup\", mat, label3)\n    expect_true(all(res == rowsum(mat, label3)))\n    res <- .rowSumByGroup(mat, label3, 2)\n    expect_true(all(res == rowsum(mat, label3)))\n})\n\ntest_that(desc = \"Testing .rowSumByGroupChange\", {\n    res <- rowsum(mat, label3)\n    expect_error(.Call(\"_rowSumByGroupChange\", mat, res, label4, label1))\n    expect_error(.Call(\"_rowSumByGroupChange\", mat, res, label4, label2))\n    expect_error(.Call(\"_rowSumByGroupChange\", mat[-1, ], res, label4, label3))\n    expect_error(.Call(\"_rowSumByGroupChange\", mat[, -1], res, label4, label3))\n    expect_error(.Call(\"_rowSumByGroupChange\", mat, res, label4, label5))\n    res2 <- .Call(\"_rowSumByGroupChange\", mat, res, label4, label3)\n    expect_true(all(res2 == rowsum(mat, label4)))\n    res <- rowsum(mat, label3)\n    res2 <- .rowSumByGroupChange(mat, res, label4, label3, 2)\n    expect_true(all(res2 == rowsum(mat, label4)))\n})\n\ntest_that(desc = \"Testing .colSumByGroup\", {\n    expect_error(.Call(\"_colSumByGroup\", mat, label1))\n    expect_error(.Call(\"_colSumByGroup\", mat, label2))\n    res <- .Call(\"_colSumByGroup\", mat, label3)\n    expect_true(all(res == t(rowsum(t(mat), label3))))\n    res <- .colSumByGroup(mat, label3, 2)\n    expect_true(all(res == t(rowsum(t(mat), label3))))\n})\n\ntest_that(desc = \"Testing .colSumByGroupChange\", {\n    res <- t(rowsum(t(mat), label3))\n    expect_error(.Call(\"_colSumByGroupChange\", mat, res, label4, label1))\n    expect_error(.Call(\"_colSumByGroupChange\", mat, res, label4, label2))\n    expect_error(.Call(\"_colSumByGroupChange\", mat[, -1], res, label4, label3))\n    expect_error(.Call(\"_colSumByGroupChange\", mat, res, label4, label5))\n    expect_error(.Call(\"_colSumByGroupChange\", mat[-1, ], res, label4, label3))\n    res2 <- .Call(\"_colSumByGroupChange\", mat, res, label4, label3)\n    expect_true(all(res2 == t(rowsum(t(mat), label4))))\n    res <- t(rowsum(t(mat), label3))\n    res2 <- .colSumByGroupChange(mat, res, label4, label3, 2)\n    expect_true(all(res2 == t(rowsum(t(mat), label4))))\n})\n\nstorage.mode(mat) <- \"numeric\"\ntest_that(desc = \"Testing .rowSumByGroupNumeric\", {\n    expect_error(.Call(\"_rowSumByGroup_numeric\", mat, label1))\n    expect_error(.Call(\"_rowSumByGroup_numeric\", mat, label2))\n    res <- .Call(\"_rowSumByGroup_numeric\", mat, label3)\n    expect_true(all(res == rowsum(mat, label3)))\n    res <- .rowSumByGroupNumeric(mat, label3, 2)\n    expect_true(all(res == rowsum(mat, label3)))\n})\n\ntest_that(desc = \"Testing .colSumByGroupNumeric\", {\n    expect_error(.Call(\"_colSumByGroup_numeric\", mat, label1))\n    expect_error(.Call(\"_colSumByGroup_numeric\", mat, label2))\n    res <- .Call(\"_colSumByGroup_numeric\", mat, label3)\n    expect_true(all(res == t(rowsum(t(mat), label3))))\n    res <- .colSumByGroupNumeric(mat, label3, 2)\n    expect_true(all(res == t(rowsum(t(mat), label3))))\n})\n\n# test_that(desc = \"Testing fastNormProp Rcpp funtion\",{\n#   res <- fastNormProp(mat, 0)\n#   res2 <- prop.table(mat, 2)\n#   expect_true(all(res == res2))\n# })\n#\n# test_that(desc = \"Testing fastNormPropLog Rcpp funtion\",{\n#   res <- fastNormPropLog(mat, 0)\n#   res2 <- log(prop.table(mat, 2))\n#   expect_true(all(res == res2))\n# })\n#\n# test_that(desc = \"Testing fastNormPropSqrt Rcpp funtion\",{\n#   res <- fastNormPropSqrt(mat, 0)\n#   res2 <- sqrt(prop.table(mat, 2))\n#   expect_true(all(res == res2))\n# })\n"
  },
  {
    "path": "tests/testthat/test-with_seed.R",
    "content": "# with_seed\nlibrary(celda)\ncontext(\"Testing seed setting behavior\")\n\nset.seed(123)\nceldaCGSim1 <- simulateCells(\"celda_CG\", K = 5, L = 10, seed = 1234)\nceldaCGSim2 <- simulateCells(\"celda_CG\", K = 5, L = 10, seed = NULL)\nceldaCGSim3 <- simulateCells(\"celda_CG\", K = 5, L = 10, seed = 123)\nceldaCGSim4 <- simulateCells(\"celda_CG\", K = 5, L = 10, seed = 1234)\nceldaCGSim5 <- simulateCells(\"celda_CG\", K = 5, L = 10, seed = 1234)\nceldaCGSim6 <- simulateCells(\"celda_CG\", K = 5, L = 10, seed = 12345)\nceldaCGSim7 <- simulateCells(\"celda_CG\", K = 5, L = 10, seed = NULL)\n\nset.seed(123)\nceldaCGSim8 <- simulateCells(\"celda_CG\", K = 5, L = 10, seed = NULL)\n\ntest_that(desc = \"Testing seed setting behavior in count matrix simulation\", {\n    expect_equal(celdaCGSim1, celdaCGSim4)\n    expect_equal(celdaCGSim1, celdaCGSim5)\n    #expect_equal(celdaCGSim2, celdaCGSim3)\n    expect_equal(celdaCGSim2, celdaCGSim8)\n\n    # expect_false(isTRUE(all.equal(celdaCGSim1, celdaCGSim2)))\n    # expect_false(isTRUE(all.equal(celdaCGSim1, celdaCGSim3)))\n    # expect_false(isTRUE(all.equal(celdaCGSim1, celdaCGSim6)))\n    # expect_false(isTRUE(all.equal(celdaCGSim2, celdaCGSim7)))\n})\n"
  },
  {
    "path": "tests/testthat.R",
    "content": "Sys.unsetenv(\"R_TESTS\")\nlibrary(testthat)\ntest_check(\"celda\")\n"
  },
  {
    "path": "vignettes/articles/celda_pbmc3k.Rmd",
    "content": "---\ntitle: \"Celda - Analysis of PBMC3K\"\ndate: \"Compiled `r format(Sys.time(), '%B %d, %Y')`\"\nauthor: \"Joshua Campbell, Zhe Wang\"\n---\n\n# Introduction\n\nCelda is a Bayesian hierarchical model that can perform bi-clustering of features into modules and observations into subpopulations. In this tutorial, we will apply Celda to a real-world single-cell RNA sequencing (scRNA-seq) dataset of 2,700 Peripheral Blood Mononuclear Cells (PBMCs) collected from a healthy donor. This dataset (PBMC3K) is available from 10X Genomics and can be found on the  [10X website](https://support.10xgenomics.com/single-cell-gene-expression/datasets/1.1.0/pbmc3k){target=\"_blank\"}. \n\nThe `celda` package uses the [SingleCellExperiment](https://bioconductor.org/packages/release/bioc/html/SingleCellExperiment.html){target=\"_blank\"} (SCE) object for management of expression matrices, feature/cell annotation data, and metadata. All of the functions have an SCE object as the first input parameter. The functions operate on a matrix stored in the `assay` slot of the SCE object. The parameter `useAssay` can be used to specify which matrix to use (the default is `\"counts\"`). Matrices can be of class `matrix` or `dgCMatrix` from the [Matrix](https://cran.r-project.org/web/packages/Matrix/index.html) package. While the primary clustering is performed with functions from the celda package, the [singleCellTK](https://bioconductor.org/packages/release/bioc/html/singleCellTK.html) package is used for some other tasks such as importing data, quality control, and marker identification with differential expression. \n\n# Importing data\n\nThe PBMC3K data can be easily loaded via the Bioconductor package [TENxPBMCData](https://bioconductor.org/packages/release/data/experiment/html/TENxPBMCData.html){target=\"_blank\"}. `TENxPBMCData` is an experiment package that provides resources for various PBMC datasets generated by 10X Genomics. When using this package, the column names of returned SCE object are `NULL` by default. For this example, we paste together the name of the sample  with the cell barcode to generate column names for the SCE object. Additionally, the count matrix within `sce` object is converted from a `DelayedMatrix` object to a sparse matrix `dgCMatrix` object.\n\n```{r get_pbmc, message = FALSE}\nlibrary(TENxPBMCData)\nsce <- TENxPBMCData(\"pbmc3k\")\ncolnames(sce) <- paste0(\"pbmc3k_\", colData(sce)$Sequence)\ncounts(sce) <- as(counts(sce), \"dgCMatrix\")\n```\n\nIf you have the [singleCellTK](https://bioconductor.org/packages/release/bioc/html/singleCellTK.html){target=\"_blank\"} package installed, then this dataset can be imported and converted with a single command:\n\n```{r get_pbmc_sctk, eval=FALSE}\nlibrary(singleCellTK)\nsce <- importExampleData(\"pbmc3k\")\n```\n\nTo get your own data into a `SingleCellExperiment` object, the `singleCellTK` package has several importing functions for different preprocessing tools including CellRanger, STARsolo, BUStools, Optimus, DropEST, SEQC, and Alevin/Salmon. For example, the following code can be used as a template to read in multiple samples processed with CellRanger: \n\n```{r cellranger_import, eval=FALSE}\nlibrary(singleCellTK)\nsce <- importCellRanger(sampleDirs = c(\"path/to/sample1/\", \"path/to/sample2/\"))\n```\n\n**Note:** As a reminder, you can view the assays, column annotation, and row annotation stored in the SCE with the commands `assays(sce)`, `colData(sce)`, and `rowData(sce)`, respectively.\n\nFinally, we set the `rownames` of the SCE to the gene symbol:\n\n```{r set_symbol}\nrownames(sce) <- rowData(sce)$Symbol_TENx\n```\n\n\n# Quality Control\n\nQuality control and filtering of cells is often needed before down-stream analyses such as dimensionality reduction and clustering. Typical filtering procedures include exclusion of poor quality cells with low numbers of counts/UMIs, estimation and removal of ambient RNA, and identification of potential doublet/multiplets. Many tools and packages are available to perform these operations and users are free to apply their tool(s) of choice as the celda clustering functions will work with any matrix stored in an SCE object. The celda package does contain a Bayesian method called [decontX](https://doi.org/10.1186/s13059-020-1950-6){target=\"_blank\"} to estimate and remove transcript contamination in individual cells in a scRNA-seq dataset. \n\nTo perform QC, we suggest using the `runCellQC` function in `singleCellTK` package. This is a wrapper for several methods for calculation of QC metrics, doublet detection, and estimation of ambient RNA (including decontX). Below is a quick example of how to perform standard QC before applying celda. If you have another preferred approach or your data has already been QC'ed, you can move to [Feature selection](#featureselection) section. For this tutorial, we will only run one doublet detection algorithm and one decontamination algorithms. For a full list of algorithms that this function runs by default, see `?runCellQC`. We will also quantify the percentage of mitochondrial genes in each cell as this is often used as a measure of cell viability. \n\n```{r sctk_qc, message=FALSE, warning=FALSE, error=FALSE}\nlibrary(singleCellTK)\n\n# Get list of mitochondrial genes\nmito.genes <- grep(\"^MT-\", rownames(sce), value = TRUE)\n\n# Run QC\nsce <- runCellQC(sce, sample = NULL, algorithms = c(\"QCMetrics\", \"scDblFinder\", \"decontX\"), geneSetList = list(mito=mito.genes), geneSetListLocation = \"rownames\")\n```\n\n\n**Note:** If you have cells from multiple samples stored in the SCE object, make sure to supply the `sample` parameter as the QC tools need to be applied to cells from each sample individually. \n\nIndividual sets of QC metrics can be plotted with specific functions. For example to plot distributions of total numbers of UMIs derived from `runPerCellQC`, doublet scores from  `runScDblFinder`, and contamination scores from `runDecontX` (all of which were run by the `runCellQC` function), the following plotting functions can be used:\n\n```{r sctk_qc_plot, fig.height = 8}\nplotRunPerCellQCResults(sce)\nplotScDblFinderResults(sce, reducedDimName = \"decontX_UMAP\")\nplotDecontXResults(sce, reducedDimName = \"decontX_UMAP\")\n```\n\nAn comprehensive HTML report can be generated to visualize and explore the QC metrics in greater detail:\n\n```{r sctk_qc_report, eval = FALSE}\nreportCellQC(sce)\n```\n\nAfter examining the distributions of various QC metrics, poor quality cells will need to be removed. Typically, thresholds for QC metrics should exclude cells that are outliers of the distribution (i.e. long tails in the violin or density plots). Cells can be removed using the `subsetSCECols` function.  Metrics stored in the `colData` of the SCE object can be filtered using the `colData` parameter. Here we will limit to cells with at least 600 counts and 300 genes detected:\n\n```{r sctk_qc_subset}\n# Filter SCE\nsce <- subsetSCECols(sce, colData = c(\"total > 600\", \"detected > 300\"))\n\n# See number of cells after filtering\nncol(sce)\n```\n\nOther common metrics to filter on include `subsets_mito_percent` for removal of cells with high mitochondrial percentage, `decontX_contamination` for removal of cells with higher levels of contamination from ambient RNA, `scDblFinder_class` to remove doublets (or calls from any of the other doublet detection algorithms).  See the `singleCellTK` [documentation](sctk.camplab.net) For more information on performing comprehensive QC and filtering.\n\n\n# Feature selection {#featureselection}\n\nIn general, removing features with low numbers of counts across all cells is recommended to reduce computational run time. A simple selection can be performed by removing features with a minimum number of counts in a minimum number of cells using the `selectFeatures` function:\n\n```{r select_features, message = FALSE}\n# Select features with at least 3 counts in at least 3 cells\nlibrary(celda)\nuseAssay <- \"counts\"\naltExpName <- \"featureSubset\"\nsce <- selectFeatures(sce, minCount = 3, minCell = 3, useAssay = useAssay, altExpName = altExpName)\n\n# See number of features after filtering\nnrow(altExp(sce, altExpName))\n```\n\nThe `useAssay` parameter is used to denote which assay/matrix within the SCE to use for filtering. The default raw counts matrix is traditionally stored in the `\"counts\"` assay. If `decontX` was previously run during QC, then the decontaminated counts can be used by setting this parameter to `\"decontXcounts\"`. We will save this parameter in a variable called `useAssay` which will be used as input in several downstream functions. \n\n**Note:** The subsetted matrix is stored in the \"alternative experiment\" slot (`altExp`) within the SCE.  This allows for a matrix with a different number of rows to be stored within the same SCE object (rather than creating two SCE objects). The celda functions described in the next several sections operate on a matrix stored in the `altExp` slot. The default name given to the alternative experiment and used in all downstream celda functions is `\"featureSubset\"`. If the `altExpName` parameter is changed here, then it will need to be supplied to downstream plotting functions as well. The list of alternative experiments in an SCE can be view with `altExpNames(sce)`. If you have already have an SCE with selected features or do not want to perform feature selection, then you need to set the alternative experiment directly with a command like `altExp(sce, \"featureSubset\") <- assay(sce, \"counts\")`. In the future, this will be updated to be more simple by utilizing the `ExperimentSubset` package.\n\nIf the number of features is still relatively large (e.g. >5000), an alternative approach is to select highly variable features that can be used in the downstream clustering. The advantage of this approach is that it can greatly speed up celda and can improve with module detection among highly variable features with overall lower expression. The disadvantage of this approach is that features that do not fall into the highly variable group will not be clustered into modules. The celda package does not include methods for selection of highly variable genes (HVGs). However, the `singleCellTK` provides wrappers for methods used in  [Seurat](https://doi.org/10.1016/j.cell.2019.05.031){target=\"_blank\"} and [Scran](https://bioconductor.org/packages/release/bioc/html/scran.html). We recommend keeping at least 2,000-5,000 HVGs for clustering. Here is some example code of how to select the top 5,000 most variable genes and store it back in the SCE as an `altExp`:\n\n```{r feature_selection, eval = FALSE, message = FALSE}\nlibrary(singleCellTK)\nsce <- seuratFindHVG(sce, useAssay = useAssay, hvgMethod = \"vst\")\ng <- getTopHVG(sce, method = \"vst\", n = 5000)\naltExp(sce, altExpName) <- sce[g, ]\n```\n\nFor the rest of the analysis with the PBMC3K data, we will use the first approach where features with at least 3 counts in 3 cells were included.\n\n# Analysis with Celda\n\n## Bi-clustering with known numbers of clusters\n\nAs mentioned earlier, celda is discrete Bayesian model that is able to simultaneously bi-cluster features into modules and cells into cell clusters. The primary bi-clustering model can be accessed with the function `celda_CG`. This function operates on a matrix stored as an alternative experiment in the `altExp` slot. If you did not perform feature selection as recommended in the previous section and your matrix of interest is not currently located in an `altExp` slot, the following code can be used to copy a matrix in the main assay slot to the `altExp` slot:\n\n```{r, altExp_create, eval = FALSE}\nuseAssay <- \"counts\"\naltExpName <- \"featureSubset\"\naltExp(sce, altExpName) <- assay(sce, useAssay)`. \n```\n\nThe two major adjustable parameters in this model are `L`, the number of modules, and `K`, the number of cell populations. The following code bi-clusters the PBMC3K dataset into 100 modules and 15 cell populations:\n\n```{r celda_cg_example, eval = FALSE}\nsce <- celda_CG(sce, L = 100, K = 15, useAssay = useAssay, altExpName = altExpName)\n```\n\nHowever, in most cases, the number of feature modules (`L`) and the number of cell clusters (`K`) are not known beforehand. In the next sections, we outline procedures that can be used suggest reasonable choices for these parameters. If the data is clustered with the code above by supplying K and L directly to the `celda_CG` function, then you can skip the next section and proceed to [Creating 2-D embeddings](#embed).\n\n## Finding the number of modules\n\nIn order to help choose a reasonable solutions for L and K, celda provides step-wise splitting procedures along with measurements of perplexity to suggest reasonable choices for `L` and `K`. First, the function `recursiveSplitModule` can be used to cluster features into modules for a range of `L`. Within each step, the best split of an existing module into 2 new modules is chosen to create the L-th module. The module labels of the previous model with $L-1$ modules are used as the initial starting values in the next model with $L$ modules. Note that the initialization step may take longer with larger numbers of cells in the dataset and the splitting procedure will take longer with larger numbers features in the dataset. Celda models with a L range between `initialL = 10` and `maxL = 150` are tested in the example below.\n\n```{r module_split, message = FALSE}\nmoduleSplit <- recursiveSplitModule(sce, useAssay = useAssay, altExpName = altExpName, initialL = 10, maxL = 150)\n```\n\nPerplexity has been commonly used in the topic models to measure how well a probabilistic model predicts observed samples ([Blei et al., 2003](https://dl.acm.org/doi/10.5555/944919.944937){target=\"_blank\"}). Here, we use perplexity to evaluate the performance of individual models by calculating the probability of observing expression counts given an estimated Celda model. Rather than performing cross-validation which is computationally expensive, a series of test sets are created by sampling the counts from each cell according to a multinomial distribution defined by dividing the counts for each gene in the cell by the total number of counts for that cell. Perplexity is then calculated on each test set and can be visualized using function `plotGridSearchPerplexity`. A lower perplexity indicates a better model fit. \n\n```{r module_split_perplexity, message = FALSE, warning = FALSE}\nplotGridSearchPerplexity(moduleSplit, altExpName = altExpName, sep = 10)\n```\n\nThe perplexity alone often does not show a clear elbow or \"leveling off\". However, the rate of perplexity change (RPC) can be more informative to determine when adding new modules does not add much additional information [Zhao et al., 2015](https://doi.org/10.1186/1471-2105-16-S13-S8){target=\"_blank\"}). An RPC closer to zero indicates that the addition of new modules or cell clusters is not substantially decreasing the perplexity. The RPC of models can be visualized using function `plotRPC`:\n\n```{r module_split_rpc, message = FALSE, warning = FALSE}\nplotRPC(moduleSplit, altExpName = altExpName)\n```\n\nIn this case, we will choose an `L` of 80 as the RPC curve tends to level off at this point:\n\n```{r setL}\nL <- 80\n```\n\n| **Note:** Perplexity and RPC are meant to be guides to  give a sense of a possible starting point for `L`. However, they may not always give a clear \"leveling off\" depending of the complexity and quality of the dataset.  **Do not give up if the choice of L is unclear or imperfect!** If the `L` to choose is unclear from these, then you can set a somewhat high number (e.g. 75) and move to the next step of selecting `K`. Later on, manual review of modules using functions such as `moduleHeatmap` can give a sense of whether individual modules should be further split up by selecting higher `L`. For example, you can start exploring the cell populations and modules with `L = 75`. If some modules need to be further split, you can then try `L = 100`, `L = 125`, and so on.\n\n\n## Finding the number of cell subpopulations\n\nNow we extract the Celda model of `L = `$L$ with function `subsetCeldaList` and run `recursiveSplitCell` to fit models with a range of `K` between 3 and 25:\n\n```{r cell_split, message = FALSE}\ntemp <- subsetCeldaList(moduleSplit, list(L = L))\nsce <- recursiveSplitCell(sce, useAssay = useAssay, altExpName = altExpName, initialK = 3, maxK = 25, yInit = celdaModules(temp))\n```\n\nThe perplexities and RPC of models can be visualized using the same functions `plotGridSearchPerplexity` and `plotRPC`.\n\n```{r cell_split_perplexity, warning = FALSE}\nplotGridSearchPerplexity(sce)\nplotRPC(sce, , altExpName = altExpName)\n```\n\nThe perplexity continues to decrease with larger values of `K`. The RPC generally levels off between 13 and 16 and we choose the model with `K = 14` for downstream analysis. The follow code selects the final `celda_CG` model with `L = 80` and `K = 14`:\n\n```{r setK}\nK <- 14\nsce <- subsetCeldaList(sce, list(L = L, K = K))\n```\n\n**Note:** Similar to choosing `L`, you can guess an initial value of `K` based off of the perplexity and RPC plots and then move to the downstream exploratory analyses described in the next several sections. After reviewing the cell clusters on 2-D embeddings and module heatmaps, you may have to come back to tweak the choice of `K` until you have something that captures the cellular heterogeneity within the data without \"over-clustering\" cells into too many subpopulations. This may be an iterative procedure of going back-and-forth between choices of `K` and plotting the results. So do not let imperfect perplexity/PRC plots prevent you from moving on to the rest of the analysis. Often times, using an initial guess for `K` will allow you to move on in the analysis to get a sense of the major sources of biological heterogeneity present in the data. \n\n# Exploring cell populations\n\n## Creating 2-D embeddings {#embed}\n\nAfter selecting a celda model with specific values of `L` and `K`, we can then perform additional exploratory and downstream analyses to understand the biology of the transcriptional modules and cell populations. We can start by generating a dimension reduction plot with the Uniform Manifold Approximation and Projection (UMAP) method  to visualize the relationships between the cells in a 2-D embedding. This can be done with function `celdaUmap`. \n\n```{r celda_umap, message = FALSE}\nsce <- celdaUmap(sce, useAssay = useAssay, altExpName = altExpName)\n```\n\nAlternatively, a t-distributed stochastic neighbor embedding (t-SNE) can be generated using function `celdaTsne`. The UMAP and t-SNE plots generated by `celdaUmap` and `celdaTsne` are computed based on the module probabilities (analogous to using PCs from PCA). The calculated dimension reduction coordinates for the cells are stored under the `reducedDim` slot of the `altExp` slot in the original SCE object. The follow command lists the names of the dimensionality reductions that can be used in downstream plotting functions in the next few sections:\n\n```{r reduced_dim_list}\nreducedDimNames(altExp(sce, altExpName))\n```\n\n## Plotting cell population cluster labels\n\nThe function `plotDimReduceCluster` can be used to plot the cluster labels for cell populations identified by celda on the UMAP:\n\n```{r cell_clusters}\nplotDimReduceCluster(sce, reducedDimName = \"celda_UMAP\", labelClusters = TRUE)\n```\n\n## Plotting expression of specific features\n\nUsually, biological features of some cell populations are known *a priori* and can be identified with known marker genes. The expression of selected marker genes can be plotted on the UMAP with the function `plotDimReduceFeature`. \n\n```{r cell_marker_umap}\nmarkers <- c(\"CD3D\", \"IL7R\", \"CD4\", \"CD8B\", \"CD19\", \"FCGR3A\", \"CD14\", \"FCER1A\", \"PF4\")\n\nplotDimReduceFeature(x = sce, features = markers, reducedDimName = \"celda_UMAP\", useAssay = useAssay, altExpName = altExpName, normalize = TRUE)\n```\n\nThe parameter `displayName` can be used to switch between IDs stored in the `rownames` of the SCE and columns of the `rowData` of the SCE. If the assay denoted by `useAssay` is a raw counts matrix, then setting `normalize = TRUE` is recommended (otherwise the z-score of the raw counts will be plotted). When set to  `TRUE`, each count will be normalized by dividing by the total number of counts in each cell.  An alternative approach is to perform normalization with another method and then point to the normalized assay with the `useAssay` parameter. For example, normalization can be performed with the scater package:\n\n```{r scran_norm, message = FALSE, eval = FALSE}\nlibrary(scater)\nsce <- logNormCounts(sce, exprs_values = useAssay, name = \"logcounts\")\nplotDimReduceFeature(x = sce, features = markers, reducedDimName = \"celda_UMAP\", useAssay = \"logcounts\", altExpName = altExpName, normalize = FALSE)\n```\n\nThis second approach may be faster if plotting a lot of marker genes or if the dataset is relatively large.\n\n## Plotting cell subpopulations with labels \n\nOnce we identify of various cell subpopulations using the known marker genes, these custom labels can be added on the UMAP colored by cluster:\n\n```{r cell_identities, message = FALSE, warning = FALSE}\ng <- plotDimReduceCluster(sce, reducedDimName = \"celda_UMAP\", altExpName = altExpName, labelClusters = TRUE)\n\nlabels <- c(\"1: Megakaryocytes\",\n    \"2: CD14+ Monocytes 1\",\n    \"3: CD14+ Monocytes 2\",\n    \"4: FCGR3A (CD16+) Monocytes\",\n    \"5: CD14+ Monocytes 3\",\n    \"6: CD8+ Cytotoxic T-cells\",\n    \"7: CD4+ T-cells\",\n    \"8: CD8+ Cytotoxic T-cells\",\n    \"9: B-cells\",\n    \"10: Naive CD8+ T-cells\",\n    \"11: Naive CD4+ T-cells\",\n    \"12: NK-cells\",\n    \"13: Unknown T-cells\",\n    \"14: Dendritic cells\")\n\nlibrary(ggplot2)\ng <- g + scale_color_manual(labels = labels,\n    values = distinctColors(length(labels)))\nprint(g)\n```\n\n# Exploring relationship between modules and cell populations {#probmap}\n\nCelda has the ability to identify modules of co-expressed features and quantify the probability of these modules in each cell population. An overview of the relationships between modules and cell subpopulations can be explored with the function `celdaProbabilityMap`. The \"Absolute probability\" heatmap on the left shows the proportion of counts in each module for each cell population. The \"Absolute probability\" map gives insights into the absolute abundance of a module within a given cell subpopulation. The absolute heatmap can be used to explore which modules are higher than other modules **within a cell population**. The \"Relative expression\" map shows the standardized (z-scored) module probabilities across cell subpopulations. The relative heatmap can be used to explore which modules are relatively higher than other modules **across cell populations**.\n\n```{r celdaProbabilityMap, fig.height = 16, fig.width = 10}\nceldaProbabilityMap(sce, useAssay = useAssay, altExpName = altExpName)\n```\n\nIn this plot, we can see a variety of patterns. Modules 15 - 20 are highly expressed across most cell populations indicating that they may contain housekeeping genes (e.g. ribosomal). Other modules are specific to a cell population or groups of cell populations. For example, module 35 is only on in population 1 while module 70 is expressed across populations 2, 3, and to some degree in population 5. The unknown T-cell population 13 has highly specific levels of modules 30. In the next section, we can look at the genes in these modules to gain insights into the biological properties of each of these cell populations.\n\n# Exploring feature modules\n\nThe primary advantage of celda over other tools is that it can cluster features that are co-expressed across cells into modules. These modules are often more biologically coherent than features correlated with principal components from PCA. Below are several ways in which modules can be explored and visualized. \n\n## Table of features in each module\n\nThe function `featureModuleTable` can be used to get the names of all features in each module into a `data.frame`. \n\n```{r module_table}\n# Save to a data.frame\nta <- featureModuleTable(sce, useAssay = useAssay, altExpName = altExpName)\ndim(ta)\nhead(ta[,\"L70\"])\n```\n\nThe parameter `displayName` can be used to switch between IDs stored in the `rownames` of the SCE and columns of the `rowData` of the SCE. The the `outputFile` parameter is set, the table will be saved to a tab-delimited text file instead of to a `data.frame`:\n\n```{r module_table_file, eval = FALSE}\n# Save to file called \"modules.txt\"\nfeatureModuleTable(sce, useAssay = useAssay, altExpName = altExpName, outputFile = \"modules.txt\")\n```\n\nThe modules for this model are shown below:\n\n```{r module_table_display, echo = FALSE}\nlibrary(knitr)\nlibrary(kableExtra)\ntable <- featureModuleTable(sce,useAssay = \"counts\",altExpName = \"featureSubset\")\nkb <- kable(table, style = 'html', row.names = FALSE)\nkb <- kable_styling(kb, bootstrap_options = c(\"striped\", \"condensed\"))\nkb <- scroll_box(kb, width = \"100%\", height = \"550px\")\nkb\n```\n\n## Module lookup\n\nIf you want to quickly find which module a particular feature was assigned to, the `featureModuleLookup` function can be used. Here will will look up a marker gene for T-cells called \"CD3E\":\n\n```{r feature_lookup}\nmod <- featureModuleLookup(sce, feature = c(\"CD3E\", \"S100A8\"))\nmod\n```\n\n## Module heatmaps\n\nThe function `moduleHeatmap` can be used to view the expression of features across cells for a specific module. The `featureModule` parameter denotes the module(s) to be displayed. Cells are ordered from those with the lowest probability of the module on the left to the highest probability on the right. Similarly, features are ordered from those with the highest probability within the module on the top to the lowest probability on the bottom. \n\n```{r module_heatmap}\nmoduleHeatmap(sce, featureModule = 27, useAssay = useAssay, altExpName = altExpName)\n```\n\nThe parameter `topCells` can be used to control the number of cells included in the heatmap. By default, only the 100 cells with the lowest probabilities and the 100 cells with the highest probabilities for each selected module are included (i.e. `topCells = 100` by default). To display all cells, this parameter can be set to `NULL`:\n\n```{r module_heatmap_topcells}\nmoduleHeatmap(sce, featureModule = 27, topCells = NULL, useAssay = useAssay, altExpName = altExpName)\n```\n\n**Note:** Multiple modules can be displayed by giving a vector of module indices to the parameter `featureModule`. If `featureModule` is not specified, then all modules will be plotted. \n\n## Module probabilities on 2-D embeddings\n\nThe function `plotDimReduceModule` can be used visualize the probabilities of a particular module or sets of modules on a reduced dimensional plot such as a UMAP. This can be another quick method to see how modules are expressed across various cells in 2-D space. As an example, we can look at module `r as.numeric(as.character(mod[\"S100A8\"]))` which contained S100A8:\n\n```{r module_umaps}\nplotDimReduceModule(sce, modules = 70, useAssay = useAssay, altExpName = altExpName, reducedDimName = \"celda_UMAP\")\n```\n\nSimilarly, multiple modules can be plotting in a grid of UMAPs:\n\n```{r module_umaps_grid}\nplotDimReduceModule(sce, modules = 70:78, useAssay = useAssay, altExpName = altExpName, reducedDimName = \"celda_UMAP\")\n```\n\nIn this grid, we can see that module 70 (which has high levels of S100A8 and S100A9) is highly expressed in cell populations 2 and 3, module 71 (which contains CD14) can be used to identify all CD14+ monocytes, module 72 (which contains CST3) is expressed across both CD14 and FCGR3A (CD16) expressing monocytes, and module 73 (which contains CD4) is expressed broadly across both monocytes and dendritic cells as well as some T-cell populations. If we were interesting in defining transcriptional programs active across all monocytes, we could examine the genes found in module 72. If we were interested in defining transcriptional programs for all CD14+ monocytes, we could examine the genes in module 71. These patterns can also be observed in the [Probability Map](#probmap)\n\nIn the celda probability map, we saw that the unknown T-cell population 13 had high levels of module 30. We can examine both module heatmaps and module probability maps to further explore this:\n\n```{r module_Tcell_prolif}\nmoduleHeatmap(sce, featureModule = 30, useAssay = useAssay, altExpName = altExpName)\n\nplotDimReduceModule(sce, modules = 30, useAssay = useAssay, altExpName = altExpName, reducedDimName = \"celda_UMAP\")\n```\n\nModule 30 has high levels of genes associated with proliferation including HMGA1, STMN1, PCNA, HMGB2, and TUBA1B. We can therefore re-label these cells as \"Proliferating T-cells\". \n\n# Identification and plotting of marker genes\nIn addition to examining modules, differential expression can be used to identify potential marker genes up-regulated in specific cell populations. The function `findMarkerDiffExp` in the `singleCellTK` package will find markers up-regulated in each cell population compared to all the others. \n\n## Differential expression to identify marker genes\n\n```{r diffExp, message = FALSE}\n# Normalize counts (if not performed previously)\nlibrary(scater)\nsce <- logNormCounts(sce, exprs_values = useAssay, name = \"logcounts\")\n\n# Run differential expression analysis\nsce <- findMarkerDiffExp(sce, useAssay = \"logcounts\", method = \"wilcox\", cluster = celdaClusters(sce), minMeanExpr = 0, fdrThreshold = 0.05, log2fcThreshold = 0, minClustExprPerc = 0, maxCtrlExprPerc = 1)\n```\n\nThe function `plotMarkerDiffExp` can be used to plot the results in a heatmap. The `topN` parameter will plot the top N ranked genes for each cluster. \n\n```{r diffExp_plot, message = FALSE, fig.height = 10}\n# Plot differentially expressed genes that pass additional thresholds 'minClustExprPerc' and 'maxCtrlExprPerc'\nplotMarkerDiffExp(sce, topN = 5, log2fcThreshold = 0, rowLabel = TRUE, fdrThreshold = 0.05, minClustExprPerc = 0.6, maxCtrlExprPerc = 0.4, minMeanExpr = 0)\n```\n\nOther parameters such as `minClustExprPerc` (the minimum number of cells expressing the marker gene in the cluster) and `maxCtrlExprPerc` (the maximum number of cells expression the marker gene in other clusters) can be used to control how specific each marker gene is to each cell populations. Similarly, adding a log2 fold-change cutoff (e.g. 1) can select for markers that are more strongly up-regulated in a cell population.\n\n## Violin plots for marker genes\n\nThe `plotCeldaViolin` function can be used to examine the distribution of expression of various features across cell population clusters derived from celda. Here we can see that the gene CD79A has high expression in the B-cell cluster and HMGB2 has high expression in the proliferating T-cell population.\n\n```{r violin}\n# Normalize counts if not performed in previous steps\nlibrary(scater)\nsce <- logNormCounts(sce, exprs_values = useAssay, name = \"logcounts\")\n\n# Make violin plots for marker genes\nplotCeldaViolin(sce, useAssay = \"logcounts\", features = c(\"CD79A\", \"HMGB2\"))\n```\n\n# Generating HTML reports\n\nThe celda package comes with two functions for generating comprehensive HTML reports that 1) capture the process of selecting K/L for a `celda_CG` model and 2) plot the results from the downstream analysis. The first report runs both `recursiveSplitModule` and `recursiveSplitCell` for selection of `L` and `K`, respectively. To recapitulate the complete analysis presented in this tutorial in the HTML report, the following command can be used:\n\n```{r report_model, eval = FALSE}\nsce <- reportCeldaCGRun(sce, sampleLabel = NULL, useAssay = useAssay, altExpName = altExpName, minCell = 3, minCount = 3, initialL = 10, maxL = 150, initialK = 3, maxK = 25, L = 80, K = 14)\n```\n\nAll of the parameters in this function are the same that were used throughout this tutorial in the `selectFeatures`, `recursiveSplitModule`, and `recursiveSplitCell` functions. Note that this report does **not** do cell filtering, so that must be completed before running this function. The returned SCE object will have the `celda_CG` model with selected `K` and `L` which can be used in any of the downstream plotting functions as well as input into the second plotting report described next.\n\nThe second report takes in as input an SCE object with a fitted `celda_CG` model and systematically generates several plots that facilitate exploratory analysis including cell subpopulation cluster labels on 2-D embeddings, user-specified annotations on 2-D embeddings, module heatmaps, module probabilities, expression of marker genes on 2-D embeddings, and the celda probability map. The report can be generated with the following code:\n\n```{r report_results, eval = FALSE}\nreportCeldaCGPlotResults(sce, reducedDimName = \"celda_UMAP\", features = markers, useAssay = useAssay, altExpName = altExpName, cellAnnot = c(\"total\", \"detected\", \"decontX_contamination\", \"subsets_mito_percent\"), cellAnnotLabel = \"scDblFinder_doublet_call\")\n```\n\nUser-supplied annotations to plot on the 2-D embedding can be specified through the `cellAnnot` and `cellAnnotLabel` variables. Both parameters will allow for plotting of variables stored in the colData of the SCE on the 2-D embedding plot specified by `reducedDimName` parameter. For `cellAnnot`, integer and numeric variables will be plotted as as continuous variables while factors and characters will be plotted as categorical variables. For `cellAnnotLabel`, all variables will be coerced to a factor and the labels of the categories will be plotted on the scatter plot. \n\n\n# Other useful functions\n\n## Matrix factorization\nThe celda model factorizes the original matrix into three matrices:\n\n**1) module -** The probability of each feature in each module (Psi)\n\n**2) cellPopulation -** The probability of each module in each cell population (Phi)\n\n**3) sample -** The probability of each cell population in each sample (Theta)\n\n\nAdditionally, we can calculate the probability of each module within each cell (cell). The cell matrix can essentially be used to replace PCs from PCA and is useful for downstream visualization (e.g. generating 2-D embeddings). All of these matrices can be retrieved with the `factorizeMatrix` function. The matrices are returned in three different versions: unnormalized counts, proportions (normalized by the total), or posterior estimates (where the Dirichlet concentration parameter is added in before normalization).\n\n```{r factorize_matrix, message = FALSE}\n# Factorize the original counts matrix\nfm <- factorizeMatrix(sce)\n\n# Three different version of each matrix:\nnames(fm)\n\n# Get normalized proportional matrices\ndim(fm$proportions$cell) # Matrix of module probabilities for each cell\ndim(fm$proportions$module) # Matrix of feature probabilities for each module\ndim(fm$proportions$cellPopulation) # Matrix of module probabilities for each cell population\ndim(fm$proportions$sample) # Matrix of cell population probabilities in each sample\n```\n\n\n## Changing the feature display name\n\nThe parameter `displayName` can be used to change the labels of the rows from the `rownames` to a column in the `rowData` of the SCE object. The function is available in `plotDimReduceFeature` and `moduleHeatmap`. For example, if we did not change the `rownames` to `Symbol_TENx` in the beginning of the tutorial, the following code still could be run in `moduleHeatmap` to display the gene symbol even if the `rownames` were set to the original Ensembl IDs:\n\n```{r module_heatmap_with_display}\nmoduleHeatmap(sce, featureModule = 27, useAssay = useAssay, altExpName = altExpName, displayName = \"Symbol_TENx\")\n```\n\n\n# Session information\n\n<details>\n<summary>sessionInfo()</summary>\n```{r sessioninfo, echo = FALSE}\nsessionInfo()\n```\n</details> \n"
  },
  {
    "path": "vignettes/articles/decontX_pbmc4k.Rmd",
    "content": "---\ntitle: \"Decontamination of ambient RNA in single-cell genomic data with DecontX\" \nauthor:\n- name: Shiyi (Iris) Yang\n  affiliation: &id Boston University School of Medicine\n- name: Zhe Wang\n  affiliation: *id\n- name: Yuan Yin\n  affiliation: *id\n- name: Joshua Campbell\n  affiliation: *id\n  email: camp@bu.edu\ndate: \"`r Sys.Date()`\"\noutput: \n  BiocStyle::html_document:\n    toc: true\nvignette: >\n  %\\VignetteIndexEntry{Estimate and remove cross-contamination from ambient RNA in single-cell data with DecontX}\n  %\\VignetteEngine{knitr::rmarkdown}\n  %\\VignetteEncoding{UTF-8}\n---\n\n```{r setup, include=FALSE}\nknitr::opts_chunk$set(echo = TRUE, dev = \"png\")\n```\n\n# Introduction\nDroplet-based microfluidic devices have become widely used to perform single-cell RNA sequencing (scRNA-seq). However, ambient RNA present in the cell suspension can be aberrantly counted along with a cell’s native mRNA and result in cross-contamination of transcripts between different cell populations. DecontX is a Bayesian method to estimate and remove contamination in individual cells. DecontX assumes the observed expression of a cell is a mixture of counts from two multinomial distributions: (1) a distribution of native transcript counts from the cell’s actual population and (2) a distribution of contaminating transcript counts from all other cell populations captured in the assay. Overall, computational decontamination of single cell counts can aid in downstream clustering and visualization. \n\nThe package can be loaded using the `library` command.\n\n```{r load, eval=TRUE, message=FALSE}\nlibrary(celda)\n```\n\n# Importing data\n\nDecontX can take either a [SingleCellExperiment](https://bioconductor.org/packages/release/bioc/html/SingleCellExperiment.html) object or a counts matrix as input. `decontX` will attempt to convert any input matrix to class `dgCMatrix` from package [Matrix](https://cran.r-project.org/web/packages/Matrix/index.html) before starting the analysis.\n\nTo import datasets directly into an SCE object, the [singleCellTK](https://bioconductor.org/packages/release/bioc/html/singleCellTK.html) package has several importing functions for different preprocessing tools including CellRanger, STARsolo, BUStools, Optimus, DropEST, SEQC, and Alevin/Salmon. For example, the following code can be used as a template to read in the filtered and raw matrices for multiple samples processed with CellRanger:\n\n```{r sce_import, eval = FALSE}\nlibrary(singleCellTK)\nsce <- importCellRanger(sampleDirs = c(\"path/to/sample1/\", \"path/to/sample2/\"))\n```\n\nWithin each sample directory, there should be subfolders called `\"outs/filtered_feature_bc_matrix/\"` or `\"outs/raw_feature_bc_matrix/\"` with files called `matrix.mtx.gz`, `features.tsv.gz` and `barcodes.tsv.gz`. If these files are in different subdirectories, the `importCellRangerV3Sample` function can be used to import data from a different directory instead. \n\nOptionally, the \"raw\" or \"droplet\" matrix can also be easily imported by setting the `dataType` argument to \"raw\":\n\n```{r sce_import_raw, eval = FALSE}\nsce.raw <- importCellRanger(sampleDirs = c(\"path/to/sample1/\", \"path/to/sample2/\"), dataType = \"raw\")\n```\n\nThe raw matrix can be passed to the `background` parameter in `decontX` as described below. If using Seurat, go to the [Working with Seurat](#seurat) section for details on how to convert between SCE and Seurat objects.\n\n# Load PBMC4k data from 10X\n\nWe will utilize the 10X PBMC 4K dataset as an example in this vignette. This data can be easily retrieved from the package [TENxPBMCData](http://bioconductor.org/packages/release/data/experiment/html/TENxPBMCData.html). Make sure the the column names are set before running decontX.\n\n```{r load_10X, eval=TRUE, message=FALSE}\n# Load PBMC data\nlibrary(TENxPBMCData)\nsce <- TENxPBMCData(\"pbmc4k\")\ncolnames(sce) <- paste(sce$Sample, sce$Barcode, sep = \"_\")\nrownames(sce) <- rowData(sce)$Symbol_TENx\ncounts(sce) <- as(counts(sce), \"dgCMatrix\")\n```\n\n\n# Running decontX\n\nA SingleCellExperiment (SCE) object or a sparse matrix containing the counts for filtered cells can be passed to decontX via the `x` parameter. The matrix to use in an SCE object can be specified with the `assayName` parameter, which is set to `\"counts\"` by default. There are two major ways to run decontX: with and without the raw/droplet matrix containing empty droplets. Here is an example of running decontX without supplying the background:\n\n```{r decontX, eval=TRUE, message=FALSE}\nsce <- decontX(sce)\n```\n\nIn this scenario, `decontX` will estimate the contamination distribution for each cell cluster based on the profiles of the other cell clusters in the filtered dataset. The estimated contamination results can be found in the `colData(sce)$decontX_contamination` and the decontaminated counts can be accessed with `decontXcounts(sce)`. `decontX` will perform heuristic clustering to quickly define major cell clusters. However if you have your own cell cluster labels, they can be specified with the `z` parameter. These results will be used throughout the rest of the vignette. \n\nThe raw/droplet matrix can be used to empirically estimate the distribution of ambient RNA, which is especially useful when cells that contributed to the ambient RNA are not accurately represented in the filtered count matrix containing the cells. For example, cells that were removed via flow cytometry or that were more sensitive to lysis during dissociation may have contributed to the ambient RNA but were not measured in the filtered/cell matrix. The raw/droplet matrix can be input as an SCE object or a sparse matrix using the `background` parameter:\n\n```{r decontX_background, eval=FALSE, message=FALSE}\nsce <- decontX(sce, background = sce.raw)\n```\n\nOnly empty droplets in the background matrix should be used to estimate the ambient RNA. If any cell ids (i.e. `colnames`) in the raw/droplet matrix supplied to the `background` parameter are also found in the filtered counts matrix (`x`), decontX will automatically remove them from the raw matrix. However, if the cell ids are not available for the input matrices, decontX will treat the entire `background` input as empty droplets. All of the outputs are the same as when running decontX without setting the `background` parameter.\n\n> Note: If the input object is just a matrix and not an SCE object, make sure to save the output into a variable with a different name (e.g. `result <- decontX(mat)`). The result object will be a list with contamination in `result$contamination` and the decontaminated counts in `result$decontXcounts`. \n\n# Plotting DecontX results\n\n## Cluster labels on UMAP\nDecontX creates a UMAP which we can use to plot the cluster labels automatically identified in the analysis. Note that the clustering approach used here is designed to find \"broad\" cell types rather than individual cell subpopulations within a cell type. \n\n```{r UMAP_Clusters}\numap <- reducedDim(sce, \"decontX_UMAP\")\nplotDimReduceCluster(x = sce$decontX_clusters,\n    dim1 = umap[, 1], dim2 = umap[, 2])\n```\n\n## Contamination on UMAP\nThe percentage of contamination in each cell can be plotting on the UMAP to visualize what what clusters may have higher levels of ambient RNA.\n\n```{r plot_decon}\nplotDecontXContamination(sce)\n```\n\n## Expression of markers on UMAP\nKnown marker genes can also be plotted on the UMAP to identify the cell types for each cluster. We will use CD3D and CD3E for T-cells, LYZ, S100A8, and S100A9 for monocytes, CD79A, CD79B, and MS4A1 for B-cells, GNLY for NK-cells, and PPBP for megakaryocytes.\n\n```{r plot_feature, message=FALSE}\nlibrary(scater)\nsce <- logNormCounts(sce)\nplotDimReduceFeature(as.matrix(logcounts(sce)),\n    dim1 = umap[, 1],\n    dim2 = umap[, 2],\n    features = c(\"CD3D\", \"CD3E\", \"GNLY\",\n        \"LYZ\", \"S100A8\", \"S100A9\",\n        \"CD79A\", \"CD79B\", \"MS4A1\"),\n    exactMatch = TRUE)\n```\n\n## Barplot of markers detected in cell clusters\nThe percetage of cells within a cluster that have detectable expression of marker genes can be displayed in a barplot. Markers for cell types need to be supplied in a named list. First, the detection of marker genes in the original `counts` assay is shown:\n\n```{r barplotCounts}\nmarkers <- list(Tcell_Markers = c(\"CD3E\", \"CD3D\"),\n    Bcell_Markers = c(\"CD79A\", \"CD79B\", \"MS4A1\"),\n    Monocyte_Markers = c(\"S100A8\", \"S100A9\", \"LYZ\"),\n    NKcell_Markers = \"GNLY\")\ncellTypeMappings <- list(Tcells = 2, Bcells = 5, Monocytes = 1, NKcells = 6)\nplotDecontXMarkerPercentage(sce,\n    markers = markers,\n    groupClusters = cellTypeMappings,\n    assayName = \"counts\")\n```\n\nWe can then look to see how much decontX removed aberrant expression of marker genes in each cell type by changing the `assayName` to `decontXcounts`:\n\n```{r barplotDecontCounts}\nplotDecontXMarkerPercentage(sce,\n    markers = markers,\n    groupClusters = cellTypeMappings,\n    assayName = \"decontXcounts\")\n```\n\nPercentages of marker genes detected in other cell types were reduced or completely removed. For example, the percentage of cells that expressed Monocyte marker genes was greatly reduced in T-cells, B-cells, and NK-cells.\nThe original counts and decontamined counts can be plotted side-by-side by listing multiple assays in the `assayName` parameter. This option is only available if the data is stored in `SingleCellExperiment` object.\n\n```{r barplotBoth}\nplotDecontXMarkerPercentage(sce,\n    markers = markers,\n    groupClusters = cellTypeMappings,\n    assayName = c(\"counts\", \"decontXcounts\"))\n```\n\nSome helpful hints when using `plotDecontXMarkerPercentage`:\n\n1. Cell clusters can be renamed and re-grouped using the `groupCluster` parameter, which also needs to be a named list. If `groupCluster` is used, cell clusters not included in the list will be excluded in the barplot. For example, if we wanted to group T-cells and NK-cells together, we could set `cellTypeMappings <- list(NK_Tcells = c(2,6), Bcells = 5, Monocytes = 1)`\n2. The level a gene that needs to be expressed to be considered detected in a cell can be adjusted using the `threshold` parameter.\n3. If you are not using a `SingleCellExperiment`, then you will need to supply the original counts matrix or the decontaminated counts matrix as the first argument to generate the barplots. \n\n## Violin plot to compare the distributions of original and decontaminated counts\nAnother useful way to assess the amount of decontamination is to view the expression of marker genes before and after `decontX` across cell types. Here we view the monocyte markers in each cell type. The violin plot shows that the markers have been removed from T-cells, B-cells, and NK-cells, but are largely unaffected in monocytes.\n\n```{r plotDecontXMarkerExpression}\nplotDecontXMarkerExpression(sce,\n    markers = markers[[\"Monocyte_Markers\"]],\n    groupClusters = cellTypeMappings,\n    ncol = 3)\n```\n\nSome helpful hints when using `plotDecontXMarkerExpression`:\n\n1. `groupClusters` works the same way as in `plotDecontXMarkerPercentage`.\n2. This function will plot each pair of markers and clusters (or cell type specified by `groupClusters`). Therefore, you may want to keep the number of markers small in each plot and call the function multiple times for different sets of marker genes. \n3. You can also plot the individual points by setting `plotDots = TRUE` and/or log transform the points on the fly by setting `log1p = TRUE`. \n4. This function can plot any assay in a `SingleCellExperiment`. Therefore you could also examine normalized expression of the original and decontaminated counts. For example:\n\n\n```{r plot_norm_counts, eval = TRUE}\nlibrary(scater)\nsce <- logNormCounts(sce,\n    exprs_values = \"decontXcounts\",\n    name = \"decontXlogcounts\")\n\nplotDecontXMarkerExpression(sce,\n    markers = markers[[\"Monocyte_Markers\"]],\n    groupClusters = cellTypeMappings,\n    ncol = 3,\n    assayName = c(\"logcounts\", \"decontXlogcounts\"))\n```\n\n\n# Other important notes\n\n## Choosing appropriate cell clusters\nThe ability of DecontX to accurately identify contamination is dependent on the cell cluster labels. DecontX assumes that contamination for a cell cluster comes from combination of counts from all other clusters. The default clustering approach used by DecontX tends to select fewer clusters that represent broader cell types. For example, all T-cells tend to be clustered together rather than splitting naive and cytotoxic T-cells into separate clusters. Custom cell type labels can be suppled via the `z` parameter if some cells are not being clustered appropriately by the default method.\n\n## Adjusting the priors to influence contamination estimates\nThere are ways to force `decontX` to estimate more or less contamination across a dataset by manipulating the priors. The `delta` parameter is a numeric vector of length two. It is the concentration parameter for the Dirichlet distribution which serves as the prior for the proportions of native and contamination counts in each cell. The first element is the prior for the proportion of native counts while the second element is the prior for the proportion of contamination counts. These essentially act as pseudocounts for the native and contamination in each cell. If `estimateDelta = TRUE`, `delta` is only used to produce a random sample of proportions for an initial value of contamination in each cell. Then `delta` is updated in each iteration. If `estimateDelta = FALSE`, then `delta` is fixed with these values for the entire inference procedure. Fixing `delta` and setting a high number in the second element will force `decontX` to be more aggressive and estimate higher levels of contamination in each cell at the expense of potentially removing native expression. For example, in the previous PBMC example, we can see what the estimated `delta` was by looking in the estimates:\n\n```{r findDelta}\nmetadata(sce)$decontX$estimates$all_cells$delta\n```\n\nSetting a higher value in the second element of delta and `estimateDelta = FALSE` will force `decontX` to estimate higher levels of contamination per cell:\n\n```{r newDecontX, eval=TRUE, message=FALSE}\nsce.delta <- decontX(sce, delta = c(9, 20), estimateDelta = FALSE)\n\nplot(sce$decontX_contamination, sce.delta$decontX_contamination,\n     xlab = \"DecontX estimated priors\",\n     ylab = \"Setting priors to estimate higher contamination\")\nabline(0, 1, col = \"red\", lwd = 2)\n```\n\n## Working with Seurat {#seurat}\n\nIf you are using the [Seurat](https://cran.r-project.org/web/packages/Seurat/index.html) package for downstream analysis, the following code can be used to read in a matrix and convert between Seurat and SCE objects:\n\n```{r seurat_create, eval = FALSE}\n# Read counts from CellRanger output\nlibrary(Seurat)\ncounts <- Read10X(\"sample/outs/filtered_feature_bc_matrix/\")\n\n# Create a SingleCellExperiment object and run decontX\nsce <- SingleCellExperiment(list(counts = counts))\nsce <- decontX(sce)\n\n# Create a Seurat object from a SCE with decontX results\nseuratObject <- CreateSeuratObject(round(decontXcounts(sce)))\n```\n\nOptionally, the \"raw\" matrix can be also be imported and used as the background:\n\n```{r seurat_raw, eval = FALSE}\ncounts.raw <- Read10X(\"sample/outs/raw_feature_bc_matrix/\")\nsce.raw <- SingleCellExperiment(list(counts = counts.raw))\nsce <- decontX(sce, background = sce.raw)\n```\n\nNote that the decontaminated matrix of decontX consists of floating point numbers and must be rounded to integers before adding it to a Seurat object. If you already have a Seurat object containing the counts matrix and would like to run decontX, you can retrieve the count matrix, create a SCE object, and run decontX, and then add it back to the Seurat object:\n\n```{r seurat_create2, eval = FALSE}\ncounts <- GetAssayData(object = seuratObject, slot = \"counts\")\nsce <- SingleCellExperiment(list(counts = counts))\nsce <- decontX(sce)\nseuratObj[[\"decontXcounts\"]] <- CreateAssayObject(counts = decontXcounts(sce))\n```\n\n\n# Session Information\n\n```{r}\nsessionInfo()\n```\n\n"
  },
  {
    "path": "vignettes/articles/installation.Rmd",
    "content": "\n# Introduction\n\n\"celda\" stands for \"**CE**llular **L**atent **D**irichlet **A**llocation\". It is a suite of Bayesian hierarchical models and supporting functions to perform gene and cell clustering for count data generated by single cell RNA-seq platforms. This algorithm is an extension of the Latent Dirichlet Allocation (LDA) topic modeling framework that has been popular in text mining applications. This package also includes a method called **decontX** which can be used to estimate and remove contamination in single cell genomic data. \n\n# Installation \n\nTo install the latest stable release of **celda** from [Bioconductor](http://bioconductor.org/packages/celda/) (requires R version >= 3.6):\n\n```{r bioc, eval = FALSE}\nif (!requireNamespace(\"BiocManager\", quietly = TRUE))\n    install.packages(\"BiocManager\")\nBiocManager::install(\"celda\")\n```\n\nThe latest stable version  of **celda** can be installed from GitHub using `devtools`:\n\n```{r current_version, eval = FALSE}\nlibrary(devtools)\ninstall_github(\"campbio/celda\")\n```\n\nThe development version of **celda** can also be installed from GitHub using `devtools`:\n```{r devel_version, eval = FALSE}\nlibrary(devtools)\ninstall_github(\"campbio/celda@devel\")\n```\n\n**NOTE** For MAC OSX users, `devtools::install_github()` requires installation of **libgit2.** This can be installed via homebrew:\n```\nbrew install libgit2\n```\n\n# Troubleshooting\n\n* If you receive installation errors when Rcpp is being installed and compiled, try following the steps outlined [here](https://thecoatlessprofessor.com/programming/cpp/r-compiler-tools-for-rcpp-on-macos/) to solve the issue\n* If you are running R 4.0.0 or later version on MacOS Catalina and you see error `'wchar.h' file not found`, you can try the method in [this](https://discourse.mc-stan.org/t/dealing-with-catalina-iii/12731/5) link:\n* If you are trying to install **celda** using Rstudio and get this error: `could not find tools necessary to compile a package`, you can try typing this before running the install command:\n\n```\noptions(buildtools.check = function(action) TRUE)\n```\n\nAlso, if you receive installation errors when Rcpp is being installed and compiled, try following the steps outlined here to solve the issue:\n\nhttps://thecoatlessprofessor.com/programming/cpp/r-compiler-tools-for-rcpp-on-macos/\n\nIf you are running R 4.0.0 or later version on MacOS Catalina and you see error `'wchar.h' file not found`, you can try the method in this link:\n\nhttps://discourse.mc-stan.org/t/dealing-with-catalina-iii/12731/5\n\nIf you are trying to install on MacOS in an Apple Silicon computater and you see the following error:\n\n```\nld: warning: directory not found for option '-L/opt/gfortran/lib/gcc/x86_64-apple-darwin20.0/12.2.0'\nld: warning: directory not found for option '-L/opt/gfortran/lib'\nld: library not found for -lgfortran\nclang: error: linker command failed with exit code 1 (use -v to see invocation)\nmake: *** [celda.so] Error 1\nERROR: compilation failed for package ‘celda’\n```\n\nYou can solve this by downloading and installing the gfortran pkg located [here](https://mac.r-project.org/tools/gfortran-12.2-universal.pkg) and then running the following command:\n\nYou can solve this by downloading and installing the gfortran pkg located [here](https://mac.r-project.org/tools/gfortran-12.2-universal.pkg) and then running the following command:\n\n```\nsudo /opt/gfortran/bin/gfortran-update-sdk\n```\n\n# Vignettes and examples\n\nTo build the vignettes for Celda and DecontX during installation from GitHub, use the following command:\n\n```\nlibrary(devtools)\ninstall_github(\"campbio/celda\", build_vignettes = TRUE)\n```\n\nNote that installation may take an extra 5-10 minutes for building of the vignettes. The Celda and DecontX vignettes can then be accessed via the following commands:\n```\nvignette(\"celda\")\nvignette(\"decontX\")\n```\n\n\n"
  },
  {
    "path": "vignettes/celda.Rmd",
    "content": "---\ntitle: \"Analysis of single-cell genomic data with celda\"\nauthor:\n- name: Joshua Campbell\n  affiliation: Boston University School of Medicine\n  email: camp@bu.edu\n- name: Zhe Wang\n  affiliation: Boston University School of Medicine\n- name: Shiyi Yang\n  affiliation: Boston University School of Medicine\n- name: Sean Corbett\n  affiliation: Boston University School of Medicine\n- name: Yusuke Koga\n  affiliation: Boston University School of Medicine\ndate: \"`r Sys.Date()`\"\noutput: \n  BiocStyle::html_document:\n    toc: true\nvignette: >\n  %\\VignetteIndexEntry{Analysis of single-cell genomic data with celda}\n  %\\VignetteEngine{knitr::rmarkdown}\n  %\\VignetteEncoding{UTF-8}\n---\n\n```{r setup, include=FALSE}\nknitr::opts_chunk$set(echo = TRUE, dev = \"png\")\n```\n\n# Introduction\n\n**CE**llular **L**atent **D**irichlet **A**llocation (celda) is a collection of Bayesian hierarchical models to perform feature and cell bi-clustering for count data generated by single-cell platforms. This algorithm is an extension of the Latent Dirichlet Allocation (LDA) topic modeling framework that has been popular in text mining applications and has shown good performance with sparse data. celda simultaneously clusters features (i.e. gene expression) into modules based on co-expression patterns across cells and cells into subpopulations based on the probabilities of the feature modules within each cell.  \n\nStarting from Bioconductor release 3.12 (`celda` version 1.6.0), `celda` makes use of `r BiocStyle::Biocpkg(\"SingleCellExperiment\")` (SCE) objects for storing data and results. In this vignette we will demonstrate how to use celda to perform cell and feature clustering with a simple, small simulated dataset. This vignette does not include upstream importing of data, quality control, or filtering. To see a more complete analysis of larger real-world datasets, visit [camplab.net/celda](https://www.camplab.net/celda/) for additional vignettes.\n\n# Installation\n\ncelda can be installed from Bioconductor:\n\n```{r install, eval= FALSE}\nif (!requireNamespace(\"BiocManager\", quietly = TRUE)) {\n    install.packages(\"BiocManager\")\n}\nBiocManager::install(\"celda\")\n```\n\nTo load the package, type the following:\n\n```{r library, message = FALSE}\nlibrary(celda)\n```\n\nA complete list of help files are accessible using the help command with the `package` option.\n\n```{r help, eval = FALSE}\nhelp(package = celda)\n```\n\nTo see the latest updates and releases or to post a bug, see our GitHub page at https://github.com/campbio/celda. To ask questions about running celda, post a thread on Bioconductor support site at https://support.bioconductor.org/.\n\n<br>\n\n# Generation of a simulated single cell dataset\n\ncelda will take a matrix of counts where each row is a feature, each column is a cell, and each entry in the matrix is the number of counts of each feature in each cell. To illustrate the utility of celda, we will apply it to a simulated dataset.\n\nIn the function `simulateCells`, the **K** parameter designates the number of cell clusters, the **L** parameter determines the number of feature modules, the **S** parameter determines the number of samples in the simulated dataset, the **G** parameter determines the number of features to be simulated, and **CRange** specifies the lower and upper bounds of the number of cells to be generated in each sample.\n\nTo simulate a dataset of 5 samples with 5 cell populations, 10 feature modules, 200 features, and between 30 to 50 cells per sample using `celda_CG` model:\n\n```{r simulate}\nsimsce <- simulateCells(\"celda_CG\",\n    S = 5, K = 5, L = 10, G = 200, CRange = c(30, 50))\n```\n\nThe `counts` assay slot in `simsce` contains the counts matrix. The dimensions of counts matrix:\n\n```{r assay, message = FALSE}\nlibrary(SingleCellExperiment)\ndim(counts(simsce))\n```\n\nColumns `celda_sample_label` and `celda_cell_cluster` in `colData(simsce)` contain sample labels and celda cell population cluster labels. Here are the numbers of cells in each subpopulation and in each sample:\n\n```{r cell_numbers}\ntable(colData(simsce)$celda_cell_cluster)\ntable(colData(simsce)$celda_sample_label)\n```\n\nColumn `celda_feature_module` in `rowData(simsce)` contains feature module labels. Here is the number of features in each feature module:\n\n```{r module_numbers}\ntable(rowData(simsce)$celda_feature_module)\n```\n\n# Feature selection\n\nA simple heuristic feature selection is performed to reduce the size of features used for clustering. To speed up the process, only features with at least 3 counts in at least 3 cells are included in downstream clustering for this data. A subset `SingleCellExperiment` object with filtered features is stored in `altExp(simsce, \"featureSubset\")` slot by default.\n\n```{r, warning = FALSE, message = FALSE}\nsimsce <- selectFeatures(simsce)\n```\n\nIf the number of features is still too large, then a smaller subset of features can be obtained by selecting the top number of most variable genes. For an example code, see the PBMC3K tutorial in the online celda [documentation](https://www.camplab.net/celda).\n\n# Performing bi-clustering with celda\n\nThere are currently three models within *celda* package: `celda_C` will cluster cells, `celda_G` will cluster features, and `celda_CG` will simultaneously cluster cells and features. Within the functions the `K` parameter will be the number of cell populations to be estimated, while the `L` parameter will be the number of feature modules to be estimated in the output model.\n\n```{r celda_cg, warning = FALSE, message = FALSE}\nsce <- celda_CG(x = simsce, K = 5, L = 10, verbose = FALSE, nchains = 1)\n```\n\nHere is a comparison between the true cluster labels and the estimated cluster labels.\n\n```{r accuracy}\ntable(celdaClusters(sce), celdaClusters(simsce))\ntable(celdaModules(sce), celdaModules(simsce))\n```\n\n# Visualization\n\n## Plotting cell populations on 2D-embeddings\n\ncelda contains its own wrapper function for tSNE and UMAP called `celdaTsne` and `celdaUmap`, respectively. Both of these functions can be used to embed cells into 2-dimensions. The output can be used in the downstream plotting functions `plotDimReduceCluster`, `plotDimReduceModule`, and `plotDimReduceFeature` to show cell population clusters, module probabilities, and expression of individual features, respectively.\n\n```{r umap}\nsce <- celdaUmap(sce)\n```\n\n```{r plot_umap, eval = TRUE, fig.width = 7, fig.height = 7}\nplotDimReduceCluster(x = sce, reducedDimName = \"celda_UMAP\")\n\nplotDimReduceModule(x = sce, reducedDimName = \"celda_UMAP\", rescale = TRUE)\n\nplotDimReduceFeature(x = sce, reducedDimName = \"celda_UMAP\",\n    normalize = TRUE, features = \"Gene_1\")\n```\n\n## Creating an expression heatmap\n\nThe clustering results can be viewed with a heatmap of the normalized counts using the function `celdaHeatmap`. The top `nfeatures` in each module will be selected according to the factorized module probability matrix. \n\n```{r celda_heatmap, eval = TRUE, fig.width = 7, fig.height = 7}\nplot(celdaHeatmap(sce = sce, nfeatures = 10))\n```\n\n## Displaying relationships between modules and cell populations\n\nThe relationships between feature modules and cell populations can be visualized with `celdaProbabilityMap`. The absolute probabilities of each feature module in each cellular subpopulation is shown on the left. The normalized and z-scored expression of each module in each cell population is shown on the right.\n\n```{r propmap, eval = TRUE, fig.width = 7, fig.height = 7}\nceldaProbabilityMap(sce)\n```\n\n## Examining co-expression with module heatmaps\n\n`moduleHeatmap` creates a heatmap using only the features from a specific feature module. Cells are ordered from those with the lowest probability of the module to the highest. If more than one module is used, then cells will be ordered by the probabilities of the first module.\n\n```{r module_heatmap, eval = TRUE, fig.width = 7, fig.height = 7}\nmoduleHeatmap(sce, featureModule = c(1,2), topCells = 100)\n```\n\n\n# Identifying reasonable numbers of feature modules and cell subpopulations\n\nIn the previous example, the best `K` (the number of cell clusters) and `L` (the number of feature modules) was already known. However, the optimal `K` and `L` for each new dataset will likely not be known beforehand and multiple choices of `K` and `L` may need to be tried and compared. celda offers two sets of functions to determine the optimum `K` and `L`, `recursiveSplitModule`/`recursiveSplitCell`, and `celdaGridSearch`.\n\n## Using recursive splitting\n\nFunctions `recursiveSplitModule` and `recursiveSplitCell` offer a fast method to generate a celda model with optimum `K` and `L`. First, `recursiveSplitModule` is used to determine the optimal `L`. `recursiveSplitModule` first splits features into however many modules are specified in `initialL`. The module labels are then recursively split in a way that would generate the highest log-likelihood, all the way up to `maxL`.\n\n```{r, message = FALSE}\nmoduleSplit <- recursiveSplitModule(simsce, initialL = 2, maxL = 15)\n```\n\nPerplexity is a statistical measure of how well a probability model can predict new data. Lower perplexity indicates a better model. The perplexity of each model can be visualized with `plotGridSearchPerplexity`. In general, visual inspection of the plot can be used to select the optimal number of modules (`L`) or cell populations (`K`) by identifying the \"elbow\" - where the rate of decrease in the perplexity starts to drop off.\n\n```{r}\nplotGridSearchPerplexity(moduleSplit)\n```\n\nIn this example, the perplexity for `L` stops decreasing at L = 10, thus L = 10 would be a good choice. Sometimes the perplexity alone does not show a clear elbow or \"leveling off\". However, the rate of perplexity change (RPC) can be more informative to determine when adding new modules does not add much additional information [Zhao et al., 2015](https://doi.org/10.1186/1471-2105-16-S13-S8){target=\"_blank\"}). An RPC closer to zero indicates that the addition of new modules or cell clusters is not substantially decreasing the perplexity. The RPC of models can be visualized using function `plotRPC`:\n\n```{r module_split_rpc, message = FALSE, warning = FALSE}\nplotRPC(moduleSplit)\n```\n\nOnce you have identified the optimal `L` (in this case, L is selected to be 10), the module labels are used for initialization in `recursiveSplitCell`. Similarly to `recursiveSplitModule`, cells are initially split into a small number of subpopulations, and the subpopulations are recursively split up.\n\n```{r module_split_select, message = FALSE}\nmoduleSplitSelect <- subsetCeldaList(moduleSplit, params = list(L = 10))\n\ncellSplit <- recursiveSplitCell(moduleSplitSelect,\n    initialK = 3,\n    maxK = 12,\n    yInit = celdaModules(moduleSplitSelect))\n```\n\n```{r rpc_cell}\nplotGridSearchPerplexity(cellSplit)\nplotRPC(cellSplit)\n```\n\nIn this plot, the perplexity for K stops decreasing at K = 5, with a final K/L combination of K = 5, L = 10. Generally, this method can be used to pick a reasonable `L` and a potential range of `K`. However, manual review of specific selections of `K` is often required to ensure results are biologically coherent.\n\nOnce users have chosen the K/L parameters for further analysis, the `subsetCeldaList` function can be used to subset the celda list *SCE* object to a single model *SCE* object.\n\n```{r subset_celda, eval = TRUE}\nsce <- subsetCeldaList(cellSplit, params = list(K = 5, L = 10))\n```\n\n## Using a grid search\n\nAlternativley to recursive splitting, celda is able to run multiple combinations of K and L with multiple chains in parallel via the `celdaGridSearch` function. \n\n```{r grid_search, eval = TRUE, message = FALSE}\ncgs <- celdaGridSearch(simsce,\n    paramsTest = list(K = seq(4, 6), L = seq(9, 11)),\n    cores = 1,\n    model = \"celda_CG\",\n    nchains = 2,\n    maxIter = 100,\n    verbose = FALSE,\n    bestOnly = TRUE)\n```\n\nSetting `verbose` to `TRUE` will print the output of each model to a text file. These results can be visualized with `plotGridSearchPerplexity`. The major goal is to pick the lowest `K` and `L` combination with relatively good perplexity. In general, visual inspection of the plot can be used to select the number of modules (`L`) or cell populations (`K`) where the rate of decrease in the perplexity starts to drop off. `bestOnly = TRUE` indicates that only the chain with the best log likelihood will be returned for each K/L combination.\n\n```{r plot_grid_search, eval = TRUE, fig.width = 8, fig.height = 8, warning = FALSE, message = FALSE}\nplotGridSearchPerplexity(cgs)\n```\n\nIn this example, the perplexity for `L` stops decreasing at L = 10 for the majority of `K` values. For the line corresponding to L = 10, the perplexity stops decreasing at K = 5. Thus L = 10 and K = 5 would be a good choice. Again, manual review of specific selections of K is often be required to ensure results are biologically coherent.\n\nOnce users have chosen the K/L parameters for further analysis, the `subsetCeldaList` function can be used to subset the celda list *SCE* object to a single model *SCE* object.\n\n```{r subset_grid_search, eval = TRUE}\nsce <- subsetCeldaList(cgs, params = list(K = 5, L = 10))\n```\n\nIf the \"bestOnly\" parameter is set to FALSE in the `celdaGridSearch`, then the `selectBestModel` function can be used to select the chains with the lowest log likelihoods within each combination of parameters. Alternatively, users can select a specific chain by specifying the index within the `subsetCeldaList` function.\n\n```{r best_only_cgs, eval = FALSE, message=FALSE}\ncgs <- celdaGridSearch(simsce,\n    paramsTest = list(K = seq(4, 6), L = seq(9, 11)),\n    cores = 1,\n    model = \"celda_CG\",\n    nchains = 2,\n    maxIter = 100,\n    verbose = FALSE,\n    bestOnly = FALSE)\n\ncgs <- resamplePerplexity(cgs, celdaList = cgs, resample = 2)\n\ncgsK5L10 <- subsetCeldaList(cgs, params = list(K = 5, L = 10))\n\nsce <- selectBestModel(cgsK5L10)\n```\n\n\n# Miscellaneous utility functions\n\ncelda also contains several utility functions for the users' convenience.\n\n## Finding the modules for feature with featureModuleLookup\n\n`featureModuleLookup` can be used to look up the module a specific feature was clustered to. \n\n```{r module_lookup}\nfeatureModuleLookup(sce, feature = c(\"Gene_99\"))\n```\n\n## Reordering cluster labels with recodeClusterZ, recodeClusterY\n\n`recodeClusterZ` and `recodeClusterY` allows the user to recode the cell and feature cluster labels, respectively. \n\n```{r recode_clusters}\nsceZRecoded <- recodeClusterZ(sce,\n    from = c(1, 2, 3, 4, 5), to = c(2, 1, 3, 4, 5))\n```\n\nThe model prior to reordering cell labels compared to after reordering cell labels:\n\n```{r recode_clusters_show}\ntable(celdaClusters(sce), celdaClusters(sceZRecoded))\n```\n\n\n# Session Information\n\n```{r session_info}\nsessionInfo()\n```\n"
  },
  {
    "path": "vignettes/decontX.Rmd",
    "content": "---\ntitle: \"Decontamination of ambient RNA in single-cell genomic data with DecontX\" \nauthor:\n- name: Shiyi (Iris) Yang\n  affiliation: &id Boston University School of Medicine\n- name: Zhe Wang\n  affiliation: *id\n- name: Yuan Yin\n  affiliation: *id\n- name: Joshua Campbell\n  affiliation: *id\n  email: camp@bu.edu\ndate: \"`r Sys.Date()`\"\noutput: \n  BiocStyle::html_document:\n    toc: true\nvignette: >\n  %\\VignetteIndexEntry{Estimate and remove cross-contamination from ambient RNA in single-cell data with DecontX}\n  %\\VignetteEngine{knitr::rmarkdown}\n  %\\VignetteEncoding{UTF-8}\n---\n\n```{r setup, include=FALSE}\nknitr::opts_chunk$set(echo = TRUE, dev = \"png\")\n```\n\n# Introduction\nDroplet-based microfluidic devices have become widely used to perform single-cell RNA sequencing (scRNA-seq). However, ambient RNA present in the cell suspension can be aberrantly counted along with a cell’s native mRNA and result in cross-contamination of transcripts between different cell populations. DecontX is a Bayesian method to estimate and remove contamination in individual cells. DecontX assumes the observed expression of a cell is a mixture of counts from two multinomial distributions: (1) a distribution of native transcript counts from the cell’s actual population and (2) a distribution of contaminating transcript counts from all other cell populations captured in the assay. Overall, computational decontamination of single cell counts can aid in downstream clustering and visualization. \n\nThe package can be loaded using the `library` command.\n\n```{r load, eval=TRUE, message=FALSE}\nlibrary(celda)\n```\n\n# Importing data\n\nDecontX can take either a [SingleCellExperiment](https://bioconductor.org/packages/release/bioc/html/SingleCellExperiment.html) object or a counts matrix as input. `decontX` will attempt to convert any input matrix to class `dgCMatrix` from package [Matrix](https://cran.r-project.org/web/packages/Matrix/index.html) before starting the analysis.\n\nTo import datasets directly into an SCE object, the [singleCellTK](https://bioconductor.org/packages/release/bioc/html/singleCellTK.html) package has several importing functions for different preprocessing tools including CellRanger, STARsolo, BUStools, Optimus, DropEST, SEQC, and Alevin/Salmon. For example, the following code can be used as a template to read in the filtered and raw matrices for multiple samples processed with CellRanger:\n\n```{r sce_import, eval = FALSE}\nlibrary(singleCellTK)\nsce <- importCellRanger(sampleDirs = c(\"path/to/sample1/\", \"path/to/sample2/\"))\n```\n\nWithin each sample directory, there should be subfolders called `\"outs/filtered_feature_bc_matrix/\"` or `\"outs/raw_feature_bc_matrix/\"` with files called `matrix.mtx.gz`, `features.tsv.gz` and `barcodes.tsv.gz`. If these files are in different subdirectories, the `importCellRangerV3Sample` function can be used to import data from a different directory instead. \n\nOptionally, the \"raw\" or \"droplet\" matrix can also be easily imported by setting the `dataType` argument to \"raw\":\n\n```{r sce_import_raw, eval = FALSE}\nsce.raw <- importCellRanger(sampleDirs = c(\"path/to/sample1/\", \"path/to/sample2/\"), dataType = \"raw\")\n```\n\nThe raw matrix can be passed to the `background` parameter in `decontX` as described below. If using Seurat, go to the [Working with Seurat](#seurat) section for details on how to convert between SCE and Seurat objects.\n\n# Load PBMC4k data from 10X\n\nWe will utilize the 10X PBMC 4K dataset as an example in this vignette. This data can be easily retrieved from the package [TENxPBMCData](http://bioconductor.org/packages/release/data/experiment/html/TENxPBMCData.html). Make sure the the column names are set before running decontX.\n\n```{r load_10X, eval=TRUE, message=FALSE}\n# Load PBMC data\nlibrary(TENxPBMCData)\nsce <- TENxPBMCData(\"pbmc4k\")\ncolnames(sce) <- paste(sce$Sample, sce$Barcode, sep = \"_\")\nrownames(sce) <- rowData(sce)$Symbol_TENx\ncounts(sce) <- as(counts(sce), \"dgCMatrix\")\n```\n\n\n# Running decontX\n\nA SingleCellExperiment (SCE) object or a sparse matrix containing the counts for filtered cells can be passed to decontX via the `x` parameter. The matrix to use in an SCE object can be specified with the `assayName` parameter, which is set to `\"counts\"` by default. There are two major ways to run decontX: with and without the raw/droplet matrix containing empty droplets. Here is an example of running decontX without supplying the background:\n\n```{r decontX, eval=TRUE, message=FALSE}\nsce <- decontX(sce)\n```\n\nIn this scenario, `decontX` will estimate the contamination distribution for each cell cluster based on the profiles of the other cell clusters in the filtered dataset. The estimated contamination results can be found in the `colData(sce)$decontX_contamination` and the decontaminated counts can be accessed with `decontXcounts(sce)`. `decontX` will perform heuristic clustering to quickly define major cell clusters. However if you have your own cell cluster labels, they can be specified with the `z` parameter. These results will be used throughout the rest of the vignette. \n\nThe raw/droplet matrix can be used to empirically estimate the distribution of ambient RNA, which is especially useful when cells that contributed to the ambient RNA are not accurately represented in the filtered count matrix containing the cells. For example, cells that were removed via flow cytometry or that were more sensitive to lysis during dissociation may have contributed to the ambient RNA but were not measured in the filtered/cell matrix. The raw/droplet matrix can be input as an SCE object or a sparse matrix using the `background` parameter:\n\n```{r decontX_background, eval=FALSE, message=FALSE}\nsce <- decontX(sce, background = sce.raw)\n```\n\nOnly empty droplets in the background matrix should be used to estimate the ambient RNA. If any cell ids (i.e. `colnames`) in the raw/droplet matrix supplied to the `background` parameter are also found in the filtered counts matrix (`x`), decontX will automatically remove them from the raw matrix. However, if the cell ids are not available for the input matrices, decontX will treat the entire `background` input as empty droplets. All of the outputs are the same as when running decontX without setting the `background` parameter.\n\n> Note: If the input object is just a matrix and not an SCE object, make sure to save the output into a variable with a different name (e.g. `result <- decontX(mat)`). The result object will be a list with contamination in `result$contamination` and the decontaminated counts in `result$decontXcounts`. \n\n# Plotting DecontX results\n\n## Cluster labels on UMAP\nDecontX creates a UMAP which we can use to plot the cluster labels automatically identified in the analysis. Note that the clustering approach used here is designed to find \"broad\" cell types rather than individual cell subpopulations within a cell type. \n\n```{r UMAP_Clusters}\numap <- reducedDim(sce, \"decontX_UMAP\")\nplotDimReduceCluster(x = sce$decontX_clusters,\n    dim1 = umap[, 1], dim2 = umap[, 2])\n```\n\n## Contamination on UMAP\nThe percentage of contamination in each cell can be plotting on the UMAP to visualize what what clusters may have higher levels of ambient RNA.\n\n```{r plot_decon}\nplotDecontXContamination(sce)\n```\n\n## Expression of markers on UMAP\nKnown marker genes can also be plotted on the UMAP to identify the cell types for each cluster. We will use CD3D and CD3E for T-cells, LYZ, S100A8, and S100A9 for monocytes, CD79A, CD79B, and MS4A1 for B-cells, GNLY for NK-cells, and PPBP for megakaryocytes.\n\n```{r plot_feature, message=FALSE}\nlibrary(scater)\nsce <- logNormCounts(sce)\nplotDimReduceFeature(as.matrix(logcounts(sce)),\n    dim1 = umap[, 1],\n    dim2 = umap[, 2],\n    features = c(\"CD3D\", \"CD3E\", \"GNLY\",\n        \"LYZ\", \"S100A8\", \"S100A9\",\n        \"CD79A\", \"CD79B\", \"MS4A1\"),\n    exactMatch = TRUE)\n```\n\n## Barplot of markers detected in cell clusters\nThe percetage of cells within a cluster that have detectable expression of marker genes can be displayed in a barplot. Markers for cell types need to be supplied in a named list. First, the detection of marker genes in the original `counts` assay is shown:\n\n```{r barplotCounts}\nmarkers <- list(Tcell_Markers = c(\"CD3E\", \"CD3D\"),\n    Bcell_Markers = c(\"CD79A\", \"CD79B\", \"MS4A1\"),\n    Monocyte_Markers = c(\"S100A8\", \"S100A9\", \"LYZ\"),\n    NKcell_Markers = \"GNLY\")\ncellTypeMappings <- list(Tcells = 2, Bcells = 5, Monocytes = 1, NKcells = 6)\nplotDecontXMarkerPercentage(sce,\n    markers = markers,\n    groupClusters = cellTypeMappings,\n    assayName = \"counts\")\n```\n\nWe can then look to see how much decontX removed aberrant expression of marker genes in each cell type by changing the `assayName` to `decontXcounts`:\n\n```{r barplotDecontCounts}\nplotDecontXMarkerPercentage(sce,\n    markers = markers,\n    groupClusters = cellTypeMappings,\n    assayName = \"decontXcounts\")\n```\n\nPercentages of marker genes detected in other cell types were reduced or completely removed. For example, the percentage of cells that expressed Monocyte marker genes was greatly reduced in T-cells, B-cells, and NK-cells.\nThe original counts and decontamined counts can be plotted side-by-side by listing multiple assays in the `assayName` parameter. This option is only available if the data is stored in `SingleCellExperiment` object.\n\n```{r barplotBoth}\nplotDecontXMarkerPercentage(sce,\n    markers = markers,\n    groupClusters = cellTypeMappings,\n    assayName = c(\"counts\", \"decontXcounts\"))\n```\n\nSome helpful hints when using `plotDecontXMarkerPercentage`:\n\n1. Cell clusters can be renamed and re-grouped using the `groupCluster` parameter, which also needs to be a named list. If `groupCluster` is used, cell clusters not included in the list will be excluded in the barplot. For example, if we wanted to group T-cells and NK-cells together, we could set `cellTypeMappings <- list(NK_Tcells = c(2,6), Bcells = 5, Monocytes = 1)`\n2. The level a gene that needs to be expressed to be considered detected in a cell can be adjusted using the `threshold` parameter.\n3. If you are not using a `SingleCellExperiment`, then you will need to supply the original counts matrix or the decontaminated counts matrix as the first argument to generate the barplots. \n\n## Violin plot to compare the distributions of original and decontaminated counts\nAnother useful way to assess the amount of decontamination is to view the expression of marker genes before and after `decontX` across cell types. Here we view the monocyte markers in each cell type. The violin plot shows that the markers have been removed from T-cells, B-cells, and NK-cells, but are largely unaffected in monocytes.\n\n```{r plotDecontXMarkerExpression}\nplotDecontXMarkerExpression(sce,\n    markers = markers[[\"Monocyte_Markers\"]],\n    groupClusters = cellTypeMappings,\n    ncol = 3)\n```\n\nSome helpful hints when using `plotDecontXMarkerExpression`:\n\n1. `groupClusters` works the same way as in `plotDecontXMarkerPercentage`.\n2. This function will plot each pair of markers and clusters (or cell type specified by `groupClusters`). Therefore, you may want to keep the number of markers small in each plot and call the function multiple times for different sets of marker genes. \n3. You can also plot the individual points by setting `plotDots = TRUE` and/or log transform the points on the fly by setting `log1p = TRUE`. \n4. This function can plot any assay in a `SingleCellExperiment`. Therefore you could also examine normalized expression of the original and decontaminated counts. For example:\n\n\n```{r plot_norm_counts, eval = TRUE}\nlibrary(scater)\nsce <- logNormCounts(sce,\n    exprs_values = \"decontXcounts\",\n    name = \"decontXlogcounts\")\n\nplotDecontXMarkerExpression(sce,\n    markers = markers[[\"Monocyte_Markers\"]],\n    groupClusters = cellTypeMappings,\n    ncol = 3,\n    assayName = c(\"logcounts\", \"decontXlogcounts\"))\n```\n\n\n# Other important notes\n\n## Choosing appropriate cell clusters\nThe ability of DecontX to accurately identify contamination is dependent on the cell cluster labels. DecontX assumes that contamination for a cell cluster comes from combination of counts from all other clusters. The default clustering approach used by DecontX tends to select fewer clusters that represent broader cell types. For example, all T-cells tend to be clustered together rather than splitting naive and cytotoxic T-cells into separate clusters. Custom cell type labels can be suppled via the `z` parameter if some cells are not being clustered appropriately by the default method.\n\n## Adjusting the priors to influence contamination estimates\nThere are ways to force `decontX` to estimate more or less contamination across a dataset by manipulating the priors. The `delta` parameter is a numeric vector of length two. It is the concentration parameter for the Dirichlet distribution which serves as the prior for the proportions of native and contamination counts in each cell. The first element is the prior for the proportion of native counts while the second element is the prior for the proportion of contamination counts. These essentially act as pseudocounts for the native and contamination in each cell. If `estimateDelta = TRUE`, `delta` is only used to produce a random sample of proportions for an initial value of contamination in each cell. Then `delta` is updated in each iteration. If `estimateDelta = FALSE`, then `delta` is fixed with these values for the entire inference procedure. Fixing `delta` and setting a high number in the second element will force `decontX` to be more aggressive and estimate higher levels of contamination in each cell at the expense of potentially removing native expression. For example, in the previous PBMC example, we can see what the estimated `delta` was by looking in the estimates:\n\n```{r findDelta}\nmetadata(sce)$decontX$estimates$all_cells$delta\n```\n\nSetting a higher value in the second element of delta and `estimateDelta = FALSE` will force `decontX` to estimate higher levels of contamination per cell:\n\n```{r newDecontX, eval=TRUE, message=FALSE}\nsce.delta <- decontX(sce, delta = c(9, 20), estimateDelta = FALSE)\n\nplot(sce$decontX_contamination, sce.delta$decontX_contamination,\n     xlab = \"DecontX estimated priors\",\n     ylab = \"Setting priors to estimate higher contamination\")\nabline(0, 1, col = \"red\", lwd = 2)\n```\n\n## Working with Seurat {#seurat}\n\nIf you are using the [Seurat](https://cran.r-project.org/web/packages/Seurat/index.html) package for downstream analysis, the following code can be used to read in a matrix and convert between Seurat and SCE objects:\n\n```{r seurat_create, eval = FALSE}\n# Read counts from CellRanger output\nlibrary(Seurat)\ncounts <- Read10X(\"sample/outs/filtered_feature_bc_matrix/\")\n\n# Create a SingleCellExperiment object and run decontX\nsce <- SingleCellExperiment(list(counts = counts))\nsce <- decontX(sce)\n\n# Create a Seurat object from a SCE with decontX results\nseuratObject <- CreateSeuratObject(round(decontXcounts(sce)))\n```\n\nOptionally, the \"raw\" matrix can be also be imported and used as the background:\n\n```{r seurat_raw, eval = FALSE}\ncounts.raw <- Read10X(\"sample/outs/raw_feature_bc_matrix/\")\nsce.raw <- SingleCellExperiment(list(counts = counts.raw))\nsce <- decontX(sce, background = sce.raw)\n```\n\nNote that the decontaminated matrix of decontX consists of floating point numbers and must be rounded to integers before adding it to a Seurat object. If you already have a Seurat object containing the counts matrix and would like to run decontX, you can retrieve the count matrix, create a SCE object, and run decontX, and then add it back to the Seurat object:\n\n```{r seurat_create2, eval = FALSE}\ncounts <- GetAssayData(object = seuratObject, slot = \"counts\")\nsce <- SingleCellExperiment(list(counts = counts))\nsce <- decontX(sce)\nseuratObj[[\"decontXcounts\"]] <- CreateAssayObject(counts = decontXcounts(sce))\n```\n\n\n# Session Information\n\n```{r}\nsessionInfo()\n```\n\n"
  }
]