gpt4 book ai didi

regex - R索引字符串带有指示核苷酸变体的字符 block

转载 作者:行者123 更新时间:2023-12-04 13:22:46 26 4
gpt4 key购买 nike

我的问题是我需要在字符串中找到一个位置,在该位置我应该有几个字符块,而这些字符块实际上只能是单个字符位置。我正在处理核苷酸序列,需要跟踪序列中的位置,但是我在某些位置存在一些变体,这些变体被表示为[A/T],其中取决于哪个序列可能存在A或T我很在意(这是两个相似的DNA序列,它们在整个序列的几个位置上都不同)。因此,对于这些变体位点中的每一个,序列的长度要多四个字符/位置。

我知道我可以通过编写一个新代码来解决此问题,在该代码中可以将[A/T]转换为X,而[T/A]则由Y表示,但这会引起混淆,因为已经有标准的简并代码,但它不会跟踪哪个核苷酸来自哪个菌株(对我来说,/之前的一个来自菌株A,/之后的一个来自菌株B)。我想以某种方式索引此DNA序列字符串,如下所示:

如果我有一个像这样的字符串:

dna <- "ATC[A/T]G[G/C]ATTACAATCG"

我想得到一个表/data.frame:
pos nuc
1 A
2 T
3 C
4 [A/T]
5 G
6 [G/C]
... and so on

如果我更了解正则表达式,我觉得我可以以某种方式使用strplit。我是否可以插入一个条件以在每个字符处进行拆分,除非用方括号括起来,否则应将其保留为一个块?

最佳答案

library('stringr')
df <- as.data.frame(strsplit(gsub("\\[./.\\]", '_', dna), ''), stringsAsFactors=F)
df[,1][df[,1] == '_'] <- str_extract_all(dna, "\\[./.\\]")[[1]];names(df) <- 'nuc'
df
# nuc
# 1 A
# 2 T
# 3 C
# 4 [A/T]
# 5 G
# 6 [G/C]
# 7 A
# 8 T
# 9 T
# 10 A
# 11 C
# 12 A
# 13 A
# 14 T
# 15 C
# 16 G

关于regex - R索引字符串带有指示核苷酸变体的字符 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31147019/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com