【发布时间】:2018-12-19 15:10:34
【问题描述】:
我有一个像这个小例子这样的大文本文件:
小例子:
>chr9:128683-128744
GGATTTCTTCTTAGTTTGGATCCATTGCTGGTGAGCTAGTGGGATTTTTTGGGGGGTGTTA
>chr16:134222-134283
AGCTGGAAGCAGCGTGGGAATCACAGAATGGCCGAGAACTTAAAGGCTTTGCTTGGCCTGG
>chr16:134226-134287
GGAAGCAGCGTGGGAATCACAGAATGGACGGCCGATTAAAGGCTTTGCTTGGCCTGGATTT
>chr1:134723-134784
AAGTGATTCACCCTGCCTTTCCGACCTTCCCCAGAACAGAACACGTTGATCGTGGGCGATA
>chr16:135770-135831
GCCTGAGCAAAGGGCCTGCCCAGACAAGATTTTTTAATTGTTTAAAAACCGAATAAATGTT
>chr16:135787-135848
GCCCAGACAAGATTTTTTAATTGTTTAAAAACCGAATAAATGTTTTATTTCTAGAAAACTG
>chr16:135788-135849
CCCAGACAAGATTTTTTAATTGTTTAAAAACCGAATAAATGTTTTATTTCTAGAAAACTGT
>chr16:136245-136306
CACTTCACAAATAGAAGGCTGTCAGAGAGACAGGGACAGGCCACACAAGTGTTTCTGCACA
>chr7:146692-146753
GTGTGACCAAAACTTAGGATGTTAGCCGAACTCTCCGTTACTATCATTTTGGATTTCCAGT
>chr8:147932-147993
GGTAAAGGTAAATACATAAACAAACATAAAACCGATCCTATTGTAATTTTGGTTTGTAACT
此文件分为不同的组,每组有 2 个部分(2 行)。以> 开头的第一行是ID,第二行是字符序列。每个字符序列的长度为 61。
我有一个短序列(CCGA)我想扫描每个第二部分以查找这个短序列。输出将是一个包含 2 列的文本文件。
第一列:是短序列开始的位置(每第二部分有61个字符,所以在输出中我会报告字符的位置,它是一个数字)。 第 2 列:是短序列的开头位于该特定位置的次数。
例如对于以下字符序列,短序列的开头位于位置49。
GCCTGAGCAAAGGGCCTGCCCAGACAAGATTTTTTAATTGTTTAAAAACCGAATAAATGTT
对于这个小例子,预期的输出如下所示:
预期输出:
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0
11 0
12 0
13 0
14 0
15 0
16 0
17 0
18 0
19 0
20 0
21 1
22 0
23 0
24 0
25 0
26 1
27 0
28 0
29 0
30 0
31 1
32 4
33 0
34 0
35 0
36 0
37 0
38 0
39 0
40 0
41 0
42 0
43 0
44 0
45 0
46 0
47 0
48 0
49 1
50 0
51 0
52 0
53 0
54 0
55 0
56 0
57 0
58 0
59 0
60 0
61 0
我正在尝试使用以下代码在 python 中执行此操作。但输出不是我想要的。
infile = open('infile.txt', 'r')
ss = 'CCGA'
count = 0
for line in infile:
if not line.startswith('>'):
for match in pattern.finder(ss):
count +=1
POSITION = pattern.finder(ss)
COUNT = count
你知道怎么解决吗?
【问题讨论】:
-
您好,在您的代码中:
line.startswith('<');你的意思是line.startswith('>')吗? -
CCGA序列能否在一行中出现多次? -
@Patrick Haugh 是的,这是可能的
-
我们可以看看你的
pattern.finder吗?你为什么要调用它两次,为什么它似乎第一次产生一个可迭代而第二次产生一个位置整数,它是如何提供它应该测试的实际行的?
标签: python