q2-conduit is a plugin that connects Conduit results to QIIME 2, acting as a converter that extracts QIIME-formatted artifacts from Conduit outputs for use in downstream analyses.
Overview¶
The Conduit software (developed by Charlie Bayne in the lab of Dr. David Gonzalez) provides a comprehensive metaproteomics workflow that combines peptide/protein identification and quantitation via DIA-NN with extensive protein annotation support, as well as data integration and GUI features designed specifically for metaproteomics.
Protein quantitation and taxonomic identification outputs from Conduit can be imported into QIIME 2, enabling seamless integration with the platform’s extensive microbiome analysis tools. q2-conduit is a QIIME 2 plugin that enables this import step.
Installation¶
q2-conduit requires a QIIME 2 installation. To install both the current
QIIME 2 distribution and the q2-conduit plugin into a fresh environment named
q2-conduit, run
conda env create \
-n q2-conduit \
-f https://raw.githubusercontent.com/biocore/q2-conduit.git/main/environment-files/q2-conduit-qiime2-2026.7.ymlThe qiime2 distribution has no native Apple Silicon build. On such machines,
either configure the environment for osx-64 and run under Rosetta, or use the
tiny distribution instead, which builds natively and carries everything
q2-conduit itself requires:
conda env create \
-n q2-conduit \
-f https://raw.githubusercontent.com/biocore/q2-conduit.git/main/environment-files/q2-conduit-tiny-2026.7.ymlIf instead installing the q2-conduit plugin into a pre-existing QIIME 2 environment, activate the QIIME 2 environment and then install the plugin repository from GitHub:
pip install git+https://github.com/biocore/q2-conduit.gitAfter this, it is necessary to refresh the QIIME 2 plugin cache:
qiime dev refresh-cacheThe q2-conduit plugin should now be in the list of installed plugins produced
by running qiime --help
Usage¶
Extracting the input files from Conduit¶
Conduit collects its results in a single conduit.rds object, so the two
tab-delimited files q2-conduit reads must first be written out from it. In R,
with the path to your own Conduit output substituted for conduit.rds:
# Ensure conduitR is installed
if (!requireNamespace("conduitR", quietly = TRUE)) {
if (!requireNamespace("remotes", quietly = TRUE)) {
install.packages("remotes")
}
remotes::install_github("baynec2/conduitR")
}
# Configure
conduit_rds <- "conduit.rds" # path to your Conduit output
# Read Conduit.rds object and extract protein_groups SummarizedExperiment
# from QFeatures
conduit <- readRDS(conduit_rds)
pg_se <- conduit@QFeatures[["protein_groups"]]
# Extract Protein Group Info from SE, reformat, and write to .tsv
pg <- SummarizedExperiment::assay(pg_se, "intensity") |>
as.data.frame() |>
tibble::rownames_to_column(var = "protein_group")
readr::write_tsv(pg, "protein_group_matrix.tsv")
# Extract Taxonomy Information from rowdata, reformat, and write to tsv
taxonomy <- SummarizedExperiment::rowData(pg_se) |>
as.data.frame() |>
tibble::rownames_to_column(var = "protein_group") |>
dplyr::select(
protein_group,
domain,
kingdom,
phylum,
class,
order,
family,
genus,
species
)
readr::write_tsv(taxonomy, "protein_group_taxonomy.tsv")This writes protein_group_matrix.tsv, holding one row per protein group and
one column per sample, and protein_group_taxonomy.tsv, holding one row per
protein group and one column per taxonomic rank. Both files are keyed on the
same protein_group column.
Importing into QIIME 2¶
In an active QIIME environment, import the two files into QIIME artifacts:
qiime tools import \
--input-path protein_group_matrix.tsv \
--output-path conduit_intensity_table.qza \
--type ConduitIntensityTable
qiime tools import \
--input-path protein_group_taxonomy.tsv \
--output-path conduit_taxonomy_table.qza \
--type ConduitTaxonomyTableExtracting QIIME 2 objects¶
With these artifacts, it is simple to extract a FeatureTable[Unconstrained]
QIIME object containing the intensities generated by Conduit, as well as a
FeatureData[Taxonomy] QIIME object containing the associated protein groups’
taxonomies:
qiime conduit extract \
--i-conduit-intensities conduit_intensity_table.qza \
--i-conduit-taxonomy conduit_taxonomy_table.qza \
--o-table conduit_intensities.qza \
--o-taxonomy conduit_taxonomy.qzaThree things are worth knowing about the results:
- A protein group naming more than one protein becomes a single feature whose id is the semicolon-joined protein list Conduit reports; no protein group is discarded.
- The taxonomy string runs from kingdom to species, and every rank is present
whether or not Conduit assigned it, so that the Nth rank of one feature’s
taxonomy is the same rank as the Nth of another’s. A protein group with no assignment
at any reported kingdom or more specific rank is labeled
Unassigned. - Conduit writes
NAfor a protein group it did not measure in a given sample. Because biom tables cannot hold nulls, these become zeroes, and are therefore indistinguishable from a measured zero.
- Links
- Documentation
- Source Code
- Stars
- 0
- Last Commit
- 26458c8
- Available Distros