栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

批量解压NCBI下载的Protein压缩包,重命名Protein.faa,最后将所有Protein.faa整合到一个fasta中

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

批量解压NCBI下载的Protein压缩包,重命名Protein.faa,最后将所有Protein.faa整合到一个fasta中

准备:

        压缩包分别存储在D:PyCharmpy_codetest195和D:PyCharmpy_codetestCBDB1中,并于该路径新建BatchUnzip.py

        以下代码保存于BatchUnzip.py,运行即可得到Organism(ProteinID).faa和AllProtein.faa

备注:从NCBI下载的压缩包中,序列存储在*.zipncbi_datasetdata路径中

import zipfile
import os

#解压单个文件
def un_zip_Tree(path):
    listLocal = []
    for file in os.listdir(path):  # 遍历path中的文件,逐个遍历
        if os.path.isdir(file):  # 判断是否是文件夹
            Local = os.path.join(path, file)#创建压缩包所在路径
            listLocal.append(Local)  # 路径写入Local(list)
    for local in listLocal:  # 读取list中的路径
        os.chdir(local)  # 修改当前工作路径
        organism = os.path.basename(local)#获取路径中最后一个名称,作为organism
        for zip in os.listdir(local):  # 读取文件
            if os.path.splitext(zip)[1] == '.zip':  # 判断是否是zip压缩文件
                newname = (organism + '(' + os.path.splitext(zip)[0] + ')')  # 创建新的文件名,
                # os.path.splitext(zip)[0]为压缩包名称
                ziplocal = os.path.join(local, zip)#创建压缩包所在路径
                with zipfile.ZipFile(ziplocal, 'r') as zfile:#打开压缩包
                    for fileZIP in zfile.namelist():# 遍历压缩文件中的文件
                        zfile.extract(fileZIP)  # 解压文件到当前工作路径,前面以修改工作路径为195和CBDB1
                    #重命名protein.faa和gene.fna文件
                    data = os.path.join(local, 'ncbi_dataset', 'data')  # 获取解压出来的data路径
                    for Unzipfile in os.listdir(data):
                        if os.path.splitext(Unzipfile)[1] == '.faa':
                            oldpath = os.path.join(data,Unzipfile)#整合protein.faa的路径
                            newpath = os.path.join(path,newname + '.faa')
                            os.rename(oldpath,newpath)
                            Protein = open(newpath,'r')#打开提出出来的protein.faa序列
                            AllProtein = open(os.path.join(path,'AllProtein.faa'),'a+')#以读写模式创建文件
                            for line in Protein:
                                if '>' in line:
                                    line1 = ('>' + newname + 'n')
                                    AllProtein.write(line1)
                                else:
                                    AllProtein.write(line)


p = os.getcwd()
un_zip_Tree(p)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/339123.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号