【发布时间】:2021-03-23 15:33:14
【问题描述】:
如果主字符串的特定部分存在子字符串,我会构建一个代码来打印字符串。我有一个如下文件,我从seq11_rv 创建了 5 个字母子串(5mers)。
>seq11_fw
TCAGATGTGTATAAGAGACAGTTATTAGCCGGTTCCAGGTATGCAGTATGAGAA
>seq11_rv
GAGATTATGTGGGAAAGTTCATGGAATCGAGCGGAGATGTGTATAAGAGACAGTGCCGCGCTTCACTAGAAGTCATACTGC
然后我对这些 5mers 进行反向补码并将它们附加到一个列表中。然后我查看了seq11_fw,如果位置[42:51](seq11_fw 中的GCAGTATGA)有任何列表项,则应打印确认。
为了便于理解seq11_rv 的最后 5mer 是 ACTGC,它的反向补码变为 GCAGT,如果您检查 seq11_fw[42:51],则此 GCAGT 存在于该位置内,但我知道没有得到任何输出。
任何帮助将不胜感激。
这是我的代码:
from Bio import SeqIO
from Bio.Seq import Seq
with open(file, 'r') as f:
lst = []
for record in SeqIO.parse(f, 'fasta'):
if len(record.seq) == 81:
for i in range(len(record.seq)):
kmer = str(record.seq[i:i + 5])
if len(kmer) == 5:
C_kmer = Seq(kmer).complement()
lst.append(C_kmer[::-1])
cnt=0
if len(record.seq) == 54 and any(str(items) in str(record.seq[42:51]) for items in lst):
cnt +=1
if cnt == 1:
print(record.id)
print(record.seq)
print(lst)
【问题讨论】:
-
print(cnt) 怎么说?
-
print(any(str(items) in str(record.seq[42:51]) for items in lst)) 说什么?
标签: python performance output biopython