데이터 과학

슬라이싱 시퀀스 본문

생명정보학 & 화학정보학/바이오파이썬

슬라이싱 시퀀스

티에스윤 2021. 7. 13. 16:18

파이썬과 같은 스크립트 언어들의 강점은 텍스트 마이닝과 같은 텍스트 분석이 쉽다는 점입니다.

바이오파이썬도 이런 기능들이 있어 단순 서열 정렬에 대한 분석이 가능합니다. 

 

 

https://www.ncbi.nlm.nih.gov/nuccore/NR_073443.2?report=fasta 

 

Homo sapiens histone deacetylase 2 (HDAC2), transcript variant 3, non- - Nucleotide - NCBI

no features Feature First Previous Next Last Details

www.ncbi.nlm.nih.gov

>NR_073443.2 Homo sapiens histone deacetylase 2 (HDAC2) 일부 서열을 가져다가 분석을 해 보면 다음과 같습니다. 

 

>>>from Bio.Seq import Seq
>>>my_seq = Seq("AACCCGTTCCCGGCCCGGCACAGTTAGAACGAGACCCTCTTCCTGGCGCAGCCCCCGCGGTTCCTGCGGG")
>>>my_seq[3:15]

 

3:15는 4번째 위치 부터 15번째 위치까지의 결과를 화면에 나타낸다. Seq('CCGTTCCCGGCC') 결과가 나타납니다.

 

:: 은 시작위치와 끝나는 위치에 대한 반복을 표현한다. codon값을 찾아낼때 유용하게 쓰입니다.

>>>my_seq[0::3]                // 첫번째 핵산

Seq('ACTCGCCATAGACTCGCCCCTCCG')

>>>my_seq[1::3]                 //두번째 핵산

Seq('ACTCCGAGAAACTTTCACCGTTG')

>>>my_seq[2::3]                 //세번째 핵산

Seq('CGCGCGCTGCGCCCGGGCGGCGG')

 

 

전체 서열 표현 

>>>str(my_seq)

'AACCCGTTCCCGGCCCGGCACAGTTAGAACGAGACCCTCTTCCTGGCGCAGCCCCCGCGGTTCCTGCGGG'

 

문자열로 결과가 표현되는 것과 달리 print 명령어를 쓰면 

 

​AACCCGTTCCCGGCCCGGCACAGTTAGAACGAGACCCTCTTCCTGGCGCAGCCCCCGCGGTTCCTGCGGG

 

으로 결과가 나타납니다.

 

FASTA 형식으로 서열을 표현하려면 다음과 같은 명령어를 사용하면 됩니다.

Name에다 이름을 넣어주고 서열 출력.

 

>>>fasta_format_string = ">Name\n%s\n" % my_seq
>>>print(fasta_format_string)

 

 

>Name AACCCGTTCCCGGCCCGGCACAGTTAGAACGAGACCCTCTTCCTGGCGCAGCCCCCGCGGTTCCTGCGGG

 

 

fasta_format_string = ">NR_073443.2 Homo sapiens histone deacetylase 2 (HDAC2) \n%s\n" % my_seq
print(fasta_format_string)

 

>NR_073443.2 Homo sapiens histone deacetylase 2 (HDAC2) AACCCGTTCCCGGCCCGGCACAGTTAGAACGAGACCCTCTTCCTGGCGCAGCCCCCGCGGTTCCTGCGGG

 

 

연결자 연산자(+)를 이용해서 두개의 서열을 합치는 명령어는 다음과 같습니다. 

 

>>>protein_seq = Seq("MESLVLGVNEKTHVQ")
>>>dna_seq = Seq("AACCCGTT")
>>>protein_seq + dna_seq

 

Seq('MESLVLGVNEKTHVQAACCCGTT')

 

 

파이썬 명령어인 list를 이용해서 서열을 연결하는 방법도 있습니다. 

 

>>>list_of_seqs = [Seq("ACGT"), Seq("AACC"), Seq("GGTT")]
>>>concatenated = Seq("")
>>>for s in list_of_seqs:
>>>    concatenated += s
>>>concatenated

 

결과 다음과 같이 나타납니다. 

 

Seq('ACGTAACCGGTT')

 

 

이를 바이오파이썬 명령어인 join을 이용하면 연결자와 비슷하거나 향상된 기능을 만들어 낼 수 있습니다. 

 

>>>contigs = [Seq("ATG"), Seq("ATCCCG"), Seq("TTGCA")]
>>>spacer = Seq("N"*10)
>>>spacer.join(contigs)

 

결과는 중간에 N을 10번 반복하라는 명령어를 추가합니다.

 

Seq('ATGNNNNNNNNNNATCCCGNNNNNNNNNNTTGCA')

 

 

upper() 함수와 lower()함수를 이용하면 핵산을 대소문자로 바꿀 수 있습니다. 

 

>>>dna_seq = Seq("acgtACGT")
>>>dna_seq

Seq('acgtACGT')

 

>>>dna_seq.upper()

Seq('ACGTACGT')

>>>dna_seq.lower()

Seq('aacccgtt')

 

 

핵산 서열(Nucleotide sequence)를 유전적 대응(complement, A<->T, C<->G) 값으로 나타내거나 reverse 할 수 있습니다. 

 

>>>my_seq = Seq("GATCGATGGGCCTATATAGGATCGAAAATCGC")
>>>my_seq

Seq('GATCGATGGGCCTATATAGGATCGAAAATCGC')

 

 

>>>my_seq.complement()

Seq('CTAGCTACCCGGATATATCCTAGCTTTTAGCG')

 

>>>my_seq.reverse_complement()

Seq('GCGATTTTCGATCCTATATAGGCCCATCGATC')

 

 

여기까지가 바이오파이썬 튜토리얼 chapter 3.6까지의 내용이었습니다.

이후에 다시 chapter 3을 마무리 하도록 하겠습니다.