├── .Rbuildignore ├── .gitignore ├── DESCRIPTION ├── NAMESPACE ├── R ├── data.R ├── helper_CCI.R ├── helper_bulk_expression.R ├── helper_celltype_expression.R ├── helper_pathway.R ├── helper_proportion.R ├── helper_spatial_metrics.R ├── run_scfeatures.R ├── utils.R └── wrapper_run_scfeatures.R ├── README.md ├── _pkgdown.yml ├── data ├── example_scrnaseq.RData └── scfeatures_result.RData ├── docs ├── 404.html ├── articles │ ├── index.html │ ├── scFeatures_associationstudy.html │ ├── scFeatures_associationstudy_files │ │ └── accessible-code-block-0.0.1 │ │ │ └── empty-anchor.js │ ├── scFeatures_detail.html │ ├── scFeatures_detail_files │ │ ├── accessible-code-block-0.0.1 │ │ │ └── empty-anchor.js │ │ └── figure-html │ │ │ ├── unnamed-chunk-12-1.png │ │ │ ├── unnamed-chunk-13-1.png │ │ │ ├── unnamed-chunk-19-1.png │ │ │ └── unnamed-chunk-20-1.png │ ├── scFeatures_overview.html │ ├── scFeatures_overview_files │ │ └── figure-html │ │ │ ├── unnamed-chunk-5-1.png │ │ │ └── unnamed-chunk-6-1.png │ ├── scFeatures_summary.html │ └── scFeatures_summary_files │ │ └── accessible-code-block-0.0.1 │ │ └── empty-anchor.js ├── authors.html ├── bootstrap-toc.css ├── bootstrap-toc.js ├── deps │ ├── bootstrap-5.1.3 │ │ ├── bootstrap.bundle.min.js │ │ ├── bootstrap.bundle.min.js.map │ │ ├── bootstrap.min.css │ │ ├── font.css │ │ └── fonts │ │ │ ├── 1Ptxg8zYS_SKggPN4iEgvnHyvveLxVs9pbCIPrc.woff │ │ │ ├── 1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCIPrc.woff │ │ │ ├── 4iCs6KVjbNBYlgo6ew.woff │ │ │ ├── 4iCs6KVjbNBYlgoKfw7w.woff │ │ │ ├── 4iCv6KVjbNBYlgoCxCvTtA.woff │ │ │ ├── 4iCv6KVjbNBYlgoCxCvjsGyL.woff │ │ │ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDQ.woff │ │ │ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPa7j.woff │ │ │ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3aPA.woff │ │ │ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7j.woff │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3i54rAkw.woff │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vAkw.woff │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdo.woff │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zAkw.woff │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdo.woff │ │ │ ├── CSR54z1Qlv-GDxkbKVQ_dFsvWNRevw.woff │ │ │ ├── CSR54z1Qlv-GDxkbKVQ_dFsvaNA.woff │ │ │ ├── CSR64z1Qlv-GDxkbKVQ_TOQ.woff │ │ │ ├── CSR64z1Qlv-GDxkbKVQ_fOAKSw.woff │ │ │ ├── JTURjIg1_i6t8kCHKm45_ZpC7g0.woff │ │ │ ├── JTURjIg1_i6t8kCHKm45_dJE7g0.woff │ │ │ ├── JTUSjIg1_i6t8kCHKm45xW0.woff │ │ │ ├── KFOlCnqEu92Fr1MmEU9fBBc-.woff │ │ │ ├── KFOlCnqEu92Fr1MmEU9vAA.woff │ │ │ ├── KFOlCnqEu92Fr1MmSU5fBBc-.woff │ │ │ ├── KFOlCnqEu92Fr1MmSU5vAA.woff │ │ │ ├── KFOlCnqEu92Fr1MmWUlfBBc-.woff │ │ │ ├── KFOlCnqEu92Fr1MmWUlvAA.woff │ │ │ ├── KFOmCnqEu92Fr1Me5g.woff │ │ │ ├── KFOmCnqEu92Fr1Mu4mxM.woff │ │ │ ├── QGYpz_kZZAGCONcK2A4bGOj8mNhL.woff │ │ │ ├── S6u8w4BMUTPHjxsAXC-s.woff │ │ │ ├── S6u8w4BMUTPHjxswWA.woff │ │ │ ├── S6u9w4BMUTPHh6UVSwiPHw.woff │ │ │ ├── S6u9w4BMUTPHh6UVeww.woff │ │ │ ├── S6u9w4BMUTPHh7USSwiPHw.woff │ │ │ ├── S6u9w4BMUTPHh7USeww.woff │ │ │ ├── S6uyw4BMUTPHjx4wWA.woff │ │ │ ├── S6uyw4BMUTPHvxo.woff │ │ │ ├── UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuFuYMZs.woff │ │ │ ├── UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuI6fMZs.woff │ │ │ ├── UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfMZs.woff │ │ │ ├── XRXV3I6Li01BKof4MQ.woff │ │ │ ├── XRXW3I6Li01BKofA6sKkZQ.woff │ │ │ ├── XRXW3I6Li01BKofAjsOkZQ.woff │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkWVAexg.woff │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkaVQ.woff │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkWVAexg.woff │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkaVQ.woff │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjWVAexg.woff │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjaVQ.woff │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4gaVQ.woff │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1y4k.woff │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0B4gaVQ.woff │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0C4k.woff │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4gaVQ.woff │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0C4k.woff │ │ │ ├── pe03MImSLYBIv1o4X1M8cc9iB_5p.woff │ │ │ ├── pe0qMImSLYBIv1o4X1M8cfe5.woff │ │ │ └── q5uGsou0JOdh94bfvQlr.woff │ ├── bootstrap-5.2.2 │ │ ├── bootstrap.bundle.min.js │ │ ├── bootstrap.bundle.min.js.map │ │ ├── bootstrap.min.css │ │ ├── font.css │ │ └── fonts │ │ │ ├── 1Ptxg8zYS_SKggPN4iEgvnHyvveLxVs9pbCIPrc.woff │ │ │ ├── 1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCIPrc.woff │ │ │ ├── 1adeadb2fe618c5ed46221f15e12b9c8.woff │ │ │ ├── 4iCs6KVjbNBYlgo6ew.woff │ │ │ ├── 4iCs6KVjbNBYlgoKfw7w.woff │ │ │ ├── 4iCv6KVjbNBYlgoCxCvTtA.woff │ │ │ ├── 4iCv6KVjbNBYlgoCxCvjsGyL.woff │ │ │ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDQ.woff │ │ │ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPa7j.woff │ │ │ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3aPA.woff │ │ │ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7j.woff │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3i54rAkw.woff │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vAkw.woff │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdo.woff │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zAkw.woff │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdo.woff │ │ │ ├── CSR54z1Qlv-GDxkbKVQ_dFsvWNRevw.woff │ │ │ ├── CSR54z1Qlv-GDxkbKVQ_dFsvaNA.woff │ │ │ ├── CSR64z1Qlv-GDxkbKVQ_TOQ.woff │ │ │ ├── CSR64z1Qlv-GDxkbKVQ_fOAKSw.woff │ │ │ ├── HI_diYsKILxRpg3hIP6sJ7fM7PqPMcMnZFqUwX28DBKXhM0.woff │ │ │ ├── HI_diYsKILxRpg3hIP6sJ7fM7PqPMcMnZFqUwX28DMyQhM0.woff │ │ │ ├── HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1rSg.woff │ │ │ ├── HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTsoprSg.woff │ │ │ ├── JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtZ6Ew9.woff │ │ │ ├── JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Ew9.woff │ │ │ ├── JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCuM70w9.woff │ │ │ ├── KFOlCnqEu92Fr1MmEU9fBBc-.woff │ │ │ ├── KFOlCnqEu92Fr1MmEU9vAA.woff │ │ │ ├── KFOlCnqEu92Fr1MmSU5fBBc-.woff │ │ │ ├── KFOlCnqEu92Fr1MmSU5vAA.woff │ │ │ ├── KFOlCnqEu92Fr1MmWUlfBBc-.woff │ │ │ ├── KFOlCnqEu92Fr1MmWUlvAA.woff │ │ │ ├── KFOmCnqEu92Fr1Me5g.woff │ │ │ ├── KFOmCnqEu92Fr1Mu4mxM.woff │ │ │ ├── QGYpz_kZZAGCONcK2A4bGOj8mNhL.woff │ │ │ ├── S6u8w4BMUTPHjxsAXC-s.woff │ │ │ ├── S6u8w4BMUTPHjxswWA.woff │ │ │ ├── S6u9w4BMUTPHh6UVSwiPHw.woff │ │ │ ├── S6u9w4BMUTPHh6UVeww.woff │ │ │ ├── S6u9w4BMUTPHh7USSwiPHw.woff │ │ │ ├── S6u9w4BMUTPHh7USeww.woff │ │ │ ├── S6uyw4BMUTPHjx4wWA.woff │ │ │ ├── S6uyw4BMUTPHvxo.woff │ │ │ ├── UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuFuYMZs.woff │ │ │ ├── UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuI6fMZs.woff │ │ │ ├── UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfMZs.woff │ │ │ ├── XRXI3I6Li01BKofiOc5wtlZ2di8HDFwmRTA.woff │ │ │ ├── XRXI3I6Li01BKofiOc5wtlZ2di8HDGUmRTA.woff │ │ │ ├── XRXI3I6Li01BKofiOc5wtlZ2di8HDLshRTA.woff │ │ │ ├── a98f7a7574819ba83bec6279a2cecd95.woff │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk0ZjaVQ.woff │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkWVAexg.woff │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkaVQ.woff │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkWVAexg.woff │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkaVQ.woff │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk_RkaVQ.woff │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkxhjaVQ.woff │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjWVAexg.woff │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjaVQ.woff │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4gaVQ.woff │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1y4k.woff │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsgH1y4k.woff │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgshZ1y4k.woff │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0B4gaVQ.woff │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0C4k.woff │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4gaVQ.woff │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0C4k.woff │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjr0C4k.woff │ │ │ └── q5uGsou0JOdh94bfvQlr.woff │ ├── data-deps.txt │ └── jquery-3.6.0 │ │ ├── jquery-3.6.0.js │ │ ├── jquery-3.6.0.min.js │ │ └── jquery-3.6.0.min.map ├── docsearch.css ├── docsearch.js ├── index.html ├── link.svg ├── pkgdown.css ├── pkgdown.js ├── pkgdown.yml ├── reference │ ├── L_stats.html │ ├── Rplot001.png │ ├── bulk_sample.html │ ├── bulk_sample_celltype.html │ ├── check_data.html │ ├── example_scrnaseq.html │ ├── generateBPParam.html │ ├── get_num_cell_per_celltype.html │ ├── get_num_cell_per_spot.html │ ├── index.html │ ├── individual_geneset_proportion_celltype.html │ ├── makeSeurat.html │ ├── process_data.html │ ├── rearrange_string.html │ ├── remove_mito.html │ ├── remove_mito_ribo.html │ ├── run_CCI.html │ ├── run_L_function.html │ ├── run_Morans_I.html │ ├── run_association_study_report.html │ ├── run_celltype_interaction.html │ ├── run_gene_cor.html │ ├── run_gene_cor_celltype.html │ ├── run_gene_mean.html │ ├── run_gene_mean_celltype.html │ ├── run_gene_prop.html │ ├── run_gene_prop_celltype.html │ ├── run_nn_correlation.html │ ├── run_pathway_gsva.html │ ├── run_pathway_mean.html │ ├── run_pathway_prop.html │ ├── run_proportion_logit.html │ ├── run_proportion_ratio.html │ ├── run_proportion_raw.html │ ├── scFeatures.html │ └── scfeatures_result.html ├── search.json └── sitemap.xml ├── inst ├── CITATION ├── extdata │ ├── figure │ │ ├── CCI_example_figures.png │ │ ├── aggregatedgene_example_figures.png │ │ ├── celltypegene_example_figures.png │ │ ├── celltypeproportion_example_figures.png │ │ ├── pathway_example_figures.png │ │ └── spatial_example_figures.png │ └── output_report.Rmd ├── overview.png ├── script │ └── example_scrnaseq └── sticker.png ├── man ├── example_scrnaseq.Rd ├── get_num_cell_per_spot.Rd ├── remove_mito_ribo.Rd ├── run_CCI.Rd ├── run_L_function.Rd ├── run_Morans_I.Rd ├── run_association_study_report.Rd ├── run_celltype_interaction.Rd ├── run_gene_cor.Rd ├── run_gene_cor_celltype.Rd ├── run_gene_mean.Rd ├── run_gene_mean_celltype.Rd ├── run_gene_prop.Rd ├── run_gene_prop_celltype.Rd ├── run_nn_correlation.Rd ├── run_pathway_gsva.Rd ├── run_pathway_mean.Rd ├── run_pathway_prop.Rd ├── run_proportion_logit.Rd ├── run_proportion_ratio.Rd ├── run_proportion_raw.Rd ├── scFeatures.Rd └── scfeatures_result.Rd └── vignettes ├── .gitignore └── scFeatures_overview.Rmd /.Rbuildignore: -------------------------------------------------------------------------------- 1 | ^scFeatures\.Rproj$ 2 | ^\.Rproj\.user$ 3 | ^dev$ 4 | ^docs$ 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .Rproj.user 2 | inst/doc 3 | refactoring/* 4 | 5 | .vscode -------------------------------------------------------------------------------- /DESCRIPTION: -------------------------------------------------------------------------------- 1 | Package: scFeatures 2 | Title: scFeatures: Multi-view representations of single-cell and spatial data 3 | for disease outcome prediction 4 | Version: 1.3.4 5 | Authors@R: 6 | c( 7 | person(given = "Yue",family = "Cao", email = "yue.cao@sydney.edu.au", role=c("aut", "cre")), 8 | person(given = "Yingxin",family = "Lin", email = "yingxin.lin@sydney.edu.au", role="aut" ), 9 | person(given = "Ellis",family = "Patrick", email = "ellis.patrick@sydney.edu.au", role="aut" ), 10 | person(given = "Pengyi",family = "Yang", email = "pengyi.yang@sydney.edu.au", role="aut" ), 11 | person(given = "Jean Yee Hwa",family = "Yang", email = "jean.yang@sydney.edu.au", role="aut" )) 12 | Description: scFeatures constructs multi-view representations of single-cell 13 | and spatial data. scFeatures is a tool that generates multi-view 14 | representations of single-cell and spatial data through the 15 | construction of a total of 17 feature types. These features can 16 | then be used for a variety of analyses using other software in 17 | Biocondutor. 18 | License: GPL-3 19 | Encoding: UTF-8 20 | Roxygen: list(markdown = TRUE) 21 | RoxygenNote: 7.2.3 22 | biocViews: CellBasedAssays, SingleCell, Spatial, Software, Transcriptomics 23 | Depends: R (>= 4.2.0) 24 | Imports: 25 | DelayedArray, 26 | DelayedMatrixStats, 27 | EnsDb.Hsapiens.v79, 28 | EnsDb.Mmusculus.v79, 29 | GSVA, 30 | ape, 31 | glue, 32 | dplyr, 33 | ensembldb, 34 | gtools, 35 | msigdbr, 36 | proxyC, 37 | reshape2, 38 | spatstat.explore, 39 | spatstat.geom, 40 | tidyr, 41 | AUCell, 42 | BiocParallel, 43 | rmarkdown, 44 | methods, 45 | stats, 46 | cli, 47 | SingleCellSignalR, 48 | MatrixGenerics, 49 | Seurat, 50 | DT 51 | Suggests: 52 | knitr, 53 | S4Vectors, 54 | survival, 55 | survminer, 56 | BiocStyle, 57 | ClassifyR, 58 | org.Hs.eg.db, 59 | clusterProfiler 60 | VignetteBuilder: knitr 61 | URL: https://sydneybiox.github.io/scFeatures/ https://github.com/SydneyBioX/scFeatures/ 62 | BugReports: https://github.com/SydneyBioX/scFeatures/issues 63 | -------------------------------------------------------------------------------- /NAMESPACE: -------------------------------------------------------------------------------- 1 | # Generated by roxygen2: do not edit by hand 2 | 3 | export(get_num_cell_per_spot) 4 | export(remove_mito_ribo) 5 | export(run_CCI) 6 | export(run_L_function) 7 | export(run_Morans_I) 8 | export(run_association_study_report) 9 | export(run_celltype_interaction) 10 | export(run_gene_cor) 11 | export(run_gene_cor_celltype) 12 | export(run_gene_mean) 13 | export(run_gene_mean_celltype) 14 | export(run_gene_prop) 15 | export(run_gene_prop_celltype) 16 | export(run_nn_correlation) 17 | export(run_pathway_gsva) 18 | export(run_pathway_mean) 19 | export(run_pathway_prop) 20 | export(run_proportion_logit) 21 | export(run_proportion_ratio) 22 | export(run_proportion_raw) 23 | export(scFeatures) 24 | import(DelayedArray) 25 | import(EnsDb.Hsapiens.v79) 26 | import(EnsDb.Mmusculus.v79) 27 | import(SingleCellSignalR) 28 | import(dplyr) 29 | import(rmarkdown) 30 | importFrom(AUCell,AUCell_buildRankings) 31 | importFrom(AUCell,AUCell_calcAUC) 32 | importFrom(AUCell,getAUC) 33 | importFrom(BiocParallel,SerialParam) 34 | importFrom(BiocParallel,bplapply) 35 | importFrom(DelayedArray,DelayedArray) 36 | importFrom(DelayedMatrixStats,colMeans2) 37 | importFrom(DelayedMatrixStats,rowMeans2) 38 | importFrom(DelayedMatrixStats,rowVars) 39 | importFrom(GSVA,gsva) 40 | importFrom(MatrixGenerics,colSums2) 41 | importFrom(ape,Moran.I) 42 | importFrom(cli,cli_abort) 43 | importFrom(cli,cli_warn) 44 | importFrom(dplyr,select) 45 | importFrom(glue,glue) 46 | importFrom(gtools,logit) 47 | importFrom(methods,is) 48 | importFrom(msigdbr,msigdbr) 49 | importFrom(proxyC,simil) 50 | importFrom(reshape2,melt) 51 | importFrom(spatstat.explore,nncorr) 52 | importFrom(spatstat.geom,pairdist) 53 | importFrom(spatstat.geom,ppp) 54 | importFrom(stats,lm) 55 | importFrom(stats,quantile) 56 | importFrom(tidyr,pivot_wider) 57 | -------------------------------------------------------------------------------- /R/data.R: -------------------------------------------------------------------------------- 1 | #' Example of scRNA-seq data 2 | #' 3 | #' This is a subsampled version of the melanoma patients dataset as used in our 4 | #' manuscript. 5 | #' The original dataset is available at: 6 | #' . 7 | #' 8 | #' @usage data("example_scrnaseq") 9 | #' @format ## `example_scrnaseq` 10 | #' A Seurat object with 3523 genes and 550 cells. 11 | #' Some of the key metadata columns are: 12 | #' \describe{ 13 | #' \item{celltype}{cell type of the cell} 14 | #' \item{sample}{patient ID of the cell} 15 | #' \item{condition}{whether the patient is a responder or non-responder} 16 | #' } 17 | #' @source 18 | "example_scrnaseq" 19 | 20 | 21 | #' Example of scFeatures() output 22 | #' 23 | #' This is an example output of the scFeatures() function for example_scrnaseq. 24 | #' 25 | #' @usage data("scfeatures_result") 26 | #' @format ## `scfeatures_result` 27 | #' A list with two dataframes. In each dataframe the columns are each patient and the rows are the feature values. 28 | #' The first dataframe contains the feature type "proportion_raw". 29 | #' The second dataframe contains the feature type "proportion_logit". 30 | "scfeatures_result" -------------------------------------------------------------------------------- /R/helper_CCI.R: -------------------------------------------------------------------------------- 1 | 2 | # helper function to run CCI 3 | helper_CCI <- function( alldata , ncores = 1 ){ 4 | 5 | BPparam <- generateBPParam(ncores) 6 | 7 | data(LRdb, package = "SingleCellSignalR") 8 | 9 | # x <- unique(alldata$sample)[1] 10 | 11 | capture.output( suppressMessages( individual_cci <- BiocParallel::bplapply( unique(alldata$sample), function(x){ 12 | 13 | data_dataframe <- alldata$data[, alldata$sample == x, drop=F] 14 | 15 | celltype <- as.factor( alldata$celltype[ alldata$sample == x]) 16 | celltype_numeric <- as.numeric( celltype) 17 | 18 | signal <- SingleCellSignalR::cell_signaling(data = as.matrix(data_dataframe), 19 | genes = rownames(data_dataframe), 20 | cluster = celltype_numeric, 21 | c.names = levels(celltype), write = FALSE) 22 | 23 | if ( length(signal) == 0 ){ 24 | all_interaction <- data.frame(LRscore = 0, feature = "placeholder" ) 25 | }else{ 26 | # concat interaction from each cell type 27 | all_interaction <- NULL 28 | for ( i in 1:length(signal)){ 29 | this_celltype <- signal[[i]] 30 | this_celltype$feature <- paste0( colnames( this_celltype )[1] , "->" , colnames( this_celltype )[2], 31 | "--", 32 | this_celltype[, 1] , "->", this_celltype[, 2]) 33 | this_celltype <- this_celltype[, c("LRscore", "feature")] 34 | all_interaction <- rbind( all_interaction, this_celltype ) 35 | } 36 | } 37 | 38 | all_interaction 39 | }, BPPARAM = BPparam) ) ) 40 | 41 | 42 | # gather the cell - cell interaction probability into sample x interaction probability matrix 43 | X <- NULL 44 | for (i in c(1:length( individual_cci))){ 45 | temp <- individual_cci[[i]] 46 | temp <- temp[ !duplicated(temp$feature) ,] 47 | 48 | if (is.null(X)){ 49 | X <- temp 50 | }else{ 51 | X <- merge(X, temp , by="feature", all = TRUE) 52 | } 53 | } 54 | rownames(X) <- X$feature 55 | X <- X[!rownames(X) == "placeholder", ] 56 | X <- X[, -1] 57 | colnames(X) <- unique(alldata$sample) 58 | X[is.na(X)] <- 0 59 | 60 | X <- t(X) 61 | 62 | return(X) 63 | 64 | } 65 | 66 | 67 | -------------------------------------------------------------------------------- /R/helper_bulk_expression.R: -------------------------------------------------------------------------------- 1 | 2 | #' This function calculates the mean expression of genes in each sample in 3 | #' a list object. If no list of genes is provided, it will use find_var_gene 4 | #' function to select the top variable genes. 5 | #' 6 | #' @noRd 7 | helper_gene_mean <- function(alldata, genes = NULL, num_top_gene = NULL, ncores = 1) { 8 | 9 | if (is.null(num_top_gene)) { 10 | num_top_gene <- min( nrow( alldata$data), 1500) 11 | } 12 | 13 | if (is.null(genes)) { 14 | gene <- find_var_gene(alldata , 15 | num_top_gene = num_top_gene, 16 | ncores = ncores, celltype = FALSE 17 | ) 18 | } else { 19 | gene <- genes 20 | } 21 | 22 | 23 | alldata$data <- alldata$data[gene, ] 24 | 25 | X <- bulk_sample(alldata, ncores) 26 | X <- t(X) 27 | 28 | return(X) 29 | } 30 | 31 | 32 | #' This function calculates the proportion of expression of genes in 33 | #' each sample in a list object. If no list of genes is provided, it will 34 | #' use find_var_gene function to select the top variable genes. 35 | #' @noRd 36 | helper_gene_prop <- function( alldata, genes = NULL, num_top_gene = NULL, ncores = 1) { 37 | 38 | BPparam <- generateBPParam(ncores) 39 | 40 | if (is.null(num_top_gene)) { 41 | num_top_gene <- min(nrow(alldata$data), 1500) 42 | } 43 | 44 | 45 | if (is.null(genes)) { 46 | gene <- find_var_gene( alldata , 47 | num_top_gene = num_top_gene, 48 | ncores = ncores, celltype = FALSE 49 | ) 50 | } else { 51 | gene <- genes 52 | } 53 | 54 | 55 | alldata$data <- alldata$data[ gene , ] 56 | 57 | # thispatient <- unique( alldata$sample )[1] 58 | gene_prop <- BiocParallel::bplapply( unique(alldata$sample), function(thispatient) { 59 | this_patient_data <- alldata$data[, alldata$sample == thispatient, drop= FALSE] 60 | this_patient_data <- this_patient_data 61 | this_patient_data <- +(this_patient_data > 1) 62 | this_patient_prop <- DelayedMatrixStats::rowMeans2( 63 | DelayedArray::DelayedArray(this_patient_data) 64 | ) 65 | }, 66 | BPPARAM = BPparam 67 | ) 68 | 69 | gene_prop <- do.call(cbind, gene_prop) 70 | 71 | colnames(gene_prop) <- unique(alldata$sample) 72 | 73 | rownames(gene_prop) <- rownames(alldata$data) 74 | 75 | gene_prop <- t(gene_prop) 76 | 77 | return(gene_prop) 78 | } 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | #' This function calculates the correlation of gene expression in 87 | #' each sample in a list object. If no list of genes is provided, it will 88 | #' use find_var_gene function to select the top variable genes. 89 | #' @noRd 90 | helper_gene_cor <- function(alldata, genes = NULL, num_top_gene = NULL, ncores = 1) { 91 | 92 | BPparam <- generateBPParam(ncores) 93 | 94 | if (is.null(num_top_gene)) { 95 | num_top_gene <- min(nrow(alldata$data), 50) 96 | } 97 | 98 | 99 | if (is.null(genes)) { 100 | gene <- find_var_gene(alldata, 101 | num_top_gene = num_top_gene, 102 | ncores = ncores, celltype = FALSE 103 | ) 104 | } else { 105 | gene <- genes 106 | } 107 | 108 | 109 | alldata$data <- alldata$data[gene, ] 110 | 111 | 112 | # x <- unique(alldata$sample) [1] 113 | cor_data <- BiocParallel::bplapply(unique(alldata$sample), function(x) { 114 | 115 | thisdata <- alldata$data[, alldata$sample == x, drop=FALSE] 116 | 117 | cor_data <- proxyC::simil( thisdata , method = "correlation" ) 118 | cor_data <- as.matrix(cor_data) 119 | 120 | cor_data[is.na(cor_data)] <- 0 121 | diag(cor_data) <- NA 122 | cor_data[lower.tri(cor_data)] <- NA 123 | cor_data <- reshape2::melt(cor_data) 124 | cor_data <- cor_data[!is.na(cor_data$value), ] 125 | temp <- data.frame(cor_data$value) 126 | rownames(temp) <- paste0(cor_data$Var1, "-with-", cor_data$Var2) 127 | temp 128 | }, BPPARAM = BPparam) 129 | 130 | cor_data <- do.call(cbind, cor_data) 131 | colnames(cor_data) <- unique(alldata$sample) 132 | 133 | 134 | cor_data <- t(cor_data) 135 | 136 | return(cor_data) 137 | } 138 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # scFeatures: Multi-view representations of single-cell and spatial data for disease outcome prediction 2 | 3 | 4 | 5 | scFeatures is a tool that generates multi-view representations of single-cell and spatial data through the construction of a total of 17 feature types belonging to the following six categories. 6 | 7 | 1. cell type proportions 8 | 2. cell type specific gene expressions 9 | 3. cell type specific pathway expressions 10 | 4. cell type specific cell-cell interaction (CCI) scores 11 | 5. overall aggregated gene expressions 12 | 6. spatial metrics 13 | 14 | ![Overview](https://raw.githubusercontent.com/SydneyBioX/scFeatures/devel/inst/overview.png) 15 | 16 | ## Installation 17 | 18 | The latest scFeatures can be installed using devtools: 19 | 20 | ``` 21 | library(devtools) 22 | devtools::install_github("SydneyBioX/scFeatures") 23 | ``` 24 | 25 | 26 | ## Quick start 27 | 28 | 29 | scFeatures can be run using one line of code 30 | `scfeatures_result <- scFeatures(data = data, sample = sample, celltype = celltype)` 31 | which generates a list of dataframes containing all feature types in the form of samples x features. 32 | 33 | Currently, scFeatures support scRNA-seq, spatial proteomics and spatial transcriptomics. 34 | 35 | For scRNA-seq, run: 36 | 37 | ``` 38 | data("example_scrnaseq" , package = "scFeatures") 39 | data <- example_scrnaseq 40 | 41 | scfeatures_result <- scFeatures(data = data@assays$RNA@data, 42 | sample = data$sample, 43 | celltype = data$celltype, 44 | type = "scrna", 45 | ncores = 8, 46 | species = "Homo sapiens") 47 | ``` 48 | 49 | For spatial proteomics, run: 50 | 51 | ``` 52 | # note, spatial data requires spatial coordinates of each cell. 53 | 54 | spatialCoords <- list( sample( 1:ncol(data), ncol(data)) , 55 | sample( 1:ncol(data), ncol(data) )) # generate fake coordinates 56 | 57 | scfeatures_result <- scFeatures(data = data@assays$RNA@data, 58 | sample = data$sample, 59 | celltype = data$celltype, 60 | type = "spatial_p", 61 | spatialCoords = spatialCoords, 62 | ncores = 8, 63 | species = "Homo sapiens") 64 | 65 | ``` 66 | 67 | 68 | 69 | For spatial transcriptomics, run: 70 | 71 | ``` 72 | # note, spatial data requires spatial coordinates of each cell. 73 | spatialCoords <- list( sample( 1:ncol(data), ncol(data)) , 74 | sample( 1:ncol(data), ncol(data) )) 75 | 76 | # as well as predicted probability of cell types in each spot 77 | spotProbability <- t(gtools::rdirichlet( ncol(data), rep(1, 5))) # simulate the cell type prediction result based on 5 cell types 78 | rownames( spotProbability) <- c("Cell type A", "Cell type B" , "Cell type C", 79 | "Cell type D", "Cell type E") 80 | colnames( spotProbability ) <- colnames(data) 81 | 82 | scfeatures_result <- scFeatures(data = data@assays$RNA@data, 83 | sample = data$sample, 84 | celltype = data$celltype, 85 | type = "spatial_t", 86 | spatialCoords = spatialCoords, 87 | spotProbability = spotProbability, 88 | ncores = 8, 89 | species = "Homo sapiens") 90 | 91 | ``` 92 | 93 | ## Detailed vignette 94 | 95 | Please see https://sydneybiox.github.io/scFeatures/articles/scFeatures_overview.html. 96 | 97 | ## Reference 98 | 99 | Cao, Y., Lin, Y., Patrick, E., Yang, P., & Yang, J. Y. H. (2022). scFeatures: multi-view representations of single-cell and spatial data for disease outcome prediction. In O. Vitek (Ed.), Bioinformatics (Vol. 38, Issue 20, pp. 4745–4753). Oxford University Press (OUP). https://doi.org/10.1093/bioinformatics/btac590 100 | -------------------------------------------------------------------------------- /_pkgdown.yml: -------------------------------------------------------------------------------- 1 | template: 2 | bootstrap: 5 3 | bootswatch: cosmo 4 | toc: 5 | depth: 3 6 | navbar: 7 | title: ~ 8 | bg: dark 9 | url: https://sydneybiox.github.io/scFeatures/ 10 | -------------------------------------------------------------------------------- /data/example_scrnaseq.RData: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/data/example_scrnaseq.RData -------------------------------------------------------------------------------- /data/scfeatures_result.RData: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/data/scfeatures_result.RData -------------------------------------------------------------------------------- /docs/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Page not found (404) • scFeatures 9 | 10 | 11 | 12 | 13 | 14 | 18 | 19 | 20 | Skip to contents 21 | 22 | 23 |
63 |
64 |
68 | 69 | Content not found. Please use links in the navbar. 70 | 71 |
72 |
73 | 74 | 75 |
79 | 80 | 84 | 85 |
86 |
87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /docs/articles/index.html: -------------------------------------------------------------------------------- 1 | 2 | Articles • scFeatures 6 | Skip to contents 7 | 8 | 9 |
44 |
45 |
48 | 49 |
50 |

All vignettes

51 |

52 | 53 |
A detailed explanation of scFeatures' features
54 |
55 |
56 |
57 | 58 | 59 |
62 | 63 | 66 | 67 |
68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /docs/articles/scFeatures_associationstudy_files/accessible-code-block-0.0.1/empty-anchor.js: -------------------------------------------------------------------------------- 1 | // Hide empty tag within highlighted CodeBlock for screen reader accessibility (see https://github.com/jgm/pandoc/issues/6352#issuecomment-626106786) --> 2 | // v0.0.1 3 | // Written by JooYoung Seo (jooyoung@psu.edu) and Atsushi Yasumoto on June 1st, 2020. 4 | 5 | document.addEventListener('DOMContentLoaded', function() { 6 | const codeList = document.getElementsByClassName("sourceCode"); 7 | for (var i = 0; i < codeList.length; i++) { 8 | var linkList = codeList[i].getElementsByTagName('a'); 9 | for (var j = 0; j < linkList.length; j++) { 10 | if (linkList[j].innerHTML === "") { 11 | linkList[j].setAttribute('aria-hidden', 'true'); 12 | } 13 | } 14 | } 15 | }); 16 | -------------------------------------------------------------------------------- /docs/articles/scFeatures_detail_files/accessible-code-block-0.0.1/empty-anchor.js: -------------------------------------------------------------------------------- 1 | // Hide empty tag within highlighted CodeBlock for screen reader accessibility (see https://github.com/jgm/pandoc/issues/6352#issuecomment-626106786) --> 2 | // v0.0.1 3 | // Written by JooYoung Seo (jooyoung@psu.edu) and Atsushi Yasumoto on June 1st, 2020. 4 | 5 | document.addEventListener('DOMContentLoaded', function() { 6 | const codeList = document.getElementsByClassName("sourceCode"); 7 | for (var i = 0; i < codeList.length; i++) { 8 | var linkList = codeList[i].getElementsByTagName('a'); 9 | for (var j = 0; j < linkList.length; j++) { 10 | if (linkList[j].innerHTML === "") { 11 | linkList[j].setAttribute('aria-hidden', 'true'); 12 | } 13 | } 14 | } 15 | }); 16 | -------------------------------------------------------------------------------- /docs/articles/scFeatures_detail_files/figure-html/unnamed-chunk-12-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/articles/scFeatures_detail_files/figure-html/unnamed-chunk-12-1.png -------------------------------------------------------------------------------- /docs/articles/scFeatures_detail_files/figure-html/unnamed-chunk-13-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/articles/scFeatures_detail_files/figure-html/unnamed-chunk-13-1.png -------------------------------------------------------------------------------- /docs/articles/scFeatures_detail_files/figure-html/unnamed-chunk-19-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/articles/scFeatures_detail_files/figure-html/unnamed-chunk-19-1.png -------------------------------------------------------------------------------- /docs/articles/scFeatures_detail_files/figure-html/unnamed-chunk-20-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/articles/scFeatures_detail_files/figure-html/unnamed-chunk-20-1.png -------------------------------------------------------------------------------- /docs/articles/scFeatures_overview_files/figure-html/unnamed-chunk-5-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/articles/scFeatures_overview_files/figure-html/unnamed-chunk-5-1.png -------------------------------------------------------------------------------- /docs/articles/scFeatures_overview_files/figure-html/unnamed-chunk-6-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/articles/scFeatures_overview_files/figure-html/unnamed-chunk-6-1.png -------------------------------------------------------------------------------- /docs/articles/scFeatures_summary_files/accessible-code-block-0.0.1/empty-anchor.js: -------------------------------------------------------------------------------- 1 | // Hide empty tag within highlighted CodeBlock for screen reader accessibility (see https://github.com/jgm/pandoc/issues/6352#issuecomment-626106786) --> 2 | // v0.0.1 3 | // Written by JooYoung Seo (jooyoung@psu.edu) and Atsushi Yasumoto on June 1st, 2020. 4 | 5 | document.addEventListener('DOMContentLoaded', function() { 6 | const codeList = document.getElementsByClassName("sourceCode"); 7 | for (var i = 0; i < codeList.length; i++) { 8 | var linkList = codeList[i].getElementsByTagName('a'); 9 | for (var j = 0; j < linkList.length; j++) { 10 | if (linkList[j].innerHTML === "") { 11 | linkList[j].setAttribute('aria-hidden', 'true'); 12 | } 13 | } 14 | } 15 | }); 16 | -------------------------------------------------------------------------------- /docs/authors.html: -------------------------------------------------------------------------------- 1 | 2 | Authors and Citation • scFeatures 6 | Skip to contents 7 | 8 | 9 |
44 |
45 |
48 | 49 |
50 |

Authors

51 | 52 |
  • 53 |

    Yue Cao. Author, maintainer. 54 |

    55 |
  • 56 |
  • 57 |

    Yingxin Lin. Author. 58 |

    59 |
  • 60 |
  • 61 |

    Ellis Patrick. Author. 62 |

    63 |
  • 64 |
  • 65 |

    Pengyi Yang. Author. 66 |

    67 |
  • 68 |
  • 69 |

    Jean Yee Hwa Yang. Author. 70 |

    71 |
  • 72 |
73 | 74 |
75 |

Citation

76 |

Source: inst/CITATION

77 | 78 |

Cao,Y.,Lin,Y.,Patrick,E.,Yang,P.,&Yang,J.Y.H.(2022). scFeatures: Multi-view representations of single-cell and spatial data for disease outcome prediction. Bioinformatics, Volume 38, Issue 20, 15 October 2022, Pages 4745-4753.

79 |
@Article{,
 80 |   title = {scFeatures: multi-view representations of single-cell and spatial data for disease outcome prediction},
 81 |   journal = {Bioinformatics},
 82 |   author = {{Cao,Y.} and {Lin,Y.} and {Patrick,E.} and {Yang,P.} and & Yang,J.Y.H.},
 83 |   volume = {38},
 84 |   number = {20},
 85 |   pages = {4745-4753},
 86 |   year = {2022},
 87 |   month = {08},
 88 |   issn = {1367-4803},
 89 |   doi = {10.1093/bioinformatics/btac590},
 90 |   url = {https://doi.org/10.1093/bioinformatics/btac590},
 91 |   eprint = {https://academic.oup.com/bioinformatics/article-pdf/38/20/4745/46535070/btac590.pdf},
 92 | }
93 |
94 |
96 | 97 | 98 |
101 | 102 | 105 | 106 |
107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | -------------------------------------------------------------------------------- /docs/bootstrap-toc.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Table of Contents v0.4.1 (http://afeld.github.io/bootstrap-toc/) 3 | * Copyright 2015 Aidan Feldman 4 | * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */ 5 | 6 | /* modified from https://github.com/twbs/bootstrap/blob/94b4076dd2efba9af71f0b18d4ee4b163aa9e0dd/docs/assets/css/src/docs.css#L548-L601 */ 7 | 8 | /* All levels of nav */ 9 | nav[data-toggle='toc'] .nav > li > a { 10 | display: block; 11 | padding: 4px 20px; 12 | font-size: 13px; 13 | font-weight: 500; 14 | color: #767676; 15 | } 16 | nav[data-toggle='toc'] .nav > li > a:hover, 17 | nav[data-toggle='toc'] .nav > li > a:focus { 18 | padding-left: 19px; 19 | color: #563d7c; 20 | text-decoration: none; 21 | background-color: transparent; 22 | border-left: 1px solid #563d7c; 23 | } 24 | nav[data-toggle='toc'] .nav > .active > a, 25 | nav[data-toggle='toc'] .nav > .active:hover > a, 26 | nav[data-toggle='toc'] .nav > .active:focus > a { 27 | padding-left: 18px; 28 | font-weight: bold; 29 | color: #563d7c; 30 | background-color: transparent; 31 | border-left: 2px solid #563d7c; 32 | } 33 | 34 | /* Nav: second level (shown on .active) */ 35 | nav[data-toggle='toc'] .nav .nav { 36 | display: none; /* Hide by default, but at >768px, show it */ 37 | padding-bottom: 10px; 38 | } 39 | nav[data-toggle='toc'] .nav .nav > li > a { 40 | padding-top: 1px; 41 | padding-bottom: 1px; 42 | padding-left: 30px; 43 | font-size: 12px; 44 | font-weight: normal; 45 | } 46 | nav[data-toggle='toc'] .nav .nav > li > a:hover, 47 | nav[data-toggle='toc'] .nav .nav > li > a:focus { 48 | padding-left: 29px; 49 | } 50 | nav[data-toggle='toc'] .nav .nav > .active > a, 51 | nav[data-toggle='toc'] .nav .nav > .active:hover > a, 52 | nav[data-toggle='toc'] .nav .nav > .active:focus > a { 53 | padding-left: 28px; 54 | font-weight: 500; 55 | } 56 | 57 | /* from https://github.com/twbs/bootstrap/blob/e38f066d8c203c3e032da0ff23cd2d6098ee2dd6/docs/assets/css/src/docs.css#L631-L634 */ 58 | nav[data-toggle='toc'] .nav > .active > ul { 59 | display: block; 60 | } 61 | -------------------------------------------------------------------------------- /docs/bootstrap-toc.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Table of Contents v0.4.1 (http://afeld.github.io/bootstrap-toc/) 3 | * Copyright 2015 Aidan Feldman 4 | * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */ 5 | (function() { 6 | 'use strict'; 7 | 8 | window.Toc = { 9 | helpers: { 10 | // return all matching elements in the set, or their descendants 11 | findOrFilter: function($el, selector) { 12 | // http://danielnouri.org/notes/2011/03/14/a-jquery-find-that-also-finds-the-root-element/ 13 | // http://stackoverflow.com/a/12731439/358804 14 | var $descendants = $el.find(selector); 15 | return $el.filter(selector).add($descendants).filter(':not([data-toc-skip])'); 16 | }, 17 | 18 | generateUniqueIdBase: function(el) { 19 | var text = $(el).text(); 20 | var anchor = text.trim().toLowerCase().replace(/[^A-Za-z0-9]+/g, '-'); 21 | return anchor || el.tagName.toLowerCase(); 22 | }, 23 | 24 | generateUniqueId: function(el) { 25 | var anchorBase = this.generateUniqueIdBase(el); 26 | for (var i = 0; ; i++) { 27 | var anchor = anchorBase; 28 | if (i > 0) { 29 | // add suffix 30 | anchor += '-' + i; 31 | } 32 | // check if ID already exists 33 | if (!document.getElementById(anchor)) { 34 | return anchor; 35 | } 36 | } 37 | }, 38 | 39 | generateAnchor: function(el) { 40 | if (el.id) { 41 | return el.id; 42 | } else { 43 | var anchor = this.generateUniqueId(el); 44 | el.id = anchor; 45 | return anchor; 46 | } 47 | }, 48 | 49 | createNavList: function() { 50 | return $(''); 51 | }, 52 | 53 | createChildNavList: function($parent) { 54 | var $childList = this.createNavList(); 55 | $parent.append($childList); 56 | return $childList; 57 | }, 58 | 59 | generateNavEl: function(anchor, text) { 60 | var $a = $(''); 61 | $a.attr('href', '#' + anchor); 62 | $a.text(text); 63 | var $li = $('
  • '); 64 | $li.append($a); 65 | return $li; 66 | }, 67 | 68 | generateNavItem: function(headingEl) { 69 | var anchor = this.generateAnchor(headingEl); 70 | var $heading = $(headingEl); 71 | var text = $heading.data('toc-text') || $heading.text(); 72 | return this.generateNavEl(anchor, text); 73 | }, 74 | 75 | // Find the first heading level (`

    `, then `

    `, etc.) that has more than one element. Defaults to 1 (for `

    `). 76 | getTopLevel: function($scope) { 77 | for (var i = 1; i <= 6; i++) { 78 | var $headings = this.findOrFilter($scope, 'h' + i); 79 | if ($headings.length > 1) { 80 | return i; 81 | } 82 | } 83 | 84 | return 1; 85 | }, 86 | 87 | // returns the elements for the top level, and the next below it 88 | getHeadings: function($scope, topLevel) { 89 | var topSelector = 'h' + topLevel; 90 | 91 | var secondaryLevel = topLevel + 1; 92 | var secondarySelector = 'h' + secondaryLevel; 93 | 94 | return this.findOrFilter($scope, topSelector + ',' + secondarySelector); 95 | }, 96 | 97 | getNavLevel: function(el) { 98 | return parseInt(el.tagName.charAt(1), 10); 99 | }, 100 | 101 | populateNav: function($topContext, topLevel, $headings) { 102 | var $context = $topContext; 103 | var $prevNav; 104 | 105 | var helpers = this; 106 | $headings.each(function(i, el) { 107 | var $newNav = helpers.generateNavItem(el); 108 | var navLevel = helpers.getNavLevel(el); 109 | 110 | // determine the proper $context 111 | if (navLevel === topLevel) { 112 | // use top level 113 | $context = $topContext; 114 | } else if ($prevNav && $context === $topContext) { 115 | // create a new level of the tree and switch to it 116 | $context = helpers.createChildNavList($prevNav); 117 | } // else use the current $context 118 | 119 | $context.append($newNav); 120 | 121 | $prevNav = $newNav; 122 | }); 123 | }, 124 | 125 | parseOps: function(arg) { 126 | var opts; 127 | if (arg.jquery) { 128 | opts = { 129 | $nav: arg 130 | }; 131 | } else { 132 | opts = arg; 133 | } 134 | opts.$scope = opts.$scope || $(document.body); 135 | return opts; 136 | } 137 | }, 138 | 139 | // accepts a jQuery object, or an options object 140 | init: function(opts) { 141 | opts = this.helpers.parseOps(opts); 142 | 143 | // ensure that the data attribute is in place for styling 144 | opts.$nav.attr('data-toggle', 'toc'); 145 | 146 | var $topContext = this.helpers.createChildNavList(opts.$nav); 147 | var topLevel = this.helpers.getTopLevel(opts.$scope); 148 | var $headings = this.helpers.getHeadings(opts.$scope, topLevel); 149 | this.helpers.populateNav($topContext, topLevel, $headings); 150 | } 151 | }; 152 | 153 | $(function() { 154 | $('nav[data-toggle="toc"]').each(function(i, el) { 155 | var $nav = $(el); 156 | Toc.init($nav); 157 | }); 158 | }); 159 | })(); 160 | -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/font.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Source Sans Pro'; 3 | font-style: normal; 4 | font-weight: 300; 5 | font-display: swap; 6 | src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zAkw.woff) format('woff'); 7 | } 8 | @font-face { 9 | font-family: 'Source Sans Pro'; 10 | font-style: normal; 11 | font-weight: 400; 12 | font-display: swap; 13 | src: url(fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3aPA.woff) format('woff'); 14 | } 15 | @font-face { 16 | font-family: 'Source Sans Pro'; 17 | font-style: normal; 18 | font-weight: 700; 19 | font-display: swap; 20 | src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vAkw.woff) format('woff'); 21 | } 22 | -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVs9pbCIPrc.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVs9pbCIPrc.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCIPrc.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCIPrc.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/4iCs6KVjbNBYlgo6ew.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/4iCs6KVjbNBYlgo6ew.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/4iCs6KVjbNBYlgoKfw7w.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/4iCs6KVjbNBYlgoKfw7w.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/4iCv6KVjbNBYlgoCxCvTtA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/4iCv6KVjbNBYlgoCxCvTtA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/4iCv6KVjbNBYlgoCxCvjsGyL.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/4iCv6KVjbNBYlgoCxCvjsGyL.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPa7j.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPa7j.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3aPA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3aPA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7j.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7j.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rAkw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rAkw.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vAkw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vAkw.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdo.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdo.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zAkw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zAkw.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdo.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdo.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvWNRevw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvWNRevw.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvaNA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvaNA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/CSR64z1Qlv-GDxkbKVQ_TOQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/CSR64z1Qlv-GDxkbKVQ_TOQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/CSR64z1Qlv-GDxkbKVQ_fOAKSw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/CSR64z1Qlv-GDxkbKVQ_fOAKSw.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/JTURjIg1_i6t8kCHKm45_ZpC7g0.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/JTURjIg1_i6t8kCHKm45_ZpC7g0.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/JTURjIg1_i6t8kCHKm45_dJE7g0.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/JTURjIg1_i6t8kCHKm45_dJE7g0.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/JTUSjIg1_i6t8kCHKm45xW0.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/JTUSjIg1_i6t8kCHKm45xW0.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/KFOlCnqEu92Fr1MmEU9fBBc-.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/KFOlCnqEu92Fr1MmEU9fBBc-.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/KFOlCnqEu92Fr1MmEU9vAA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/KFOlCnqEu92Fr1MmEU9vAA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/KFOlCnqEu92Fr1MmSU5fBBc-.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/KFOlCnqEu92Fr1MmSU5fBBc-.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/KFOlCnqEu92Fr1MmSU5vAA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/KFOlCnqEu92Fr1MmSU5vAA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/KFOlCnqEu92Fr1MmWUlfBBc-.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/KFOlCnqEu92Fr1MmWUlfBBc-.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/KFOlCnqEu92Fr1MmWUlvAA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/KFOlCnqEu92Fr1MmWUlvAA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/KFOmCnqEu92Fr1Me5g.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/KFOmCnqEu92Fr1Me5g.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/KFOmCnqEu92Fr1Mu4mxM.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/KFOmCnqEu92Fr1Mu4mxM.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/QGYpz_kZZAGCONcK2A4bGOj8mNhL.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/QGYpz_kZZAGCONcK2A4bGOj8mNhL.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/S6u8w4BMUTPHjxsAXC-s.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/S6u8w4BMUTPHjxsAXC-s.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/S6u8w4BMUTPHjxswWA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/S6u8w4BMUTPHjxswWA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/S6u9w4BMUTPHh6UVSwiPHw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/S6u9w4BMUTPHh6UVSwiPHw.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/S6u9w4BMUTPHh6UVeww.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/S6u9w4BMUTPHh6UVeww.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/S6u9w4BMUTPHh7USSwiPHw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/S6u9w4BMUTPHh7USSwiPHw.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/S6u9w4BMUTPHh7USeww.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/S6u9w4BMUTPHh7USeww.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/S6uyw4BMUTPHjx4wWA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/S6uyw4BMUTPHjx4wWA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/S6uyw4BMUTPHvxo.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/S6uyw4BMUTPHvxo.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuFuYMZs.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuFuYMZs.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuI6fMZs.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuI6fMZs.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfMZs.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfMZs.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/XRXV3I6Li01BKof4MQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/XRXV3I6Li01BKof4MQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/XRXW3I6Li01BKofA6sKkZQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/XRXW3I6Li01BKofA6sKkZQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/XRXW3I6Li01BKofAjsOkZQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/XRXW3I6Li01BKofAjsOkZQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkWVAexg.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkWVAexg.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkaVQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkWVAexg.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkWVAexg.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkaVQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjWVAexg.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjWVAexg.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjaVQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4gaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4gaVQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1y4k.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1y4k.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0B4gaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0B4gaVQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0C4k.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0C4k.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4gaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4gaVQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0C4k.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0C4k.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/pe03MImSLYBIv1o4X1M8cc9iB_5p.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/pe03MImSLYBIv1o4X1M8cc9iB_5p.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/pe0qMImSLYBIv1o4X1M8cfe5.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/pe0qMImSLYBIv1o4X1M8cfe5.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.1.3/fonts/q5uGsou0JOdh94bfvQlr.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.1.3/fonts/q5uGsou0JOdh94bfvQlr.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/font.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Source Sans Pro'; 3 | font-style: normal; 4 | font-weight: 300; 5 | font-display: swap; 6 | src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zAkw.woff) format('woff'); 7 | } 8 | @font-face { 9 | font-family: 'Source Sans Pro'; 10 | font-style: normal; 11 | font-weight: 400; 12 | font-display: swap; 13 | src: url(fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3aPA.woff) format('woff'); 14 | } 15 | @font-face { 16 | font-family: 'Source Sans Pro'; 17 | font-style: normal; 18 | font-weight: 700; 19 | font-display: swap; 20 | src: url(fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vAkw.woff) format('woff'); 21 | } 22 | -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVs9pbCIPrc.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVs9pbCIPrc.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCIPrc.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCIPrc.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/1adeadb2fe618c5ed46221f15e12b9c8.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/1adeadb2fe618c5ed46221f15e12b9c8.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/4iCs6KVjbNBYlgo6ew.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/4iCs6KVjbNBYlgo6ew.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/4iCs6KVjbNBYlgoKfw7w.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/4iCs6KVjbNBYlgoKfw7w.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/4iCv6KVjbNBYlgoCxCvTtA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/4iCv6KVjbNBYlgoCxCvTtA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/4iCv6KVjbNBYlgoCxCvjsGyL.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/4iCv6KVjbNBYlgoCxCvjsGyL.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPa7j.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPa7j.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3aPA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3aPA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7j.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7j.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rAkw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rAkw.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vAkw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vAkw.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdo.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdo.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zAkw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zAkw.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdo.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdo.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvWNRevw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvWNRevw.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvaNA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvaNA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/CSR64z1Qlv-GDxkbKVQ_TOQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/CSR64z1Qlv-GDxkbKVQ_TOQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/CSR64z1Qlv-GDxkbKVQ_fOAKSw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/CSR64z1Qlv-GDxkbKVQ_fOAKSw.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/HI_diYsKILxRpg3hIP6sJ7fM7PqPMcMnZFqUwX28DBKXhM0.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/HI_diYsKILxRpg3hIP6sJ7fM7PqPMcMnZFqUwX28DBKXhM0.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/HI_diYsKILxRpg3hIP6sJ7fM7PqPMcMnZFqUwX28DMyQhM0.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/HI_diYsKILxRpg3hIP6sJ7fM7PqPMcMnZFqUwX28DMyQhM0.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1rSg.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1rSg.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTsoprSg.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTsoprSg.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtZ6Ew9.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtZ6Ew9.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Ew9.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Ew9.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCuM70w9.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCuM70w9.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmEU9fBBc-.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmEU9fBBc-.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmEU9vAA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmEU9vAA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmSU5fBBc-.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmSU5fBBc-.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmSU5vAA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmSU5vAA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmWUlfBBc-.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmWUlfBBc-.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmWUlvAA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmWUlvAA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/KFOmCnqEu92Fr1Me5g.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/KFOmCnqEu92Fr1Me5g.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/KFOmCnqEu92Fr1Mu4mxM.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/KFOmCnqEu92Fr1Mu4mxM.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/QGYpz_kZZAGCONcK2A4bGOj8mNhL.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/QGYpz_kZZAGCONcK2A4bGOj8mNhL.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/S6u8w4BMUTPHjxsAXC-s.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/S6u8w4BMUTPHjxsAXC-s.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/S6u8w4BMUTPHjxswWA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/S6u8w4BMUTPHjxswWA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/S6u9w4BMUTPHh6UVSwiPHw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/S6u9w4BMUTPHh6UVSwiPHw.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/S6u9w4BMUTPHh6UVeww.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/S6u9w4BMUTPHh6UVeww.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/S6u9w4BMUTPHh7USSwiPHw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/S6u9w4BMUTPHh7USSwiPHw.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/S6u9w4BMUTPHh7USeww.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/S6u9w4BMUTPHh7USeww.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/S6uyw4BMUTPHjx4wWA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/S6uyw4BMUTPHjx4wWA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/S6uyw4BMUTPHvxo.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/S6uyw4BMUTPHvxo.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuFuYMZs.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuFuYMZs.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuI6fMZs.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuI6fMZs.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfMZs.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfMZs.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDFwmRTA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDFwmRTA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDGUmRTA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDGUmRTA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDLshRTA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDLshRTA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/a98f7a7574819ba83bec6279a2cecd95.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/a98f7a7574819ba83bec6279a2cecd95.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk0ZjaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk0ZjaVQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkWVAexg.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkWVAexg.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkaVQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkWVAexg.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkWVAexg.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkaVQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk_RkaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk_RkaVQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkxhjaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkxhjaVQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjWVAexg.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjWVAexg.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjaVQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4gaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4gaVQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1y4k.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1y4k.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsgH1y4k.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsgH1y4k.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgshZ1y4k.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgshZ1y4k.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0B4gaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0B4gaVQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0C4k.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0C4k.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4gaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4gaVQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0C4k.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0C4k.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjr0C4k.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjr0C4k.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/q5uGsou0JOdh94bfvQlr.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/deps/bootstrap-5.2.2/fonts/q5uGsou0JOdh94bfvQlr.woff -------------------------------------------------------------------------------- /docs/deps/data-deps.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /docs/docsearch.js: -------------------------------------------------------------------------------- 1 | $(function() { 2 | 3 | // register a handler to move the focus to the search bar 4 | // upon pressing shift + "/" (i.e. "?") 5 | $(document).on('keydown', function(e) { 6 | if (e.shiftKey && e.keyCode == 191) { 7 | e.preventDefault(); 8 | $("#search-input").focus(); 9 | } 10 | }); 11 | 12 | $(document).ready(function() { 13 | // do keyword highlighting 14 | /* modified from https://jsfiddle.net/julmot/bL6bb5oo/ */ 15 | var mark = function() { 16 | 17 | var referrer = document.URL ; 18 | var paramKey = "q" ; 19 | 20 | if (referrer.indexOf("?") !== -1) { 21 | var qs = referrer.substr(referrer.indexOf('?') + 1); 22 | var qs_noanchor = qs.split('#')[0]; 23 | var qsa = qs_noanchor.split('&'); 24 | var keyword = ""; 25 | 26 | for (var i = 0; i < qsa.length; i++) { 27 | var currentParam = qsa[i].split('='); 28 | 29 | if (currentParam.length !== 2) { 30 | continue; 31 | } 32 | 33 | if (currentParam[0] == paramKey) { 34 | keyword = decodeURIComponent(currentParam[1].replace(/\+/g, "%20")); 35 | } 36 | } 37 | 38 | if (keyword !== "") { 39 | $(".contents").unmark({ 40 | done: function() { 41 | $(".contents").mark(keyword); 42 | } 43 | }); 44 | } 45 | } 46 | }; 47 | 48 | mark(); 49 | }); 50 | }); 51 | 52 | /* Search term highlighting ------------------------------*/ 53 | 54 | function matchedWords(hit) { 55 | var words = []; 56 | 57 | var hierarchy = hit._highlightResult.hierarchy; 58 | // loop to fetch from lvl0, lvl1, etc. 59 | for (var idx in hierarchy) { 60 | words = words.concat(hierarchy[idx].matchedWords); 61 | } 62 | 63 | var content = hit._highlightResult.content; 64 | if (content) { 65 | words = words.concat(content.matchedWords); 66 | } 67 | 68 | // return unique words 69 | var words_uniq = [...new Set(words)]; 70 | return words_uniq; 71 | } 72 | 73 | function updateHitURL(hit) { 74 | 75 | var words = matchedWords(hit); 76 | var url = ""; 77 | 78 | if (hit.anchor) { 79 | url = hit.url_without_anchor + '?q=' + escape(words.join(" ")) + '#' + hit.anchor; 80 | } else { 81 | url = hit.url + '?q=' + escape(words.join(" ")); 82 | } 83 | 84 | return url; 85 | } 86 | -------------------------------------------------------------------------------- /docs/link.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /docs/pkgdown.js: -------------------------------------------------------------------------------- 1 | /* http://gregfranko.com/blog/jquery-best-practices/ */ 2 | (function($) { 3 | $(function() { 4 | 5 | $('nav.navbar').headroom(); 6 | 7 | Toc.init({ 8 | $nav: $("#toc"), 9 | $scope: $("main h2, main h3, main h4, main h5, main h6") 10 | }); 11 | 12 | if ($('#toc').length) { 13 | $('body').scrollspy({ 14 | target: '#toc', 15 | offset: $("nav.navbar").outerHeight() + 1 16 | }); 17 | } 18 | 19 | // Activate popovers 20 | $('[data-bs-toggle="popover"]').popover({ 21 | container: 'body', 22 | html: true, 23 | trigger: 'focus', 24 | placement: "top", 25 | sanitize: false, 26 | }); 27 | 28 | $('[data-bs-toggle="tooltip"]').tooltip(); 29 | 30 | /* Clipboard --------------------------*/ 31 | 32 | function changeTooltipMessage(element, msg) { 33 | var tooltipOriginalTitle=element.getAttribute('data-original-title'); 34 | element.setAttribute('data-original-title', msg); 35 | $(element).tooltip('show'); 36 | element.setAttribute('data-original-title', tooltipOriginalTitle); 37 | } 38 | 39 | if(ClipboardJS.isSupported()) { 40 | $(document).ready(function() { 41 | var copyButton = ""; 42 | 43 | $("div.sourceCode").addClass("hasCopyButton"); 44 | 45 | // Insert copy buttons: 46 | $(copyButton).prependTo(".hasCopyButton"); 47 | 48 | // Initialize tooltips: 49 | $('.btn-copy-ex').tooltip({container: 'body'}); 50 | 51 | // Initialize clipboard: 52 | var clipboard = new ClipboardJS('[data-clipboard-copy]', { 53 | text: function(trigger) { 54 | return trigger.parentNode.textContent.replace(/\n#>[^\n]*/g, ""); 55 | } 56 | }); 57 | 58 | clipboard.on('success', function(e) { 59 | changeTooltipMessage(e.trigger, 'Copied!'); 60 | e.clearSelection(); 61 | }); 62 | 63 | clipboard.on('error', function() { 64 | changeTooltipMessage(e.trigger,'Press Ctrl+C or Command+C to copy'); 65 | }); 66 | 67 | }); 68 | } 69 | 70 | /* Search marking --------------------------*/ 71 | var url = new URL(window.location.href); 72 | var toMark = url.searchParams.get("q"); 73 | var mark = new Mark("main#main"); 74 | if (toMark) { 75 | mark.mark(toMark, { 76 | accuracy: { 77 | value: "complementary", 78 | limiters: [",", ".", ":", "/"], 79 | } 80 | }); 81 | } 82 | 83 | /* Search --------------------------*/ 84 | /* Adapted from https://github.com/rstudio/bookdown/blob/2d692ba4b61f1e466c92e78fd712b0ab08c11d31/inst/resources/bs4_book/bs4_book.js#L25 */ 85 | // Initialise search index on focus 86 | var fuse; 87 | $("#search-input").focus(async function(e) { 88 | if (fuse) { 89 | return; 90 | } 91 | 92 | $(e.target).addClass("loading"); 93 | var response = await fetch($("#search-input").data("search-index")); 94 | var data = await response.json(); 95 | 96 | var options = { 97 | keys: ["what", "text", "code"], 98 | ignoreLocation: true, 99 | threshold: 0.1, 100 | includeMatches: true, 101 | includeScore: true, 102 | }; 103 | fuse = new Fuse(data, options); 104 | 105 | $(e.target).removeClass("loading"); 106 | }); 107 | 108 | // Use algolia autocomplete 109 | var options = { 110 | autoselect: true, 111 | debug: true, 112 | hint: false, 113 | minLength: 2, 114 | }; 115 | var q; 116 | async function searchFuse(query, callback) { 117 | await fuse; 118 | 119 | var items; 120 | if (!fuse) { 121 | items = []; 122 | } else { 123 | q = query; 124 | var results = fuse.search(query, { limit: 20 }); 125 | items = results 126 | .filter((x) => x.score <= 0.75) 127 | .map((x) => x.item); 128 | if (items.length === 0) { 129 | items = [{dir:"Sorry 😿",previous_headings:"",title:"No results found.",what:"No results found.",path:window.location.href}]; 130 | } 131 | } 132 | callback(items); 133 | } 134 | $("#search-input").autocomplete(options, [ 135 | { 136 | name: "content", 137 | source: searchFuse, 138 | templates: { 139 | suggestion: (s) => { 140 | if (s.title == s.what) { 141 | return `${s.dir} >
    ${s.title}
    `; 142 | } else if (s.previous_headings == "") { 143 | return `${s.dir} >
    ${s.title}
    > ${s.what}`; 144 | } else { 145 | return `${s.dir} >
    ${s.title}
    > ${s.previous_headings} > ${s.what}`; 146 | } 147 | }, 148 | }, 149 | }, 150 | ]).on('autocomplete:selected', function(event, s) { 151 | window.location.href = s.path + "?q=" + q + "#" + s.id; 152 | }); 153 | }); 154 | })(window.jQuery || window.$) 155 | 156 | 157 | -------------------------------------------------------------------------------- /docs/pkgdown.yml: -------------------------------------------------------------------------------- 1 | pandoc: 3.1.1 2 | pkgdown: 2.0.7 3 | pkgdown_sha: ~ 4 | articles: 5 | scFeatures_overview: scFeatures_overview.html 6 | last_built: 2024-02-24T00:56Z 7 | urls: 8 | reference: https://sydneybiox.github.io/scFeatures/reference 9 | article: https://sydneybiox.github.io/scFeatures/articles 10 | 11 | -------------------------------------------------------------------------------- /docs/reference/L_stats.html: -------------------------------------------------------------------------------- 1 | 2 | Compute L statistic for a point pattern — L_stats • scFeatures 6 | 7 | 8 |
    9 |
    53 | 54 | 55 | 56 |
    57 |
    58 | 63 | 64 |
    65 |

    This function computes the L statistic for a given point pattern.

    66 |
    67 | 68 |
    69 |
    L_stats(ppp_obj = NULL, from = NULL, to = NULL, L_dist = NULL)
    70 |
    71 | 72 |
    73 |

    Arguments

    74 |
    ppp_obj
    75 |

    a point pattern object

    76 | 77 | 78 |
    from
    79 |

    define the window of the point pattern to compute

    80 | 81 | 82 |
    to
    83 |

    define the window of the point pattern to compute

    84 | 85 | 86 |
    L_dist
    87 |

    a numeric value specifying the maximum distance 88 | at which the L statistic will be computed.

    89 | 90 |
    91 |
    92 |

    Value

    93 | 94 | 95 |

    A numeric value of the L statistic.

    96 |
    97 | 98 |
    99 | 102 |
    103 | 104 | 105 |
    108 | 109 |
    110 |

    Site built with pkgdown 2.0.6.

    111 |
    112 | 113 |
    114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | -------------------------------------------------------------------------------- /docs/reference/Rplot001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/docs/reference/Rplot001.png -------------------------------------------------------------------------------- /docs/reference/bulk_sample.html: -------------------------------------------------------------------------------- 1 | 2 | Create pseudo-bulk for each sample in a Seurat object — bulk_sample • scFeatures 8 | 9 | 10 |
    11 |
    55 | 56 | 57 | 58 |
    59 |
    60 | 65 | 66 |
    67 |

    This function takes a Seurat object as input and creates 68 | a pseudo-bulk for each sample in the object. This is calculated by 69 | taking row means of the expression for each sample.

    70 |
    71 | 72 |
    73 |
    bulk_sample(data, ncores = 1)
    74 |
    75 | 76 |
    77 |

    Arguments

    78 |
    data
    79 |

    A Seurat object containing expression.

    80 | 81 | 82 |
    ncores
    83 |

    Number of cores for parallel computation.

    84 | 85 |
    86 |
    87 |

    Value

    88 | 89 | 90 |

    A Seurat object containing the pseudo-bulks for each sample 91 | in the input data.

    92 |
    93 | 94 |
    95 | 98 |
    99 | 100 | 101 |
    104 | 105 |
    106 |

    Site built with pkgdown 2.0.6.

    107 |
    108 | 109 |
    110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | -------------------------------------------------------------------------------- /docs/reference/bulk_sample_celltype.html: -------------------------------------------------------------------------------- 1 | 2 | Create pseudo-bulk for each cell type of each sample in a Seurat object — bulk_sample_celltype • scFeatures 10 | 11 | 12 |
    13 |
    57 | 58 | 59 | 60 |
    61 |
    62 | 67 | 68 |
    69 |

    This function takes a Seurat object as input and creates a pseudo-bulk 70 | for each cell type of each sample in the object. This is computed by 71 | taking the row means of the expression for each cell type of each sample 72 | If a cell type does not exist in a sample, the expression values for that 73 | cell type will be 0 for all genes.

    74 |
    75 | 76 |
    77 |
    bulk_sample_celltype(data, ncores = 1)
    78 |
    79 | 80 |
    81 |

    Arguments

    82 |
    data
    83 |

    A Seurat object containing expression.

    84 | 85 | 86 |
    ncores
    87 |

    Number of cores for parallel computation.

    88 | 89 |
    90 |
    91 |

    Value

    92 | 93 | 94 |

    A Seurat object containing the pseudo-bulks for each cell type 95 | of each sample.

    96 |
    97 | 98 |
    99 | 102 |
    103 | 104 | 105 |
    108 | 109 |
    110 |

    Site built with pkgdown 2.0.6.

    111 |
    112 | 113 |
    114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | -------------------------------------------------------------------------------- /docs/reference/generateBPParam.html: -------------------------------------------------------------------------------- 1 | 2 | Enable parallel processing — generateBPParam • scFeatures 10 | 11 | 12 |
    13 |
    57 | 58 | 59 | 60 |
    61 |
    62 | 67 | 68 |
    69 |

    This function takes the number of cores to use for parallel processing and 70 | generates a BiocParallel object that can be used to control the 71 | parallelization of functions. 72 | It automatically determines whether to use the SnowParam or 73 | MulticoreParam of the BiocParallel package based on the operating system.

    74 |
    75 | 76 |
    77 |
    generateBPParam(cores = 1)
    78 |
    79 | 80 |
    81 |

    Arguments

    82 |
    cores
    83 |

    The number of cores to use for parallel processing.

    84 | 85 |
    86 |
    87 |

    Value

    88 | 89 | 90 |

    A BiocParallel object that can be used to control the 91 | parallelization of functions.

    92 |
    93 | 94 |
    95 | 98 |
    99 | 100 | 101 |
    104 | 105 |
    106 |

    Site built with pkgdown 2.0.6.

    107 |
    108 | 109 |
    110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | -------------------------------------------------------------------------------- /docs/reference/get_num_cell_per_celltype.html: -------------------------------------------------------------------------------- 1 | 2 | Compute number of cells in each cell type in each spot 3 | for spatial transcriptomics data — get_num_cell_per_celltype • scFeatures 11 | 12 | 13 |
    14 |
    58 | 59 | 60 | 61 |
    62 |
    63 | 69 | 70 |
    71 |

    This function computes the number of cells in each cell type by 72 | multiplying the cell type probability in each spot with the 73 | relative number of cells in each spot. The relative number of cells 74 | are estimated using library size of each spot. See get_num_cell_per_spot().

    75 |
    76 | 77 |
    78 |
    get_num_cell_per_celltype(data)
    79 |
    80 | 81 |
    82 |

    Arguments

    83 |
    data
    84 |

    a spatial transcriptomics dataset in the form of a Seurat object.

    85 | 86 |
    87 |
    88 |

    Value

    89 | 90 | 91 |

    A matrix with the number of cells per cell type at each spot.

    92 |
    93 | 94 |
    95 | 98 |
    99 | 100 | 101 |
    104 | 105 |
    106 |

    Site built with pkgdown 2.0.6.

    107 |
    108 | 109 |
    110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | -------------------------------------------------------------------------------- /docs/reference/individual_geneset_proportion_celltype.html: -------------------------------------------------------------------------------- 1 | 2 | helper function to calculate proportion that a gene is expressed in each 3 | cell type in a sample — individual_geneset_proportion_celltype • scFeatures 9 | 10 | 11 |
    12 |
    56 | 57 | 58 | 59 |
    60 |
    61 | 67 | 68 |
    69 |

    helper function to calculate proportion that a gene is expressed in each 70 | cell type in a sample

    71 |
    72 | 73 |
    74 |
    individual_geneset_proportion_celltype(data, this_geneset)
    75 |
    76 | 77 |
    78 |

    Arguments

    79 |
    data
    80 |

    Data to run the calculation on.

    81 | 82 | 83 |
    this_geneset
    84 |

    geneset to run analysis on

    85 | 86 |
    87 |
    88 |

    Value

    89 | 90 | 91 |

    a data frame containing the proportion a gene is expressed in each 92 | cell type in a sample

    93 |
    94 | 95 |
    96 | 99 |
    100 | 101 | 102 |
    105 | 106 |
    107 |

    Site built with pkgdown 2.0.6.

    108 |
    109 | 110 |
    111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | -------------------------------------------------------------------------------- /docs/reference/rearrange_string.html: -------------------------------------------------------------------------------- 1 | 2 | Rearrange string — rearrange_string • scFeatures 7 | 8 | 9 |
    10 |
    54 | 55 | 56 | 57 |
    58 |
    59 | 64 | 65 |
    66 |

    This function takes a string as input and rearranges words in the string 67 | so that they are sorted alphabetically.

    68 |
    69 | 70 |
    71 |
    rearrange_string(str)
    72 |
    73 | 74 |
    75 |

    Arguments

    76 |
    str
    77 |

    A character string containing words separated by underscores.

    78 | 79 |
    80 |
    81 |

    Value

    82 | 83 | 84 |

    A character string with the words sorted alphabetically and 85 | separated by underscores.

    86 |
    87 | 88 |
    89 | 92 |
    93 | 94 | 95 |
    98 | 99 |
    100 |

    Site built with pkgdown 2.0.6.

    101 |
    102 | 103 |
    104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /docs/reference/scfeatures_result.html: -------------------------------------------------------------------------------- 1 | 2 | Example of scFeatures() output — scfeatures_result • scFeatures 6 | Skip to contents 7 | 8 | 9 |
    44 |
    45 |
    50 | 51 |
    52 |

    This is an example output of the scFeatures() function for example_scrnaseq.

    53 |
    54 | 55 |
    56 |

    Usage

    57 |
    data("scfeatures_result")
    58 |
    59 | 60 |
    61 |

    Format

    62 | 63 |
    64 |

    scfeatures_result

    65 | 66 | 67 |

    A list with two dataframes. In each dataframe the columns are each patient and the rows are the feature values. 68 | The first dataframe contains the feature type "proportion_raw". 69 | The second dataframe contains the feature type "proportion_logit".

    70 |
    71 | 72 |
    73 | 74 |
    76 | 77 | 78 |
    81 | 82 | 85 | 86 |
    87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /docs/sitemap.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | https://sydneybiox.github.io/scFeatures/404.html 5 | 6 | 7 | https://sydneybiox.github.io/scFeatures/articles/index.html 8 | 9 | 10 | https://sydneybiox.github.io/scFeatures/articles/scFeatures_associationstudy.html 11 | 12 | 13 | https://sydneybiox.github.io/scFeatures/articles/scFeatures_detail.html 14 | 15 | 16 | https://sydneybiox.github.io/scFeatures/articles/scFeatures_overview.html 17 | 18 | 19 | https://sydneybiox.github.io/scFeatures/articles/scFeatures_summary.html 20 | 21 | 22 | https://sydneybiox.github.io/scFeatures/authors.html 23 | 24 | 25 | https://sydneybiox.github.io/scFeatures/index.html 26 | 27 | 28 | https://sydneybiox.github.io/scFeatures/reference/L_stats.html 29 | 30 | 31 | https://sydneybiox.github.io/scFeatures/reference/bulk_sample.html 32 | 33 | 34 | https://sydneybiox.github.io/scFeatures/reference/bulk_sample_celltype.html 35 | 36 | 37 | https://sydneybiox.github.io/scFeatures/reference/check_data.html 38 | 39 | 40 | https://sydneybiox.github.io/scFeatures/reference/example_scrnaseq.html 41 | 42 | 43 | https://sydneybiox.github.io/scFeatures/reference/generateBPParam.html 44 | 45 | 46 | https://sydneybiox.github.io/scFeatures/reference/get_num_cell_per_celltype.html 47 | 48 | 49 | https://sydneybiox.github.io/scFeatures/reference/get_num_cell_per_spot.html 50 | 51 | 52 | https://sydneybiox.github.io/scFeatures/reference/index.html 53 | 54 | 55 | https://sydneybiox.github.io/scFeatures/reference/individual_geneset_proportion_celltype.html 56 | 57 | 58 | https://sydneybiox.github.io/scFeatures/reference/makeSeurat.html 59 | 60 | 61 | https://sydneybiox.github.io/scFeatures/reference/process_data.html 62 | 63 | 64 | https://sydneybiox.github.io/scFeatures/reference/rearrange_string.html 65 | 66 | 67 | https://sydneybiox.github.io/scFeatures/reference/remove_mito.html 68 | 69 | 70 | https://sydneybiox.github.io/scFeatures/reference/remove_mito_ribo.html 71 | 72 | 73 | https://sydneybiox.github.io/scFeatures/reference/run_CCI.html 74 | 75 | 76 | https://sydneybiox.github.io/scFeatures/reference/run_L_function.html 77 | 78 | 79 | https://sydneybiox.github.io/scFeatures/reference/run_Morans_I.html 80 | 81 | 82 | https://sydneybiox.github.io/scFeatures/reference/run_association_study_report.html 83 | 84 | 85 | https://sydneybiox.github.io/scFeatures/reference/run_celltype_interaction.html 86 | 87 | 88 | https://sydneybiox.github.io/scFeatures/reference/run_gene_cor.html 89 | 90 | 91 | https://sydneybiox.github.io/scFeatures/reference/run_gene_cor_celltype.html 92 | 93 | 94 | https://sydneybiox.github.io/scFeatures/reference/run_gene_mean.html 95 | 96 | 97 | https://sydneybiox.github.io/scFeatures/reference/run_gene_mean_celltype.html 98 | 99 | 100 | https://sydneybiox.github.io/scFeatures/reference/run_gene_prop.html 101 | 102 | 103 | https://sydneybiox.github.io/scFeatures/reference/run_gene_prop_celltype.html 104 | 105 | 106 | https://sydneybiox.github.io/scFeatures/reference/run_nn_correlation.html 107 | 108 | 109 | https://sydneybiox.github.io/scFeatures/reference/run_pathway_gsva.html 110 | 111 | 112 | https://sydneybiox.github.io/scFeatures/reference/run_pathway_mean.html 113 | 114 | 115 | https://sydneybiox.github.io/scFeatures/reference/run_pathway_prop.html 116 | 117 | 118 | https://sydneybiox.github.io/scFeatures/reference/run_proportion_logit.html 119 | 120 | 121 | https://sydneybiox.github.io/scFeatures/reference/run_proportion_ratio.html 122 | 123 | 124 | https://sydneybiox.github.io/scFeatures/reference/run_proportion_raw.html 125 | 126 | 127 | https://sydneybiox.github.io/scFeatures/reference/scFeatures.html 128 | 129 | 130 | https://sydneybiox.github.io/scFeatures/reference/scfeatures_result.html 131 | 132 | 133 | -------------------------------------------------------------------------------- /inst/CITATION: -------------------------------------------------------------------------------- 1 | citHeader("To cite 'scFeatures' in publications use:") 2 | 3 | 4 | citEntry(entry = "Article", 5 | title = "scFeatures: multi-view representations of single-cell and spatial data for disease outcome prediction", 6 | journal = "Bioinformatics", 7 | author = "Cao,Y., Lin,Y., Patrick,E., Yang,P., & Yang,J.Y.H.", 8 | volume = "38", 9 | number = "20", 10 | pages = "4745-4753", 11 | year = "2022", 12 | month = "08", 13 | issn = "1367-4803", 14 | doi = "10.1093/bioinformatics/btac590", 15 | url = "https://doi.org/10.1093/bioinformatics/btac590", 16 | eprint = "https://academic.oup.com/bioinformatics/article-pdf/38/20/4745/46535070/btac590.pdf", 17 | textVersion = paste("Cao,Y.,Lin,Y.,Patrick,E.,Yang,P.,&Yang,J.Y.H.(2022).", 18 | "scFeatures: Multi-view representations of single-cell and spatial data for disease outcome prediction.", 19 | "Bioinformatics, Volume 38, Issue 20, 15 October 2022, Pages 4745-4753." ) 20 | ) -------------------------------------------------------------------------------- /inst/extdata/figure/CCI_example_figures.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/inst/extdata/figure/CCI_example_figures.png -------------------------------------------------------------------------------- /inst/extdata/figure/aggregatedgene_example_figures.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/inst/extdata/figure/aggregatedgene_example_figures.png -------------------------------------------------------------------------------- /inst/extdata/figure/celltypegene_example_figures.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/inst/extdata/figure/celltypegene_example_figures.png -------------------------------------------------------------------------------- /inst/extdata/figure/celltypeproportion_example_figures.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/inst/extdata/figure/celltypeproportion_example_figures.png -------------------------------------------------------------------------------- /inst/extdata/figure/pathway_example_figures.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/inst/extdata/figure/pathway_example_figures.png -------------------------------------------------------------------------------- /inst/extdata/figure/spatial_example_figures.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/inst/extdata/figure/spatial_example_figures.png -------------------------------------------------------------------------------- /inst/overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/inst/overview.png -------------------------------------------------------------------------------- /inst/script/example_scrnaseq: -------------------------------------------------------------------------------- 1 | Data: 2 | example_scrnaseq.rds 3 | 4 | Description: 5 | This data is included in the package for demonstration purposes. 6 | It is a subsampled version of a melanoma data, containing treatment 7 | response status (ie, responder and non-responder) of melanoma patients. 8 | 9 | Structure: 10 | A Seurat object with 3,523 rows and 550 columns. 11 | Each row is a gene and each column is a cell. 12 | It include metadata that describe each cell. 13 | Some important metdata columns are: 14 | - celltype: Cell type label of the cell 15 | - sample: Which sample the cell is from 16 | - patient: The patient ID 17 | - respond: Response under therapy 18 | - pre_post: Pre or post therapy 19 | 20 | References: 21 | Sade-Feldman, M., Yizhak, K., Bjorgaard, S. L., Ray, J. P., 22 | de Boer, C. G., Jenkins, R. W., ... & Hacohen, N.(2018). Defining T cell 23 | states associated with response to checkpoint immunotherapy in melanoma. 24 | Cell, 175(4), 998-1013. 25 | 26 | -------------------------------------------------------------------------------- /inst/sticker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SydneyBioX/scFeatures/d308df2c6f1ecb0e2f930ce97ef6367b536dd1f9/inst/sticker.png -------------------------------------------------------------------------------- /man/example_scrnaseq.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/data.R 3 | \docType{data} 4 | \name{example_scrnaseq} 5 | \alias{example_scrnaseq} 6 | \title{Example of scRNA-seq data} 7 | \format{ 8 | \subsection{\code{example_scrnaseq}}{ 9 | 10 | A Seurat object with 3523 genes and 550 cells. 11 | Some of the key metadata columns are: 12 | \describe{ 13 | \item{celltype}{cell type of the cell} 14 | \item{sample}{patient ID of the cell} 15 | \item{condition}{whether the patient is a responder or non-responder} 16 | } 17 | } 18 | } 19 | \source{ 20 | \url{https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE120575} 21 | } 22 | \usage{ 23 | data("example_scrnaseq") 24 | } 25 | \description{ 26 | This is a subsampled version of the melanoma patients dataset as used in our 27 | manuscript. 28 | The original dataset is available at: 29 | \url{https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE120575}. 30 | } 31 | \keyword{datasets} 32 | -------------------------------------------------------------------------------- /man/get_num_cell_per_spot.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/utils.R 3 | \name{get_num_cell_per_spot} 4 | \alias{get_num_cell_per_spot} 5 | \title{Estimate a relative number of cells per spot for 6 | spatial transcriptomics data} 7 | \usage{ 8 | get_num_cell_per_spot(alldata) 9 | } 10 | \arguments{ 11 | \item{alldata}{A list object containing spatial transcriptomics} 12 | } 13 | \value{ 14 | a vector with the relative number of cells in each spot. 15 | } 16 | \description{ 17 | This function takes a list object containing spatial transcriptomics matrix as input 18 | and estimates the relative number of cells per spot in the data. 19 | The number of cells is estimated as the library size scaled to 20 | the range from 1 to 100. 21 | This value stored in the \code{number_cells} attribute. 22 | } 23 | \examples{ 24 | 25 | utils::data("example_scrnaseq" , package = "scFeatures") 26 | data <- example_scrnaseq@assays$RNA@data 27 | data <- list(data = data) 28 | number_of_cells <- get_num_cell_per_spot(data) 29 | 30 | 31 | } 32 | -------------------------------------------------------------------------------- /man/remove_mito_ribo.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/helper_celltype_expression.R 3 | \name{remove_mito_ribo} 4 | \alias{remove_mito_ribo} 5 | \title{Remove mitochondrial and ribosomal genes, and other highly correlated genes} 6 | \usage{ 7 | remove_mito_ribo(alldata) 8 | } 9 | \arguments{ 10 | \item{alldata}{A list object containing expression data} 11 | } 12 | \value{ 13 | The list object with the mitochrondrial and ribosomal genes and other highly 14 | correlated genes removed 15 | } 16 | \description{ 17 | This function removes mitochondria and ribosomal genes and genes 18 | highly correlated with these genes, as mitochondria and ribosomal 19 | genes are typically not interesting to look at. 20 | } 21 | \examples{ 22 | 23 | utils::data("example_scrnaseq" , package = "scFeatures") 24 | data <- example_scrnaseq 25 | data <- list(data = data@assays$RNA@data) 26 | data <- remove_mito_ribo(data) 27 | 28 | } 29 | -------------------------------------------------------------------------------- /man/run_CCI.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/run_scfeatures.R 3 | \name{run_CCI} 4 | \alias{run_CCI} 5 | \title{Generate cell cell communication score} 6 | \usage{ 7 | run_CCI(data, type = "scrna", ncores = 1) 8 | } 9 | \arguments{ 10 | \item{data}{A list object containing \code{data} matrix and \code{celltype} and \code{sample} vector.} 11 | 12 | \item{type}{input data type, either scrna, spatial_p, or spatial_t} 13 | 14 | \item{ncores}{number of cores} 15 | } 16 | \value{ 17 | a matrix of samples x features 18 | The features are in the form of ligand 1 receptor 2 celltype a, ligand 1 receptor 2 celltype b ... 19 | etc, with the numbers representing cell-cell interaction probability. 20 | } 21 | \description{ 22 | This function calculates the ligand receptor interaction score using SingleCellSignalR. 23 | The output features are in the form of celltype a -> celltype b -- ligand 1 -> receptor 2 , 24 | which indicates the interaction between ligand 1 in celltype a and receptor 2 in celltype b. 25 | 26 | It supports scRNA-seq. 27 | } 28 | \examples{ 29 | 30 | utils::data("example_scrnaseq" , package = "scFeatures") 31 | data <- example_scrnaseq[1:1000, 1:100] 32 | celltype <- data$celltype 33 | sample <- data$sample 34 | data <- as.matrix(data@assays$RNA@data) 35 | 36 | alldata <- scFeatures:::formatData(data = data, celltype = celltype, sample = sample ) 37 | feature_CCI <- run_CCI(alldata, type = "scrna" , ncores = 1 ) 38 | 39 | } 40 | -------------------------------------------------------------------------------- /man/run_L_function.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/run_scfeatures.R 3 | \name{run_L_function} 4 | \alias{run_L_function} 5 | \title{Generate L stats} 6 | \usage{ 7 | run_L_function(data, type = "spatial_p", ncores = 1) 8 | } 9 | \arguments{ 10 | \item{data}{A list object containing \code{data} matrix and \code{celltype} and \code{sample} vector.} 11 | 12 | \item{type}{The type of dataset, either "scrna", "spatial_t", or "spatial_p".} 13 | 14 | \item{ncores}{Number of cores for parallel processing.} 15 | } 16 | \value{ 17 | a dataframe of samples x features 18 | The features are in the form of protein 1 vs protein 2, protein 1 vs protein 3 ... 19 | etc, with the numbers representing the L values. 20 | } 21 | \description{ 22 | This function calculates L-statistics to measure spatial autocorrelation. 23 | L value greater than zero indicates spatial attraction of the pair of proteins 24 | whereas L value less than zero indicates spatial repulsion. 25 | The function supports spatial proteomics and spatial transcriptomics. 26 | } 27 | \examples{ 28 | 29 | utils::data("example_scrnaseq" , package = "scFeatures") 30 | celltype <- example_scrnaseq$celltype 31 | data <- example_scrnaseq@assays$RNA@data 32 | sample <- sample( c("patient1", "patient2", "patient3"), ncol(data) , replace= TRUE ) 33 | x <- sample(1:100, ncol(data) , replace = TRUE) 34 | y <- sample(1:100, ncol(data) , replace = TRUE) 35 | spatialCoords <- list( x , y) 36 | alldata <- scFeatures:::formatData(data = data, sample = sample, celltype = celltype, 37 | spatialCoords = spatialCoords ) 38 | 39 | feature_L_function <- run_L_function(alldata, type = "spatial_p", ncores = 1) 40 | 41 | } 42 | -------------------------------------------------------------------------------- /man/run_Morans_I.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/run_scfeatures.R 3 | \name{run_Morans_I} 4 | \alias{run_Morans_I} 5 | \title{Generate Moran's I} 6 | \usage{ 7 | run_Morans_I(data, type = "spatial_p", ncores = 1) 8 | } 9 | \arguments{ 10 | \item{data}{A list object containing \code{data} matrix and \code{celltype} and \code{sample} vector.} 11 | 12 | \item{type}{The type of dataset, either "scrna", "spatial_t", or "spatial_p".} 13 | 14 | \item{ncores}{Number of cores for parallel processing.} 15 | } 16 | \value{ 17 | a dataframe of samples x features 18 | The features are in the form of protein 1, protein 2 ... etc, with the numbers 19 | representing Moran's value. 20 | } 21 | \description{ 22 | This function calculates Moran's I to measure spatial autocorrelation, 23 | which an indicattion of how strongly the feature(ie, genes/proteins) 24 | expression values in a sample cluster or disperse. A value closer to 1 25 | indicates clustering of similar values and a value closer to -1 indicates 26 | clustering of dissimilar values. A value of 0 indicates no particular clustering 27 | structure, ie, the values are spatially distributed randomly. 28 | The function supports spatial proteomics and spatial transcriptomics. 29 | } 30 | \examples{ 31 | 32 | utils::data("example_scrnaseq" , package = "scFeatures") 33 | data <- example_scrnaseq[1:50, 1:20] 34 | celltype <- data$celltype 35 | data <- data@assays$RNA@data 36 | sample <- sample( c("patient1", "patient2", "patient3"), ncol(data) , replace= TRUE ) 37 | x <- sample(1:100, ncol(data) , replace = TRUE) 38 | y <- sample(1:100, ncol(data) , replace = TRUE) 39 | spatialCoords <- list( x , y) 40 | alldata <- scFeatures:::formatData(data = data, sample = sample, celltype = celltype, 41 | spatialCoords = spatialCoords ) 42 | 43 | feature_Morans_I <- run_Morans_I(alldata, type = "spatial_p", ncores = 1) 44 | 45 | } 46 | -------------------------------------------------------------------------------- /man/run_association_study_report.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/utils.R 3 | \name{run_association_study_report} 4 | \alias{run_association_study_report} 5 | \title{Create an association study report in HTML format} 6 | \usage{ 7 | run_association_study_report(scfeatures_result, output_folder) 8 | } 9 | \arguments{ 10 | \item{scfeatures_result}{a named list storing the scFeatures feature output. 11 | Note that the names of the list should be one or multiple of the following: 12 | \code{proportion_raw}, \code{proportion_logit}, \code{proportion_ratio}, 13 | \code{gene_mean_celltype}, \code{gene_prop_celltype}, \code{gene_cor_celltype}, 14 | \code{pathway_gsva}, \code{pathway_mean}, \code{pathway_prop}, \code{CCI}, 15 | \code{gene_mean_aggregated}, \code{gene_cor_aggregated}, and \code{gene_prop_aggregated}.} 16 | 17 | \item{output_folder}{the path to the folder where the HTML report 18 | will be saved} 19 | } 20 | \value{ 21 | an HTML file, saved to the directory defined in the \code{output_folder} 22 | argument 23 | } 24 | \description{ 25 | This function takes the feature matrix generated by 26 | scFeatures as input and creates an HTML report containing the 27 | results of the association study. The report is saved to the specified 28 | output folder. 29 | } 30 | \examples{ 31 | \dontrun{ 32 | output_folder <- tempdir() 33 | utils::data("scfeatures_result" , package = "scFeatures") 34 | run_association_study_report(scfeatures_result, output_folder ) 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /man/run_celltype_interaction.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/run_scfeatures.R 3 | \name{run_celltype_interaction} 4 | \alias{run_celltype_interaction} 5 | \title{Generate cell type interaction} 6 | \usage{ 7 | run_celltype_interaction(data, type = "spatial_p", ncores = 1) 8 | } 9 | \arguments{ 10 | \item{data}{A list object containing \code{data} matrix and \code{celltype} and \code{sample} vector.} 11 | 12 | \item{type}{The type of dataset, either "scrna", "spatial_t", or "spatial_p".} 13 | 14 | \item{ncores}{Number of cores for parallel processing.} 15 | } 16 | \value{ 17 | a dataframe of samples x features 18 | The features are in the form of protein 1 vs protein 2, protein 1 vs protein 3 ... 19 | etc, with the numbers representing the proportion of each interaction pairs in a 20 | give sample. 21 | } 22 | \description{ 23 | This function calculates the pairwise distance between cell types 24 | for a sample by using the coordinates and cell types of the cells. 25 | We find the nearest neighbours of each cell and the cell types of these neighbours. 26 | These are considered as spatial interaction pairs. The cell type composition of the 27 | spatial interaction pairs are used as features. 28 | The function supports spatial proteomics and spatial transcriptomics. 29 | } 30 | \examples{ 31 | 32 | utils::data("example_scrnaseq" , package = "scFeatures") 33 | data <- example_scrnaseq[1:50, 1:20] 34 | celltype <- data$celltype 35 | data <- data@assays$RNA@data 36 | sample <- sample( c("patient1", "patient2", "patient3"), ncol(data) , replace= TRUE ) 37 | x <- sample(1:100, ncol(data) , replace = TRUE) 38 | y <- sample(1:100, ncol(data) , replace = TRUE) 39 | spatialCoords <- list( x , y) 40 | alldata <- scFeatures:::formatData(data = data, sample = sample, celltype = celltype, 41 | spatialCoords = spatialCoords ) 42 | 43 | feature_celltype_interaction <- run_celltype_interaction( 44 | alldata, type = "spatial_p", ncores = 1 45 | ) 46 | 47 | } 48 | -------------------------------------------------------------------------------- /man/run_gene_cor.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/run_scfeatures.R 3 | \name{run_gene_cor} 4 | \alias{run_gene_cor} 5 | \title{Generate overall aggregated gene correlation} 6 | \usage{ 7 | run_gene_cor( 8 | data, 9 | type = "scrna", 10 | genes = NULL, 11 | num_top_gene = NULL, 12 | ncores = 1 13 | ) 14 | } 15 | \arguments{ 16 | \item{data}{A list object containing \code{data} matrix and \code{celltype} and \code{sample} vector.} 17 | 18 | \item{type}{The type of dataset, either "scrna", "spatial_t", or "spatial_p".} 19 | 20 | \item{genes}{Default to NULL, in which case the top variable genes will be 21 | used. If provided by user, need to be in the format of a list containing the 22 | genes of interest, eg, genes <- c(GZMA", "GZMK", "CCR7", "RPL38" )} 23 | 24 | \item{num_top_gene}{Number of top variable genes to use when genes is not provided. 25 | Defaults to 5.} 26 | 27 | \item{ncores}{Number of cores for parallel processing.} 28 | } 29 | \value{ 30 | a dataframe of samples x features 31 | The features are in the form of gene 1, gene 2 ... etc, with the numbers representing 32 | the proportion that the gene is expressed across all cells. 33 | } 34 | \description{ 35 | This function computes the correlation of gene expression across samples. The user 36 | can specify the genes of interest, or let the function use the top variable 37 | genes by default. The function supports scRNA-seq, spatial proteomics, 38 | and spatial transcriptomics. 39 | } 40 | \examples{ 41 | 42 | utils::data("example_scrnaseq" , package = "scFeatures") 43 | data <- example_scrnaseq[1:100, 1:200] 44 | celltype <- data$celltype 45 | sample <- data$sample 46 | data <- data@assays$RNA@data 47 | 48 | alldata <- scFeatures:::formatData(data = data, celltype = celltype, sample = sample ) 49 | feature_gene_cor <- run_gene_cor( 50 | alldata, type = "scrna", num_top_gene = 5, ncores = 1 51 | ) 52 | 53 | } 54 | -------------------------------------------------------------------------------- /man/run_gene_cor_celltype.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/run_scfeatures.R 3 | \name{run_gene_cor_celltype} 4 | \alias{run_gene_cor_celltype} 5 | \title{Generate cell type specific gene expression correlation} 6 | \usage{ 7 | run_gene_cor_celltype( 8 | data, 9 | type = "scrna", 10 | genes = NULL, 11 | num_top_gene = NULL, 12 | ncores = 1 13 | ) 14 | } 15 | \arguments{ 16 | \item{data}{A list object containing \code{data} matrix and \code{celltype} and \code{sample} vector.} 17 | 18 | \item{type}{The type of dataset, either "scrna", "spatial_t", or "spatial_p".} 19 | 20 | \item{genes}{Optional dataframe with 2 columns: 'marker' and 'celltype'. 21 | The 'marker' column should contain the genes of interest (e.g. 'S100A11', 'CCL4'), 22 | and the 'celltype' column should contain the celltype that the gene expression 23 | is to be computed from (e.g. 'CD8', 'B cells'). 24 | If not provided, the top variable genes will be used based on the 25 | num_top_gene parameter.} 26 | 27 | \item{num_top_gene}{Number of top genes to use when genes is not provided. 28 | Defaults to 5.} 29 | 30 | \item{ncores}{Number of cores for parallel processing.} 31 | } 32 | \value{ 33 | a dataframe of samples x features. 34 | The features are in the form of gene 1 vs gene 2 cell type a , 35 | gene 1 vs gene 3 cell type b ... etc, with the numbers representing the 36 | correlation of the two given genes in the given cell type. 37 | } 38 | \description{ 39 | This function computes the correlation of expression of a set of genes 40 | for each cell type in the input data. The input data can be of three types: 41 | 'scrna', 'spatial_p' or 'spatial_t'. If the genes parameter is not provided 42 | by the user, the top variable genes will be selected based on the 43 | num_top_gene parameter (defaults to 100). 44 | } 45 | \examples{ 46 | 47 | utils::data("example_scrnaseq" , package = "scFeatures") 48 | data <- example_scrnaseq[1:50, 1:20] 49 | celltype <- data$celltype 50 | sample <- data$sample 51 | data <- data@assays$RNA@data 52 | 53 | alldata <- scFeatures:::formatData(data = data, celltype = celltype, sample = sample ) 54 | 55 | feature_gene_cor_celltype <- run_gene_cor_celltype( 56 | alldata, 57 | type = "scrna", num_top_gene = 5, ncores = 1 58 | ) 59 | 60 | } 61 | -------------------------------------------------------------------------------- /man/run_gene_mean.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/run_scfeatures.R 3 | \name{run_gene_mean} 4 | \alias{run_gene_mean} 5 | \title{Generate overall aggregated mean expression} 6 | \usage{ 7 | run_gene_mean( 8 | data, 9 | type = "scrna", 10 | genes = NULL, 11 | num_top_gene = NULL, 12 | ncores = 1 13 | ) 14 | } 15 | \arguments{ 16 | \item{data}{A list object containing \code{data} matrix and \code{celltype} and \code{sample} vector.} 17 | 18 | \item{type}{The type of dataset, either "scrna", "spatial_t", or "spatial_p".} 19 | 20 | \item{genes}{Default to NULL, in which case the top variable genes will be 21 | used. If provided by user, need to be in the format of a list containing the 22 | genes of interest, eg, genes <- c(GZMA", "GZMK", "CCR7", "RPL38" )} 23 | 24 | \item{num_top_gene}{Number of top variable genes to use when genes is not provided. 25 | Defaults to 1500.} 26 | 27 | \item{ncores}{Number of cores for parallel processing.} 28 | } 29 | \value{ 30 | a dataframe of samples x features 31 | The features are in the form of gene 1, gene 2 ... etc, with the numbers representing 32 | averaged gene expression across all cells. 33 | } 34 | \description{ 35 | This function computes the mean expression of genes across samples. The user 36 | can specify the genes of interest, or let the function use the top variable 37 | genes by default. The function supports scRNA-seq, spatial proteomics, 38 | and spatial transcriptomics. 39 | } 40 | \examples{ 41 | 42 | utils::data("example_scrnaseq" , package = "scFeatures") 43 | data <- example_scrnaseq 44 | celltype <- data$celltype 45 | sample <- data$sample 46 | data <- data@assays$RNA@data 47 | 48 | alldata <- scFeatures:::formatData(data = data, celltype = celltype, sample = sample ) 49 | feature_gene_mean <- run_gene_mean( 50 | alldata, 51 | type = "scrna", num_top_gene = 150, ncores = 1 52 | ) 53 | 54 | } 55 | -------------------------------------------------------------------------------- /man/run_gene_mean_celltype.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/run_scfeatures.R 3 | \name{run_gene_mean_celltype} 4 | \alias{run_gene_mean_celltype} 5 | \title{Generate cell type specific gene mean expression} 6 | \usage{ 7 | run_gene_mean_celltype( 8 | data, 9 | type = "scrna", 10 | genes = NULL, 11 | num_top_gene = NULL, 12 | ncores = 1 13 | ) 14 | } 15 | \arguments{ 16 | \item{data}{A list object containing \code{data} matrix and \code{celltype} and \code{sample} vector.} 17 | 18 | \item{type}{The type of dataset, either "scrna", "spatial_t", or "spatial_p".} 19 | 20 | \item{genes}{Optional dataframe with 2 columns: 'marker' and 'celltype'. 21 | The 'marker' column should contain the genes of interest (e.g. 'S100A11', 'CCL4'), 22 | and the 'celltype' column should contain the celltype that the gene expression 23 | is to be computed from (e.g. 'CD8', 'B cells'). 24 | If not provided, the top variable genes will be used based on the 25 | num_top_gene parameter.} 26 | 27 | \item{num_top_gene}{Number of top genes to use when genes is not provided. 28 | Defaults to 100.} 29 | 30 | \item{ncores}{Number of cores for parallel processing.} 31 | } 32 | \value{ 33 | a dataframe of samples x features. 34 | The features are in the form of gene 1 celltype a, gene 2 celltype b ... etc, 35 | with the number representing average gene expression of the given gene across 36 | the cells of the the given celltype. 37 | } 38 | \description{ 39 | This function computes the mean expression of a set of genes for 40 | each cell type in the input data. The input data can be of three types: 41 | 'scrna', 'spatial_p' or 'spatial_t'. If the genes parameter is not p 42 | rovided by the user, the top variable genes will be selected based on 43 | the num_top_gene parameter (defaults to 100). 44 | } 45 | \examples{ 46 | 47 | utils::data("example_scrnaseq" , package = "scFeatures") 48 | data <- example_scrnaseq[1:200, 1:200] 49 | celltype <- data$celltype 50 | sample <- data$sample 51 | data <- data@assays$RNA@data 52 | 53 | alldata <- scFeatures:::formatData(data = data, celltype = celltype, sample = sample ) 54 | 55 | feature_gene_mean_celltype <- run_gene_mean_celltype( 56 | alldata, 57 | type = "scrna", num_top_gene = 100, ncores = 1 58 | ) 59 | 60 | } 61 | -------------------------------------------------------------------------------- /man/run_gene_prop.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/run_scfeatures.R 3 | \name{run_gene_prop} 4 | \alias{run_gene_prop} 5 | \title{Generate overall aggregated gene proportion expression} 6 | \usage{ 7 | run_gene_prop( 8 | data, 9 | type = "scrna", 10 | genes = NULL, 11 | num_top_gene = NULL, 12 | ncores = 1 13 | ) 14 | } 15 | \arguments{ 16 | \item{data}{A list object containing \code{data} matrix and \code{celltype} and \code{sample} vector.} 17 | 18 | \item{type}{The type of dataset, either "scrna", "spatial_t", or "spatial_p".} 19 | 20 | \item{genes}{Default to NULL, in which case the top variable genes will be 21 | used. If provided by user, need to be in the format of a list containing the 22 | genes of interest, eg, genes <- c(GZMA", "GZMK", "CCR7", "RPL38" )} 23 | 24 | \item{num_top_gene}{Number of top variable genes to use when genes is not provided. 25 | Defaults to 1500.} 26 | 27 | \item{ncores}{Number of cores for parallel processing.} 28 | } 29 | \value{ 30 | a dataframe of samples x features 31 | The features are in the form of gene 1 vs gene 2, gene 1 vs gene 3 ... etc, 32 | with the numbers representing correlation of gene expressions. 33 | } 34 | \description{ 35 | This function computes the proportion of gene expression across samples. The user 36 | can specify the genes of interest, or let the function use the top variable 37 | genes by default. The function supports scRNA-seq, spatial proteomics, 38 | and spatial transcriptomics. 39 | } 40 | \examples{ 41 | 42 | utils::data("example_scrnaseq" , package = "scFeatures") 43 | data <- example_scrnaseq[1:50, 1:20] 44 | celltype <- data$celltype 45 | sample <- data$sample 46 | data <- data@assays$RNA@data 47 | 48 | alldata <- scFeatures:::formatData(data = data, celltype = celltype, sample = sample ) 49 | feature_gene_prop <- run_gene_prop(alldata, type = "scrna", num_top_gene = 10, ncores = 1) 50 | 51 | } 52 | -------------------------------------------------------------------------------- /man/run_gene_prop_celltype.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/run_scfeatures.R 3 | \name{run_gene_prop_celltype} 4 | \alias{run_gene_prop_celltype} 5 | \title{Generate cell type specific gene proportion expression} 6 | \usage{ 7 | run_gene_prop_celltype( 8 | data, 9 | type = "scrna", 10 | genes = NULL, 11 | num_top_gene = NULL, 12 | ncores = 1 13 | ) 14 | } 15 | \arguments{ 16 | \item{data}{A list object containing \code{data} matrix and \code{celltype} and \code{sample} vector.} 17 | 18 | \item{type}{The type of dataset, either "scrna", "spatial_t", or "spatial_p".} 19 | 20 | \item{genes}{Optional dataframe with 2 columns: 'marker' and 'celltype'. 21 | The 'marker' column should contain the genes of interest (e.g. 'S100A11', 'CCL4'), 22 | and the 'celltype' column should contain the celltype that the gene expression 23 | is to be computed from (e.g. 'CD8', 'B cells'). 24 | If not provided, the top variable genes will be used based on the 25 | num_top_gene parameter.} 26 | 27 | \item{num_top_gene}{Number of top genes to use when genes is not provided. 28 | Defaults to 100.} 29 | 30 | \item{ncores}{Number of cores for parallel processing.} 31 | } 32 | \value{ 33 | a dataframe of samples x features. 34 | The features are in the form of gene 1 celltype a, gene 2 celltype b ... etc, 35 | with the number representing proportion of gene expression of the given gene across 36 | the cells of the the given celltype. 37 | } 38 | \description{ 39 | This function computes the proportion of expression of a set of genes 40 | for each cell type in the input data. The input data can be of three types: 41 | 'scrna', 'spatial_p' or 'spatial_t'. If the genes parameter is not provided 42 | by the user, the top variable genes will be selected based on the 43 | num_top_gene parameter (defaults to 100). 44 | } 45 | \examples{ 46 | 47 | utils::data("example_scrnaseq" , package = "scFeatures") 48 | data <- example_scrnaseq[, 1:20] 49 | celltype <- data$celltype 50 | sample <- data$sample 51 | data <- data@assays$RNA@data 52 | 53 | alldata <- scFeatures:::formatData(data = data, celltype = celltype, sample = sample ) 54 | 55 | feature_gene_prop_celltype <- run_gene_prop_celltype( 56 | alldata, 57 | type = "scrna", num_top_gene = 100, ncores = 1 58 | ) 59 | 60 | } 61 | -------------------------------------------------------------------------------- /man/run_nn_correlation.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/run_scfeatures.R 3 | \name{run_nn_correlation} 4 | \alias{run_nn_correlation} 5 | \title{Generate nearest neighbour correlation} 6 | \usage{ 7 | run_nn_correlation(data, type = "spatial_p", num_top_gene = NULL, ncores = 1) 8 | } 9 | \arguments{ 10 | \item{data}{A list object containing \code{data} matrix and \code{celltype} and \code{sample} vector.} 11 | 12 | \item{type}{The type of dataset, either "scrna", "spatial_t", or "spatial_p".} 13 | 14 | \item{num_top_gene}{Number of top variable genes to use when genes is 15 | not provided. Defaults to 1500.} 16 | 17 | \item{ncores}{Number of cores for parallel processing.} 18 | } 19 | \value{ 20 | a dataframe of samples x features 21 | The features are in the form of protein 1, protein 2 ... etc, with the numbers 22 | representing Pearson's correlation. 23 | } 24 | \description{ 25 | This function calculates the nearest neighbour correlation for each feature 26 | (eg, proteins) in each sample. This is calculated by taking the correlation 27 | between each cell and its nearest neighbours cell for a particular feature. 28 | This function supports spatial proteomics, and spatial transcriptomics. 29 | } 30 | \examples{ 31 | 32 | utils::data("example_scrnaseq" , package = "scFeatures") 33 | data <- example_scrnaseq[1:50, 1:20] 34 | celltype <- data$celltype 35 | data <- data@assays$RNA@data 36 | sample <- sample( c("patient1", "patient2", "patient3"), ncol(data) , replace= TRUE ) 37 | x <- sample(1:100, ncol(data) , replace = TRUE) 38 | y <- sample(1:100, ncol(data) , replace = TRUE) 39 | spatialCoords <- list( x , y) 40 | alldata <- scFeatures:::formatData(data = data, sample = sample, celltype = celltype, 41 | spatialCoords = spatialCoords ) 42 | feature_nn_correlation <- run_nn_correlation( 43 | alldata, type = "spatial_p", ncores = 1 44 | ) 45 | 46 | } 47 | -------------------------------------------------------------------------------- /man/run_pathway_gsva.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/run_scfeatures.R 3 | \name{run_pathway_gsva} 4 | \alias{run_pathway_gsva} 5 | \title{Generate pathway score using gene set enrichement analysis} 6 | \usage{ 7 | run_pathway_gsva( 8 | data, 9 | method = "ssgsea", 10 | geneset = NULL, 11 | species = "Homo sapiens", 12 | type = "scrna", 13 | subsample = TRUE, 14 | ncores = 1 15 | ) 16 | } 17 | \arguments{ 18 | \item{data}{A list object containing \code{data} matrix and \code{celltype} and \code{sample} vector.} 19 | 20 | \item{method}{Type of pathway analysis method, currently support \code{ssgsea} 21 | and \code{aucell}} 22 | 23 | \item{geneset}{By default (when the \code{geneset} argument is not specified), 24 | we use the 50 hallmark gene set from msigdb. 25 | The users can also provide their geneset of interest in a list format, with 26 | each list entry containing a vector of the names of genes in a gene set. 27 | eg, geneset <- list("pathway_a" = c("CAPN1", ...), "pathway_b" = c("PEX6"))} 28 | 29 | \item{species}{Whether the species is "Homo sapiens" or "Mus musculus". 30 | Default is "Homo sapiens".} 31 | 32 | \item{type}{The type of dataset, either "scrna", "spatial_t", or "spatial_p".} 33 | 34 | \item{subsample}{Whether to subsample, either TRUE or FALSE. For larger datasets 35 | (eg, over 30,000 cells), the subsample function can be used to increase 36 | speed.} 37 | 38 | \item{ncores}{Number of cores for parallel processing.} 39 | } 40 | \value{ 41 | a dataframe of samples x features 42 | The features are in the form of pathway 1 celltype a, pathway 2 celltype b ... 43 | etc, with the number representing the gene set enrichment score of a given 44 | pathway in cells from a given celltype. 45 | } 46 | \description{ 47 | This function calculates pathway scores for a given input 48 | dataset and gene set using gene set enrichment analysis (GSVA). 49 | It supports scRNA-seq, spatial proteomics and spatial transcriptomics. 50 | It currently supports two pathway analysis methods: ssgsea and aucell. 51 | By default, it uses the 50 hallmark gene sets from msigdb. 52 | Alternatively, users can provide their own gene sets of interest 53 | in a list format. 54 | } 55 | \examples{ 56 | 57 | utils::data("example_scrnaseq" , package = "scFeatures") 58 | data <- example_scrnaseq[, 1:20] 59 | celltype <- data$celltype 60 | sample <- data$sample 61 | data <- data@assays$RNA@data 62 | 63 | alldata <- scFeatures:::formatData(data = data, celltype = celltype, sample = sample ) 64 | 65 | feature_pathway_gsva <- run_pathway_gsva( 66 | alldata, 67 | geneset = NULL, species = "Homo sapiens", 68 | type = "scrna", subsample = FALSE, ncores = 1 69 | ) 70 | 71 | } 72 | -------------------------------------------------------------------------------- /man/run_pathway_mean.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/run_scfeatures.R 3 | \name{run_pathway_mean} 4 | \alias{run_pathway_mean} 5 | \title{Generate pathway score using expression level} 6 | \usage{ 7 | run_pathway_mean( 8 | data, 9 | geneset = NULL, 10 | species = "Homo sapiens", 11 | type = "scrna", 12 | ncores = 1 13 | ) 14 | } 15 | \arguments{ 16 | \item{data}{A list object containing \code{data} matrix and \code{celltype} and \code{sample} vector.} 17 | 18 | \item{geneset}{By default (when the \code{geneset} argument is not specified), 19 | we use the 50 hallmark gene set from msigdb. 20 | The users can also provide their geneset of interest in a list format, with 21 | each list entry containing a vector of the names of genes in a gene set. 22 | eg, geneset <- list("pathway_a" = c("CANS1", ...), "pathway_b" = c("PEX6"))} 23 | 24 | \item{species}{Whether the species is "Homo sapiens" or "Mus musculus". 25 | Default is "Homo sapiens".} 26 | 27 | \item{type}{The type of dataset, either "scrna", "spatial_t", or "spatial_p".} 28 | 29 | \item{ncores}{Number of cores for parallel processing.} 30 | } 31 | \value{ 32 | a dataframe of samples x features 33 | The features are in the form of pathway 1 celltype a, pathway 2 celltype b ... 34 | etc, with the number representing the averaged expression of a given pathway in 35 | cells from a given celltype. 36 | } 37 | \description{ 38 | This function calculates pathway scores for a given dataset and gene set 39 | using gene expression levels. It supports scRNA-seq, spatial transcriptomics 40 | and spatial proteomics and spatial transcriptomics). 41 | By default, it uses the 50 hallmark gene sets from msigdb. 42 | Alternatively, users can provide their own gene sets of interest in a list format. 43 | } 44 | \examples{ 45 | 46 | utils::data("example_scrnaseq" , package = "scFeatures") 47 | data <- example_scrnaseq[1:500, 1:200] 48 | celltype <- data$celltype 49 | sample <- data$sample 50 | data <- data@assays$RNA@data 51 | 52 | alldata <- scFeatures:::formatData(data = data, celltype = celltype, sample = sample ) 53 | feature_pathway_mean <- run_pathway_mean( 54 | alldata , 55 | geneset = NULL, species = "Homo sapiens", 56 | type = "scrna", ncores = 1 57 | ) 58 | 59 | 60 | } 61 | -------------------------------------------------------------------------------- /man/run_pathway_prop.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/run_scfeatures.R 3 | \name{run_pathway_prop} 4 | \alias{run_pathway_prop} 5 | \title{Generate pathway score using proportion of expression} 6 | \usage{ 7 | run_pathway_prop( 8 | data, 9 | geneset = NULL, 10 | species = "Homo sapiens", 11 | type = "scrna", 12 | ncores = 1 13 | ) 14 | } 15 | \arguments{ 16 | \item{data}{A list object containing \code{data} matrix and \code{celltype} and \code{sample} vector.} 17 | 18 | \item{geneset}{By default (when the \code{geneset} argument is not specified), 19 | we use the 50 hallmark gene set from msigdb. 20 | The users can also provide their geneset of interest in a list format, with 21 | each list entry containing a vector of the names of genes in a gene set. 22 | eg, geneset <- list("pathway_a" = c("CANS1", ...), "pathway_b" = c("PEX6"))} 23 | 24 | \item{species}{Whether the species is "Homo sapiens" or "Mus musculus". 25 | Default is "Homo sapiens".} 26 | 27 | \item{type}{The type of dataset, either "scrna", "spatial_t", or "spatial_p".} 28 | 29 | \item{ncores}{Number of cores for parallel processing.} 30 | } 31 | \value{ 32 | a dataframe of samples x features 33 | The features are in the form of pathway 1 celltype a, pathway 2 celltype b ... 34 | etc, with the number representing the proportion of expression of a given pathway 35 | in cells from a given celltype. 36 | } 37 | \description{ 38 | This function calculates pathway scores for a given input dataset and gene set 39 | using the proportion of gene expression levels. It supports scRNA-seq, spatial transcriptomics 40 | and spatial proteomics and spatial transcriptomics). 41 | By default, it uses the 50 hallmark gene sets from msigdb. 42 | Alternatively, users can provide their own gene sets of interest in a list format. 43 | } 44 | \examples{ 45 | 46 | utils::data("example_scrnaseq" , package = "scFeatures") 47 | data <- example_scrnaseq[1:100, 1:100] 48 | celltype <- data$celltype 49 | sample <- data$sample 50 | data <- data@assays$RNA@data 51 | 52 | alldata <- scFeatures:::formatData(data = data, celltype = celltype, sample = sample ) 53 | 54 | feature_pathway_prop <- run_pathway_prop( 55 | alldata, 56 | geneset = NULL, species = "Homo sapiens", 57 | type = "scrna", ncores = 1 58 | ) 59 | 60 | 61 | } 62 | -------------------------------------------------------------------------------- /man/run_proportion_logit.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/run_scfeatures.R 3 | \name{run_proportion_logit} 4 | \alias{run_proportion_logit} 5 | \title{Generate cell type proportions, with logit transformation} 6 | \usage{ 7 | run_proportion_logit(data, type = "scrna", ncores = 1) 8 | } 9 | \arguments{ 10 | \item{data}{A list object containing \code{data} matrix and \code{celltype} and \code{sample} vector.} 11 | 12 | \item{type}{The type of dataset, either "scrna", "spatial_t", or "spatial_p".} 13 | 14 | \item{ncores}{Number of cores for parallel processing.} 15 | } 16 | \value{ 17 | a dataframe of samples x features 18 | The features are in the form of celltype a, celltype b, with the number 19 | representing proportions. 20 | } 21 | \description{ 22 | This function calculates the proportions of cells belonging to each cell type, 23 | and applies a logit transformation to the proportions. 24 | The input data must contain \code{sample} and \code{celltype} metadata column. 25 | The function supports scRNA-seq and spatial proteomics. 26 | The function returns a dataframe with samples as rows and cell types as columns. 27 | } 28 | \examples{ 29 | utils::data("example_scrnaseq" , package = "scFeatures") 30 | data <- example_scrnaseq[1:50, 1:20] 31 | celltype <- data$celltype 32 | sample <- data$sample 33 | data <- data@assays$RNA@data 34 | 35 | alldata <- scFeatures:::formatData(data = data, celltype = celltype, sample = sample ) 36 | 37 | feature_proportion_logit <- run_proportion_logit( 38 | alldata, 39 | type = "scrna", ncores = 1 40 | ) 41 | 42 | } 43 | -------------------------------------------------------------------------------- /man/run_proportion_ratio.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/run_scfeatures.R 3 | \name{run_proportion_ratio} 4 | \alias{run_proportion_ratio} 5 | \title{Generate cell type proportion ratio} 6 | \usage{ 7 | run_proportion_ratio(data, type = "scrna", ncores = 1) 8 | } 9 | \arguments{ 10 | \item{data}{A list object containing \code{data} matrix and \code{celltype} and \code{sample} vector.} 11 | 12 | \item{type}{The type of dataset, either "scrna", "spatial_t", or "spatial_p".} 13 | 14 | \item{ncores}{Number of cores for parallel processing.} 15 | } 16 | \value{ 17 | a dataframe of samples x features. 18 | The features are in the form of celltype a vs celltype b, celltype a vs celltype c, 19 | with the number representing the ratio between the two cell types. 20 | } 21 | \description{ 22 | This function calculates pairwise cell type proportion ratio for each sample. 23 | and applies a logit transformation to the proportions. 24 | The input data must contain \code{sample} and \code{celltype} metadata column. 25 | The function supports scRNA-seq and spatial proteomics. 26 | The function returns a dataframe with samples as rows and cell types as columns. 27 | } 28 | \examples{ 29 | 30 | utils::data("example_scrnaseq" , package = "scFeatures") 31 | data <- example_scrnaseq[1:50, 1:20] 32 | 33 | celltype <- data$celltype 34 | sample <- data$sample 35 | data <- data@assays$RNA@data 36 | 37 | alldata <- scFeatures:::formatData(data = data, celltype = celltype, sample = sample ) 38 | 39 | feature_proportion_ratio <- run_proportion_ratio( 40 | alldata, 41 | type = "scrna", ncores = 1 42 | ) 43 | 44 | } 45 | -------------------------------------------------------------------------------- /man/run_proportion_raw.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/run_scfeatures.R 3 | \name{run_proportion_raw} 4 | \alias{run_proportion_raw} 5 | \title{Generate cell type proportion raw} 6 | \usage{ 7 | run_proportion_raw(data, type = "scrna", ncores = 1) 8 | } 9 | \arguments{ 10 | \item{data}{A list object containing \code{data} matrix and \code{celltype} and \code{sample} vector.} 11 | 12 | \item{type}{The type of dataset, either "scrna", "spatial_t", or "spatial_p".} 13 | 14 | \item{ncores}{Number of cores for parallel processing.} 15 | } 16 | \value{ 17 | a dataframe of samples x features. 18 | The features are in the form of celltype a, celltype b, with the number 19 | representing proportions. 20 | } 21 | \description{ 22 | This function calculates the proportions of cells belonging to each cell type. 23 | The input data must contain \code{sample} and \code{celltype} metadata column. 24 | The function supports scRNA-seq and spatial proteomics. 25 | The function returns a dataframe with samples as rows and cell types as columns. 26 | } 27 | \examples{ 28 | utils::data("example_scrnaseq" , package = "scFeatures") 29 | data <- example_scrnaseq[1:50, 1:20] 30 | 31 | celltype <- data$celltype 32 | sample <- data$sample 33 | data <- data@assays$RNA@data 34 | 35 | alldata <- scFeatures:::formatData(data = data, celltype = celltype, sample = sample ) 36 | 37 | feature_proportion_raw <- run_proportion_raw( 38 | alldata, 39 | type = "scrna", ncores = 1 40 | ) 41 | 42 | } 43 | -------------------------------------------------------------------------------- /man/scFeatures.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/wrapper_run_scfeatures.R 3 | \name{scFeatures} 4 | \alias{scFeatures} 5 | \title{Wrapper function to run all feature types in scFeatures} 6 | \usage{ 7 | scFeatures( 8 | data = NULL, 9 | sample = NULL, 10 | celltype = NULL, 11 | spatialCoords = NULL, 12 | spotProbability = NULL, 13 | feature_types = NULL, 14 | type = "scrna", 15 | ncores = 1, 16 | species = "Homo sapiens", 17 | celltype_genes = NULL, 18 | aggregated_genes = NULL, 19 | geneset = NULL 20 | ) 21 | } 22 | \arguments{ 23 | \item{data}{input data, a matrix of genes by cells} 24 | 25 | \item{sample}{a vector of sample information} 26 | 27 | \item{celltype}{a vector of cell type information} 28 | 29 | \item{spatialCoords}{a list of two vectors containing the x and y coordinates of each cell} 30 | 31 | \item{spotProbability}{a matrix of spot probability, each row represents a celltype and each column represents a spot} 32 | 33 | \item{feature_types}{vector containing the name of the feature types to generate, 34 | options are "proportion_raw", "proportion_logit" , "proportion_ratio", 35 | "gene_mean_celltype", "gene_prop_celltype", "gene_cor_celltype", 36 | "pathway_gsva" , "pathway_mean", "pathway_prop", 37 | "CCI", 38 | "gene_mean_aggregated", "gene_prop_aggregated", 'gene_cor_aggregated', 39 | "L_stats" , "celltype_interaction" , "morans_I", "nn_correlation". 40 | If no value is provided, all the above feature types will be generated.} 41 | 42 | \item{type}{input data type, either "scrna" (stands for single-cell RNA-sequencing data), 43 | "spatial_p" (stands for spatial proteomics data), or "spatial_t" (stands for single cell spatial data )} 44 | 45 | \item{ncores}{number of cores , default to 1} 46 | 47 | \item{species}{either "Homo sapiens" or "Mus musculus". Defaults to "Homo sapiens" if no value provided} 48 | 49 | \item{celltype_genes}{the genes of interest for celltype specific gene expression feature category 50 | If no value is provided, the top variable genes will be used} 51 | 52 | \item{aggregated_genes}{the genes of interest for overall aggregated gene expression feature category 53 | If no value is provided, the top variable genes will be used} 54 | 55 | \item{geneset}{the geneset of interest for celltype specific pathway feature category 56 | If no value is provided, the 50 hallmark pathways will be used} 57 | } 58 | \value{ 59 | a list of dataframes containing the generated feature matrix in the form of sample x features 60 | } 61 | \description{ 62 | The scFeatures function generates a variety of features from a Seurat object 63 | containing single cell RNA-sequencing data. By default, all feature types will be generated 64 | and returned in a single list containing multiple data frames. 65 | } 66 | \examples{ 67 | utils::data("example_scrnaseq" , package = "scFeatures") 68 | data <- example_scrnaseq 69 | celltype <- data$celltype 70 | sample <- data$sample 71 | data <- data@assays$RNA@data 72 | scfeatures_result <- scFeatures(data, celltype = celltype, sample = sample, type = "scrna", feature_types = "proportion_raw") 73 | 74 | } 75 | -------------------------------------------------------------------------------- /man/scfeatures_result.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/data.R 3 | \docType{data} 4 | \name{scfeatures_result} 5 | \alias{scfeatures_result} 6 | \title{Example of scFeatures() output} 7 | \format{ 8 | \subsection{\code{scfeatures_result}}{ 9 | 10 | A list with two dataframes. In each dataframe the columns are each patient and the rows are the feature values. 11 | The first dataframe contains the feature type "proportion_raw". 12 | The second dataframe contains the feature type "proportion_logit". 13 | } 14 | } 15 | \usage{ 16 | data("scfeatures_result") 17 | } 18 | \description{ 19 | This is an example output of the scFeatures() function for example_scrnaseq. 20 | } 21 | \keyword{datasets} 22 | -------------------------------------------------------------------------------- /vignettes/.gitignore: -------------------------------------------------------------------------------- 1 | *.html 2 | *.R 3 | -------------------------------------------------------------------------------- /vignettes/scFeatures_overview.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "A detailed explanation of scFeatures' features" 3 | output: BiocStyle::html_document 4 | vignette: > 5 | %\VignetteIndexEntry{Overview of scFeatures with case studies} 6 | %\VignetteEngine{knitr::rmarkdown} 7 | %\VignetteEncoding{UTF-8} 8 | --- 9 | 10 | ```{r setup, include = FALSE} 11 | knitr::opts_chunk$set( 12 | collapse = TRUE, 13 | comment = "#>", 14 | message = FALSE, 15 | warning = FALSE 16 | ) 17 | ``` 18 | 19 | 20 | ```{r eval=TRUE, include=FALSE, paged.print=TRUE} 21 | library(S4Vectors) 22 | ``` 23 | 24 | 25 | # Introduction 26 | 27 | scFeatures is a tool for generating multi-view representations of samples in a single-cell dataset. This vignette provides an overview of scFeatures. It uses the main function to generate features and then illustrates case studies of using the generated features for classification, survival analysis and association study. 28 | 29 | 30 | 31 | 32 | ```{r} 33 | library(scFeatures) 34 | ``` 35 | 36 | 37 | # Running scFeatures 38 | 39 | scFeatures can be run using one line of code `scfeatures_result <- scFeatures(data)`, which generates a list of dataframes containing all feature types in the form of samples x features. 40 | 41 | 42 | 43 | ```{r} 44 | data("example_scrnaseq" , package = "scFeatures") 45 | data <- example_scrnaseq 46 | 47 | scfeatures_result <- scFeatures(data = data@assays$RNA@data, sample = data$sample, celltype = data$celltype, 48 | feature_types = "gene_mean_celltype" , 49 | type = "scrna", 50 | ncores = 1, 51 | species = "Homo sapiens") 52 | ``` 53 | 54 | 55 | By default, the above function generates all feature types. To reduce the computational time for the demonstrate, here we generate only the selected feature type "gene mean celltype". More information on the function customisation can be obtained by typing `?scFeatures()` 56 | 57 | 58 | 59 | 60 | 61 | ## Classification of conditions using the generated features 62 | 63 | To build disease prediction model from the generated features we utilise [`ClassifyR`](https://www.bioconductor.org/packages/release/bioc/html/ClassifyR.html). 64 | 65 | 66 | The output from scFeatures is a matrix of sample x feature, ie, the row corresponds to each sample, the column corresponds to the feature, and can be directly used as the `X`. The order of the rows is in the order of unique(data$sample). 67 | 68 | Here we use the feature type gene mean celltype as an example to build classification model on the disease condition. 69 | 70 | ```{r} 71 | 72 | feature_gene_mean_celltype <- scfeatures_result$gene_mean_celltype 73 | 74 | # inspect the first 5 rows and first 5 columns 75 | feature_gene_mean_celltype[1:5, 1:5] 76 | 77 | # inspect the dimension of the matrix 78 | dim(feature_gene_mean_celltype) 79 | 80 | ``` 81 | 82 | 83 | We recommend using `ClassifyR::crossValidate` to do cross-validated classification with the extracted feaures. 84 | 85 | ```{r fig.height=4, fig.width=7} 86 | library(ClassifyR) 87 | 88 | # X is the feature type generated 89 | # y is the condition for classification 90 | X <- feature_gene_mean_celltype 91 | y <- data@meta.data[!duplicated(data$sample), ] 92 | y <- y[match(rownames(X), y$sample), ]$condition 93 | 94 | # run the classification model using random forest 95 | result <- ClassifyR::crossValidate( 96 | X, y, 97 | classifier = "randomForest", nCores = 2, 98 | nFolds = 3, nRepeats = 5 99 | ) 100 | 101 | ClassifyR::performancePlot(results = result) 102 | ``` 103 | 104 | It is expected that the classification accuracy is low. This is because we are using a small subset of data containing only 3523 genes and 519 cells. The dataset is unlikely to contain enough information to distinguish responders and non-responders. 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | ## Survival analysis using the generated features 113 | 114 | Suppose we want to use the features to perform survival analysis. In here, since the patient outcomes are responder and non-responder, and do not contain survival information, we randomly "generate" the survival outcome for the purpose of demonstration. 115 | 116 | We use a standard hierarchical clustering to split the patients into 2 groups based on the generated features. 117 | 118 | ```{r fig.height=5, fig.width=7} 119 | library(survival) 120 | library(survminer) 121 | 122 | 123 | X <- feature_gene_mean_celltype 124 | X <- t(X) 125 | 126 | # run hierarchical clustering 127 | hclust_res <- hclust( 128 | as.dist(1 - cor(X, method = "pearson")), 129 | method = "ward.D2" 130 | ) 131 | 132 | set.seed(1) 133 | # generate some survival outcome, including the survival days and the censoring outcome 134 | survival_day <- sample(1:100, ncol(X)) 135 | censoring <- sample(0:1, ncol(X), replace = TRUE) 136 | 137 | cluster_res <- cutree(hclust_res, k = 2) 138 | metadata <- data.frame( cluster = factor(cluster_res), 139 | survival_day = survival_day, 140 | censoring = censoring) 141 | 142 | # plot survival curve 143 | fit <- survfit( 144 | Surv(survival_day, censoring) ~ cluster, 145 | data = metadata 146 | ) 147 | ggsurv <- ggsurvplot(fit, 148 | conf.int = FALSE, risk.table = TRUE, 149 | risk.table.col = "strata", pval = TRUE 150 | ) 151 | ggsurv 152 | ``` 153 | 154 | The p-value is very high, indicating there is not enough evidence to claim there is a survival difference between the two groups. 155 | This is as expected, because we randomly assigned survival status to each of the patient. 156 | 157 | 158 | 159 | 160 | # Association study of the features with the conditions 161 | 162 | scFeatures provides a function that automatically run association study of the features with the conditions and produce an HTML file with the visualisation of the features and the association result. 163 | 164 | For this, we would first need to generate the features using scFeatures and then store the result in a named list format. 165 | 166 | For demonstration purpose, we provide an example of this features list. The code below show the steps of generating the HTML output from the features list. 167 | 168 | 169 | ```{r} 170 | # here we use the demo data from the package 171 | data("scfeatures_result" , package = "scFeatures") 172 | 173 | # here we use the current working directory to save the html output 174 | # modify this to save the html file to other directory 175 | output_folder <- tempdir() 176 | 177 | run_association_study_report(scfeatures_result, output_folder ) 178 | ``` 179 | 180 | Inside the directory defined in the `output_folder`, you will see the html report output with the name `output_report.html`. 181 | 182 | 183 | # sessionInfo() 184 | 185 | ```{r, eval=TRUE} 186 | sessionInfo() 187 | ``` 188 | 189 | 190 | 191 | 192 | --------------------------------------------------------------------------------