You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用GGMSA进行多序列比对时仅对齐2/5条序列的技术求助

ggmsa多序列比对问题修正

我是新手,尝试用ggmsa做短序列的多序列比对,但遇到问题。更新后的代码没有警告,但5条序列里只有2条能成功对齐。以下是我原本的代码:

galanin_table <- c("MACSKHLVLFLTILLSLAETPDSAPAHRGRGGWTLNSAGYLLGPVLHLSSKANQGRKTDSALEILDLWKAIDGLPYSRSPRMTKRSMGETFVKPRTGDLRIVDKNVPDEEATLNL", "Rat", "MHRCVGGVCVSLIVCAFLTETLGMVIAAKEKRGWTLNSAGYLLGPRRIDHLIQIKDTPSARGREDLLGQYAIDSHRSLSDKHGLAGKREMPLDEDFKTGALRIADEDVVHTIIDFLSYLKLKEIGALDSLPSSLTSEEISQP", "Zebrafish", "MQRSFAVFCVSLIFCATLSETIGLVIAAKEKRGWTLNSAGYLLGPRRIDHLIQIKDSPSARGRDELVNQYGIDGHRTLGDKAGLAGKRDMAQEDDVRTGPLRIGDEDIIHTVIDFLSYLKLKEMGALDSLPSPLTSDELANP", "Pupfish", "GWTLNSAGYLLGPPPGFSPFR","M35", "WTLNSAGYLLGPEHPPPALALA","M871")

galanin_matrix <- matrix(galanin_table, byrow=T, nrow=5)
galanin_table <- as.data.frame(galanin_matrix, stringsAsFactors = F)
colnames(galanin_table) <- c("Sequences", "Species")
galanin_table <- as.data.frame(galanin_table)
galanin_list <- as.list(galanin_table)
galanin_asvector <- as.vector(galanin_list)
names (galanin_vector) <- names (galanin_list)
galanin_vector_ss <- Biostrings::AAStringSet(galanin_vector)
galanin_msa <- msa(galanin_vector_ss)
class(galanin_msa) <- "AAMultipleAlignment"

ggmsa(galanin_msa)

问题原因

代码里的序列提取步骤出错了:你把数据框转成列表再转向量,实际上是把Sequences列和Species列当成了两个独立元素传给了AAStringSet,相当于只处理了两个"序列",自然只有两条能对齐。

修正后的代码

# 原始序列与名称向量
galanin_table <- c("MACSKHLVLFLTILLSLAETPDSAPAHRGRGGWTLNSAGYLLGPVLHLSSKANQGRKTDSALEILDLWKAIDGLPYSRSPRMTKRSMGETFVKPRTGDLRIVDKNVPDEEATLNL", "Rat", "MHRCVGGVCVSLIVCAFLTETLGMVIAAKEKRGWTLNSAGYLLGPRRIDHLIQIKDTPSARGREDLLGQYAIDSHRSLSDKHGLAGKREMPLDEDFKTGALRIADEDVVHTIIDFLSYLKLKEIGALDSLPSSLTSEEISQP", "Zebrafish", "MQRSFAVFCVSLIFCATLSETIGLVIAAKEKRGWTLNSAGYLLGPRRIDHLIQIKDSPSARGRDELVNQYGIDGHRTLGDKAGLAGKRDMAQEDDVRTGPLRIGDEDIIHTVIDFLSYLKLKEMGALDSLPSPLTSDELANP", "Pupfish", "GWTLNSAGYLLGPPPGFSPFR","M35", "WTLNSAGYLLGPEHPPPALALA","M871")

# 转换为数据框(这部分保留即可)
galanin_matrix <- matrix(galanin_table, byrow=T, nrow=5)
galanin_df <- as.data.frame(galanin_matrix, stringsAsFactors = F)
colnames(galanin_df) <- c("Sequences", "Species")

# 正确提取每条序列并设置名称
galanin_seqs <- Biostrings::AAStringSet(galanin_df$Sequences)
names(galanin_seqs) <- galanin_df$Species

# 执行多序列比对
galanin_msa <- msa(galanin_seqs)

# 用ggmsa可视化比对结果
ggmsa(galanin_msa)

说明

修正后直接从数据框中提取Sequences列创建AAStringSet,并为每条序列绑定对应的物种/编号名称,这样msa就能处理全部5条序列,ggmsa也能正常显示所有比对结果。

内容的提问来源于stack exchange,提问作者sometimespetisometimesfeña

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 14:50:39