-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')))

この種のことを確認する良い方法は、それを1行ずつ調べることです。ここで、それdfが1行のDataFrameであることがわかります(その後、伝播してI空になります)。

余談ですが、あなたが使用しているコードはなんとよく書かれているのでしょう。:)

于 2013-02-07T17:12:31.833 に答える