python - 如何计算由另一种行分隔的一组行中的字符?

标签 python list character bioinformatics fasta

我目前正在处理一个文本文件,其中包含 DNA 提取序列(重叠群)列表,每个序列都有一个标题,后面跟着几行核苷酸,这是该重叠群的核苷酸长度。有 120 个重叠群,每个条目都标有以“>”开头的行,表示序列信息。在该行之后,给出了该序列的核苷酸长度。

示例:

>gi|571136972|ref|XM_006625214.1| Plasmodium chabaudi chabaudi small subunit ribosomal protein 5 (Rps5) (rps5) mRNA, complete cds
ATGAGAAATATTTTATTAAAGAAAAAATTATATAATAGTAAAAATATTTATATTTTATATTATATTTTAATAATATTTAAAAGTATTTTTATTATTTTATTTAATAGTAAATATAATGTGAATTATTATTTATATAATAAAATTTATAATTTATTTATTATATATATAAAATTATATTATATTATAAATAATATATATTATAATAATAATTATTATTATATATATAATATGAATTATATA
TATTTTTATATTTATAAATATAATAGTTTAAATAATA
>gi|571136996|ref|XM_006625226.1| Plasmodium chabaudi chabaudi small subunit ribosomal protein 2 (Rps2) (rps2) mRNA, complete cds
ATGTTTATTACATTTAAAGATTTATTAAAATCTAAAATATATATAGGAAATAATTATAAAAATATTTATATTAATAATTATAAATTTATATATAAAATAAAATATAATTATTGTATTTTAAATTTTACATTAATTATATTATATTTATATAAATTATATTTATATATTTATAATATATCTATATTTAATAATAAAATTTTATTTATTATTAATAATAATTTAATTACAAATTTAATTATT
AATATATGTAATTTAACTAATAATTTTTATATTATTA

我想做的是列出每个重叠群。我的问题是,我不知道告诉 Python 所需的语法:

  1. 找到以“>”开头的行之后的行
  2. 计算该序列行中的所有字符
  3. 将一个值返回到所有重叠群值的列表(该列表给出每个重叠群的长度列表,即 126、300、25...)
  4. 确保计算最后一个重叠群(没有“>”来表示其结尾)。

我想要一个整数列表,以便我可以计算重叠群的平均长度、标准差、酷基因方程等。

我对编程还比较陌生。如果我不清楚或需要更多信息,请告诉我。

最佳答案

不要重新发明轮子,按照马丁的建议使用biopython。这是一个将序列 ID 和长度打印到终端的开始。您可以使用pip安装biopython,即pip install biopython

from Bio import SeqIO
import sys

FileIn = sys.argv[1]

handle = open(FileIn, 'rU')
SeqRecords = SeqIO.parse(handle, 'fasta')
for record in SeqRecords:   #loop through each fasta entry
   length = len(record.seq)    #get sequence length
   print "%s: %i bp" % (record.id, length)     #print sequence ID: seq length

或者您可以将结果存储在字典中:

handle = open(FileIn, 'rU')
sequence_lengths = {}
SeqRecords = SeqIO.parse(handle, 'fasta')
for record in SeqRecords:   #loop through each fasta entry
    length = len(record.seq)    #get sequence length
    sequence_lengths[record.id] = length

#access dictionary outside of loop
print sequence_lengths

关于python - 如何计算由另一种行分隔的一组行中的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33487685/

相关文章:

swift - 用户不应该能够删除文本字段中给定的符号(文本)

php - 一个奇怪的字符编码案例,PHP 到 MySQL 并返回

python - 通过 ssh 使用 tkinter 没有显示名称和没有 $DISPLAY 环境变量

python - Azure 上的 python 函数应用程序中的全局变量

c++ - 使用 STL 排序功能对列表进行排序

python - 显示基于元组的排序列表并在字典中循环

python - 无法使用 PySerial 接收回复,但 super 终端有效

python - Moviepy - 避免使用 ImageSequenceClip 写入磁盘?

java - 使用第一个列表中的一些键以及整个第一个列表将 List<Map> 转换为其他 List<Map>

r - 将字符串匹配转换为二进制元素向量