python - 计算序列中的模式

标签 python

我的文本文件中有如下序列

> P1

MPPRRSIVEVKVLDVQKRRVPNKHYVYIIRVTWSSGATEAIYRRYSKFFDLQMQMLDKFP MEGGQKDPKQRIIPFLPGKILFRRSHIRDAVKRLIPIDEYCKALIQLPPYISQCDEVLQ FFETRPEDLNPPKEEHIGKKKSGNDPTSVDPMVLEQYVVVADYQKQESSEISLSVGQVVD IIEKNESGWWFVSTAEEQGWVPATCLEG QDGVQDEFSLQPEEEEKYTVIYPYTARDQDEM NLERGAVVEVVQKNLEGWWKIRYQGKEGWAPASYLKKNSGEPLPPKLGPSSPAHSGALDL DGVSRHQNAMGREKELLNNQRDGRFEGRLVPDGDVKQRSPKMRQRPPPRRDMTIPRGLNL

> P2

MAEVRKFTKRLSKPGTAAELRQSVSEAVRGSVVLEKAKLVEPLDYENVITQRKTQIYSDP LRDLLMFPMEDISISVIGRQRRTVQSTVPEDAEKRAQSLFVKECIKTYSTDWHVVNYKYE DFSGDFRMLPCKSLRPEKIPNHVFEIDEDCEKDEDSSSLCSQKGGVIKQGWLHKANVNST ITVTMKVFKRRYFYLTQLPDGSYIL NSYKDEKNSKESKGCIYLDACIDVVQCPKMRRHAF ELKMLDKYSHYLAAETEQEMEEWLIMLKKIIQINTDSLVQEKKDTVEAIQEEETSSQGKA ENIMASLERSMHPELMKYGRETEQLNKLSRGDGRQNLFSFDSEVQRLDFSGIEPDVKPFE EKCNKRFMVNCHDLTFNILGHIGDNAKGPPTNVEPFFINLALFDVKNNCKISADFHVDL N PPSVREMLWGTSTQLSNDGNAKGFSPESLIHGIAESQLCYIKQGIFSVTNPHPEIFLVVR

> P3

GDDSEWLKLPVDQKCEHKLWKARLSGYEEALKIFQKIKDEKSPEWSKYLGLIKKFVTDS NAVVQLKGLEAALVYVENAHVAGKTTGEVVSGVVSKVFNQPKAKAKELGIEICLMYVEIE KGESVQEELLKGLDNKNPKIIVACIETLRKALSEFGSKIISLKPIIKVLPKLFESRDKAV RDEAKLFAIEIYRWNRD AVKHTLQNINSVQLKELEEEWVKLPTGAPKPSRFLRSQQELEA KLEQQQSAGGDAEGGGDDGDEVPQVDAYELLDAVEILSKLPKDFYDKIEAKKWQERKEAL EAVEVLVKNPKLEAGDYADLVKALKKVVGKDTNVMLVALAAKCLTGLAVGLRKKFGQYAG HVVPTILEKFKEKKPQVVQALQEAIDAIFLTTTLQNISEDVLAVMD NKNPTIKQQTSLFI ARSFRHCTSSTLPKSLLKPFCAALLKHINDSAPEVRDAAFEALGTALKVVGEKSVNPFLA

。 。 。 。 。 .

总共 100 个序列在这些序列中,我使用 python 脚本搜索了感兴趣的模式,如下所示

import re

infile=open("seq.fasta",'r')

out=open("results.csv",'w')
pattern=re.compile(r"(P[A-Z]{2}P)")
for line in infile:
    line = line.strip("\n")
    if line.startswith('>'):
        name=line
    else:
        s = re.findall(pattern,line)
    print '%s:%s' %(name,s)
    out.write('%s:\t%s\n' %(name,s))

这个脚本完美地工作了,它给了我想要的模式...现在我想计算脚本输出中每个序列中感兴趣的模式如下

>

p1:PGCP

>

p1:PHCP、PKCP。 。 。等等

但我想输出如下>

p1:1

>

p1:2。 。 。 .

谁能告诉我如何使用 python 来做到这一点

最佳答案

findall 方法返回匹配字符串的列表。因此,您可以在代码中使用 len(s) 而不是 s

out.write('%s:\t%s\n' %(name,len(s)))

关于python - 计算序列中的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8139721/

相关文章:

python - 从 2.3.1 升级到 Spark2.4.2 但 mongodb 连接器停止工作

python - 更改数据帧索引中的数字格式

python - 用utf-8编码将ElementTree直接写入zip

python - 如何从 findHomography 获取旋转角度?

python - Hadoop:在 Ubuntu 12.04 中通过 NameNode 格式化 HDFS 文件系统

python - 当变量变为 True/False 或达到一定次数时,如何跳出 While 循环?

python - 如何将数组项本身转换为数组Python

Python 数据框分组

python - 使用 python 的正则表达式不起作用

python - 使用 Python 进行基本数据存储