我是Python的初学者(我是生物学家),我有一个文件,其中包含特定软件的结果,我想使用python解析结果。 从下面的输出中,我只想得到一个分数,并想将序列分为单个氨基酸。

没有。 得分顺序

1   0.273778    FFHH-YYFLHRRRKKCCNNN-CCCK---HQQ---HHKKHV-FGGGE-EDDEDEEEEEEEE-EE--
2   0.394647    IIVVIVVVVIVVVVVVVVVV-CCCVA-IVVI--LIIIIIIIIYYYA-AVVVVVVVAAAAV-AST-
3   0.456667        FIVVIVVVVIXXXXIGGGGT-CCCCAV -------------IVBBB-AAAAAA--------AAAA-  
4   0.407581    MMLMILLLLMVVAIILLIII-LLLIVLLAVVVVVAAAVAAVAIIII-ILIIIIIILVIMKKMLA-
5   0.331761    AANSRQSNAAQRRQCSNNNR-RALERGGMFFRRKQNNQKQKKHHHY-FYFYYSNNWWFFFFFFR-
6   0.452381    EEEEDEEEEEEEEEEEEEEE-EEEEESSTSTTTAEEEEEEEEEEEE-EEEEEEEEEEEEEEEEE-
7   0.460385    LLLLLLLLMMIIILLLIIII-IIILLVILMMEEFLLLLILIVLLLM-LLLLLLLLLLVILLLVL-
8   0.438680    ILILLVVVVILVVVLQLLMM-QKQLIVVLLVIIMLLLLMLLSIIIS-SMMMILFFLLILIIVVL-
9   0.393291    QQQDEEEQAAEEEDEKGSSD-QQEQDDQDEEAAAHQLESSATVVQR-QQQQQVVYTHSTVTTTE-

从上面的表中,我想得到一个具有相同编号,分数的表,但是序列分别(列)分开,所以它看起来应该像

no.      score         amino acid(1st column)

1      0.273778         F

2      0.395657         I

3      0.456667         F

代表第二列氨基酸的另一个表格

no       score       amino acid (2nd column)

1       0.273778         F

2       0.395657         I

3       0.456667         I  

第三张表代表第三列氨基酸,第四张表代表第四列氨基酸,依此类推

先谢谢您的帮助

===============>>#1 票数:5

假设您已经打开了包含此数据的文件作为f ,那么可以使用以下示例重现您的示例:

for ln in f:    # loop over all lines
    seqno, score, seq = ln.split()
    print("%s    %s    %s" % (seqno, score, seq[0]))

要分割序列,您需要另外遍历seq的字母:

for ln in f:
    seqno, score, seq = ln.split()
    for x in seq:
        print("%s    %s    %s" % (seqno, score, seq[0]))

这将打印序列号并得分很多次。 我不确定这是否是您想要的。

===============>>#2 票数:0 已采纳

从您的示例中我猜得出:

  • 您想要将每个表保存到不同的结果文件。
  • 每个序列长65个字符
  • 一些序列包含必须删除的无意义的空格(示例中的第3行)

这是我的代码示例,它从input.dat读取数据并将结果写入result-column-<number>.dat

import re
import sys

# I will write each table to different results-file.
# dictionary to map columns (numbers) to opened file objects:
resultfiles = {}


def get_result_file(column):
    # helper to easily access results file.
    if column not in resultfiles:
        resultfiles[column] = open('result-column-%d.dat' % column, 'w')
    return resultfiles[column]


# iterate over data:
for line in open('input.dat'):
    try:
        # str.split(separator, maxsplit)
        # with `maxsplit`=2 it is more fail-proof:
        no, score, seq = line.split(None, 2)

        # from your example I guess that white-spaces in sequence are meaningless,
        # however in your example one sequence contains white-space, so I remove it:
        seq = re.sub('\s+', '', seq)

        # data validation will help to spot problems early:
        assert int(no), no          
        assert float(score), score
        assert len(seq) == 65, seq

    except Exception, e:
        # print the error and continue to process data:
        print >> sys.stderr, 'Error %s in line: %s.' % (e, line)
        continue  # jump to next iteration of for loop.

    # int(), float() will rise ValueError if no or score aren't numbers
    # assert <condition> will rise AssertionError if condition is False.

    # iterate over each character in amino sequance:
    for column, char in enumerate(seq, 1):
        f = get_result_file(column)
        f.write('%s    %s    %s\n' % (no, score, char))


# close all opened result files:
for f in resultfiles.values():
    f.close()

此示例中使用的值得注意的功能:

===============>>#3 票数:0

我认为创建表没有用。
只需将数据放入经过调整的结构中,并使用可以在需要时显示所需内容的函数即可:

with open('bio.txt') as f:
    data = [line.rstrip().split(None,2) for line in f if line.strip()]


def display(data,nth,pat='%-6s  %-15s  %s',uz=('th','st','nd','rd')):
    print pat % ('no.','score',
                 'amino acid(%d%s column)' %(nth,uz[0 if nth//4 else nth]))
    print '\n'.join(pat % (a,b,c[nth-1]) for a,b,c in data)    

display(data,1)
print
display(data,3)
print
display(data,7)

结果

no.     score            amino acid(1st column)
1       0.273778         F
2       0.394647         I
3       0.456667         F
4       0.407581         M
5       0.331761         A
6       0.452381         E
7       0.460385         L
8       0.438680         I
9       0.393291         Q

no.     score            amino acid(3rd column)
1       0.273778         H
2       0.394647         V
3       0.456667         V
4       0.407581         L
5       0.331761         N
6       0.452381         E
7       0.460385         L
8       0.438680         I
9       0.393291         Q

no.     score            amino acid(7th column)
1       0.273778         Y
2       0.394647         V
3       0.456667         V
4       0.407581         L
5       0.331761         S
6       0.452381         E
7       0.460385         L
8       0.438680         V
9       0.393291         E

===============>>#4 票数:0

这是一个简单的工作解决方案:

#opening file: "db.txt" full path to file if it is in the same directory as python file 
#you can use any extension for the file ,'r' for reading mode
filehandler=open("db.txt",'r') 
#Saving all the lines once in a list every line is a list member
#Another way: you can read it line by line
LinesList=filehandler.readlines()
#creating an empty multi dimension list to store your results
no=[]
Score=[]
AminoAcids=[] # this is a multi-dimensional list for example index 0 has a list of char. of first line and so on
#process each line assuming constant spacing in the input file
#no is the first char. score from char 4 to 12 and Amino from 16 to end
for Line in LinesList:
    #add the no
    no.append(Line[0])
    #add the score
    Score.append(Line[4:12])
    Aminolist=list(Line[16:]) #breaking the amino acid as each character is a list element
    #add Aminolist to the AminoAcids Matrix (multi-dimensional array)
    AminoAcids.append(Aminolist)

#you can now play with the data!
#printing Tables ,you can also write them into a file instead
for k in range(0,65):
    print"Table %d" %(k+1) # adding 1 to not be zero indexed
    print"no. Score      amino acid(column %d)" %(k+1)
    for i in range(len(no)):
        print "%s   %s   %s" %(no[i],Score[i],AminoAcids[i][k])

这是结果出现在控制台上的一部分:

Table 1
no. Score      amino acid(column 1)
1   0.273778   F
2   0.394647   I
3   0.456667   F
4   0.407581   M
5   0.331761   A
6   0.452381   E
7   0.460385   L
8   0.438680   I
9   0.393291   Q
Table 2
no. Score      amino acid(column 2)
1   0.273778   F
2   0.394647   I
3   0.456667   I
4   0.407581   M
5   0.331761   A
6   0.452381   E
7   0.460385   L
8   0.438680   L
9   0.393291   Q
Table 3
no. Score      amino acid(column 3)
1   0.273778   H
2   0.394647   V
3   0.456667   V
4   0.407581   L
5   0.331761   N
6   0.452381   E
7   0.460385   L
8   0.438680   I
9   0.393291   Q
Table 4
no. Score      amino acid(column 4)
1   0.273778   H
2   0.394647   V
3   0.456667   V
4   0.407581   M
5   0.331761   S
6   0.452381   E
7   0.460385   L
8   0.438680   L
9   0.393291   D
Table 5
no. Score      amino acid(column 5)
1   0.273778   -
2   0.394647   I
3   0.456667   I
4   0.407581   I
5   0.331761   R
6   0.452381   D
7   0.460385   L
8   0.438680   L
9   0.393291   E
Table 6
no. Score      amino acid(column 6)
1   0.273778   Y
2   0.394647   V
3   0.456667   V
4   0.407581   L
5   0.331761   Q
6   0.452381   E
7   0.460385   L
8   0.438680   V
9   0.393291   E
Table 7
no. Score      amino acid(column 7)
1   0.273778   Y
2   0.394647   V
3   0.456667   V
4   0.407581   L
5   0.331761   S
6   0.452381   E
7   0.460385   L
8   0.438680   V
9   0.393291   E

  ask by hari translate from so

未解决问题?本站智能推荐:

4回复

使用Python解析SQL

我想在非关系数据存储的顶部创建一个SQL接口。 非关系数据存储,但是以关系方式访问数据是有意义的。 我正在研究使用ANTLR来生成将SQL表示为关系代数表达式的AST。 然后通过评估/遍历树来返回数据。 我以前从未实现过解析器,因此我想就如何最好地实现SQL解析器和评估器提供一些
2回复

使用Python解析JSON

我想解析一下 最后得到: 但我不知道从哪里开始解析python :(
2回复

使用Python解析文件

我正在尝试使用python解析对齐输出文件,但是我遇到了一些问题。 该文件具有三个主要的信息“块”,我想获取第三个块值,它们具有以下结构: 所以我写了这个: 但是由于某种原因,它不起作用。 我没有收到任何错误消息,终端只是被阻塞,什么也没有发生。 有什么问题的主意吗
1回复

使用Python解析Firebase JSON

我正在使用以下JSON结构 每个条目的名称都是随机的(例如L6Tr0Wl5fuG3tDgUPCa),它是由Firebase在每次推送新条目时生成的。 在python中这种JSON文件的每个条目中解析和迭代的最佳方法是什么? 该文件很大,有成千上万个这样的条目。
1回复

使用Python 3将Javascript解析为JSON

这是一个非常具体的要求,对此我深表歉意,但是我不知所措。 对于我正在从事的JavaScript项目,我希望能够使用python解析javascript,我发现了最初的水仙叫做pynarcissus的实现端口: https://github.com/jtolds/pynarcissus
1回复

Python XML解析-使用“不是None”

我正在尝试使用xml.etree.ElementTree解析XML文档,该文档包含python 2.7.9中的可选字段。 当我使用以下循环时: 我收到错误-AttributeError:“ NoneType”对象没有属性“ encode” 但是它在我使用时有效: 但是
2回复

使用python解析XSD文件

我正在尝试从给定的XML模式生成XML文件。 我已经能够使用python中的pyxb库做到这一点。 但是问题在于,由于XSD越来越庞大,因此无法手动编码每个和evey标签。 是否有任何python库可以从给定的XSD文件创建数据结构,该文件可以迭代通过
5回复

使用Python解析字符串

我似乎无法在字符串的parse()方法上找到任何文档。 有一个很好的参考? 我想解析以下内容: 分成两个int列表。
1回复

使用Python解析XML文件

我正在尝试使用Python3.x解析XML文件。 如果找到标签,我想返回True,否则返回False。 我试图一次读入一行并检查-如果未找到则使用递归,但是我不确定实现此目的的最有效方法是什么。 实现这个目标的最有效方法是什么? 这是我的代码: 我之前从未解析过XML文件,因此这
1回复

Python使用BeautifulSoup解析HTML

我正试图从这个[网页] [1]中获取特定数据并最终想把它放到我自己的表中,除了现在,我只是希望能够得到我想要显示的数据。 通过下面的代码,我可以让所有带有班级团队的团队出现,但是我想要让'团队奇怪'和'团队甚至'出现,最好先让团队奇怪出现然后团队出现。 我现在只专注于取名。 任何帮助将