python - 编辑 FASTA:如何使用正则表达式和列表更改 FASTA 的标题,并替换文件
问题描述
我有一个看起来像这样的 FASTA:
'>NZ_UARI01000011.1 阪崎克罗诺杆菌菌株NCTC11467,全基因组鸟枪法序列GCGCATTTCTTATTACGGAGAAATACAGCAGCGTGTCTGTTTCAATTTTCAGCTTGTTCCGGATTGTTAAAGAGCAAATA CTT...
'>NZ_UARI01000001.1 阪崎克罗诺杆菌菌株NCTC11467,全基因组鸟枪法序列CAATTTTACTTGTTGATATAACAATCACGCTAACTATTCAGCCAATAGCTCCCGCATTAAAACCAGCTACTTCAGCCAAA ...
我想将标题更改为:
'>阪崎克罗诺杆菌菌株 NCTC11467_1 GCGCATTTCTTATTACGGAGAAATACAGCAGCGTGTCTGTTTCAATTTTCAGCTTGTTCCGGATTGTTAAAGAGCAAATA CTT... '>阪崎克罗诺杆菌菌株 NCTC11467_2 CAATTTTACTTGTTGATATAACAATCACGCTAACTATTCAGCCAAATAGCTCCCGCATTAAAACCAGCICTACTTCAGCCAAA 开头...
然后我想用标题的名称保存这个文件。理想情况下,我不想制作新的fasta,而只是用更正替换文件:Cronobacter_sakazakii_strain NCTC11467.fasta
现在这很容易单独完成,但我有超过 600 个文件。所以做每个人的想法不是我想走的路线。我在这里编写了一个脚本,在其中我使用正则表达式隔离了我想要的标题部分并将其存储在一个名为 new_new 的列表中。然后我想匹配这些值并替换为以“>”开头的每一行,然后添加 _1/2/3/... 或随后的 #(如上所示)。你能帮我完成这个任务吗?如果我提供的脚本不值得继续,并且您有更好的解决方案,请告诉我。
#usr/bin/python
import sys
import os
import re
import csv
#sys.argv[1] =fasta
#sys.argv[2] = list of header names (mass)
#Gather existing headers to list (new_new)
with open(sys.argv[1], "r+") as text_file:
lines = text_file.readlines()[1:]
mylist = []
new_new = []
for i in lines:
if '.' in i:
mylist.append(i)
pattern = r">*Cronobacter +\w* +\w* +.*[,]"
regex = re.compile(pattern, re.IGNORECASE)
for j in mylist:
for match in regex.finditer(j):
value = match.group(0)
new_new.append(value)
for k in lines:
if '>' in k:
k= k.replace('.*',new_new[value])
text_file.close()
'''
解决方案
推荐阅读
- pytorch - 尝试将双线性层转换为 onnx 时,上采样 ONNX 给出 INVALID_GRAPH
- windows - 如何修复 Electron App 无法在某些 Windows 服务器机器上呈现?
- visual-studio - Visual Studio 2019 测试资源管理器不适用于 xUnit
- php - 添加十六进制值时,将一组位乘以 256 有什么用?
- c# - 在哪里设置命令?
- c - 在不关闭 MATLAB 的情况下停止 mex 函数 (C)
- python - 如何使用while循环修改Python中的列值
- angular - 当子组件在路由器出口Angular中时,从子组件调用父组件函数
- powershell - 如何从特定网站下载所有文件
- c# - 如何在 C# 中等待多个异步任务?