ввод и выравнивание последовательности белка

У меня есть скрипт для поиска мутировавших позиций в последовательности белка. Следующий скрипт сделает это.

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)

Здесь я дал данные (жестко закодированные), то есть входные последовательности белков. Обычно в приложении пользователь должен вводить входные последовательности, т.е. я имею в виду мягкое кодирование. Также здесь не выполняется выравнивание. Я прочитал учебник по биопитону и получил следующий скрипт, но я не знаю, как добавить эти скрипты к приведенному выше.

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

Пожалуйста помогите.


person user2050115    schedule 07.02.2013    source источник
comment
для третьего фрагмента кода: убедитесь, что данные разделены запятой, а не пробелом или новой строкой, или измените data.split(','), например, на data.split('\n')   -  person Francesco Montesano    schedule 07.02.2013
comment
Я узнаю этот код (!)   -  person Andy Hayden    schedule 07.02.2013


Ответы (1)


Когда вы читаете данные через:

sys.stdin.read()

Последовательности разделяются с помощью '\n', а не ',' (печать data подтвердит, так ли это, может зависеть от системы), поэтому вы должны разделить, используя это:

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

Хороший способ проверить такие вещи — просмотреть их построчно, где вы увидите, что df был кадром данных с одной строкой (который затем распространяется, чтобы сделать I пустым).

Кроме того, какой хорошо написанный фрагмент кода вы используете! :)

person Andy Hayden    schedule 07.02.2013