python - 根据头信息拆分fasta文件
问题描述
我是脚本新手。你能帮我找到根据标题中的信息分离序列的方法吗,例如我有这样的fasta文件
ERR1897927.533;条码标签=R40_1193R_F61_799F;GTAGTCCTAGCCCTAAACGATGGATACTTGGTGTGACTGGGATTGAATCCAGTCGTGCCG AAGCTAACGCATTAAGTATCCCGCCTGGGGAGTACGGTCGCAAGGCTGAAACTCAAAGGA ATTGACGGGGGCCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGAAGCAACGCGCAGAA CCTTACCAGCGTTTGACATGGTAGGACGGTTTCCAGAGATGGATTCCTCCCCTTACGGGG CCTACACACAGGTGCTGCATGGCTGTCGTCAGCTCGTGTCGTGAGATGTTGGGTTAAGTC CCGCAACGAGCGCAACCCTCGTCTTTAGTTGCCACCATTTAGTTGGGCACTCTAAAGAAA ERR1897927.925;barcodelabel=R41_1193R_F62_799F;
现在我想根据“barcodelabel”将序列分开以分开fasta文件(仅基于标题,而不是序列本身,因为我已经删除了条形码)
请告诉我方法,
提前谢谢,
最好的!瓦西姆
解决方案
@Wasim 欢迎来到 stackoverflow,对于生物信息学相关的问题,最好使用bioinformatics page。我已经编写了一个 python 脚本来解决您在下面给出的示例文件中的问题:
ERR1897927.533;barcodelabel=R40_1193R_F61_799F;
GTAGTCCTAGCCCTAAACGATGGATACTTGGTGTGACTGGGATTGAATCCAGTCGTGCCGAAGCTAACGCATTAAGTATCCCGCCTGGGGAGTACGGTCGCAAGGCTGAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGAAGCAACGCGCAGAA CCTTACCAGCGTTTGACATGGTAGGACGGTTTCCAGAGATGGATTCCTCCCCTTACGGGGCCTACACACAGGTGCTGCATGGCTGTCGTCAGCTCGTGTCGTGAGATGTTGGGTTAAGTC CCGCAACGAGCGCAACCCTCGTCTTTAGTTGCCACCATTTAGTTGGGCACTCTAAAGAAA
ERR1897927.925;barcodelabel=R41_1193R_F62_799F;
GTAGTCCTAGCCCTAAACGATGGATACTTGGTGTGACTGGGATTGAATCCAGTCGTGCCGAAGCTAACGCATTAAGTATCCCGCCT GGGGAGTACGGTCGCAAGGCTGAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGAAGCAAC GCGCAGAA CCTTACCAGCGTTTGACATGGTAGGACGGTTTCCAGAGATGGATTCCTCCCCTTACGGGGCCTACACACAGGTGCTGCATGGCTGT CGTCAGCTCGTGTCGTGAGATGTTGGGTTAAGTC CCGCAACGAGCGCAACCCTCGTCTTTAGTTGCCACCATTTAGTTGGGCACTCTAAAGAAA
ERR1897927.925;barcodelabel=R42_1193R_F62_799F;
GTAGTCCTAGCCCTAAACGATGGATACTTGGTGTGACTGGGATTGAATCCAGTCGTGCCG AAGCTAACGCATTAAGTATCCCGCCTGGGGAGTACGGTCGCAAGGCTGAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGAAGCAACGCGCAGAA CCTTACCAGCGTTTGACATGGTAGGACGGTTTCCAGAGATGGATTCCTCCCCTTACGGGGCCTACACACAGGTGCTGCATGGCTGTCGTCAGCTCGTGTCGTGAGATGTTGGGTTAAGTC CCGCAACGAGCGCAACCCTCGTCTTTAGTTGCCACCATTTAGTTGGGCACTCTAAAGAAA
ERR1897927.925;barcodelabel=R43_1193R_F62_799F;
GTAGTCCTAGCCCTAAACGATGGATACTTGGTGTGACTGGGATTGAATCCAGTCGTGCCG AAGCTAACGCATTAAGTATCCCGCCTGGGGAGTACGGTCGCAAGGCTGAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGAAGCAACGCGCAGAA CCTTACCAGCGTTTGACATGGTAGGACGGTTTCCAGAGATGGATTCCTCCCCTTACGGGGCCTACACACAGGTGCTGCATGGCTGTCGTCAGCTCGTGTCGTGAGATGTTGGGTTAAGTC CCGCAACGAGCGCAACCCTCGTCTTTAGTTGCCACCATTTAGTTGGGCACTCTAAAGAAA
ERR1897927.925;barcodelabel=R44_1193R_F62_799F;
GTAGTCCTAGCCCTAAACGATGGATACTTGGTGTGACTGGGATTGAATCCAGTCGTGCCG AAGCTAACGCATTAAGTATCCCGCCTGGGGAGTACGGTCGCAAGGCTGAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCGGTGGAGCATGTGGTTTAATTCGAAGCAACGCGCAGAA CCTTACCAGCGTTTGACATGGTAGGACGGTTTCCAGAGATGGATTCCTCCCCTTACGGGGCCTACACACAGGTGCTGCATGGCTGTCGTCAGCTCGTGTCGTGAGATGTTGGGTTAAGTC CCGCAACGAGCGCAACCCTCGTCTTTAGTTGCCACCATTTAGTTGGGCACTCTAAAGAAA
脚本是
#!/usr/bin/python3
import re
fasta_file = open("fasta_file",'r')
chk = fasta_file.read()
k2=re.split(r'ERR\d+\.\d+;barcodelabel=R{0,9}.*;', chk, flags=re.MULTILINE)
line = [i.replace('\n','') for i in k2]
del line[0]
for i,name in enumerate(line):
f = open("file"+str(i+1)+".txt","w")
f.write(name+"\n")
f.close()
这将根据以条码标签分隔的fasta文件的数量生成文件。
推荐阅读
- python - 如何解决错误?“节点”对象在 Google Colab 中没有属性“输出掩码”
- scala - 无法在 Twirl 中呈现 for 循环
- c++ - 排序数组超出大小
- docker - docker-compose build nginx:网络错误(检查互联网连接和防火墙)
- javascript - 有没有办法(在 vanilla javascript 中)防止在一个匹配多个键的数组中重复 rng 生成的对象?
- c - (C) 在数组中找到一个元素并只打印一次它的位置
- spring-boot - 当我们有身份验证系统时,如何为某些链接添加基本身份验证
- javascript - React Can't perform a React state update on an unmounted component 错误
- webview - PWA 推送通知权限弹出窗口未出现在 UWP webview 上
- python - 如何使用增量日期时间模拟熊猫数据帧数据