使用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
相关产品推荐
相关产品推荐

