{"id":24585410,"url":"https://github.com/j-andrews7/crisprball","last_synced_at":"2025-04-28T11:51:08.246Z","repository":{"id":39792924,"uuid":"488378691","full_name":"j-andrews7/CRISPRball","owner":"j-andrews7","description":"An interactive exploration/visualization platform to help you lift the fog from your CRISPR analyses.","archived":false,"fork":false,"pushed_at":"2024-12-19T16:11:22.000Z","size":2434,"stargazers_count":9,"open_issues_count":4,"forks_count":2,"subscribers_count":4,"default_branch":"devel","last_synced_at":"2025-01-18T09:14:43.949Z","etag":null,"topics":["crispr","crispr-screen","data-visualization","interactive-visualizations","mageck","plotly","r","screening","shiny"],"latest_commit_sha":null,"homepage":"https://bioconductor.org/packages/release/bioc/html/CRISPRball.html","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/j-andrews7.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-05-03T22:18:13.000Z","updated_at":"2024-12-19T16:11:26.000Z","dependencies_parsed_at":"2024-05-07T16:46:37.289Z","dependency_job_id":"2fa8e96b-edc8-44be-8c93-dc0129911c1c","html_url":"https://github.com/j-andrews7/CRISPRball","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/j-andrews7%2FCRISPRball","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/j-andrews7%2FCRISPRball/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/j-andrews7%2FCRISPRball/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/j-andrews7%2FCRISPRball/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/j-andrews7","download_url":"https://codeload.github.com/j-andrews7/CRISPRball/tar.gz/refs/heads/devel","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235388545,"owners_count":18981945,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["crispr","crispr-screen","data-visualization","interactive-visualizations","mageck","plotly","r","screening","shiny"],"created_at":"2025-01-24T05:12:00.779Z","updated_at":"2025-01-24T05:12:01.779Z","avatar_url":"https://github.com/j-andrews7.png","language":"R","funding_links":[],"categories":[],"sub_categories":[],"readme":"# \u003cimg src=\"inst/logo/CRISPRball_Hex.png\" alt=\"CRISRPball\" height=\"200\"\u003e Lift the Fog from Your CRISPR Analyses\n\n**CRISPRball** is a Shiny application to explore, visualize, filter, and \nintegrate CRISPR screens with public data and multiple datasets. \nIn particular, it allows for publication-quality figure generation \nincluding full aesthetic customization and interactive labeling, filtering \nof results using DepMap Common Essential genes, simple comparisons between datasets/timepoints/treatments, etc.\n\nIt is designed for end users and may be particularly useful for \nbioinformatics/genome editing cores that perform basic analyses before \nreturning results to users. Pointing users to the online version of the app \n(or a hosted one) will allow them to quickly wade through and interpret their data.\n\nCurrently, it supports the output from [MAGeCK](https://sourceforge.net/projects/mageck/) RRA and MLE analysis methods.\nThis package supplements the [MAGeCKFlute](https://www.bioconductor.org/packages/release/bioc/html/MAGeCKFlute.html) package, adding\nadditional functionality, visualizations, and a Shiny interface.\nSupport for the output of additional analysis tools and methods will be added upon request.\n\n## Installation\n\nCRISPRball is available on Bioconductor and can be installed using the following commands:\n\n```\nif (!requireNamespace(\"BiocManager\", quietly = TRUE))\n    install.packages(\"BiocManager\")\n\nBiocManager::install(\"CRISPRball\")\n\n# To install the development version from Github:\nif (!requireNamespace(\"devtools\", quietly = TRUE))\n    install.packages(\"devtools\")\n\ndevtools::install_github(\"j-andrews7/CRISPRball\")\n```\n\n## Usage\n\nStarting the app is as simple as calling the `CRISPRball` function.\n\n```r\nlibrary(\"CRISPRball\")\nCRISPRball()\n```\n\nUsers can then upload their data within the app, which will enable specific tabs in the application\nas the data is provided.\n\n![](vignettes/upload_cb.png)\n\nOne can also pass their input data directly as input - all that are needed \nare file paths to the MAGeCK output files. \n\nPassing data directly can be useful when hosting the app on a local Shiny server where \nhaving pre-loaded data for the user is wanted. This is particularly useful for core or \nshared resource facilities that perform basic analyses for end-users.\n\n### MAGeCK RRA Output\n\nIn this case, we'll use the example output from the \n[third MAGeCK tutorial](https://sourceforge.net/p/mageck/wiki/demo/#the-third-tutorial-going-through-a-public-crisprcas9-screening-dataset). \n\nIn this example, the two datasets are just reverse comparisons (ESC vs plasmid \u0026 plasmid vs ESC) where DDX27 has \nbeen manually altered in the ESC vs plasmid comparison to no longer be a significant hit.\n\n```r\n# Create lists of results summaries for each dataset.\nd1.genes \u003c- read.delim(system.file(\"extdata\", \"esc1.gene_summary.txt\",\n    package = \"CRISPRball\"\n), check.names = FALSE)\nd2.genes \u003c- read.delim(system.file(\"extdata\", \"plasmid.gene_summary.txt\",\n    package = \"CRISPRball\"\n), check.names = FALSE)\n\nd1.sgrnas \u003c- read.delim(system.file(\"extdata\", \"esc1.sgrna_summary.txt\",\n    package = \"CRISPRball\"\n), check.names = FALSE)\nd2.sgrnas \u003c- read.delim(system.file(\"extdata\", \"plasmid.sgrna_summary.txt\",\n    package = \"CRISPRball\"\n), check.names = FALSE)\n\ncount.summ \u003c- read.delim(system.file(\"extdata\", \"escneg.countsummary.txt\",\n    package = \"CRISPRball\"\n), check.names = FALSE)\nnorm.counts \u003c- read.delim(system.file(\"extdata\", \"escneg.count_normalized.txt\",\n    package = \"CRISPRball\"\n), check.names = FALSE)\n\n# Look at the first few rows of the gene summary for the ESC vs plasmid comparison.\nhead(d1.genes)\n```\n\nWe can then provide this data to the `CRISPRball` function.\n\n```r\ngenes \u003c- list(ESC = d1.genes, plasmid = d2.genes)\nsgrnas \u003c- list(ESC = d1.sgrnas, plasmid = d2.sgrnas)\n\nCRISPRball(\n    gene.data = genes, sgrna.data = sgrnas,\n    count.summary = count.summ, norm.counts = norm.counts\n)\n```\n\n### MAGeCK MLE Output\n\nCRISPRball also supports the MLE output from MAGeCK. In this case, we'll use the example data from the [fourth MAGeCK tutorial](https://sourceforge.net/p/mageck/wiki/demo/#the-fourth-tutorial-using-mageck-mle-module).\n\n```r\n# Create lists of results summaries for each dataset.\ngenes \u003c- read_mle_gene_summary(system.file(\"extdata\", \"beta_leukemia.gene_summary.txt\",\n    package = \"CRISPRball\"\n))\n\ncount.summ \u003c- read.delim(system.file(\"extdata\", \"escneg.countsummary.txt\",\n    package = \"CRISPRball\"\n), check.names = FALSE)\nnorm.counts \u003c- read.delim(system.file(\"extdata\", \"escneg.count_normalized.txt\",\n    package = \"CRISPRball\"\n), check.names = FALSE)\n\nCRISPRball(\n    gene.data = genes, \n    count.summary = count.summ, norm.counts = norm.counts\n)\n```\n\n## The QC Tab\n\nOn load, the application will display the **QC** tab, which provides multiple interactive plots to assess the quality control of all \nsamples in the dataset. Plots include those that assess the Gini Index (a measure of read distribution inequality), \ncounts of fully depleted sgRNAs, percentage of reads mapped, read distributions across sgRNAs, correlation matrix between samples, \nand a PCA plot containing all samples.\n\nControls to adjust the plots are provided in the sidebar in the left side of the application. Plots are re-sizable and easily \ndownload as SVGs using the plotly controls. In addition, interactive HTML versions of the plots can be downloaded with the \n**Download** buttons above or below each plot.\n\n![](vignettes/rra_qc_cb.png)\n\n## The Gene (Overview) Tab\n\nThis tab provides an overview of the gene-level results for up to two comparisons. It includes a volcano plot, rank plot, and\nrandomly ordered \"lawn\" plot for each comparison of interest. All plots are interactive and fully customizable via the controls\nin the sidebar.\n\n![](vignettes/gene_cb.png)\n\nCommon hits between two comparisons can easily be highlighted by selecting the **Highlight Common Hits** checkbox in the sidebar.\n\n### Highlighting Gene(sets)\n\nOften, it can be useful to label a set of genes on the plots. \nThis can be done by passing a named list of gene identifiers to the `genesets` argument.\n\n```r\nlibrary(\"msigdbr\")\n\n# Retrieve MSigDB Hallmark gene sets and convert to a named list.\ngene.sets \u003c- msigdbr(species = \"Homo sapiens\", category = \"H\")\ngene.sets \u003c- gene.sets %\u003e% split(x = .$gene_symbol, f = .$gs_name)\n\n# Can also add genesets manually.\ngene.sets[[\"my_fav_genes\"]] \u003c- c(\"TOP2A\", \"FECH\", \"SOX2\", \"DUT\", \"RELA\")\n\nCRISPRball(\n    gene.data = genes, sgrna.data = sgrnas, count.summary = count.summ,\n    norm.counts = norm.counts, genesets = gene.sets\n)\n```\n\nSuch genesets can then be highlighted very easily on the plots in the **Gene (Overview)** \ntab using the **\"Highlight Gene(sets)\"** inputs in the sidebar.\n\nIndividual genes of interest can also be added by the user manually from within the app.\n\n## The sgRNA Tab\n\nThis tab is mostly only useful with MAGeCK RRA results. It provides two plots for up to two comparisons.\nThe first allows users to view normalized sgRNA counts across two conditions - which is helpful for\nidentification of poor sgRNAs and validation of hits.\n\nThe second provides the sgRNA rank among all sgRNAs for a chosen effect size variable.\nThis provides a useful view of how a given sgRNA compares to all sgRNAs.\n\n## The DepMap Tab\n\n[DepMap](https://depmap.org/portal/) contains a multitude of data for hundreds of cell lines, \nincluding CRISPR/RNAi screen results, gene expression data, copy number variation, and more. \nThis data can be extremely useful to remove common dependencies from your own results, look \nat expression or copy number for a given gene across various lineages or diseases, and to identify \nhits that are selective to a given (sub)lineage.\n\nFor fast access to this data, **CRISPRball** includes a function (`build_depmap_db()`) to build \na SQLite database using the [depmap](https://bioconductor.org/packages/release/data/experiment/html/depmap.html) R package. \n**This database will be large, \u003e4 GB.**\n\nThis SQLite database can then be passed to the app and the data \ncontained therein easily explored in the **DepMap** tab.\n\n```r\nlibrary(\"depmap\")\nlibrary(\"pool\")\nlibrary(\"RSQLite\")\n\n# This will take a few minutes to run.\n# The database will be named \"depmap_db.sqlite\" and placed in the working directory.\nbuild_depmap_db()\n\nCRISPRball(\n    gene.data = genes, sgrna.data = sgrnas, count.summary = count.summ,\n    norm.counts = norm.counts, genesets = gene.sets, depmap.db = \"depmap_db.sqlite\"\n)\n```\n\n![](vignettes/depmap_cb.png)\n\n## Filtering DepMap Common Essential Hits\n\nWhen provided, one can also easily filter the DepMap common essential hits from the results in the **Gene (Overview)** tab via\nthe checkboxes in the sidebar.\n\n## Additional Help\n\nAlmost every input in the app will display a helpful tooltip \nexplaining its function on hover. \nPlots also have an information \nicon that will explain the plot contents when hovered or clicked.\n\nBug reports, feature requests, and questions can be submitted to the [issue tracker](https://github.com/j-andrews7/CRISPRball/issues).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fj-andrews7%2Fcrisprball","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fj-andrews7%2Fcrisprball","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fj-andrews7%2Fcrisprball/lists"}