全站目录 · 按任务查找
安装与学习路线
首页安装与环境准备选择合适的学习模块模块一『弦图』部分
1.1 输入表与字段含义1.2 生成与导入比对数据1.3 从骨架逐层添加1.4 方向、曲率与避障1.5 筛选与整理连接1.6 原始文件完整流程1.7 弦图综合展示模块二『共线性图』部分
2.1 复用弦图的数据2.2 只替换坐标系,再逐层添加2.3 跨行连接、避障与比例尺2.4 比较基因邻域2.5 局部、锚定与分段2.6 共线性综合展示模块三『质粒图』部分
3.1 DNA、注释与13个参考序列3.2 从圆圈到多层注释3.3 识别特征、引物与酶切3.4 13个质粒参考案例3.5 质粒综合实战按需查阅:数据与图层
数据与坐标导入和转换数据导入核酸和蛋白比对将蛋白区间转换为基因组坐标绘制注释与处理重叠放置和调整标签添加数据轨道设置配色、图例和主题按序列和链设置参数调整图形预览和保存图形学习地图与函数查阅
使用教程函数文档示例图集常见问题迁移到候选 API术语说明更新日志将蛋白区间转换为基因组坐标
把已知蛋白区间投影到真实 CDS 的基因组位置,显式保留 phase、链与分段关系。
本页准备
在新的 R 会话中先运行下方代码,再按页面顺序继续。配色和排版是可选的显示设置,输入只选择需要的列。
准备代码 · 在本页运行一次
代码
library(ggchord)
doc_background <- "#FFFCF5"
identity_palette <- c("#303B71", "#36537D", "#269B82", "#A5D52C", "#ECEB31")
identity_values <- c(0, 0.5, 0.8, 0.9, 1)
identity_breaks <- c(0, 50, 80, 90, 100)
doc_legend_theme <- theme(
legend.title = element_text(size = 13, face = "bold"),
legend.text = element_text(size = 11),
legend.key.width = unit(9, "mm"), legend.key.height = unit(5, "mm"),
legend.spacing.x = unit(9, "mm"), legend.spacing.y = unit(7, "mm"),
legend.margin = margin(l = 4, r = 4, unit = "mm")
)
sequence_guide <- guide_ggchord_legend(nrow = 1, theme = doc_legend_theme)
strand_guide <- guide_ggchord_legend(
nrow = 1, override.aes = list(strand = c("+", "-")), theme = doc_legend_theme
)
identity_guide <- guide_ggchord_colourbar(
position = "left", direction = "vertical",
theme = theme(
legend.key.height = unit(75, "mm"), legend.key.width = unit(5, "mm"),
legend.title = element_text(size = 13, face = "bold"),
legend.text = element_text(size = 11), legend.margin = margin(r = 7, unit = "mm")
)
)
doc_theme <- theme_ggchord_publication(
axis.text = element_text(size = 11),
axis.text.check.overlap = TRUE
) +
theme(
legend.position = "bottom",
legend.title = element_text(size = 13, face = "bold"),
legend.text = element_text(size = 11),
legend.key.width = unit(9, "mm"), legend.key.height = unit(5, "mm"),
legend.spacing.x = unit(9, "mm"), legend.spacing.y = unit(7, "mm"),
legend.box.spacing = unit(6, "mm"),
plot.background = element_rect(fill = doc_background, colour = NA),
panel.background = element_blank(),
plot.title = element_text(face = "bold", size = 18),
plot.subtitle = element_text(size = 10, colour = "#5C625A"),
plot.margin = margin(14, 18, 14, 18)
)
doc_axis <- function(coordinates = "relative") {
scale_seq_position_continuous(
coordinates = coordinates, n.breaks = 3, minor_breaks = NULL,
labels = function(x) format(x, scientific = FALSE, big.mark = ",", trim = TRUE)
)
}
library(dplyr)
data(plasmid_example_pUC19)
data(plasmid_example_pETDuet_1)
homolog_source <- bind_rows(plasmid_example_pUC19, plasmid_example_pETDuet_1)
homolog_seq <- homolog_source |>
select(accver, length)
cluster_features <- homolog_source |>
find_common_features() |>
filter(type == "CDS", anno == "AmpR") |>
select(accver, start, end, strand, anno) |>
arrange(match(accver, homolog_source$accver)) |>
mutate(feature_id = paste(accver, start, end, sep = ":"))
# Membership is computed from exact strand-corrected CDS DNA equality, not gene names.
reverse_complement <- function(sequence) {
bases <- strsplit(sequence, "")[[1]]
chartr("ACGT", "TGCA", paste(rev(bases), collapse = ""))
}
coding_sequences <- cluster_features |>
left_join(select(homolog_source, accver, sequence), by = "accver") |>
rowwise() |>
mutate(
coding_dna = substr(sequence, start, end),
coding_dna = if (strand == "-") reverse_complement(coding_dna) else coding_dna
) |>
ungroup()
cds_dna <- pull(coding_sequences, coding_dna)
membership <- tibble(
feature_id = cluster_features$feature_id,
cluster_id = paste0("exact_CDS_", match(cds_dna, unique(cds_dna)))
)
homologs <- link_ggchord_clusters(cluster_features, membership,
pairs = tibble(qaccver = homolog_seq$accver[1], saccver = homolog_seq$accver[2])
)
loci <- find_ggchord_loci(homolog_seq, cluster_features,
targets = cluster_features$feature_id[cluster_features$anno == "AmpR"][1], upstream = 100, downstream = 100
)
# Compare equivalent local windows instead of shrinking one gene on full plasmids.
homolog_windows <- cluster_features |>
select(accver, start, end)
local_homologs <- focus_ggchord_data(homolog_seq, homologs$data, cluster_features,
loci = homolog_windows, expand = 200
)
p_homologs <- ggchord(
seq_data = local_homologs$seq_data,
ribbon_data = local_homologs$ribbon_data, gene_data = local_homologs$gene_data
) +
geom_link_ribbon(fill = "#269B82", alpha = .65) +
geom_seq(colour = "#233E4A", show.legend = FALSE) +
geom_feature(
data = local_homologs$gene_data, feature_fill = "#F1D334",
position = position_strand(.10), width = .07
) +
geom_feature_label_repel(data = local_homologs$gene_data, size = 4, label_fit = "shrink") +
geom_seq_label(size = 4) +
geom_seq_break() +
coord_collinear() +
doc_axis("source") +
doc_theme
p_homologs先准备有来源的 CDS
本页准备代码包含完全相同 CDS 的比较,使用随包质粒的真实注释 和 DNA。完整 CDS 的 phase 明确为 0,翻译表显式设为 11。
代码
# Run the exact-CDS comparison first; these are complete source-backed CDS.
coding <- cluster_features |>
mutate(phase = 0)
cds <- build_ggchord_cds(coding, genetic_code = 11)
# This selects residues for a display example; it does not claim a detected domain.
domains <- tibble(feature_id = "selected_residues", parent_id = coding$feature_id[1], start = 2, end = 20)
genomic <- project_ggchord_features(domains, cds)
genomic这个例子选择第 2–20 个残基作显示范围,不声称它是检测到的蛋白结构域。 投影结果是基因组区间,保留正负链与分段关系。真实检测到的 domain 也应提供确切 父 CDS ID 及氨基酸范围;不能通过同名注释或注释最大端点猜测。
分段、phase 和部分区域
build_ggchord_cds() 先建立 CDS 分段映射,project_ggchord_features() 再将氨基酸 区间按映射切分。跨剪接边界可能返回多行;不要简单把坐标乘以 3。 不完整 CDS、phase、截断或不支持的位置必须按文档策略处理并检查报告。 DNA 匹配、氨基酸区间投影和真实翻译/比对是不同步骤,绘图库不会代为推断缺失证据。
BLASTp 查询范围与双端连接
代码
# Exact CDS DNA equality supplies evidence for these selected ungapped residues.
matching <- homologs$data |>
slice_head(n = 1)
paired_coding <- cluster_features |>
mutate(phase = 0)
paired_cds <- build_ggchord_cds(paired_coding)
protein_link <- tibble(
qfeature_id = matching$qfeature_id, sfeature_id = matching$sfeature_id,
qstart = 1, qend = 20, sstart = 1, send = 20
)
projected_links <- project_ggchord_links(protein_link, paired_cds, ungapped = TRUE)
projected_links这个无缺口例子依赖同源专题中已核对的相同编码序列。 真实 BLASTp 输入可以有 gap;查询区间仍能投影,但双端连接还需要 subject 的 CDS 和无缺口对应证据。请阅读真实 BLASTp 读取与投影。 本版不把 aa 单位伪装成 bp,也不新增原生蛋白坐标绘图。
完成后检查
检查父 CDS ID、投影报告及返回分段。选择的残基区间只是显示例子,不能将其描述为检测到的结构域。