我有一个用于查找蛋白质序列中突变位置的脚本。以下脚本将执行此操作。
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
请帮帮我。
答案 0 :(得分:1)
通过以下方式读取数据时
sys.stdin.read()
序列使用'\n'
而不是','
分开(打印data
会确认是否是这种情况,可能依赖于系统),所以你应该用这个分开:
df = pd.DataFrame(map(list,data.split('\n')))
检查此类事情的好方法是逐行检查,您会看到df
是一行DataFrame(然后传播到I
空)。
除此之外:你正在使用well written piece of code! :)