Learn R Programming

Dowser

Dowser is part of the Immcantation analysis framework for Adaptive Immune Receptor Repertoire sequencing (AIRR-seq). Dowser provides a set of tools for performing phylogenetic analysis on B cell receptor repertoires. It supports building and visualizing trees using multiple methods, and implements statistical tests for discrete trait analysis of B cell migration, differentiation, and isotype switching.

Dowser has 6 primary functions:

  1. Reconstruct clonal germline sequences.
  2. Build B cell lineage trees using multiple methods, such as maximum parsimony, maximum likelihood, and IgPhyML.
  3. Reconstruct intermediate sequences within lineage trees using different methods.
  4. Create publication-quality lineage tree plots.
  5. Analyze trees to detect ongoing B cell evolution over time.
  6. Understand B cell migration and differentiation.

What's a dowser?

Documentation and tutorials

Full documentation, including tutorials and vignettes: Dowser ReadTheDocs site

For AI assistants/LLMs and other automated agents: llms.txt is a short curated index of Dowser's documentation, and llms-full.txt concatenates the entire documentation corpus (every vignette and function reference page) into one file.

Citation

If you use Dowser in published research, please cite:

Hoehn K, Pybus O, Kleinstein S (2022). Phylogenetic analysis of migration, differentiation, and class switching in B cells. PLoS Computational Biology. https://doi.org/10.1371/journal.pcbi.1009885

Please also run citation("dowser") in R for the complete, feature-specific list — additional citations apply if you used the correlationTest measurable evolution test, built paired heavy/light chain trees, or used IgPhyML for tree building.

Contact

If you need help or have any questions, please contact the Immcantation Group.

If you have discovered a bug or have a feature request, you can open an issue using the issue tracker.

To receive alerts about Immcantation releases, news, events, and tutorials, join the Immcantation News Google Group. Membership settings can be adjusted to change the frequency of email updates.

Copy Link

Version

Install

install.packages('dowser')

Monthly Downloads

821

Version

2.5.2

License

AGPL-3

Maintainer

Kenneth Hoehn

Last Published

September 16th, 2026

Functions in dowser (2.5.2)

create_MRCA_prior_germline

Takes an airr clone object and returns BEAST2 XML for MRCA prior of the germline sequence
createGermlines

createGermlines Determine consensus clone sequence and create germline for clone
calcRF

Finds the Robinson-Fould's cluster distance between phylogenies.
checkDivergence

Compare divergence along a tree in terms of mutations (sum of branches) for each tip and reconstructed internal node to its Hamming distance from the germline. Divergence should never be less than Hamming distance. A threshold of -1 is used to represent 1 full mutation difference. The function will throw a warning if any trees cross this threshold
create_height_prior

Takes an airr clone object and returns BEAST2 XML to set a height prior
create_max_height_prior

Takes an airr clone object and returns BEAST2 XML to set a maximum height prior
correlationTest

Run date randomization test for temporal signal on a set of trees.
createAllGermlines

createAllGermlines Creates all possible germlines for a clone
create_starting_tree

Takes an airr clone object and tree and returns BEAST2 XML for setting the starting tree
getAllSeqs

Return all tip and internal node sequences
create_root_freqs

Takes an airr clone object and returns BEAST2 rootfreqs xml of the germline
downsampleClone

downsampleClone Down-sample clone to maximum tip/switch ratio
dowser-package

dowser: B Cell Receptor Phylogenetics Toolkit
filterCombs

filterCombs Remove sequences likely resulting from oversequencing and PCR error This removes "comb" structures in trees which are flat polytomies with low duplicate counts radiating out from a single node with a much higher duplicate count. Adapted from https://bitbucket.org/kleinstein/projects/src/master/Hoehn2022/isotype_analysis/treesAndSwitches_dowser.R
exportTrees

Exports the phylogenetic trees from the airrClone object
formatClones

Generate an ordered list of airrClone objects for lineage construction
getGermline

getGermline get germline segment from specified receptor and segment
getHeightsAndLengths

Add height and length columns to a tree@data data frame
getSkylines

Make data frames for Bayesian skyline plots
getSubTaxa

Get the tip labels as part of a clade defined by an internal node
dowserObjectEquivalent

dowserObjectEquivalent Experimental. Check if two Dowser objects are equivalent
create_alignment

Takes an airr clone object and returns BEAST2 Alignment xml of the sequences
colorTrees

Get a color palette for a predefined set of trait values
condenseTrees

Condense a set of equally parsimonious node labels into a single tree
checkNodeDivergences

For each node in nodes list, check that the current divergence is the same as previously reported
dowser

The dowser package
buildRAxML

Wrapper to build RAxML-ng trees and infer intermediate nodes
create_MRCA_prior_observed

Takes an airr clone object and returns BEAST2 XML for MRCA prior of the observed sequences
mapSubtrees

Get a map of nodes from one
makeSkyline

get values for Bayesian Skyline plot
getNodeSeq

Return IMGT gapped sequence of specified tree node
getTreesAndUCAs

getTreesAndUCAs Construct trees and infer the UCA
plotMSA

Simple function for plotting multiple sequence alignments input can be either nucleotide or AA and contain ambiguous characters
collapseNodes

Collapse internal nodes with the same predicted sequence
getSeq

Deprecated! Use getNodeSeq
makeModelFile

Make a parsimony model file
getBootstraps

Creates a bootstrap distribution for clone sequence alignments, and returns estimated trees for each bootstrap replicate as a nested list as a new input tibble column.
getDiffPoint

Recurse up to tree to find most recent node with different state, or the root
getSeqPath

Return all sequences along the tree from the germline to a specified node
makeAirrClone

Generate a airrClone object for lineage construction
plotTrees

Plot a tree with colored internal node labels using ggtree
rerootTree

Reroot phylogenetic tree to have its germline sequence at a zero-length branch to a node which is the direct ancestor of the tree's UCA. Assigns uca to be the ancestral node to the tree's germline sequence, as germid as the tree's germline sequence ID.
plotSkylines

Simple function for plotting Bayesian skyline plots
resolveLightChains

Define subgroups within clones based on light chain rearrangements
create_traitset

Takes an airr clone object and returns BEAST2 XML for a trait/traitSet from a column
dfToFasta

Write a fasta file of sequences readFasta reads a fasta file
treesToPDF

Simple function for plotting a lot of trees into a pdf
treesEquivalent

Check whether two tree objects are equivalent
stitchVDJ

stitchVDJ combines germline gene segments to a single string
stitchRegions

stitchRegions Similar to stitchVDJ but with segment IDs instead of nucleotides
writeLineageFile

Write lineage file for IgPhyML use
writeTreesJSON

writeTreesJSON Experimental. Write trees in AIRR format
filterPartialSeqs

filterPartialSeqs
runCorrelationTest

Run correlationTest, based on https://doi.org/10.1111/2041-210X.12466
testSC

Performs SC (switch count) test on switch data
readBEAST

Reads in a BEAST output directory
testSP

Performs SP (switch proportion) test on switch data
resolvePolytomies

Resolve polytomies to have the minimum number of single timepoint clades
installPythonDependencies

installPythonDependencies Checks for and installs the Python dependencies for UCA estimation
maskCodons

maskCodons Masks codons split by insertions
maskSequences

maskSequences Mask codons split by insertions in V gene
testPS

Performs PS (parsimony score) test on switch data
stopCodonCheck

Check whether sequences have in-frame premature stop codons (PTCs)
sampleClones

sampleClones Down-sample clones to specified size
sampleCloneMultiGroup

sampleCloneMultiGroup Down-sample clone to specified size with one or multiple groups to sample evenly
readModelFile

Read in a parsimony model file
readLineages

Read in all trees from a lineages file
getTimeTrees

Estimate time trees by running BEAST on each clone Applies XML template to each clone
getSubclones

#' Deprecated! Use resolveLightChains
getPalette

Get a color palette for a predefined set of trait values. 'Germline' defaults to black unless specified.
readTreesJSON

readTreesJSON Experimental. Read trees from JSON/AIRR format from Dowser
write_clones_to_xmls

Wrapper to write multiple clones to XML files
reconIgPhyML

Do IgPhyML maximum parsimony reconstruction
write_clone_to_xml

Takes an airr clone object and template and writes a BEAST2 XML file
getDiffPoints

For each tree, recurse up to tree to find most recent node with a different state, or the root
getTimeTreesIterate

Iteratively resume getTimeTrees until convergence, as defined by all parameters (except those in ignore vector) having ESS greater than or equal to the specified ess_cutoff
findSwitches

Create a bootstrap distribution for clone sequence alignments, and estimate trees for each bootstrap replicate.
getTrees

Estimate lineage tree topologies, branch lengths, and internal node states if desired
getDivergence

Get divergence from root of tree for each tip
readFasta

Read a fasta file into a list of sequences readFasta reads a fasta file
setNodeDivergences

For each node in nodes list, store the divergence from the UCA
readIMGT

readIMGT read in IMGT database
writeCloneSequences

Write the sequences used in tree building to a fasta format. If there are more than one tree in airrClone output the sequence id will be followed by "|clone_id".
writeFasta

writeFasta Write a fasta file of sequences given a named list of sequences
scaleBranches

Scale branch lengths to represent either mutations or mutations per site.
IsotypeTrees

Example Ig lineage trees with isotype reconstructions.
ExampleDbChangeo

Example Change-O database
ExampleMixedDb

Example Change-O database
buildPML

Wrapper for phangorn::optim.pml
buildPhylo

Wrapper for alakazam::buildPhylipLineage
buildIgphyml

Wrapper to build IgPhyML trees and infer intermediate nodes
buildGermline

buildGermline reconstruct germline segments from alignment data
TimeTrees

Example Ig lineage trees sampled over time.
ExampleClones

Example Ig lineage trees
ExampleMixedClones

Example Multiple Partition Trees
ExampleAirrTyCHE

Example AIRR database for TyCHE
buildPratchet

Wrapper for phangorn::pratchet
airrClone-class

S4 class defining a clone in Dowser
bootstrapTrees

Deprecated! Please use findSwitches instead.
buildAllClonalGermlines

buildAllClonalGermlines Determines and builds all possible germlines for a clone
BiopsyTrees

Example Ig lineage trees with biopsy reconstructions.
ExampleAirr

Example AIRR database
buildBeast

Read in a directory from a BEAST run. Runs treeannotator and loganalyser.
buildClonalGermline

buildClonalGermline Determine consensus clone sequence and create germline for clone