C语言 输出重复序列的序号,如何在FASTA序列中找到反向重复模式?
我是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序列中找到反向重复模式?相关推荐
- R语言使用str_replace函数和str_replace_all函数替换字符串中匹配到的模式:str_replace函数替换第一个匹配到的字符串、str_replace_all函数替换所有匹配到的
R语言使用str_replace函数和str_replace_all函数替换字符串中匹配到的模式:str_replace函数替换第一个匹配到的字符串.str_replace_all函数替换所有匹配到的 ...
- Java面试题:在一个递增的数组里面,找出任意两个数的和等于100,编写程序输出这些数对,可以假设数组中不存在重复元素
本文使用两种算法来实现,分别是二分查找法和插值查找法,发现插值查找法更好,更快地找到需要的数据. 代码如下: package com.moson.search;import java.util.Arr ...
- 如何在R代码中找到一个值的行号
如何在R代码中找到一个值的行号? 例如: 在以下一组值中,如何在第4列中找到特定值的行号? 如何使用R代码命令找到列4中的值"1578"的行号. > mydata_2sex ...
- c语言如何输入矩阵_如何在 COMSOL 软件中调试外部材料
问题描述 我实现了一种用于"结构力学"的外部材料,但我的模型无法求解. 解决方法 外部材料一般通过 C 语言编码,然后被编译到共享库中,供 COMSOL Multiphysics ...
- perl应用:SNP的提取(2):从对比序列中找到SNP位点并输出 a.pl
我们从第一步中得到的是一个如下的文件: ##maf version=1 scoring=lastz.v1.02.00 # lastz.v1.02.00 --ambiguous=iupac --notr ...
- android 代码省电模式,我们将向您展示如何在Android8.0Oreo中自定义省电模式
通过限制后台服务,禁用动画以及执行各种其他调整,Android上的节电模式可以非常有效地延长电池寿命.但是,它采用了一些额外的措施,其中一些措施似乎过分或不必要.例如,振动是否真的使用足够的功率来证明 ...
- r语言msar如何用_如何在jupyter notebook中使用R语言
前人之述备矣,然则操作系统不同,软件版本相异,软件安装途径有别,只为于jupyter中使用R,所遇之难 ,得无异乎? 问题陈述 操作系统:win10 64 软件叙述:安装了anaconda, R(不是 ...
- c 语言 函数返回数组_如何在C ++函数中返回数组
c 语言 函数返回数组 介绍 (Introduction) In this tutorial, we are going to understand how we can return an arra ...
- 反向输出dna序列_在DNA序列中寻找反向重复序列
我有一长串DNA序列,我需要找到由间隔序列侧翼的两个回文序列组成的区域. 输入是: cgtacacgagtagtcgtagctgtcagtcgatcgtacgtacgtagctgctgtagcacta ...
最新文章
- 一种准标准CSV格式的介绍和分析以及解析算法
- vs2019 MFC 中 cannot open include file 'afxres.h' 问题解决方法
- 第十五届全国大学生智能汽车竞赛各分赛区成绩汇总
- BZOJ 1565 Luogu P2805 [NOI2009]植物大战僵尸 (Tarjan判环、最小割)
- CodeForces - 1354D Multiset(线段树/二分)
- 计算机会计课程试题及答案,会计电算化课后简答题及答案.doc
- 潍坊学院计算机系崔玲玲,人工免疫算法在引水工程中的应用.pdf
- 富士通成功开发全球最快的36量子位量子模拟器
- Android proguard 详解
- 调研分析-全球与中国非线性光学BIBO晶体(BiB3O6)市场现状及未来发展趋势
- mybatis源码之MapperMethod
- c语言编程百分比,c – 计算百分比
- java 中的radix_Java Scanner radix()方法与示例
- 嵌入式linux保存参数数据
- 温故而知新(一)—— 再看RNN、LSTM、GRU
- 利用排序规则特点计算汉字笔划和取得拼音首字母
- 【蓝桥杯选拔赛真题01】Scratch消失的小猫 少儿编程scratch蓝桥杯选拔赛真题讲解
- SpringBoot教程(十一) | SpringBoot集成Mybatis
- 自己总结的一些spring面试题
- 云产品流转 - 实现小车和微信小程序之间的通信(M2M通信)