2025年利用codon神器10倍提升我的python代码效率

利用codon神器10倍提升我的python代码效率下面是我的过滤单细胞 reads 数据的 python 脚本 coding utf 8 import sys os import gzip import random fq1 file sys argv 1 fq2 file sys argv 2 fq1 newfile sys argv

大家好,我是讯享网,很高兴认识大家。
下面是我的过滤单细胞reads数据的python脚本
# coding = utf-8 import sys, os import gzip import random fq1_file = sys.argv[1] fq2_file = sys.argv[2] fq1_newfile = sys.argv[3] fq2_newfile = sys.argv[4] data_num = int(sys.argv[5]) # 按 G 算 f1 = gzip.open(fq1_file, "r") f2 = gzip.open(fq2_file, "r") f1new = gzip.open(fq1_newfile, "wb") f2new = gzip.open(fq2_newfile, "wb") n=0 rd = data_num *  + 4 * random.choice(range(10,1000)) # 保留多少倍1G数据 while True: try: hed_1 = next(f1) except StopIteration: break hed_2 = next(f2) seq_1 = next(f1) seq_2 = next(f2) plus_1 = next(f1) plus_2 = next(f2) baseQ_1 = next(f1) baseQ_2 = next(f2) # print(seq_1) # print(seq_1[0:3]) seq_T = seq_1[30:60] # 注意此处codon编译后会自动转化为str,故不需要 decode() if seq_T.count("T") > 20: f1new.write(hed_1) f1new.write(seq_1) f1new.write(plus_1) f1new.write(baseQ_1) f2new.write(hed_2) f2new.write(seq_2) f2new.write(plus_2) f2new.write(baseQ_2) n += 4 if n > rd: break f1.close() f2.close() f1new.close() f2new.close() 

讯享网

首先我们来看原生python脚本运行时间:
在这里插入图片描述
讯享网

接下来试试codon神器转换后的程序效率

codon下载:

讯享网# github地址:https://github.com/exaloop/codon /bin/bash -c "$(curl -fsSL https://exaloop.io/install.sh)" 

第一步:利用codon编译器将我的python脚本编译为可执行文件

/home/huguang/software/codon-deploy/bin/codon build -release -exe filt_sc_fq.codon.py # 该命令会生成一个filt_sc_fq.codon的二进制可执行文件 

我用的centos7.9,如果报gcc编译器版本低,某些参数不支持,可通过执行

讯享网# 安装gcc基础依赖包,使用如下命令 $ yum -y install gcc-c++ # 再次,为了编译最新版本的Redis源码还需要使用devtoolset升级gcc版本: $ yum -y install centos-release-scl $ yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils $ scl enable devtoolset-9 bash #或者 source /opt/rh/devtoolset-9/enable $ echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile # 安装devtoolset后,需要输入scl enable devtoolset-9 bash来启动devtoolset后针对本次会话有效,若重新登录Linux,需要再次使用scl命令激活devtoolset。 # 若要使devtoolset长期有效,需要输入 echo"source/opt/rh/devtoolset-9/enable">>/etc/profile # 该操作需要root权限,普通用户需root操作完后切换普通用户使用即可。 

通过以上操作即可切换GCC至9.3.1版本。

第二步:直接执行该命令

time filt_sc_fq.codon E_L01_C57_BM_G_M_DNA_0109_01_R1.fq.gz E_L01_C57_BM_G_M_DNA_0109_01_R2.fq.gz tmp_R1.fq.gz tmp_R2.fq.gz 

在这里插入图片描述
可以看到运行时间为13.530s,相较原生python脚本运行时间2m37.856s,效率提高了10倍以上。

小讯
上一篇 2025-01-08 16:57
下一篇 2025-01-05 20:32

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/39478.html