python - 编译文件中由特定元素分隔的行。 Python

标签 python function indexing line fasta

文件:

>1
ATTTTttttGGGG
ccCgCgGAgggGGT
gggggttttTTTTTTTTT
>2
ATcggGGGGGGA
>3
ATCGGGGGGATTT
gggggttAGTAttt

我正在构建一个读取具有这种格式的文件的函数。 该格式嵌入了多个文件,这些文件由“>”+名称分隔(例如“>1”、“>2”)

我正在尝试获取“>”行两侧的文本行,并将它们编译为每个部分的一个字符串

所以这看起来像

name_list = ['>1','>2','>3']
sequence_list = ['ATTTTttttGGGGccCgCgGAgggGGTgggggttttTTTTTTTTT','ATcggGGGGGGA','ATCGGGGGGATTTgggggttAGTAttt']

import os
import re

# Open File

in_file=open(FASTA,'r')
dir,file=os.path.split(FASTA)
temp = os.path.join(dir,output)
out_file=open(temp,'w')

# Generating lines

lines = []
name_list = []
seq_list = []

for line in in_file:
    line = line.strip()
    lines.append(line)

in_file.close()

indx = range(0,len(lines))

# Organizing the elements
for line in lines:
    for i in line:
        if i == '>':
            name_list.append(line)
        else:
            break

我不知道如何处理 else: 语句 我尝试使用 range(0,len(lines)) 创建索引 所以也许我可以在找到“>”的地方做一些事情,并编译以下索引的所有行,直到找到下一个“>”并将它们添加到名为 seq_list 的列表中

任何帮助将不胜感激

最佳答案

您应该看看Biopython它有一个 FASTA 解析器,但这里有一个使用标准库的示例:

import re
with open('filename') as f:
    print [i.replace('\n','') for i in re.split(r'\>\d+',f.read()) if i]

输出:

['ATTTTttttGGGGccCgCgGAgggGGTgggggttttTTTTTTTTT',
 'ATcggGGGGGGA',
 'ATCGGGGGGATTTgggggttAGTAttt']
<小时/>

使用Biopython [sudo pip install biopython]:

from Bio import SeqIO
with open("example.fasta", "rU") as handle:
    print list(SeqIO.parse(handle, "fasta"))

输出:

[SeqRecord(seq=Seq('ATTTTttttGGGGccCgCgGAgggGGTgggggttttTTTTTTTTT', SingleLetterAlphabet()), id='1', name='1', description='1', dbxrefs=[]), 
 SeqRecord(seq=Seq('ATcggGGGGGGA', SingleLetterAlphabet()), id='2', name='2', description='2', dbxrefs=[]),
 SeqRecord(seq=Seq('ATCGGGGGGATTTgggggttAGTAttt', SingleLetterAlphabet()), id='3', name='3', description='3', dbxrefs=[])]

关于python - 编译文件中由特定元素分隔的行。 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14841428/

相关文章:

python - 具有列表值的列,在执行 str.len() 时消除空格

javascript - 函数给出错误 "div id"未定义。

MySQL全文查询返回错误,索引已创建

mysql - SELECT 语句不使用 possible_keys

sql - 立即索引定义

javascript - 如何正确使用 mechanize 来抓取 AJAX 网站

Python逆幂集生成器

python - Django 第一个应用程序来自 .导入 View 问题

javascript - 创建自定义 JavaScript 函数

javascript - 如何调用在 javascript 变量中定义的函数