输入和比对蛋白质序列

时间:2013-02-07 09:19:57

标签: input python-2.7 alignment pandas biopython

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

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

请帮帮我。

1 个答案:

答案 0 :(得分:1)

通过以下方式读取数据时

sys.stdin.read()

序列使用'\n'而不是','分开(打印​​data会确认是否是这种情况,可能依赖于系统),所以你应该用这个分开:

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

检查此类事情的好方法是逐行检查,您会看到df是一行DataFrame(然后传播到I空)。

除此之外:你正在使用well written piece of code! :)