qsip Package

Bram Stone


Quantitative stable isotope probing (qSIP) is the combination of stable isotope probing – a foundational technique in the study of ecosystems – with targeted amplicon sequencing data of microbial communities. In conventional stable isotope probing (SIP) experiments, identification of the amount of isotopic enrichment of nucleic acids was done qualitatively – through visual identification and categorization of nucleic acids into either "heavy" or "light" regions. The qSIP approach is to divide a single sample into many different fractions (without a priori categorization) along a gradient of increasing densities, and to estimate the shift in density of an individual microbial taxon's nucleic acids based on it's abundance across the many fractions (Hungate et al. 2015). Further details on the qSIP methodology may be found in Purcell et al. (2019). The core calculation produces estimates of every microbial taxon's proportion of enrichment which are often used as stand-ins for growth. However, qsip can also estimate population per-capita rates of growth and death (Koch et al. 2018).

The qsip package is built on the data structures of the phyloseq package. Phyloseq uses S4 object classification to organize different aspects of microbial sequencing data into a single object (see Data Preparation, below). The purpose of phyloseq is to minimize the code necessary to perform common operations on microbial community datasets such as filtering out, or retaining, certain taxonomic lineages or groups of samples.

The qsip package supports stable isotope experiments using 18O, 13C, and 15N (Morrissey et al. 2018). It is also agnostic towards the amplicon being sequenced. It will support 16S, 18S, ITS, or other amplicon sequencing data.


Conducting a qSIP experiment is, in many ways, an exercise in data organization. In an amplicon sequencing study, a single sequencing sample is usually produced from DNA extracted from a single point of collection (unless samples are pooled, in which case many points of collection yield one sequencing sample). In a qSIP experiment, DNA from each sample is divided into usually more than a dozen fractions which must all be sequenced separately. Because of this, as well as to make this package as easy to use as possible, consistent terminology should be applied to any qSIP experiment.


qsip is not currently on CRAN. The only way to install qsip is through Github. See here if you encounter issues installing phyloseq.

# install devtools and BiocManager

# install phyloseq and qsip using the utilities on devtools and BiocManagerK


Data preparation

Here, go into how to organize and prepare experimental data, the feature table, and taxonomic data for phyloseq combination. Spend the most time on experimental data.

Creation of phyloseq object

Feature tables must be combined with taxonomic and experimental data into a single phyloseq object.

Creation of phylosip object

dat <- specify_qsip(dat,

# high-level qSIP-related data will display upon printing

Plot enrichment curves

One of the first diagnostic plots that should be generated from an enrichment experiment is the enrichment curve. Often, this is done even before sequencing efforts begin. The basic idea of the enrichment curve is to plot the change in density of DNA due to the incorporation of stable isotopes.

With qsip, enrichment curves may be plotted from phyloseq, phylosip, or basic data.frame objects. Because phylosip objects already have replicates, fractions, densities, and qPCR abundances specified, no other information is necessary. Using phyloseq or data.frame objects requires the specification of this information.

# plot from phylosip object

# plot from phyloseq object
plot_curve(phlyo_dat, density='density_column', abund='qPCR_column', iso_trt='isotope_treatment_column')

# plot from data.frame object
plot_curve(exper_dat, density='density_column', abund='qPCR_column', iso_trt='isotope_treatment_column')

Specify frequency filtering criteria

[email protected]@filter_levels <- create_filters(2, 5, soft=1)

Calculate enrichment and growth

# atom excess fraction (AEF) or atom percent excess (APE)
dat <- calc_excess(dat,

# per-capita growth
dat <- calc_pop(dat,

# show new data has been added
names([email protected])

Extract data frames from phylosip object

# extract data related to isotopic "excess" and measures from "label"-ed samples
qsip_enrich <- qsmelt(dat, include='excess|label', regex=T)

# extract data related to birth and death
qsip_growth <- qsmelt(dat, include='birth|death', abundance=T, regex=T)


Hungate BA, Mau RL, Schwartz E et al. Quantitative Microbial Ecology through Stable Isotope Probing. Applied and Environmental Microbiology 2015;81, DOI: 10.1128/AEM.02280-15.

Koch BJ, McHugh TA, Hayer M et al. Estimating taxon-specific population dynamics in diverse microbial communities. Ecosphere 2018;9, DOI: 10.1002/ecs2.2090.

Morrissey EM, Mau RL, Schwartz E et al. Taxonomic patterns in the nitrogen assimilation of soil prokaryotes. Environmental Microbiology 2018;20, DOI: 10.1111/1462-2920.14051.

Purcell AM, Dijkstra P, Finley B et al. Quantitative Stable Isotope Probing with H218O to Measure Taxon-Specific Microbial Growth. Methods of Soil Analysis 2019;4, DOI: 10.2136/msa2018.0083.

bramstone/qsip documentation built on Feb. 14, 2020, 3:52 p.m.