微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过比较 R 中的 kmers 来寻找连续性 数据

如何解决通过比较 R 中的 kmers 来寻找连续性 数据

你好,我有一个如下所示的数据框:

  LR ID           Kmer       ProcID
    1         GTACGTAT         10
    1         TACGTATC         10
    1         ACGTATCG          2
    1         GTATCGTT          3
    2         GTTACGTA         16
    2         TTACGTAC         16
    2         TACGTACT         16
    2         ACGTACTT         11

输出类似于:

LR1 max length: 16 #(as 2 kmers are consecutively going to proc 10)
LR1 min length: 8
LR2 max length: 24 #(as 3 kmers are consecutively going to proc 16)

有 800 个像这样的 LR Id,它们让 kmer 进入不同的进程。我的目标是找到属于一个 LR ID 的最长不间断序列,该序列到达相同的目标 proc id。 我需要将一行的 (k-1) 个字符与其下一行进行比较,依此类推。

我知道有个函数叫做

str_detect() 

在 R 中检查是否存在任何模式。我想知道有没有其他更好的方法来做到这一点?

解决方法

我们可以计算每个 ProcID 中连续出现的 LRID 并计算其中的最小值和最大值。

library(dplyr)

df %>%
  count(LRID,grp = data.table::rleid(ProcID)) %>%
  group_by(LRID) %>%
  summarise(max = max(n) * 8,min = min(n) * 8)

#   LRID   max   min
#* <int> <dbl> <dbl>
#1     1    16     8
#2     2    24     8

或者使用 data.table :

library(data.table)
setDT(df)[,.(n = .N),.(LRID,rleid(ProcID))][,.(max = max(n) * 8,min = min(8)),LRID]
,

我们可以使用

library(dplyr)
df1 %>% 
    count(LRID,grp = cumsum(ProcID != lag(ProcID,default = first(ProcID)))) %>%
    group_by(LRID) %>% 
    summarise(max = max(n) * 8,min = min(n) * 8,.groups = 'drop')
# A tibble: 2 x 3
#   LRID   max   min
#  <int> <dbl> <dbl>
#1     1    16     8
#2     2    24     8

数据

df1 <- structure(list(LRID = c(1L,1L,2L,2L),Kmer = c("GTACGTAT","TACGTATC","ACGTATCG","GTATCGTT","GTTACGTA","TTACGTAC","TACGTACT","ACGTACTT"),ProcID = c(10L,10L,3L,16L,11L)),class = "data.frame",row.names = c(NA,-8L))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?