0

단백질 서열에서 다른 아미노산 문자의 빈도를 추출하려고합니다. 저는 알파벳의 다른 "축소 된"표현에도 노력하고 있습니다. (I.E, 20 글자 대신 몇 개의 글자를 동등하게 사용하고 싶습니다.).scikit으로 다른 글자 K-mers를 알아보기 learn

다음과 같은 효율적인 방법은 무엇입니까? 1) 단백질 서열로부터 다른 k-mer (IE, 서열에서 1,2,3 길이의 글자가 겹쳐져 있음)의 빈도수를 추출하십시오. scikit 도구를 배우십시오 (countvectorizer와 같은)? (가능한 조합을 직접 생성하여 문자열에서 계산할 수는 있지만 이는 매우 비효율적이며 scikit learn 도구를 내 파이프 라인에 사용하지는 않지만 단어에 대한 도구는 하나의 긴 문자가 아닌 여러 문자를 사용합니다. word).

2) 다른 알파벳에 scikit의 countVectorizer 등을 사용하여 k-mer 문자 수/주파수를 얻는 효율적인 방법이 있습니까? (I.E, 번역 테이블을이 방법에 제공하고, 각 시퀀스에 대해 가능한 조합과 빈도를 비효율적으로 재 계산하기보다는 감축 된 라이브러리의 2-mer 주파수를 직접 얻음).

마지막으로 특성을 가져와야하므로 주문 기능을 유지 관리하는 것도 중요합니다 (기능 열 이름으로 출력에 추가하는 경우). 대단히 감사합니다!

+0

나는 CountVectorizer가 N 그램을 얻기 위해 사용될 수 있지만, 나는 겹치는 카운트를 원한다는 것을 안다. (그리고 나는 다른 샘플들 사이에서 일관되게 계산 된/k-mers가 필요하다). – GrimSqueaker

+0

지금까지 시도한 것을 게시 할 수 있습니까? 나는 그 질문을 이해하고 어떤 규약도없이 그것을 말하기 어렵다는 것을 확신하지 못한다. 과거 입력, 원하는 출력 및 현재 코드를 사용할 수 있다면 시도해 볼 수 있습니다. – Llopis

+0

모든 가능한 조합을 얻기 위해 itertools를 사용하여 구현했으며, 중복되는 방식으로 시퀀스/문자열을 반복하는 defaultdict를 구현했습니다. – GrimSqueaker

답변

1

단백질의 모든 "단어"와 함께 목록/사전을 원합니다. 당신의 단백질을 통해

>>> words_prot_1 = wording(prot_1, 3) 
>>> print words_prot_1 
["mkl", "klf", "lfg", "fgs", "gsm", "smh", "mhe", "hee"] 
>>> words_prot_2 = wording(prot_1, 3) 
>>> print words_prot_2 
["hee", "eel", "ely", "lyi", "yig", "igg", "ggi", "gis"] 

주기가 딕셔너리 또는 목록 중 하나를 만들려면 다음과 같이, 길이 n의 모든 단어를 반환 당신은 기능을 원하는

prot_1 = "mklfgsmhee" 
prot_2 = "heelyiggis" 

: 다음과 같은 단백질이 있다고 가정하자 같은 :

kmers_3 = ["mkl", "klf", "lfg", "fgs", "gsm", "smh", "mhe", "hee", 
      "eel", "ely", "lyi", "yig", "igg", "ggi", "gis"] 

은 (반복되는 용어 "희는"한 번만, 이것은 쉽게 set(list)으로 또는 딕셔너리의 키 삽입 이루어집니다 참고). 이제 같은 word_prot_1CountVectorizer, 을 위조하여 str.join()의 텍스트로 공급할 수 있습니다. 같은 :