Python을 사용하여 DNA 가닥의 역 보수 얻기

Aditya Raj 2023년1월30일
  1. DNA 가닥의 역 보완
  2. Python에서 for 루프를 사용하여 DNA 가닥의 역 보수 얻기
  3. Python에서 join() 메서드를 사용하여 DNA 가닥의 역 보수 얻기
  4. Python에서 get() 메서드를 사용하여 DNA 가닥의 역 보수 얻기
  5. Python에서 목록 이해를 사용하여 DNA 가닥의 역 보수 얻기
  6. Python에서 translate() 메서드를 사용하여 DNA 가닥의 역 보수 얻기
  7. Python에서 Biopython 모듈을 사용하여 DNA 가닥의 역 보수 얻기
  8. 결론
Python을 사용하여 DNA 가닥의 역 보수 얻기

Python에서 과학 작업을 수행하는 동안 특정 작업을 수행해야 합니다. 이 기사에서는 Python을 사용하여 DNA 가닥의 역 보완을 얻는 다양한 방법에 대해 설명합니다.

DNA 가닥의 역 보완

DNA 가닥은 주로 아데닌(A), 티민(T), 구아닌(G) 및 시토신(C)의 4가지 유형의 염기로 표시됩니다. 다른 유형의 베이스도 있을 수 있습니다.

각 DNA 가닥은 일련의 문자 A, T, G 및 C로 표시됩니다. 예를 들어 ACGTAATTGGCC는 DNA 가닥 중 하나일 수 있습니다.

DNA 가닥의 보체를 얻으려면 원래 가닥에서 A를 T로, C를 G로, G를 C로, T를 A로 바꿉니다. 예를 들어 ACGTAATTGGCC의 보수는 TGCATTAACCGG입니다.

DNA 가닥의 보완을 뒤집기 위해 DNA 가닥의 보완 문자를 뒤집습니다. 따라서 역 보수는 GGCCAATTACGT가 됩니다.

이제 Python을 사용하여 DNA 문자열의 역 보수를 얻는 방법에 대해 논의해 보겠습니다.

Python에서 for 루프를 사용하여 DNA 가닥의 역 보수 얻기

Python에서 for 루프를 사용하여 DNA 가닥의 역 보수를 얻기 위해 다음 단계를 수행합니다.

  • 먼저 출력 문자열을 저장하기 위해 reversed_strand라는 빈 문자열을 정의합니다.
  • 그런 다음 len() 함수를 사용하여 입력 DNA 가닥의 길이를 찾습니다. len() 함수는 DNA 가닥의 문자열을 가져와 길이를 반환합니다.
  • 그런 다음 for 루프를 역순으로 사용하여 입력 DNA 가닥의 문자를 반복합니다.
  • 반복하는 동안 문자 A를 만나면 reversed_strand에 T를 추가합니다. 마찬가지로 시퀀스에서 A, C, G를 만나면 T, G, C를 reversed_strand에 추가합니다.
  • 입력 DNA 가닥에서 다른 문자를 만나면 reversed_strand에 동일한 문자를 추가합니다.
  • for 루프를 실행한 후 reversed_strand 변수에서 역 DNA 가닥을 얻습니다.

다음 예에서 이를 관찰할 수 있습니다.

input_strand = "ACGTAATTGGCC"
reversed_strand = ""
length = len(input_strand)
for i in range(length):
    character = input_strand[length - 1 - i]
    if character == "A":
        reversed_strand = reversed_strand + "T"
    elif character == "T":
        reversed_strand = reversed_strand + "A"
    elif character == "G":
        reversed_strand = reversed_strand + "C"
    elif character == "C":
        reversed_strand = reversed_strand + "G"
    else:
        reversed_strand = reversed_strand + character
print("The input DNA strand is:", input_strand)
print("The reverse complement is:", reversed_strand)

출력:

The input DNA strand is: ACGTAATTGGCC
The reverse complement is: GGCCAATTACGT

Python에서 join() 메서드를 사용하여 DNA 가닥의 역 보수 얻기

위의 접근 방식에서 reversed_strand를 생성하는 동안 입력 DNA 가닥의 각 문자에 대해 새 문자열이 생성됩니다. 입력 DNA 가닥이 너무 길면 시간과 메모리 측면에서 비용이 많이 들 수 있습니다.

이를 피하기 위해 목록을 사용하여 Python을 사용하여 DNA 가닥의 역 보수를 얻을 수 있습니다.

for 루프, 목록 및 join() 메서드를 사용하여 DNA 가닥을 역보완하기 위해 다음 단계를 사용합니다.

  • 먼저, DNA 가닥의 역 보수 문자를 저장하기 위해 complement_chars라는 빈 목록을 만듭니다.
  • 그런 다음 len() 함수를 사용하여 입력 DNA 가닥의 길이를 찾습니다.
  • 그런 다음 for 루프를 역순으로 사용하여 입력 DNA 가닥의 문자를 반복합니다.
  • 반복에서 문자 A를 만나면 append() 메서드를 사용하여 complement_chars에 T를 추가합니다. append() 메소드는 complement_chars에서 호출될 때 문자를 입력 인수로 가져와 complement_chars에 추가합니다.
  • 마찬가지로 시퀀스에서 A, C, G를 만나면 T, G, C를 complement_chars에 추가합니다.
  • 입력 DNA 가닥에서 다른 문자를 만나면 complement_chars에 동일한 문자를 추가합니다.
  • for 루프를 실행한 후 complement_chars에서 입력 DNA 가닥의 역 보수 문자 목록을 얻습니다.
  • 그런 다음 join() 메서드를 사용하여 원래 DNA 가닥의 역보체를 얻습니다. join() 메소드는 input_string에서 호출될 때 반복 가능한 객체를 입력 인수로 사용합니다. 실행 후 반복 가능한 객체의 요소를 문자로 포함하는 새 문자열을 input_string으로 구분하여 반환합니다.
  • join() 메소드를 사용하여 DNA 가닥의 역 보수를 얻기 위해 complement_chars를 입력 인수로 사용하여 빈 문자열에서 join() 메소드를 호출합니다. join() 메서드를 실행한 후 입력 DNA 가닥의 역 보수를 얻습니다.

다음 예에서 이를 관찰할 수 있습니다.

input_strand = "ACGTAATTGGCC"
reversed_strand = ""
complement_chars = []
length = len(input_strand)
for i in range(length):
    character = input_strand[length - 1 - i]
    if character == "A":
        complement_chars.append("T")
    elif character == "T":
        complement_chars.append("A")
    elif character == "G":
        complement_chars.append("C")
    elif character == "C":
        complement_chars.append("G")
    else:
        complement_chars.append(character)
reversed_strand = "".join(complement_chars)
print("The input DNA strand is:", input_strand)
print("The reverse complement is:", reversed_strand)

출력:

The input DNA strand is: ACGTAATTGGCC
The reverse complement is: GGCCAATTACGT

Python에서 get() 메서드를 사용하여 DNA 가닥의 역 보수 얻기

for 루프에서 if-else 블록을 사용하는 대신 사전과 get() 메서드를 사용하여 Python을 사용하여 DNA 가닥의 역 보수를 얻을 수 있습니다. 이 작업을 위해 다음 사전을 만듭니다.

reverse_dict = {"A": "T", "T": "A", "G": "C", "C": "G"}

get() 메소드는 사전의 키와 연관된 값을 검색합니다. 사전에서 호출될 때 get() 메서드는 키를 첫 번째 입력 인수로 사용하고 선택적 값을 두 번째 입력 인수로 사용합니다.

키가 사전에 있으면 해당 키와 연결된 값을 반환합니다. 그렇지 않으면 get() 메서드는 두 번째 인수로 전달된 선택적 값을 반환합니다.

다음 단계를 사용하여 get() 메서드와 reverse_dict를 사용하여 DNA 가닥의 상보를 뒤집습니다.

  • 먼저 출력 문자열을 저장하기 위해 reversed_strand라는 빈 문자열을 정의합니다.
  • 그런 다음 len() 함수를 사용하여 입력 DNA 가닥의 길이를 찾습니다.
  • 그런 다음 for 루프를 사용하여 입력 DNA 가닥의 문자를 역순으로 반복합니다.
  • 반복하는 동안 현재 문자를 첫 번째 및 두 번째 인수로 사용하여 reverse_dict에서 get() 메서드를 호출합니다. 현재 문자가 reverse_dict에 있는 경우 get() 메서드는 DNA 가닥 보완을 반환합니다. 그렇지 않으면 get() 메서드는 현재 문자를 반환합니다.
  • get() 메소드의 출력을 reversed_strand에 추가합니다.
  • for 루프를 실행한 후 reversed_strand 변수에서 역 DNA 가닥을 얻습니다.

다음 예에서 이를 관찰할 수 있습니다.

input_strand = "ACGTAATTGGCC"
reversed_strand = ""
reverse_dict = {"A": "T", "T": "A", "G": "C", "C": "G"}
length = len(input_strand)
for i in range(length):
    character = input_strand[length - 1 - i]
    reversed_strand = reversed_strand + reverse_dict.get(character, character)

print("The input DNA strand is:", input_strand)
print("The reverse complement is:", reversed_strand)

출력:

The input DNA strand is: ACGTAATTGGCC
The reverse complement is: GGCCAATTACGT

앞서 논의한 바와 같이 for 루프에서 문자열을 생성하는 접근 방식은 비용이 많이 듭니다. 따라서 다음 예제와 같이 Python을 사용하여 DNA 가닥의 역 보수를 얻기 위해 get() 메서드와 함께 목록 및 join() 메서드를 사용할 수 있습니다.

input_strand = "ACGTAATTGGCC"
reversed_strand = ""
reverse_dict = {"A": "T", "T": "A", "G": "C", "C": "G"}
complement_chars = []
length = len(input_strand)
for i in range(length):
    character = input_strand[length - 1 - i]
    complement_chars.append(reverse_dict.get(character, character))
reversed_strand = "".join(complement_chars)
print("The input DNA strand is:", input_strand)
print("The reverse complement is:", reversed_strand)

출력:

The input DNA strand is: ACGTAATTGGCC
The reverse complement is: GGCCAATTACGT

여기에서 우리는 먼저 입력 DNA 가닥을 반복하는 동안 역 보수의 문자 목록을 만들었습니다. 그런 다음 join() 메서드를 사용하여 문자를 결합하여 역 보수를 만들었습니다.

Python에서 목록 이해를 사용하여 DNA 가닥의 역 보수 얻기

for 루프를 사용하는 대신 목록 이해를 사용하여 Python을 사용하여 DNA 가닥을 역보완할 수도 있습니다.

먼저 목록 이해를 사용하여 DNA 가닥을 보완하기 위해 인덱싱을 사용하여 입력 DNA 가닥을 뒤집을 것입니다. 그 후, 우리는 역 보수의 문자 목록을 얻기 위해 마지막 예제에서 만든 get() 메서드와 reverse_dict와 함께 목록 이해를 사용합니다.

문자 목록을 가져오면 다음 예제와 같이 join() 메서드를 사용하여 입력 DNA 가닥의 역 보수를 찾습니다.

input_strand = "ACGTAATTGGCC"
reversed_strand = ""
reverse_dict = {"A": "T", "T": "A", "G": "C", "C": "G"}
temp = input_strand[::-1]
complement_chars = [reverse_dict.get(character) for character in temp]
reversed_strand = "".join(complement_chars)
print("The input DNA strand is:", input_strand)
print("The reverse complement is:", reversed_strand)

출력:

The input DNA strand is: ACGTAATTGGCC
The reverse complement is: GGCCAATTACGT

Python에서 translate() 메서드를 사용하여 DNA 가닥의 역 보수 얻기

또한 translate() 방법을 사용하여 DNA 가닥의 역보체를 찾을 수도 있습니다. 이를 위해 다음 단계를 사용합니다.

  • 먼저 문자열 인덱싱을 사용하여 입력 DNA 가닥을 뒤집습니다. 그런 다음 maketrans() 함수를 사용하여 번역 테이블을 만듭니다.
  • maketrans() 함수는 두 개의 문자열을 입력 인수로 사용하며 두 문자열의 길이는 같아야 합니다. 실행 후에는 첫 번째 문자열의 각 문자가 두 번째 문자열의 같은 위치에 있는 문자에 매핑된 번역 테이블을 반환합니다.
  • 입력 DNA 가닥에서 maketrans() 메서드를 호출하는 동안 첫 번째 입력 인수로 "ATGC"를 ​​전달하고 두 번째 입력 인수로 "TACG"를 전달합니다. 이러한 방식으로 입력 DNA 가닥의 각 문자는 상보체에 매핑됩니다.
  • 번역 테이블을 만든 후 translate() 메서드를 사용하여 DNA 가닥의 역보체를 얻습니다.
  • translate() 메서드는 문자열에서 호출될 때 입력 인수로 번역 테이블을 사용합니다. 실행 후 변환 테이블에 따라 호출된 문자열의 문자를 교체하여 새 문자열을 반환합니다. 변환 테이블에서 문자 매핑을 찾을 수 없는 경우 동일한 문자를 출력 문자열에 복사합니다.
  • 번역 테이블을 입력 인수로 사용하여 반전된 DNA 가닥에서 translate() 메서드를 호출합니다.
  • translate() 메서드를 실행한 후 입력 DNA 가닥의 역 보수를 얻습니다.

다음 예에서 이를 관찰할 수 있습니다.

input_strand = "ACGTAATTGGCC"
translation_table = input_strand.maketrans("ATCG", "TAGC")
temp = input_strand[::-1]
reversed_strand = temp.translate(translation_table)
print("The input DNA strand is:", input_strand)
print("The reverse complement is:", reversed_strand)

출력:

The input DNA strand is: ACGTAATTGGCC
The reverse complement is: GGCCAATTACGT

Python에서 Biopython 모듈을 사용하여 DNA 가닥의 역 보수 얻기

또한 Python에서 Biopython 모듈을 사용하여 DNA 가닥을 역보완할 수 있습니다. 다음 명령문을 사용하여 Python PIP3용 패키지 설치 프로그램을 사용하여 Biopython 모듈을 설치할 수 있습니다.

pip3 install Bio

Biopython 모듈은 Python을 사용하여 DNA 가닥을 역보완하는 reverse_complement() 메서드를 제공합니다. DNA 시퀀스 개체에서 호출될 때 reverse_complement() 메서드는 DNA 시퀀스의 역 보수를 반환합니다.

다음 단계를 사용하여 Python에서 reverse_complement() 메서드를 사용하여 DNA 가닥의 역 보수를 얻습니다.

  • 먼저 Seq() 함수를 사용하여 DNA 가닥에서 DNA 서열을 생성합니다. Seq() 함수는 입력으로 DNA 가닥을 나타내는 문자열을 사용하고 DNA 시퀀스를 반환합니다.
  • DNA 시퀀스 개체를 가져온 후 다음 예제와 같이 시퀀스에서 reverse_complement() 메서드를 호출하여 DNA 가닥의 역상보를 얻습니다.
from Bio.Seq import Seq

input_strand = "ACGTAATTGGCC"
sequence = Seq(input_strand)
reversed_strand = sequence.reverse_complement()
print("The input DNA strand is:", input_strand)
print("The reverse complement is:", reversed_strand)

출력:

The input DNA strand is: ACGTAATTGGCC
The reverse complement is: GGCCAATTACGT

결론

이 기사에서는 Python을 사용하여 DNA 가닥을 역보완하는 다양한 접근 방식에 대해 논의했습니다. 이 모든 방법 중에서 외부 라이브러리를 사용할 수 없는 경우 translate() 방법을 선택할 수 있습니다. 그렇지 않으면 Biopython 모듈을 사용하여 Python에서 DNA 가닥을 역보완할 수 있습니다.

이 기사를 재미있게 읽으셨기를 바랍니다. 더 많은 정보를 제공하는 기사를 계속 지켜봐 주십시오.

작가: Aditya Raj
Aditya Raj avatar Aditya Raj avatar

Aditya Raj is a highly skilled technical professional with a background in IT and business, holding an Integrated B.Tech (IT) and MBA (IT) from the Indian Institute of Information Technology Allahabad. With a solid foundation in data analytics, programming languages (C, Java, Python), and software environments, Aditya has excelled in various roles. He has significant experience as a Technical Content Writer for Python on multiple platforms and has interned in data analytics at Apollo Clinics. His projects demonstrate a keen interest in cutting-edge technology and problem-solving, showcasing his proficiency in areas like data mining and software development. Aditya's achievements include securing a top position in a project demonstration competition and gaining certifications in Python, SQL, and digital marketing fundamentals.

GitHub

관련 문장 - Python String