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

수요일, 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





수요일, 1월 06, 2021

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

국내 회사에서 일반 시퀀싱 즉 Sanger Sequencing을 맡기시면
시퀀싱되어 바이너리 정보로 저장되어 있는 ab1파일, 서열정보가 들어있는 fasta파일과 함께 Applied Biosystems 로고가 찍혀있는 pdf파일 혹은 시퀀싱을 요청한 회사의 로고가 찍혀있는 pdf파일을 받아 보실 수 있으실겁니다. 

자세히 보다보시면 서열과 plot의 위치가 맞는거 같으면서도 안맞는거 같기도하고..
대놓고 틀린건 아닌데 그렇다고 안대놓고 맞는건 아닌거같고..

그러면 이 파일은 대체 어떻게 만들어지는걸까?
그럼 나는 저런거 못만드나?

그럴리가 있겠습니까?
그래서 이 글의 제목이 "너도 AB1파일로 pdf 만들 수 있어" 아니겠습니까?

예전에는 ab1.py? ab1_parse.py? 어떤 용자께서 제작하신 3rd party파일을 python에 import하여 사용하였었는데

이번에는 biopython에서 제공되는 ab1파일을 핸들링 하는 기능을 사용해서 작업해보려고 합니다.


ab1파일을 parsing하려면 ab1파일이 어떻게 생겼는지 알아야 하겠죠?
그래서 ab1파일에 어떤 항목에 어떤 내용들이 담겨져 있는지 확인을 해보시기 바랍니다.


다음번에는 ab1파일안에 들어있는 내용들을 확인해보는 시간을 가지도록 하겠습니다.

진짜로~
제발~




출처: @sana_twice.09


수요일, 3월 21, 2012

AB1 파일 작업하기


출처: interactive-biosoftware

Python이 설치된 폴더의 Lib 폴더안에 ABIFReader.py
복사하여 넣어주고 사용하면 됨.

from ABIFReader import *


# creates an instance of ABIFReader
reader = ABIFReader(<filename>)
# version of ABIF file
reader.version
# print all entries of ABIF file "<name> (<num>) / <type> (<size>)"
reader.showEntries()
# read data for entry named <name> with number <num>, by default <num> is 1
data = reader.getData(<name>[, <num>])
# close the file, since it is kept open
reader.close()

본 파일을 이용하여 ABI3730xl에서 나온 ab1파일을 분석하는 경우 중간중간
몇몇 data type은 3500xl 버전을 참고해야되는 경우가 있었음.
ABIF Type의 Description이 잘 맞지 않은 것인지 AB1파일을 로드할때 중간에 missing되는 것이 있는지 정확히는 모르겠음.