我是Python和生物信息学的新手,但我正在通过rosalind.info网站学习两种方法.您可以使用后缀树执行此操作.后缀树(见

http://en.wikipedia.org/wiki/Suffix_tree)是神奇的数据结构,它使生物信息学中的所有事情成为可能.您可以快速找到多个长序列中的公共子串.后缀树只需要线性时间,因此长度10,000,000是可行的.

所以首先找到序列的反向补码.然后将两者放入后缀树中,找到它们之间的公共子串(最小长度).

下面的代码使用了这个后缀树实现:http://www.daimi.au.dk/~mailund/suffix_tree.html.它是用C语言编写的,带有Python绑定.它不会处理大量的序列,但是两个没有问题.但是我不能说这是否会处理长度10,000,000.

from suffix_tree import GeneralisedSuffixTree

baseComplement = { 'A' : 'T', 'C' : 'G', 'G' : 'C', 'T' : 'A' }

def revc(seq):

return "".join([baseComplement[base] for base in seq[::-1]])

data = "AGGGTTTCCCTGACCTTCACTGCAGGTCATGCA"

# revc TGCATGACCTGCAGTGAAGGTCAGGGAAACCCT

# 012345678901234567890123456789012

# 1 2 3

minlength = 6

n = len(data)

tree = GeneralisedSuffixTree([data, revc(data)])

for shared in tree.sharedSubstrings(minlength):

#print shared

_, start, stop = shared[0]

seq = data[start:stop]

_, rstart, rstop = shared[1]

rseq = data[n-rstop:n-rstart]

print "Match: {0} at [{1}:{2}] and {3} at [{4}:{5}]".format(seq, start, stop, rseq, n-rstop, n-rstart)

这会产生输出

Match: AGGTCA at [23:29] and TGACCT at [10:16]

Match: TGACCT at [10:16] and AGGTCA at [23:29]

Match: CTGCAG at [19:25] and CTGCAG at [19:25]

它每次匹配两次,每次一次.那里也有反向回文!

C语言 输出重复序列的序号,如何在FASTA序列中找到反向重复模式?相关推荐

  1. R语言使用str_replace函数和str_replace_all函数替换字符串中匹配到的模式:str_replace函数替换第一个匹配到的字符串、str_replace_all函数替换所有匹配到的

    R语言使用str_replace函数和str_replace_all函数替换字符串中匹配到的模式:str_replace函数替换第一个匹配到的字符串.str_replace_all函数替换所有匹配到的 ...

  2. Java面试题:在一个递增的数组里面,找出任意两个数的和等于100,编写程序输出这些数对,可以假设数组中不存在重复元素

    本文使用两种算法来实现,分别是二分查找法和插值查找法,发现插值查找法更好,更快地找到需要的数据. 代码如下: package com.moson.search;import java.util.Arr ...

  3. 如何在R代码中找到一个值的行号

    如何在R代码中找到一个值的行号? 例如: 在以下一组值中,如何在第4列中找到特定值的行号? 如何使用R代码命令找到列4中的值"1578"的行号. > mydata_2sex ...

  4. c语言如何输入矩阵_如何在 COMSOL 软件中调试外部材料

    问题描述 我实现了一种用于"结构力学"的外部材料,但我的模型无法求解. 解决方法 外部材料一般通过 C 语言编码,然后被编译到共享库中,供 COMSOL Multiphysics ...

  5. perl应用:SNP的提取(2):从对比序列中找到SNP位点并输出 a.pl

    我们从第一步中得到的是一个如下的文件: ##maf version=1 scoring=lastz.v1.02.00 # lastz.v1.02.00 --ambiguous=iupac --notr ...

  6. android 代码省电模式,我们将向您展示如何在Android8.0Oreo中自定义省电模式

    通过限制后台服务,禁用动画以及执行各种其他调整,Android上的节电模式可以非常有效地延长电池寿命.但是,它采用了一些额外的措施,其中一些措施似乎过分或不必要.例如,振动是否真的使用足够的功率来证明 ...

  7. r语言msar如何用_如何在jupyter notebook中使用R语言

    前人之述备矣,然则操作系统不同,软件版本相异,软件安装途径有别,只为于jupyter中使用R,所遇之难 ,得无异乎? 问题陈述 操作系统:win10 64 软件叙述:安装了anaconda, R(不是 ...

  8. c 语言 函数返回数组_如何在C ++函数中返回数组

    c 语言 函数返回数组 介绍 (Introduction) In this tutorial, we are going to understand how we can return an arra ...

  9. 反向输出dna序列_在DNA序列中寻找反向重复序列

    我有一长串DNA序列,我需要找到由间隔序列侧翼的两个回文序列组成的区域. 输入是: cgtacacgagtagtcgtagctgtcagtcgatcgtacgtacgtagctgctgtagcacta ...

最新文章

  1. 一种准标准CSV格式的介绍和分析以及解析算法
  2. vs2019 MFC 中 cannot open include file 'afxres.h' 问题解决方法
  3. 第十五届全国大学生智能汽车竞赛各分赛区成绩汇总
  4. BZOJ 1565 Luogu P2805 [NOI2009]植物大战僵尸 (Tarjan判环、最小割)
  5. CodeForces - 1354D Multiset(线段树/二分)
  6. 计算机会计课程试题及答案,会计电算化课后简答题及答案.doc
  7. 潍坊学院计算机系崔玲玲,人工免疫算法在引水工程中的应用.pdf
  8. 富士通成功开发全球最快的36量子位量子模拟器
  9. Android proguard 详解
  10. 调研分析-全球与中国非线性光学BIBO晶体(BiB3O6)市场现状及未来发展趋势
  11. mybatis源码之MapperMethod
  12. c语言编程百分比,c – 计算百分比
  13. java 中的radix_Java Scanner radix()方法与示例
  14. 嵌入式linux保存参数数据
  15. 温故而知新(一)—— 再看RNN、LSTM、GRU
  16. 利用排序规则特点计算汉字笔划和取得拼音首字母
  17. 【蓝桥杯选拔赛真题01】Scratch消失的小猫 少儿编程scratch蓝桥杯选拔赛真题讲解
  18. SpringBoot教程(十一) | SpringBoot集成Mybatis
  19. 自己总结的一些spring面试题
  20. 云产品流转 - 实现小车和微信小程序之间的通信(M2M通信)

热门文章

  1. 闲鱼前端基于serverless的一种多端开发解决方案
  2. 2019阿里云910会员节大促主会场全攻略
  3. AutoScaling 成本优化模式升级--混合实例策略
  4. 亿级消息系统的核心存储:Tablestore发布Timeline 2.0模型
  5. IP应用加速 – DCDN迈入全栈新篇章
  6. 五分钟教你如何用函数计算部署钉钉群发机器人
  7. 数字孪生+交通,到底有啥用?
  8. 亚马逊云科技中国线上峰会开幕,发力汽车产业链、少年人工智能等
  9. 什么是 “原型模式” ?
  10. 数据平台、大数据平台、数据中台……傻傻分不清?这次终于有人讲明白了!