728x90
반응형
단백질 서열을 원핫 인코딩할 때 유용하게 쓸 수 있다.
매우 빠른 속도로 할 수 있다.
amino_acids = "ACDEFGHIKLMNPQRSTVWY" # 20 standard amino acids
# Create a dictionary to map each amino acid to its index
aa_dict = {aa: i for i, aa in enumerate(amino_acids)}
def encode_peptide(sequence):
# Initialize the encoding matrix with zeros
encoding = [[0] * len(amino_acids) for i in range(len(sequence))]
# Encode each amino acid as a one-hot vector
for i, aa in enumerate(sequence):
encoding[i][aa_dict[aa]] = 1
return encoding
# 아래 것 보다 더 빠름.
import numpy as np
import random
codes=['A', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'V', 'W', 'Y']
mapping=dict(zip(''.join(codes),range(20)))
def one_hot_encode(seq):
seq2=[mapping[i] for i in seq]
return np.eye(20)[seq2]
# 예제
protein_sequence = ''.join(random.sample(codes,5))
protein_encoded = one_hot_encode(seq=protein_sequence)
# 서열이 제대로 복구되는지 확인
protein_back = ''.join([codes[idx] for idx in np.where(protein_encoded==1)[1]])
protein_sequence==protein_back
# True
728x90
반응형
'파이썬3' 카테고리의 다른 글
2개의 회귀선의 기울기를 통계적으로 비교하는 법 (0) | 2023.08.22 |
---|---|
vcf를 pandas dataframe으로 변경하는 코드 (0) | 2023.03.28 |
tensorflow==1.13.1설치 도커 (0) | 2022.04.27 |
유전자 정보 불러오기 (mygene) (0) | 2022.04.13 |
KS-test D-statistics 위치 파악하는 스크립트 (0) | 2022.03.29 |