Python 在生成器中将ASCII字符转换为十进制

Python 在生成器中将ASCII字符转换为十进制,python,string,ascii,generator,bioinformatics,Python,String,Ascii,Generator,Bioinformatics,目标:解析由四行字符串组成的fastQ文件: 1) 同一行上的ID行(seqID)和可能的注释(comm) 2) DNA或蛋白质序列(seq) 3) 额外的一行 4) 一种质量(qual)序列,其中每个字符对应于蛋白质或DNA序列(第2行) 问题:如何使用ord()?转换所有qual字符串中的字符 我所尝试的: fastQ中的qual行是一行字符串,我想循环遍历所有字符串,并使用ord()将它们转换为十进制格式。然而,当我运行一个生成seqIDseqqual和comm的生成器时,似乎我不能在其中

目标:解析由四行字符串组成的fastQ文件:

1) 同一行上的ID行(seqID)和可能的注释(comm)
2) DNA或蛋白质序列(seq)
3) 额外的一行
4) 一种质量(qual)序列,其中每个字符对应于蛋白质或DNA序列(第2行)

问题:如何使用
ord()
?转换所有qual字符串中的字符

我所尝试的: fastQ中的qual行是一行字符串,我想循环遍历所有字符串,并使用
ord()
将它们转换为十进制格式。然而,当我运行一个生成
seqID
seq
qual
comm
的生成器时,似乎我不能在其中定义这些新解析的变量,因为我在尝试解析我的fastQ文件时遇到以下错误:

Traceback (most recent call last):
  File "fast_splitter_v1.py", line 91, in <module>
    for q in split:
  File "fast_splitter_v1.py", line 28, in read_fastq
    seqID, seq, qual = line1[0][1:], block[1], ord(block[3])
TypeError: ord() expected a character, but string of length 1550 found
问题摘要:

有了上面的代码,我如何使用
ord()
将所有东西从ASCII转换为十进制格式,并保留生成器功能

示例FastQ:

`@SEQ_ID
GATTTGGGGTTCAAAGCAGTATCGATCAAATAGTAAATCCATTTGTTCAACTCACAGTTT
 +
 !''*((((***+))%%%++)(%%%%).1***-+*''))**55CCF>>>>>>CCCCCCC65`

我可能仍然不理解这个问题,但有什么东西可以阻止你做最后一行,如下所示:

yield seqID, seq, map(ord, qual), comm


从文件中发布一些记录来说明inputs@MariaZverina我将在我的帖子中发布一个样本fastQ。这两个建议都有效,但它在我的元组中构建了一个质量分数列表。如果我想以后“修剪”我的序列和质量分数,使其达到最低质量分数,那么我还需要将序列转换为字符串列表,以便将它们相互映射吗?例如:
(@SEQID,['G','A','T',[33,39,39…])
yield seqID, seq, map(ord, qual), comm
yield seqID, seq, [ord(c) for c in qual], comm