sc-toolbox#

Installation

New to sc-toolbox? Check out the installation guide.

API reference

The API reference contains a detailed description of the sc-toolbox API.

Discussion

Need help? Reach out on our forum to get your questions answered!

GitHub

Find a bug? Interested in improving sc-toolbox? Checkout our GitHub for the latest developments.

Installation#

Stable release#

To install sc-toolbox, run this command in your terminal:

$ pip install sc-toolbox

This is the preferred method to install sc-toolbox, as it will always install the most recent stable release.

If you don’t have pip installed, this Python installation guide can guide you through the process.

From sources#

The sources for sc-toolbox can be downloaded from the Github repo. Please note that you require poetry to be installed.

You can either clone the public repository:

$ git clone git://github.com/schillerlab/sc-toolbox

Or download the tarball:

$ curl -OJL https://github.com/schillerlab/sc-toolbox/tarball/master

Once you have a copy of the source, you can install it with:

$ make install

Usage#

Import the sc-toolbox API as follows:

import sc_toolbox as sct

You can then access the respective modules like:

sct.pl.cool_fancy_plot()

Preprocessing#

Tools#

tools.generate_expression_table

Generates a table of cells by genes of expression values as a Pandas DataFrame.

tools.relative_frequencies

Calculates the relative frequencies of conditions grouped by an observation.

tools.relative_frequency_per_cluster

Calculates relative frequencies per cluster

tools.correlate_to_signature

Correlations Score (based on cell type signature (logFC)) - alternative to sc.tl.score

tools.remove_outliers

Remove outlying cells based on UMAP embeddings with DBScan (density based clustering).

tools.add_percentages

Add columns to existing diffxpy table specifying percentage of expressing cells.

tools.ranksums_between_groups

Perform Wilcoxon Rank-sum test between two groups.

tools.generate_count_object

@Meshal what is this really supposed to do?

tools.tidy_de_table

Sorts diffxpy de table and adds percentages of expression per group

tools.correlate_means_to_gene

Calculate gene to gene correlation based on a mean expression table

tools.extended_marker_table

Generates an extended marker table with cell types and percentages of expressed cell types per cluster.

tools.generate_pseudobulk

Generates a pseudobulk for a given key of groups in the AnnData object.

tools.automated_marker_annotation

Calculates a marker gene overlap based on pre-existing annotations.

tools.de_res_to_anndata

Add a tabular differential expression result to AnnData as if it was produced by scanpy.tl.rank_genes_groups.

Plots#

plot.Colormaps(value)

Useful Colormaps for e.g.

plot.custom_plot_size(width, height, dpi)

Create a custom axis object of desired sizes.

plot.standard_lineplot(data, order, xlabel, ...)

Draws a standard line plot based on Seaborn's lmplot.

plot.average_expression(gene_expression, ...)

Draw a line plot showing the gene expression over time.

plot.average_expression_per_cluster(...[, ...])

Plots gene expression over time split by cluster identity.

plot.average_expression_split_cluster(...[, ...])

Plot average gene expression as line plots for multiple clusters at once.

plot.average_expression_per_cell(...[, ...])

Plots the average gene expression as a line plot per cell.

plot.gene_expression_dpt_ordered(data, ...)

Plot smoothed expression of all cells ordered by pseudo time.

plot.relative_frequencies_boxplots(...[, ...])

Plots the relative frequencies as split boxplots.

plot.split_boxplot(table, order, xlabel, ylabel)

Draws a boxsplit split by hue.

plot.marker_dendrogram(marker_table[, ...])

Plots a dendogram of used marker genes.

plot.volcano_plot(table[, fdr_thresh, ...])

Scatter plot of differential gene expression results generated by diffxpy

plot.cluster_composition_stacked_barplot(...)

Plot relative frequencies as a stacked barplot.

plot.gene_boxplot(table, palette[, xlabel, ...])

Plot gene values as split boxplots.

plot.colors_overview(colors[, ncols, ...])

Draw an overview plot of all used colors.

plot.relative_frequencies_lineplot(...[, ...])

Plot relative frequencies as a line plot.

plot.annotated_cell_type_umap(adata, ...[, ...])

Plots a UMAP which is colored by the primary_color, but also draws all labels on top of all clusters.

plot.genotype_vs_genotype_umaps(adata, ...)

Plots a two UMAPs of genotypes next to each other displaying only the colors of the second UMAP.

Contributor Guide#

Thank you for your interest in improving this project. This project is open-source under the Apache2.0 license and highly welcomes contributions in the form of bug reports, feature requests, and pull requests.

Here is a list of important resources for contributors:

How to report a bug#

Report bugs on the Issue Tracker.

How to request a feature#

Request features on the Issue Tracker.

Getting the code#

$ git clone --recurse-submodules https://github.com/schillerlab/sc-toolbox

How to set up your development environment#

You need Python 3.8+ and the following tools:

You can install them with:

$ pip install poetry nox nox-poetry

Install the package with development requirements:

$ make install

You can now run an interactive Python session, or the command-line interface:

$ poetry run python
$ poetry run sc_toolbox

How to test the project#

Run the full test suite:

$ nox

List the available Nox sessions:

$ nox --list-sessions

You can also run a specific Nox session. For example, invoke the unit test suite like this:

$ nox --session=tests

Unit tests are located in the tests directory, and are written using the pytest testing framework.

How to build and view the documentation#

This project uses [Sphinx] together with several extensions to build the documentation. It further requires [Pandoc] to translate various formats.

To install all required dependencies for the documentation run:

$ pip install -r docs/requirements.txt

Please note that ehrapy itself must also be installed. To build the documentation run:

$ make html

from inside the docs folder. The generated static HTML files can be found in the _build/html folder. Simply open them with your favorite browser.

How to submit changes#

Open a pull request to submit changes to this project against the development branch.

Your pull request needs to meet the following guidelines for acceptance:

  • The Nox test suite must pass without errors and warnings.

  • Include unit tests. This project maintains a high code coverage.

  • If your changes add functionality, update the documentation accordingly.

To run linting and code formatting checks before committing your change, you can install pre-commit as a Git hook by running the following command:

$ nox --session=pre-commit -- install

It is recommended to open an issue before starting work on anything. This will allow a chance to talk it over with the owners and validate your approach.

Contributor Covenant Code of Conduct#

Our Pledge#

In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.

Our Standards#

Examples of behavior that contributes to creating a positive environment include:

  • Using welcoming and inclusive language

  • Being respectful of differing viewpoints and experiences

  • Gracefully accepting constructive criticism

  • Focusing on what is best for the community

  • Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

  • The use of sexualized language or imagery and unwelcome sexual attention or advances

  • Trolling, insulting/derogatory comments, and personal or political attacks

  • Public or private harassment

  • Publishing others’ private information, such as a physical or electronic address, without explicit permission

  • Other conduct which could reasonably be considered inappropriate in a professional setting

Our Responsibilities#

Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.

Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.

Scope#

This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.

Enforcement#

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.

Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project’s leadership.

Attribution#

This Code of Conduct is adapted from the Contributor Covenant, version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html

Credits#

Development Lead#

Contributors#

Indices and tables#