免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5407 | 回复: 3

脚本优化求助 [复制链接]

论坛徽章:
0
发表于 2019-02-28 17:51 |显示全部楼层
读取一组数据,大约800W行,写了个脚本 运行速度太慢了,请各为高手指点一下,怎么优化

  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. import os
  4. import sys
  5. import re
  6. import argparse
  7. import gzip
  8. from Bio import SeqIO
  9. from Bio.SeqRecord import SeqRecord

  10. def dict_fa(fa):
  11.     Fa_dict = {}
  12.     for seqrecord in SeqIO.parse(fa,'fastq'):
  13.             Fa_dict[seqrecord.id] = str(seqrecord.seq)
  14.     return Fa_dict

  15. def read_gz(f):
  16.     with gzip.open(f) as R1:
  17.         for line in R1:
  18.             yield line

  19. def main():
  20.     parser=argparse.ArgumentParser(description=__doc__,formatter_class=argparse.RawDescriptionHelpFormatter)
  21.     parser.add_argument('-s','--seq',help='fasta file',dest='seq',required=True,type=str)
  22.     args=parser.parse_args()

  23.     fa_dict = dict_fa(args.seq)
  24.     uniq_seq = set(fa_dict.values())
  25.     for seq in uniq_seq:
  26.         seq_count = list(fa_dict.values()).count(seq)
  27.         for id in fa_dict.keys():
  28.             if fa_dict[id] == seq:
  29.                 print(id,seq_count)

  30. if __name__=="__main__":
  31.     main()
复制代码


论坛徽章:
0
发表于 2019-03-01 08:30 |显示全部楼层
这个论坛Python党是没落了吗?

论坛徽章:
0
发表于 2019-03-11 16:42 |显示全部楼层
你都没有测试一下是哪个环节慢么?
最起码打一下时间戳debug日志看看吧

论坛徽章:
0
发表于 2019-04-30 09:46 |显示全部楼层
    fa_dict = dict_fa(args.seq)
    uniq_seq = set(fa_dict.values())

这是把整组数据800w行读到内存中,生成dict?

不知道你的源文件啥样的,不过可以试试pandas,这个处理大文件超快
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP