首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >条形码DNA的聚类分析

条形码DNA的聚类分析
EN

Stack Overflow用户
提问于 2016-02-11 10:24:24
回答 2查看 185关注 0票数 0

我正在使用条形码在PCR之前标记线粒体DNA链。条形码序列是未知的,但它们有18个核苷酸长,并且直接跟随已知的序列( CATCAT或TACTAC)。每个DNA分子都将获得一个唯一的条形码标识符。一旦分子经过PCR,我需要根据它们的18个核苷酸条形码对序列进行聚类,然后按条形码对序列进行比对。

举一个非常简单的例子,假设我有两个进入PCR反应的分子:

代码语言:javascript
运行
复制
     CATCATBARCODE1SEQUENCE1
     TACTACBARCODE2SEQUENCE2 

经过放大后,我得到了:

代码语言:javascript
运行
复制
     CATCATBARCODE1SEQUENCE1
     CATCATBARCODE1SEQUENCE1 
     TACTACBARCODE2SEQUENCE2
     TACTACBARCODE2SEQUENCE2 

然后我想搜索位置6-13的序列部分,并基于该序列窗口对它们进行聚类,而不更改序列的其余部分,这实际上看起来就像我上面的一样。然后我就可以对相邻的序列进行比对。

关于如何在不考虑序列的其余部分的情况下完成序列窗口的聚类,您有什么想法吗?谢谢。

EN

回答 2

Stack Overflow用户

发布于 2016-02-18 22:57:38

过于简化的R代码,但似乎做了你所要求的:

代码语言:javascript
运行
复制
seqs <- c('CATCATBARCODE1SEQUENCE1',
         'CATCATBARCODE1SEQUENCE1',
         'TACTACBARCODE2SEQUENCE2',
         'TACTACBARCODE2SEQUENCE2' )

clusters <- list()

for (seq in seqs) {
  barcode <- substr(seq, 7, 14)
  if (!is.null(clusters[[barcode]])) {
    clusters[[barcode]] <- append(clusters[[barcode]], seq)
  } else {
    clusters[[barcode]] <- c(seq)
  }
}

print(clusters)

打印:

代码语言:javascript
运行
复制
$BARCODE1
[1] "CATCATBARCODE1SEQUENCE1" "CATCATBARCODE1SEQUENCE1"

$BARCODE2
[1] "TACTACBARCODE2SEQUENCE2" "TACTACBARCODE2SEQUENCE2"
票数 0
EN

Stack Overflow用户

发布于 2016-02-21 07:54:11

假设您已经可以获得以CATCATBARCODEX开头的序列,那么我要做的就是在python中处理它。如果您的序列开始不同,那么您可能需要搜索CATCAT,并丢弃那些看起来处于错误位置的CATCAT。如果条形码的数量非常多,可能会有一些问题,但我认为对于大约100,000个简单的方法应该是可行的。

无论如何,一旦你找到CATCAT,我要做的就是建立一个条形码字典并开始过滤。然后,你只需撕下序列的第一部分,并使用任何方法进行比对(我有一个条形码项目,使用自定义基因组和领结是很方便的)。

假设您需要找到这个序列,而不是仅仅从它开始,在python中,解决方案应该是

代码语言:javascript
运行
复制
my_dict= {}
for seq in seqs:
     idx = seq.find("CATCAT")
     idx2 = seq.find("TACTAC")
     if idx==-1 and idx2==-1:continue
     # here you need to consider the location of idx and idx2, both may be present, sequence needs to be long enough etc
     barcode = seq[idx+6, idx+6+18]
     # you may want to shorten the barcode or encode it to a string
     if barcode in my_dict: 
          my_dict[barcode]=1 
     else : 
          my_dict[barcode]+=1;
     seq=seq[idx+24:]

除了计数之外,您还可以1)按条形码将序列附加到fasta文件,或2)将条形码作为注释分配给大型fasta文件。

无论如何,您可能想要剥离序列以简化下游分析。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35329732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档