繁体   English   中英

查找序列不匹配的DNA条码

[英]find a DNA barcode with mismatches in sequence

我有36 nt的内容是这样的: atcttgttcaatggccgatcXXXXgtcgacaatcaa与XXXX是不同的条形码的FASTQ文件。 我想在文件的确切位置(21到24)中搜索条形码,并打印序列中最多3个不匹配的序列而不是条形码。

例如:我有条形码: aacg搜索fastq文件中位置21到24之间的条形码,并允许3个不匹配的序列,例如:

atcttgttcaatggccgatcaacggtcgacaatcac # it has 1 mismatch
ttcttgttcaatggccgatcaacggtcgacaatcac # it has 2 mismatch
tccttgttcaatggccgatcaacggtcgacaatcac # it has 3 mismatch

我试图先使用awk查找唯一的行并查找不匹配的内容,但是查找和查找它们对我来说非常繁琐。

awk 'NR%4==2' 1.fq |sort|uniq -c|awk '{print $1"\t"$2}' > out1.txt

有什么快速的方法可以找到吗?

谢谢。

使用Python:

strs = "atcttgttcaatggccgatcaacggtcgacaatcaa"

with open("1.fq") as f:
    for line in f:
        if line[20:24] == "aacg":
            line = line.strip()
            mismatches = sum(x!=y for x, y  in zip(strs, line))
            if mismatches <= 3:
                print line, mismatches

atcttgttcaatggccgatcaacggtcgacaatcac 1
ttcttgttcaatggccgatcaacggtcgacaatcac 2
tccttgttcaatggccgatcaacggtcgacaatcac 3

使用Python:

import re
seq="atcttgttcaatggccgatcaacggtcgacaatcaa"
D = [ c for c in seq ]
with open("input") as f:
    for line in f:
        line=line.rstrip('\n')
        if re.match(".{20}aacg", line):
            cnt = sum([ 1 for c,d in zip(line,D) if c != d])
            if cnt < 4:
                print cnt, line

使用python regex模块可以指定不匹配的数量

import regex #intended as a replacement for re
from Bio import SeqIO
import collections

d = collections.defaultdict(list)
motif = r'((atcttgttcaatggccgatc)(....)(gtcgacaatcaa)){e<4}' #e<4 = less than 4 errors
records = list(SeqIO.parse(open(infile), "fastq"))
for record in records:
    seq = str(record.seq)
    match = regex.search(motif, seq, regex.BESTMATCH)
    barcode = match.group(3)
    sequence = match.group(0)
    d[barcode].append(sequence) # store as a dictionary key = barcode, value = list of sequences
for k, v in d.items():
    print("barcode = %s" % (k))
    for i in v:
        print("sequence = %s" % (i))

使用捕获组,第四组(3)将是条形码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM