2016-12-01 83 views
-2

我需要如何使蟒蛇认识开始,串

SEQ1 .TT..GCCT比较2序列(或仅2个文件)的结束中间..

SEQ2 TAT.CGCCAC。

 2 45 9 

2,4,5,9是位置有差异,我需要计算它们之间的距离。 我有脚本来比较2个序列和计数距离,但

问题1)我想忽略序列开始和结束时的点(。),但要考虑中间的点。你如何在Python中做到这一点?这个任务怎么叫?

问题2)如果我有其他的差异,我需要把它作为一个块,所以2-4的距离将是2,2-5将被忽略,4-9名,5-9计数和2 -9将是7(将数字4和5作为两个),我该怎么做?

+0

你能'sequence.strip( '')'去除前缘和后'.'? – mgilson

+0

没有所有的角色位置在最终输出中都很重要。如果我删除起点和终点,我会改变它们。 –

回答

0

所以我想出了一种方法,我不知道是否有更简单的东西。 我将重新键入第一

的问题,如果你有一个列表 a = [1, 2, 3, 7, 10, 11, 12, 18, 20, 21]

问题1)你将如何删除领先和连续值的尾部组(导致由具有内和1号定义以21结尾)并以列表b = [7, 10, 11, 12, 18]结束。

问题 2)你将如何计算这些数字之间的距离并以列表结尾c = [3,4](它将连续数字视为一个块并将10-7 = 3,然后是18-12 = 4)。 我solytion:

consec = [] for key, group in groupby(enumerate(a), lambda i: i[0] - i[1]): consec.append(list(map(itemgetter(1), group))) consecHead = consec[0] consecTail = consec[-1] if 1 in consecHead: consecHeadcheck = consecHead else: consecHeadcheck = [] if 21 in consecTail: consecTailcheck = consecTail else: consecTailcheck = [] b_prior = [x for x in polPos if x not in consecTailcheck] b = [x for x in b_prior if x not in consecHeadcheck] print(b) c = [] for i in range(len(b)): if int(int(b[i+1]) - int(b[i])) !=1: c.append(int(b[i+1]) - int(b[i]) print(c)

-1

问题1)strip_seq1 = seq1 [1:len(seq)-1]和seq2相同以在开始和结束时删除(。),同时保留之间的所有内容。

问题2)我不确定你在问什么,对不起。