R语言实现蛋白序列分割及指定条件肽段筛选咨询
R 蛋白序列分割后筛选实现
你已经完成了按R位置分割序列的操作,后续两轮筛选可以通过以下两种方式实现:
方法1:tidyverse 风格(和你使用的str_split同属stringr工具生态)
# 加载所需包(已加载可跳过) library(tidyverse) # 你已有的基础代码 protein = "ARTKQTARKSTGGKAPRKQLATKAARKSAPATGGVKKPHRYRPGTVALREIRRYQKSTELLIRKLPFQRLVREIAQDFKTDLRFQSSAVMALQEACEAYLVGLFEDTNLCAIHAKRVTIMPKDIQLARRIRGERA" peptide_fragments <- str_split(protein, "(?<=[R])") # 两轮筛选逻辑 filtered_fragments <- peptide_fragments %>% # 提取分割得到的字符向量(str_split默认返回列表,单输入序列对应列表第一个元素) pluck(1) %>% # 第一轮筛选:保留包含字母K的子串 keep(~ str_detect(.x, "K")) %>% # 第二轮筛选:保留字符长度≥6的子串 keep(~ nchar(.x) >= 6)
方法2:基础R 实现(无需加载第三方包)
# 基础代码 protein = "ARTKQTARKSTGGKAPRKQLATKAARKSAPATGGVKKPHRYRPGTVALREIRRYQKSTELLIRKLPFQRLVREIAQDFKTDLRFQSSAVMALQEACEAYLVGLFEDTNLCAIHAKRVTIMPKDIQLARRIRGERA" # 基础R的strsplit需要加perl=TRUE支持后视正则语法 peptide_fragments <- strsplit(protein, "(?<=[R])", perl = TRUE) # 两轮筛选逻辑 fragments <- peptide_fragments[[1]] # 第一轮:剔除不含K的子串 fragments_with_k <- fragments[grepl("K", fragments)] # 第二轮:剔除长度小于6的子串 filtered_fragments <- fragments_with_k[nchar(fragments_with_k) >= 6]
运行完成后,filtered_fragments变量中存储的就是符合你筛选要求的肽段片段。
内容的提问来源于stack exchange,提问作者hassan hejazi
相关产品推荐
相关产品推荐

