5SOO_O 의 개발 공부 일지

[Python] [ROSALIND] Complementing a Strand of DNA 본문

자료구조 및 바이오 인포매틱스

[Python] [ROSALIND] Complementing a Strand of DNA

5soo_o 2022. 4. 7. 10:31

https://rosalind.info/problems/revc/

 

염기 서열을 뒤집은 다음 상보적인 서열을 만드는 문제이다.

상보적인 염기를 담은 딕셔너리를 만든다.

DNA_ReverseComplement = {'A':'T', 'T':'A', 'G':'C', 'C':'G'}

 

입력받은 sequence를 하나씩 읽어 키로 사용한다.

상보적인 염기 담은 딕셔너리에서 해당 키가 가진 value 값을 꺼내 리스트로 담고

''.join()을 사용해 문자열로 만든 다음 거꾸로 읽는다.

def reverse_complement(seq):
    return ''.join([DNA_ReverseComplement[nuc] for nuc in seq])[::-1]

 

다운 받은 데이터를 연다.

데이터 마지막에 \n 이 포함되어 있기 때문에 빼 주어야 한다.

\n 기준으로 split 한 다음, 염기 서열만 포함된 첫 번째 인자만 변수에 다시 담았다.

with open("rosalind_revc.txt", 'rt') as file:
    sequence = file.read().split('\n')
    sequence = sequence[0]
print(sequence)

 

 

전체 코드

with open("rosalind_revc.txt", 'rt') as file:
    sequence = file.read().split('\n')
    sequence = sequence[0]
print(sequence)

DNA_ReverseComplement = {'A':'T', 'T':'A', 'G':'C', 'C':'G'}

def reverse_complement(seq):
    return ''.join([DNA_ReverseComplement[nuc] for nuc in seq])[::-1]


print(reverse_complement(sequence))

 

728x90