-1

我有一个用于在蛋白质序列中查找突变位置的脚本。以下脚本将执行此操作。

import pandas as pd #data analysis python module
data =     'MTAQDDSYSDGKGDYNTIYLGAVFQLN,MTAQDDSYSDGRGDYNTIYLGAVFQLN,MTSQEDSYSDGKGNYNTIMPGAVFQLN,MTAQDDSYSDGRGDYNTIMPGAVFQLN,MKAQDDSYSDGRGNYNTIYLGAVFQLQ,MKSQEDSYSDGRGDYNTIYLGAVFQLN,MTAQDDSYSDGRGDYNTIYPGAVFQLN,MTAQEDSYSDGRGEYNTIYLGAVFQLQ,MTAQDDSYSDGKGDYNTIMLGAVFQLN,MTAQDDSYSDGRGEYNTIYLGAVFQLN' #protein sequences

df = pd.DataFrame(map(list,data.split(',')))

I = df.columns[(df.ix[0] != df).any()] 

J = [pd.get_dummies(df[i], prefix=df[i].name+1, prefix_sep='') for i in I] 

print df[[]].join(J)

在这里,我给出了数据(硬编码),即输入蛋白质序列。通常在应用程序中,用户必须给出输入序列,即,我的意思是软编码。这里的对齐也没有完成。我阅读了 biopython 教程,我得到了以下脚本,但我不知道如何将这些脚本添加到上面的脚本中。

from Bio import AlignIO
alignment = AlignIO.read("c:\python27\proj\data1.fasta", "fasta")
print alignment

我怎么能做这些我试过的:

>>> import sys

>>> import pandas as pd

>>> from Bio import AlignIO

>>> data=sys.stdin.read()
    MTAQDDSYSDGKGDYNTIYLGAVFQLN
    MTAQDDSYSDGRGDYNTIYLGAVFQLN
    MTSQEDSYSDGKGNYNTIMPGAVFQLN
    MTAQDDSYSDGRGDYNTIMPGAVFQLN
    MKAQDDSYSDGRGNYNTIYLGAVFQLQ
    MKSQEDSYSDGRGDYNTIYLGAVFQLN
    MTAQDDSYSDGRGDYNTIYPGAVFQLN
    MTAQEDSYSDGRGEYNTIYLGAVFQLQ
    MTAQDDSYSDGKGDYNTIMLGAVFQLN
    MTAQDDSYSDGRGEYNTIYLGAVFQLN
    ^Z
>>> df=pd.DataFrame(map(list,data.split(',')))
>>> I=df.columns[(df.ix[0]!=df).any()]
>>> J=[pd.get_dummies(df[i],prefix=df[i].name+1,prefix_sep='')for i in I]
>>> print df[[]].join(J)

但它给出了空的 DataFrame 作为输出。

我也尝试过,但我不知道如何将这些序列加载到我的脚本中

while 1:
 var=raw_input("Enter your sequence here:")
 print "you entered ",var

请帮我。

4

1 回答 1

1

当您通过以下方式读取数据时:

sys.stdin.read()

序列使用'\n'而不是分隔','(打印data将确认是否是这种情况,它可能取决于系统),因此您应该使用以下方法进行拆分:

df = pd.DataFrame(map(list,data.split('\n')))

检查这种事情的一个好方法是逐行检查它,您会看到这df是一个单行 DataFrame(然后传播为I空)。

顺便说一句:您使用的代码写得多么好!:)

于 2013-02-07T17:12:31.833 回答