[Rosalind] Inferring mRNA from Protein

2023. 8. 9. 20:45· Bioinformatics/Rosalind
목차
  1. | Problem
  2. | 예제 데이터와 결과
  3. | Python

풀이 날짜 : 2023-08-09(Python)

더보기

Pitfalls of Reversing Translation

연구자가 새로운 단백질을 발견할 때, 그들은 단백질에서 번역되어진 mRNA 서열을 추론한다. 이는 게놈에서 이 단백질과 관련된 위치한 유전자를 알아낼 수 있기 때문이다.

불행하게도, 어떠한 RNA 서열은 특별한 단백질 서열로 번역될 수 있지만, 그 반대 과정을 알아내려면 많은 그럼직한 RNA 서열을 유추해야 한다. 이는 하나의 단백질을 코딩하는데에 있어서 여러 RNA codon이 사용되기 때문이다.

일부 파이썬 버전에서는 int의 범위가 크지 않아서, 숫자를 저장하지 않고 조작하는 시스템을 고안해야 한다.

| Problem

모듈러 함수란?

8시에서 4시간이 지나면 2시로 표현하듯이, 각 값이 순환한 나머지 값을 말한다.

 

파이썬에서는 만약 x%n값이라면 n의 양/음수 배수에서 x축으로 얼마만큼 이동해야 x값이 되는지를 뜻한다. 

물론 x축이 +, -값으로 이동하는 것 모두 수학적으로 옳지만, 파이썬의 경우 양의 방향으로 이동하는 값을 반환한다.

- ex) 7%3 = 1

- ex) -7%3 = -2

(출처 : https://stackoverflow.com/questions/3883004/how-does-the-modulo-operator-work-on-negative-numbers-in-python)

이를 mod로 표현하기도 한다. 

만약 -10 mod 15는 5값을 말한다.

 

모듈러 함수의 특이점은 합동관계를 연관지을 수 있다. 

a mod n=b mod n이라면, a = b mod n라고 할 수 있다 

만약 -10 mod 15 = x라면 x mod 15 이다. 이때 x값은 어떤 값들이 될 수 있을까?

1) 먼저 -10 mod 15를 구한다. 이는 5값이다

2) 그렇다면 x mod 15도 5값을 가진다. 이때 x는 -25, 20등을 값으로 가진다. 

 

이때 15에 해당하는 값을 modulo라고 한다. 이 문제에서는 modulo를 1,000,000값으로 잡을 것이다. 

 

모듈러 함수란?

Given : 약 1000개의 amino acid 서열 

output : 단백질로 번역될 수 있는 서로다른 RNA 문자열의 총 수 + 정지코돈을 간과하지 말자

 

| 예제 데이터와 결과

Sample Dataset

MA

Samplpe output 

12

M이 될 수 있는 코돈의 경우의 수 *A가 될 수 있는 코돈의 경우의 수 * 정지 코돈의 경우의 수 = 1*4*3 = 12  

 

 

| Python

내 풀이

# 각 아미노산이 될 수 있는 코돈의 경우의 수 
amino_acid_counts  =  {'I':3,'M':1, 'T':4, 'N':2, 'K':2,  
                       'S':6,'R':6, 'L':6, 'P':4, 'H':2, 
                       'Q':2,'V':4, 'A':4, 'D':2, 'E':2, 
                       'G':4,'F':2, 'Y':2, 'C':2, 'G':4,
                       'W':1, 'stop':3}
stop_codon_num = 3


def possible_seq(protein_code) :
    output = 1
    
    for aa in protein_code:
        output *= amino_acid_counts[aa]
        
    output = output * stop_codon_num # 정지 코돈의 수를 곱해준다
    return (output % 1000000)   # 1000000수로 나눈 나머지를 결과값으로 내놓는다. 
    
with open('./rosalind_mrna (4).txt', 'r') as f:                         
    protein = f.read().strip()       

print(possible_sequences(protein))

 

 

반응형
저작자표시 비영리 (새창열림)
  1. | Problem
  2. | 예제 데이터와 결과
  3. | Python
'Bioinformatics/Rosalind' 카테고리의 다른 글
  • [Rosalind] RNA Splicing (Python)
  • [Rosalind] Enumerating Gene Orders (Python)
  • [Rosalind] Consensus and Profile (R/Python)
  • [Rosalind] Rabbits and Recurrence Relations (Python/R)
김해김씨99대손
김해김씨99대손
kim.soyeon.bio@gmail.com 오류수정, 피드백, 질문 메일 언제든지 환영합니다!
김해김씨99대손
Bioinfo_newbie
김해김씨99대손

블로그 메뉴

  • 블로그홈
  • Github
  • 글쓰기
  • 설정
  • 분류 전체보기 (356)
    • 자기소개 (1)
    • Bioinformatics (209)
      • Sequencing data (24)
      • Taxonomy (12)
      • Metagenome (5)
      • Microbiome (5)
      • └ Qiime2 (13)
      • └ Dada2 (8)
      • └ R for microbiome (38)
      • └ 기타 (27)
      • Biopython (2)
      • 생물정보학 교육 (11)
      • Rosalind (18)
      • Article (25)
      • 기타 (18)
      • 채용 공고 (3)
    • Statistics (0)
    • Machine Learning (2)
    • Biology (15)
    • Big data (4)
      • 기타 (4)
    • Programming (60)
      • Python (2)
      • R (47)
      • R_Package function (2)
      • My R package (1)
      • Linux (7)
    • Database (2)
    • Management (0)
    • 대학원 (29)
      • 스크랩 (10)
    • 일상 (14)
      • Big picture (2)
      • 다이어리 (10)
    • 기타 (9)

공지사항

인기 글

최근 댓글

전체
오늘
어제
hELLO · Designed By 정상우.v4.2.2
김해김씨99대손
[Rosalind] Inferring mRNA from Protein
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.