Python中文
首页
教程
问答
标签
搜索
登录
注册
如何对fasta文件的头进行分组
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我的fasta文件的标题如下所示:</p> <pre><code>>ref|NC_001133| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=I] >ref|NC_001134| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=II] >ref|NC_001135| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=III] >ref|NC_001136| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=IV] >ref|NC_001137| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=V] >ref|NC_001138| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=VI] >ref|NC_001139| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=VII] >ref|NC_001140| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=VIII] >ref|NC_001141| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=IX] >ref|NC_001142| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=X] >ref|NC_001143| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=XI] >ref|NC_001144| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=XII] >ref|NC_001145| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=XIII] >ref|NC_001146| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=XIV] >ref|NC_001147| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=XV] >ref|NC_001148| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=XVI] >ref|NC_001224| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [location=mitochondrion] [top=circular] </code></pre> <p>我需要为相应的位置替换每个对应的<code>>ref|NC_001133|</code>,例如,“[chromose=I]”,因为我想为即将到来的运行获得一个合适的格式,但首先我想使用正则表达式对头的每个部分进行分组;然而,在最后一行,线粒体的部分使我很难对每一个项目进行正确的分组。我真的希望你能通过使用正则表达式来帮助分组</p> <p>这是我试图执行的代码的一部分:</p> <pre><code>#!/usr/bin/env python import re import subprocess from sys import argv def get_fasta_rec(input_fasta): """Find all FASTA entries in a FASTA file, change the headers and return them in a dictionary. input_fasta -- FASTA file name record_dict -- dict, {header:seq} """ entries = input_fasta.split(">")[1:] dict_entry = {} for entry in entries: header, x, seq = entry.partition("\n") m = re.search("(.+) (.+\s.+) (.+) (.+) (.+|('[location=mitochondrion] [top=circular]'))", header) if m: ref = m.group(1) org = m.group(2) strain = m.group(3) moltype = m.group(4) location = m.group(5) if __name__ == '__main__': input_fasta = open(argv[1]).read() get_fasta_rec(input_fasta) </code></pre> <p>我希望为每个标题获得的输出是:</p> <pre><code>> [chromosome=I] [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [ref|NC_001133|] > [location=mitochondrion] [top=circular] [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [ref|NC_001224|] </code></pre> <p>提前感谢您的帮助</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>请参见<a href="https://regex101.com/r/yMWZyA/1" rel="nofollow noreferrer">Regex101</a>以了解</p> <p><code>(?:(>ref\|.+\|)\s)?((?:\[[\S\d]+=[^\]]+\])+)\s?</code></p> <p>您需要使用<code>re.findall(...)</code>,并且在每个匹配中,您的属性组将位于组2中</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
plt.savefig不会覆盖现有文件
8 回答
plt.savefig不保存图像
5 回答
plt.savefig在jupyter笔记本中不起作用
10 回答
plt.savefig在从另一个fi调用时停止工作
6 回答
plt.savefig在调用plt.show之前保存空数字
1 回答
plt.save不创建png文件
1 回答
plt.scatter overlay分类数据帧列
10 回答
Plt.Scatter:如何添加title、xlabel和ylab
3 回答
plt.scatter()绘图与Matplotlib中的plt.plot()绘图类似
6 回答
plt.scatter错误'NoneType'对象在成功运行后没有属性'sqrt'
6 回答
plt.set_title()中的标题字符串有误
9 回答
plt.show()
2 回答
plt.show()不在Jupyter笔记本上渲染任何内容
2 回答
plt.show()不打印plt.plot only plt.scatter
3 回答
plt.show()不显示三维散射图像
10 回答
plt.show()不显示任何内容
3 回答
plt.show()不显示数据,而是保留它供下一个图表使用(spyder)
2 回答
plt.show()使终端挂起
10 回答
plt.show()无法使用此代码
4 回答
plt.show()没有打开新的图形风
8 回答