gpt4 book ai didi

r - 序列识别、出现次数计数和部分序列检索

转载 作者:行者123 更新时间:2023-12-01 11:48:02 26 4
gpt4 key购买 nike

我认为我想做的事情并不难,但我缺乏做这些事情所需的适当 R 知识。非常感谢您的帮助!

我有一个包含蛋白质名称和序列的文件,所以是这样的:

Protein1 ABCDEFGHIJKLMNOPQRSTUWXYZ
Protein2 ABCDEFGHIJKUVMNOPQRSTUVWXYZ
Protein3 ABCUVDEFGHIJKLMNOPQRSTVVW

我正在寻找包含 'UU''UV''VV' 模式的蛋白质。我这样做是使用:

(编辑:这是一个简化的例子,目前我正在看三胞胎(“[UV][UV][UV]”))

y <- x[grep("[UV][UV]", x[,2]),]

所以现在我知道哪些确实有这种模式,但我想要更多。首先,我想知道这种模式在序列中出现的频率,但到目前为止我还不知道如何做到这一点。这是第 1 个问题。

问题 2:我想提取前面的模式+部分序列。到目前为止我用过:

pattern <- "[A-Z]{5}[UV][UV]"
locs <- regexpr(pattern, y[,2])
z <- substr(y[,2], locs, locs+attr(locs,"match.length")-1)

这确实有效,但仅针对模式的一种说明,它不包括模式出现的所有情况。

我想最终得到的是包含这些信息的东西:

Protein name,
number of patterns found in the sequence,
pattern + part of the desired sequence in front

在我的示例中,结果将是这样的:

Protein1
0

Protein2
2
GHIJKUV
PQRSTUV

Protein3
2
ABCUV #don't know about this one, since the sequence in front is shorter than 5. For me it would be best if these would not appear.
PQRSTVV

编辑:最后我想要一个数据矩阵保存到一个文本文件中,这样我就可以与其他人分享。那么我希望以这样的方式结束:

ProteinName Count Sequence1 Sequence2 Sequence3 SequenceMax
Protein1 0
Protein2 2 GHIJKUV PQRSTUV

最佳答案

对于匹配数:

> sapply( strsplit(dat[[2]], "UU|UV"), length) -1
[1] 0 2 1

要隔离序列,请检查哪些结果与输入的字符数不同:

> sub("(.+)(.{5}UU|.{5}UV)(.+)", "\\2", dat[[2]])
[1] "ABCDEFGHIJKLMNOPQRSTUWXYZ" "PQRSTUV" "ABCUVDEFGHIJKLMNOPQRSTVVW"

将它们绑定(bind)在一起:

> apply(dat, 1, function(x) list(count=sapply( strsplit(x[2], "UU|UV"), length) -1 , matches= { mat <- gsub("(.+)(.{5}UU|.{5}UV)(.+)", "\\2", x[2]); if(!nchar(mat) ==nchar(x[2]) ) {mat}else{""} }))
[[1]]
[[1]]$count
V2
0

[[1]]$matches
[1] ""


[[2]]
[[2]]$count
V2
2

[[2]]$matches
V2
"PQRSTUV"


[[3]]
[[3]]$count
V2
1

[[3]]$matches
[1] ""

关于r - 序列识别、出现次数计数和部分序列检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14133948/

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