Contact me:

序列拆分及批量归类至文件夹(v1)

拿到一堆线粒体rna的coI序列,由于全部序列都放在一个txt文件里面,因为后期需要把每一个序列单独拿出来fas文件,然后根据一个表格分类到种。要手动复制粘贴不知道要花多久,所以就用python自动化一下。

v1
整个过程分三步

1.拆分为以缩写命名的单个文件

#split into single seq
import os
import pandas as pd
from tst import bad_val
file_path=os.path.abspath(r"E:\新建文件夹\新建文件夹")
df_E2a = pd.read_excel("E2a.xlsx")
df_ce2e = pd.read_excel("E:\pythonProject1\CE2E.xlsx")
df_E2a.index = df_E2a['ab.']
a = ">"
f=open(r'E:\新建文件夹\新建文件夹\COI(1).fas')
for line in f:
if line.startswith(">"):
new=line.lstrip('>').strip('\n')
if new in bad_val:
full = 'Not found!'+ new
else:
full = df_E2a.name[df_E2a['ab.'].loc[new]]
outfile = open("E:\新建文件夹\新建文件夹\db\\"+"%s"%new + '.' + 'fas',"w")
outfile.write(line+next(f))
outfile.close()
print("Finished")

2.将同一物种的序列归类,放入以物种命名的文件夹

classify

import os # os是用来切换路径和创建文件夹的。
import pandas as pd
from tst import bad_val
from shutil import copy # shutil 是用来复制黏贴文件的
df_E2a = pd.read_excel("E2a.xlsx")
df_E2a.index = df_E2a['ab.']
file_path = r'E:\新建文件夹\新建文件夹\db' # 想拆分的文件夹所在路径,也就是一大堆文件所在的路径
save_dir = r'E:\新建文件夹\新建文件夹\class' # save_dir 是想把复制出来的文件存放在的路径

获取 file_path 下的文件和文件夹列表

因为 file_path 里面没有文件夹,所以不处理有文件夹的情况

pathDir = os.listdir(file_path) # os.listdir(file_path) 是获取指定路径下包含的文件或文件夹列表
for filename in pathDir: # 遍历pathDir下的所有文件filename
file_name = filename.split('.')[0]

if file_name in bad_val:
full = '!Not found!'
else:
full = df_E2a.name[df_E2a['ab.'].loc[file_name]]
dir_name = full.strip() # 新的文件夹的命名
from_path = os.path.join(file_path, filename) # 旧文件的绝对路径(包含文件的后缀名)
to_path = save_dir + "\\" + dir_name # 新文件的绝对路径
if not os.path.isdir(to_path): # 如果 to_path 目录不存在,则创建
os.makedirs(to_path)
copy(from_path, to_path) # 完成复制黏贴

3.发现txt文件中的缩写与物种名表格的缩写部分不相同,暂时处理:找出无法匹配的缩写单独放入一个文件夹,人工处理

#find the unmatched value
import pandas as pd
import difflib
bad_val = []
df_E2a = pd.read_excel("E2a.xlsx")
f=open(r'E:\新建文件夹\新建文件夹\COI(1).fas')
for line in f:
if line.startswith(">"):
new=line.lstrip('>').strip('\n')
a=difflib.get_close_matches(new,df_E2a['ab.'],1, cutoff=1)
if len(a)==0:
bad_val.append(new)
posted @   impwa  阅读(249)  评论(0编辑  收藏  举报
编辑推荐:
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
· 程序员常用高效实用工具推荐,办公效率提升利器!
点击右上角即可分享
微信分享提示