如何从seqrep的SPS格式输出中提取代表序列?
从seqrep输出的SPS格式中提取代表序列(适配seqrplot查看)
我刚好处理过类似的需求,给你分享几个实用的方法,轻松提取代表序列,让seqrplot的查看体验提升不少~
方法1:直接从seqrep的结果对象中提取
如果还没把结果导出成SPS文件,直接从seqrep的返回值里提取是最方便的:
首先假设你已经用TraMineR生成了代表序列结果:
library(TraMineR) # 先准备好你的序列对象seqdata和距离矩阵dissmatrix rep_results <- seqrep(seqdata, diss = dissmatrix, method = "PAM", nrep = 5) # nrep是你设定的代表序列数量
seqrep的返回结果里,$repseq就是封装好的代表序列对象,直接调用就能获取:
# 提取代表序列 representative_seqs <- rep_results$repseq # 查看序列的STS格式内容 print(representative_seqs) # 转换成纯字符格式方便查看或保存 rep_seqs_char <- seqformat(representative_seqs, from = "STS", to = "CHAR", sep = "") # 保存到文本文件 write.table(rep_seqs_char, file = "代表序列.txt", row.names = FALSE, col.names = FALSE, quote = FALSE)
方法2:从已保存的SPS文件中提取
如果已经把seqrep的结果导出成了SPS格式文件,用TraMineR的seqdef函数读取后筛选即可:
# 读取SPS格式文件 sps_seqdata <- seqdef("你的序列文件.sps", format = "SPS") # 方式1:根据seqrep的nrep参数,取前N行(若SPS中代表序列排在最前面) rep_from_sps <- sps_seqdata[1:5, ] # 这里的5对应之前nrep设置的数量 # 方式2:如果SPS文件里的代表序列有特定ID标识(比如命名为rep_1、rep_2) rep_from_sps <- sps_seqdata[grepl("rep_", rownames(sps_seqdata)), ]
提取后同样可以用seqformat转换成易读的字符格式,或者直接用于seqrplot绘图。
配合seqrplot的小技巧
如果想让seqrplot的查看者直接在图上看到代表序列内容,不用单独提取文件,可以在绘图时自定义标签:
# 先把代表序列转成字符格式 rep_labels <- seqformat(representative_seqs, from = "STS", to = "CHAR", sep = "") # 绘图时直接显示序列内容作为标签 seqrplot(seqdata, rep = rep_results, rep.type = "label", label = rep_labels, cex.label = 0.8)
这样查看者在看图的时候就能直观看到每个代表序列的具体内容,非常方便。
内容的提问来源于stack exchange,提问作者Yolande
相关产品推荐
相关产品推荐

