使用Biopython为tRNA导入fasta格式的基因组序列,我正在编写这个搜索脚本;当我在这里下载的文件中搜索“AT”时:http://gtrnadb.ucsc.edu/Hsapi19/hg19-tRNAs.fa;返回626项结果中的622项。在我想要排除的4个搜索中,'AT'序列确实存在于tRNA 54中(如下所示)。为什么re.search()没有将此结果包含在622中?我不确定我是否误用了re.search()或字符串太长了? “AT”可以按照此处所述的顺序出现在字符串中的任何内容:https://docs.python.org/2/library/re.html
#!/usr/bin/env python
import sys
import os
import time
import re
from Bio import SeqIO
filename = 'hg19-tRNAs270.fa'
search_seq = sys.argv[1]
count = 0
fails = 0
finds = 0
output_handle = open("output_%s.fasta" % search_seq, "w")
for record in SeqIO.parse(filename, "fasta"):
count += 1
# print("Record " + record.id + ", length " + str(len(record.seq)))
# print record
# print 'ID:',record.id
# print 'SEQ:',record.seq
# print 'DESC:',record.description
# print 'LENGTH:',str(len(record.seq))
str_record = record.format("fasta")
result = re.search(search_seq,str_record)
if result != None:
finds +=1
SeqIO.write(record, output_handle, "fasta")
else:
print 'ID:',record.id
print 'SEQ:',record.seq
print 'DESC:',record.description
print 'LENGTH:',str(len(record.seq))
output_handle.close()
print("There were " + str(count) + " records in file " + filename)
print("There were " + str(finds) + " matches in the file " + filename + " for sequence: " + (search_seq))
- - 模式:编译; default-directory:“〜/ Dropbox / shared /” - -
编译于7月11日星期五15:35:06开始
./ fasta_search.py AT
ID:complimentry_to_oligo_probe
SEQ:
DESC:complimentry_to_oligo_probe TCAGTTGGTAGAGCGGAGGA
长度:0
ID:Homo_sapiens_chr1.trna25-AsnGTT
SEQ:GTCTCTGTGGCGTAGTCGGTTAGCGCGTTCGGCTGTTAACCGAAAAGTTGGTGGTTCGAGCCCACCCAGGAACG
DESC:Homo_sapiens_chr1.trna25-AsnGTT(148000805-148000878)Asn(GTT)74 bp Sc:72.61
长度:74
ID:Homo_sapiens_chr19.trna12-GlnTTG
SEQ:AGCAGTGTAGCCTAGTGGCTAGGTCCTCTGACTTTGAAACCACGTGGTCTGGGTTTAAGTCTCAGCTGTGCTA
DESC:Homo_sapiens_chr19.trna12-GlnTTG(9150428-9150356)Gln(TTG)73 bp Sc:23.15
长度:73
ID:Homo_sapiens_chr6.trna54-ThrCGT
SEQ:GGCCCTGTAGCTCAGCGGTTGGAGCGCTGGTCTCGTAAACCTAGGGGTCGTGAGTTCAA * AT * CTCACCAGGGCCT
DESC:Homo_sapiens_chr6.trna54-ThrCGT(27586135-27586208)Thr(CGT)74 bp Sc:63.29
长度:74
文件hg19-tRNAs270.fa中有626条记录
文件hg19-tRNAs270.fa中有622个匹配序列:AT
编译于7月11日星期五15:35:06完成
答案 0 :(得分:0)
这可能是换行符。 FASTA记录通常限制为每行60个字符(或者网络告诉我),因此如果格式调用将匹配部分转换为A\nT
,则它与正则表达式不匹配。请改用str_record = str(record.seq)
(假设您确实只想搜索序列)。
答案 1 :(得分:0)
更改
result = re.search(search_seq,str_record)
到
result = re.search(search_seq,str_record, re.MULTILINE)
我的猜测是record.format()为你的str_record字符串添加换行符。