레이블이 matplotlib인 게시물을 표시합니다. 모든 게시물 표시
레이블이 matplotlib인 게시물을 표시합니다. 모든 게시물 표시

수요일, 4월 05, 2023

너도 AB1파일 가지고 pdf 만들 수 있어 (2)


너도 AB1 파일 사용해서 pdf 만들 수 있어 첫번째 글에 이은 두번째!!!


chatGPT한테 물어 물어 좀 쉽게 작성을 해보려고 했으나...

아.. 이것 또한 쉽지 않습니다.

예제를 보여줘서 학습을 시키면 좋을텐데... 잘 모르게서

그냥 간단히 matplotlib 코드만 간단히 활용해 보았습니다.


ab1 파일을 분석하는 것은 그냥 노가다로... ㅎㅎ 

우선 그냥 chatGPT한테 

"ab1파일 parsing해서 pdf로 만드는 스크립트 작성해줘" 하면 


from Bio import SeqIO

import matplotlib.pyplot as plt


# ab1 파일 경로 설정

abif_file = "example.ab1"


# ab1 파일 파싱하여 전기영동 결과 얻기

abif_record = SeqIO.read(abif_file, "abi")

electropherogram = abif_record.annotations['abif_raw']['DATA2']


# matplotlib를 이용하여 전기영동 결과 그래프 그리기

plt.plot(electropherogram)

plt.title("Electropherogram")

plt.xlabel("Base Position")

plt.ylabel("Signal Strength")

plt.show()


이렇게 알려줍니다.


이거 그대로 작성하면 우리가 기대했던 이미지하고 영 딴판의 결과가 저장됩니다.


그래서 세부 내용들은 Applied Biosystems에서 제공하는 Data File Format pdf를 좀 들쳐봐야합니다.

그래서 코드를 좀 수정 하면...


from Bio import SeqIO
import matplotlib.pyplot as plt

# ab1 파일 경로 설정
abif_file = "example.ab1"

# ab1 파일 파싱하여 전기영동 결과 얻기
abif_record = SeqIO.read(abif_file, "abi")
poc = record.annotations['abif_raw']['PLOC1']
a = record.annotations['abif_raw']['DATA10']
c = record.annotations['abif_raw']['DATA12']
g = record.annotations['abif_raw']['DATA9']
t = record.annotations['abif_raw']['DATA11']

data = {"A":a_seq, "C":c_seq,"G":g_seq,"T":t_seq}

plt.figure(figsize=(len(poc)/10,5))
for base, color in zip("ACGT",["g","b","k","r"]):
    plt.plot(data[base],color=color)

tmp = [None]*len(a_seq)

i=0
for pnt in poc:
    tmp[pnt]=seq[i]
    i+=1

plt.xticks(range(len(tmp)),tmp, fontsize=6)
plt.savefig('output.pdf')


이 코드를 사용하면 응? 좀 이상하지만 약간 그럴싸한 이미지가 보이실겁니다.

시퀀칭 업체에 Sanger Sequencing에 맡기면 fasta파일과 ab1파일과 함께 오는 pdf파일과 다르긴 하지만 얼추 비슷한...

그럼 다음 기회에는 Sanger Sequencing 맡기면 함께 받아 볼 수 있는 pdf 파일을 만들어보기로 해봐요. 내년 쯤에는 할 수 있지 않을까 합니다. :)




출처: @ye._.vely618