syntenet
Workflows
Standard Workflow
Infer a global synteny network from multiple proteomes, cluster it, perform phylogenomic profiling, and reconstruct a microsynteny-based phylogeny.
library(syntenet)
data(proteomes)
data(annotation)
data(blast_list)
# Check and process input data
check_input(proteomes, annotation)
pdata <- process_input(proteomes, annotation)
# Infer synteny network
net <- infer_syntenet(blast_list, pdata$annotation)
# Cluster network and perform phylogenomic profiling
data(network)
clusters <- cluster_network(network)
profiles <- phylogenomic_profile(clusters)
Input: Proteome sequences as a list of AAStringSet objects and gene annotations as a GRangesList. Output: A synteny network edge list and a matrix of phylogenomic profiles.
Pairwise Synteny Detection
Detect and parse intra- and inter-species syntenic blocks and anchor pairs.
library(syntenet)
data(proteomes)
data(annotation)
data(blast_list)
# Preprocess input data
pdata <- process_input(proteomes, annotation)
# Detect synteny and infer anchor pairs
net <- infer_syntenet(blast_list, pdata$annotation)
Input: Preprocessed proteome sequences and gene annotations along with BLAST/DIAMOND tabular similarity search results. Output: A 2-column data frame representing anchor pairs.
When to Use
- Inference and Analysis of Synteny Networks: Use when you need to detect conserved gene content and order across multiple genomes from protein sequences and gene annotations.
- Network Clustering: Use
cluster_network()to group synteny networks into clusters using algorithms like Infomap. - Phylogenomic Profiling: Use
phylogenomic_profile()to identify which species contain which synteny clusters, revealing highly conserved or taxon-specific gene groups. - Visualizing Synteny Profiles: Use
plot_profiles()to generate highly customizable heatmaps of phylogenomic profiles.
When NOT to Use
- Overlapping Communities (e.g., Tandem Arrays): Do not use the default Infomap algorithm in
cluster_network()if genes must belong to multiple clusters; use an alternative like the clique percolation algorithm instead. - Simple Sequence Similarity Searches: Do not use
infer_syntenet()for simple sequence alignment or similarity searches without genomic coordinate context; userun_diamond()orrun_last()directly.
Data Requirements
- Sequence Data (
seq): A list ofAAStringSetobjects containing translated primary transcripts for each species. Can be imported from FASTA files usingfasta2AAStringSetlist(). - Annotation Data (
annotation): AGRangesListorCompressedGRangesListcontaining gene coordinates. Can be imported from GFF/GTF files usinggff2GRangesList(). - Similarity Search Results: A list of data frames containing tabular outputs of all-vs-all searches (e.g., from DIAMOND or BLASTp), which can be loaded using
read_diamond()orread_last().
Key Parameters
- gene_field (
"gene_id"): The column name in the GRanges metadata containing gene IDs, used incheck_input()andprocess_input(). - clust_function (
stats::hclust): The clustering function used to group columns inplot_profiles(). - clust_params (
list(method = "ward.D")): Additional parameters passed to the column clustering function inplot_profiles(). - dist_function (
stats::dist): The distance function used to compute the distance matrix inplot_profiles(). - dist_params (
list(method = "euclidean")): Additional parameters passed to the distance function inplot_profiles(). - cluster_species (
NULL): A character vector defining the custom display order of species inplot_profiles().
Best Practices
- Run
check_input()before processing to verify that sequence names match gene annotations and that isoform sequences are not duplicated. - Standardize sequence headers and add unique species identifiers to gene and chromosome names using
process_input(). - Check if DIAMOND is installed and available in your system PATH using
diamond_is_installed()before callingrun_diamond(). - Pass a named character vector matching a species tree to the
cluster_speciesparameter inplot_profiles()to visualize synteny patterns in a phylogenetic context.
Common Pitfalls
- Isoform Duplication: Inputting multiple isoforms of the same gene will fail input checks; ensure only primary transcripts are included in the input sequences.
- Mismatched Gene IDs: If gene IDs are stored in a non-default column in the GFF/GTF files, you must specify the correct column name using the
gene_fieldparameter incheck_input()andprocess_input().
Alternatives
- MCScanX: The original C++ command-line tool for synteny detection (syntenet implements a native version of this algorithm in R via Rcpp).
- igraph: For alternative network clustering methods that can be passed directly to
cluster_network(). - CliquePercolation: For clustering algorithms that allow community overlap.
Citations
- Zhao and Schranz (2017). Network-based approach to analyze synteny. Scientific Reports.
- Wang et al. (2012). MCScanX: a toolkit for detection and evolutionary analysis of gene synteny and collinearity. Nucleic Acids Research.
References
- Homepage: bioconductor.org/packages/syntenet
- Vignette: https://bioconductor.org/packages/release/bioc/vignettes/syntenet/inst/doc/vignette.html