본문 바로가기

파이썬10

[ROSALIND] Open reading frame (6-frame 번역하기) 문제 설명 DNA에서 상보적인 mRNA 서열을 만들고, mRNA가 단백질로 번역딘다. mRNA 서열이 단백질로 번역될 때 항상 mRNA의 전체 서열을 사용하는 것이다. mRNA 서열 중 start codon (AUG)가 있는 모든 곳에서 번역이 가능하고 모든 end codon (UAG, UAA, UGA)에서 번역이 종료된다. 그러므로 mRNA에서 번역이 시작될 수 있는 시점은 첫번째, 두번째, 세번째 염기서열이 있다. 이것을 three frame translation이라 부른다. 하지만 DNA에는 상보적인 반대 서열이 존재하기 때문에 이 서열까지 고려한다면 단백질 번역의 시작이 가능한 곳은 총6곳이다. 이렇게 번역이 가능한 구간을 open reading frame (ORF)이라 부른다. 이번 문제에서는 .. 2023. 5. 30.
[ROSALIND] 단백질 서열에서 mRNA 서열 예측해보기 문제 설명 연구자들이 새로운 단백질을 발견했을 때 이 단백질이 어떤 mRNA 서열에서부터 번역된 것인지 알아야 유전체에서 이 단백질을 만드는 구간을 찾을 수 있기 때문에 단백질 서열로 mRNA 서열을 예측하는 것은 매우 중요한 일이다. 하지만 하나의 mRNA가 특정한 단백질로 번역되는 반면에 단백질에서 mRNA 서열을 알아내는건 경우의 수가 너무 많기 때문에 생각보다 힘든 일이다. 아래의 그림에 보이는 것처럼 하나의 아미노산은 여러 개의 codon이 될 수 있기 때문이다. 문제 최대 길이가 1000개의 아미노산으로 이루어진 단백질 서열이 주어졌을 때 mRNA가 될 수 있는 경우의 수를 출력해야한다. 이 때, 파이썬에서 int가 가질 수 있는 가장 큰 값은 2,147,483,647 (2^31−1)이기 때문.. 2023. 5. 29.
[ROSALIND] DNA 서열에서 motif 찾기 문제 설명 서로 다른 종의 유전체에서 공통적으로 가진 DNA 서열이 발견된다면 이 서열은 두 종에서 모두 비슷한 기능을 하는 것이라고 생각 할 수 있다. 이러한 서열을 모티프(motif)라고 부른다. 분자생물학 분야에서는 어떤 생물의 유전체에서 이런 모티프를 찾는 일을 흔히 하는 것을 볼 수 있다. 모티프처럼 유사한 서열이 여러번이나 한 유전체에서 발견되는 경우도 있는데 이러한 서열을 repeat이라 부른다. Repeat은 랜덤으로 생겨난 서열이라기에는 정말 자주 발생하는 것을 확인할 수 있다. 인간 유전체에서 가장 흔한 repeat은 Alu repeat이라는 건데 이것은 300 bp 정도의 길이에 한 사람에게서 100만번 정도 발생하는 것으로 알려져 있다. 하지만 이러한 Alu repeat은 좋은 역할.. 2023. 5. 28.
[ROSALIND] DNA의 인트론(intron) 영역 제거 후 단백질로 번역 문제 설명 DNA의 전사 과정(transcription)은 DNA의 일부를 RNA로 만드는 과정이다. 세포의 핵 내에서 RNA polymerase (RNAP)라는 RNA 중합효소가 DNA의 두 가닥 중 한 가닥을 템플릿(template strand)으로 사용해 상보적인 서열을 만든다. 이 때 A의 염기쌍으로 T 대신 U를 사용하고, 이렇게 완성된 서열을 precursor mRNA (pre-mRNA)라고 부른다. Pre-mRNA는 intron과 exon으로 구성되어 있는데 단백질로 번역되기 전에 intron 영역은 제거되고 exon 영역끼리 이어 붙은 서열을 mRNA라 부른다. 이러한 intron 제거 과정은 spliceosome이라 불리는 다양한 RNA와 단백질 구성이 실행시키며 이 과정을 splicin.. 2023. 5. 27.
[ROSALIND] 단백질 질량 구하기 문제 설명 단백질은 아미노산(amino acid)으로 이루어져 있다. 아미노산이 2개 합쳐질 때 peptide bond가 형성 되는데 이 때 물 분자(H2O) 하나가 빠지게 된다. 이렇게 여러 아미노산이 연결된 것을 polypeptide라 부르고, n개 아미노산이 연결되었다면 n-1개의 물 분자가 빠진 것이다. Polypeptide의 양쪽 끝에는 다른 아미노산과 결합되지 않았기 때문에 하나의 물 분자가 남아있다고 볼 수 있다. 즉, polypeptide의 질량는 각 residue(물 분자가 빠진 아미노산)의 개별 질량와 물 분자 1개(물 분자의 monoisotopic mass는 18.01056 Da이)의 질량으로 계산할 수 있다. 아미노산의 질량을 계산할 때 monoisotopic mass를 이용하는데 .. 2023. 5. 26.
[ROSALIND] DNA가 공유하는 motif 찾기 문제 설명 유전자(Gene)란 단백질로 번역될 수 있는 DNA의 영역을 얘기한다. 모티프(Motif)는 유전자의 기능과 관련있는 DNA의 작은 단위인데 모티프 서열은 잘 보존돼 있어 모티프를 통해 서로 다른 종 간의 DNA 유사성을 확인 할 수 있다. 이번 문제에서는 여러 DNA 서열들 간에 공유하고 있는 최대한 긴 모티프를 찾는 것이다(모티프가 길수록 공유하는 기능 또한 더 유사하다고 할 수 있기 때문이다!). 문제 (Finding a Shared Motif) 최대 100개의 DNA 서열( Rosalind_1 GATTACA >Rosalind_2 TAGACCA >Rosalind_3 ATACA 예상 결과 AC 해결 def find_kmers(seq, k): return sorted([seq[i:i+k] f.. 2023. 5. 25.
정규표현식 Regular Expression Goal 1. 정규표현식이란? 2. 파이썬에서 정규표현식 쓰는 방법 알아보기 정규표현식이란? 정규표현식 (Regular expression)은 텍스트에서 패턴 찾기를 할 때 유용한 도구이다. 예를 들어 여러 RNA 서열 중 "AUG"가 포함 된 서열만 출력하고 싶다면 정규표현식을 써서 아주 간단하게 찾을 수 있다. 파이썬의 정규표현식 파이썬에서는 re 라는 라이브러리를 이용한다. re 모듈의 메서드 기능 예시 findall("패턴", 문자열) 패턴이 일치하는 모든걸 리스트 형태로 반환 import re rna = "AUGCCAUGCUGA" first_start = re.search("AUG", rna) print(first_start) # search("패턴", 문자열) 패턴이 일치하는 부분을 objec.. 2023. 5. 23.
파이썬 벡터 사용하기 Goal 1. 딥러닝에서 벡터화(vectorization)의 장점 알아보기 2. 파이썬의 다양한 벡터화 연산 코드 알아보기 벡터화(Vectorization)을 사용하는 이유 딥러닝에선 엄청 많은 양의 데이터를 다루게 된다. 이 때, 많은 양의 데이터간에 곱셈와 같은 어떤 연산을 하게 되면 시간이 너무 오래 걸리는게 큰 문제가 된다. 예를 들어, 각각 백만개의 숫자를 가진 a와 b 배열에서 a와 b간의 모든 숫자를 곱하여 더해야한다면 일반적으로는 for문을 통해 할 수 있을 것이다. 하지만 시간이 너무 오래 걸리기 때문에 이럴 때 파이썬 numpy 라이브러리에 내제되어 있는 벡터 함수들을 사용하면 아주 빠르게 같은 작업을 수행할 수 있다! import numpy as np import time a = np.. 2023. 5. 13.
딕셔너리 (dictionary) 함수 딕셔너리는 리스트와는 달리 짝을 지어 내용을 정리하는 자료형이다. 중괄호 "{ }"로 딕셔너리를 생성할 수 있으며 짝을 지을 때는 콜론 " : "을 이용한다. 생물학에서 RNA를 단백질로 번역될 때 RNA 서열을 3개의 base pair로 묶어서 하나의 codon을 형성한다. 이럴 경우 딕셔너리 자료형이 꽤 유용하다. codons = {'AUG': 'M', 'UAA': 'Stop', 'UGA': 'Stop', 'UAG': 'Stop', 'UUU': 'F', 'CUU': 'L', \ 'AUU': 'I', 'GUU': 'V', 'UUC': 'F', 'CUC': 'L', 'AUC': 'I', 'GUC': 'V', 'UUA': 'L', 'CUA': 'L', \ 'AUA': 'I', 'GUA': 'V', 'UUG.. 2022. 7. 17.