본문 바로가기

ROSALIND17

[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.
[ROSALIND] 단백질 motif 찾기 문제 설명 단백질은 기능적 단위인 단백질 도메인(protein domain)으로 이루어져 있다. 도메인마다 하나의 기능이 알려져 있고, 일반적으로 단백질은 여러 역할을하기 때문에 1개 이상의 도메인을 가지고 있다. 이렇게 같은 도메인을 가지고 있는 단백질들을 묶어서 유전자군(gene/protein family)라고 부른다. 단백질 도메인의 기능을 정의하는 더 작은 단위로 모티프(motif)가 존재한다. 모티프는 진화적 측면으로 봤을 때도 잘 보존되어 있기 때문에 다른 종 간에서도 유사한 모티프의 확인이 가능하다. 단백질 서열은 세계적으로 다양한 연구실에서 발견되고 온라인 상에서는 UniProt에 단백질 데이터가 쌓이고 있다. 여기서 단백질의 구체적인 서열, 기능, 도메인 구조, 단백질 번역 후 변형(po.. 2023. 5. 23.
[ROSALIND] 단백질 서열로 번역하기 문제 (풀어보기) RNA 서열이 주어졌을 때 단백질 서열로 번역하시오. 다만, RNA 서열은 항상 AUG로 시작하고 stop codon으로 끝나기 때문에 3 frame을 고려할 필요는 없다. 예시 AUGGCCAUGGCGCCCAGAACUGAGAUCAAUAGUACCCGUAUUAACGGGUGA 예상 결과 MAMAPRTEINSTRING 해결 codon = {} with open("aa_codon.txt", "r") as f: for line in f.readlines(): aa = line.split() for i in range(0, len(aa), 2): codon[aa[i]] = aa[i+1] def translation(rna): protein = '' for i in range(0, len(rna), .. 2023. 5. 14.
[ROSALIND] DNA 변이 개수 세기 문제 (풀어보기) Hamming distance란 같은 길이를 가진 2개의 문자열 간의 다른 문자 개수를 얘기합니다. DNA 염기서열 2개가 주어졌을 때, Hamming distance를 구하시오. 예시 GAGCCTACTAACGGGAT CATCGTAATGACGGCCT 예상 결과 7 해결 seq1, seq2 = '', '' with open("rosalind_hamm.txt", "r") as file: seq1 = file.readline().strip() seq2 = file.readline().strip() print(sum(seq1[i] != seq2[i] for i in range(len(seq1)))) 2023. 5. 9.
[ROSALIND] GC 비율 문제 (풀어보기) GC 비율이란 DNA 염기서열 전체 중 'G'와 'C'가 차지하는 비율이다. 최대 10개의 DNA 서열이 주어졌을 때, 가장 높은 GC 비율을 가진 서열의 이름과 GC 비율(%)을 구하시오. 예시 >Rosalind_6404 CCTGCGGAAGATCGGCACTAGAATAGCCAGAACCGTTTCTCTGAGGCTTCCGGCCTTCCC TCCCACTAATAATTCTGAGG >Rosalind_5959 CCATCGGTAGCGCATCCTTAGTCCAATTAAGTCCCTATCCAGGCGCTCCGCCGAAGGTCT ATATCCATTTGTCAGCAGACACGC >Rosalind_0808 CCACCCTCGTGGTATGGCTAGGCATTCAGGAACCGGAGAACGCTTCAGACCAGCCCGGAC TGGG.. 2023. 5. 8.
[ROSALIND] 피보나치 숫자 문제 피보나치 숫자 0,1,1,2,3,5,8,13,21,34,… 의 패턴은 매우 간단하다. 그 다음 올 숫자는 그 전 두 숫자를 더한 값이다. n번째로 오는 숫자를 반환하시오. 예시 6 예상 결과 8 해결 def fibonacci(n): a,b = 0,1 for i in range(2, n+1): a,b = b,a+b print(b) 첫번째와 두번째 숫자가 각각 0과 1이라는 것을 알기 때문에 for문으로 간단하게 더해가면 된다. 2023. 5. 7.
[ROSALIND] DNA에서 RNA 서열 만들기 문제 (풀어보기) RNA 서열은 A, C, G, U nucleotide를 가지고 있다. DNA 서열 중 coding strand의 서열이 주어졌을때 RNA 서열을 반환하시오. 예시 GATGGAACTTGACTACGTAAATT 예상 결과 GAUGGAACUUGACUACGUAAAUU 해결 def dna_to_rna(dna): print(dna.upper().replace('T', 'U')) DNA와 RNA 염기서열의 차이는 DNA는 Thymine(T)을 가지고 있는 반면에 RNA는 Uracil(U)을 가지고 있다는 것이다. 그리고 문제에서 보면 coding strand 서열이 주어졌다고 하는데 coding strand는 RNA와 같은 서열을 가지고 있다. 그래서 DNA coding strand에서 RNA 서열이.. 2023. 5. 5.
[ROSALIND] DNA nucleotide 세기 문제 (풀어보기) DNA 서열은 A, C, G, T 4가지 nucleotide로 이루어져 있다. DNA 서열이 주어졌을 때 각 nucleotide의 개수를 A, C, G, T 순서로 반환하시오. 예시 AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC 예상 결과 20 12 17 21 해결 def actg_count(dna): dna = dna.lower() print(dna.count('a'), dna.count('c'), dna.count('g'), dna.count('t')) 파이썬에는 간편하게도 이미 string의 특정 문자의 개수를 셀수 있는 기능이 탑재되어 있다. 2023. 5. 4.