서두
LAIDD(https://www.laidd.org/)의
[2023] protein data bank 분석(https://www.laidd.org/course/view.php?id=155)
LAIDD(Lectures on AI-driven Drug Discovery)
www.laidd.org
한국제약바이오협회, 인공지능 신약개발 지원센터, 책임 연구원 홍승환님의 강의
와 관련된 글입니다.
본문
[2023] protein data bank 분석강의에서 3강
실습을 따라하는 와중에 pdb download관련 code가 없는것 같아 직접 짠것을 공유.
1.https://dunbrack.fccc.edu/pisces/
https://dunbrack.fccc.edu/pisces/
PISCES: A Protein Sequence Culling Server PISCES has two ways of producing subsets of sequences from larger sets: Subsets of protein chains and sequences culled from the entire PDB according to structure quality and maximum mutual sequence identity Subsets
dunbrack.fccc.edu
의
원하는 기준을 설정한 다음 Submit버튼을 누른다.
나는
cullpdb_pc15.0_res0.0-1.5_noBrks_len40-10000_R0.25_Xray_d2023_08_01_chains1652.txt
을 선택하여 다운 받았다.
NA가 포함된 multiple space로 seperate된 파일이다.(Header가 존재.)
강의에서는 이 파일에서 list.txt로 변환하여 dw_pdb.py에 넣어줘야하는데, 막상 변환하는 코드가 없는것 같아서 직접 작성했다.
#!/usr/bin/env python
"""Usage:
$python ~.py [input_file1] [output_dir]
[input_file1]:PISCES "space" seperated txt file
[output_dir]:output directory path
"""
#Import packages
import sys
#Argument parse
char_input_file1 = sys.argv[1]
char_output_dir = sys.argv[2]
#Functions
def PISCES_DataLoader(char_input_file1):
ls_FileLines_noHeader = []
with open(char_input_file1, 'r') as file_PISCES:
ls_FileLines = file_PISCES.readlines()
ls_FileLines_noHeader = ls_FileLines[1:]
return ls_FileLines_noHeader
def PDBchain_sort_split(ls_FileLines_noHeader):
#
ls_sort = []
for Num in range(len(ls_FileLines_noHeader)):
char_NumLine = ls_FileLines_noHeader[Num].split()
ls_sort.append(char_NumLine[0])
ls_sort.sort()
ls_sort_split = []
def InsertSpace(char):
char_output = char[:4]+";"+char[4:]+'\n'
return char_output
ls_sort_split = list(map(InsertSpace, ls_sort))
return ls_sort_split
#Function_main
def main():
ls_FileLines_noHeader = PISCES_DataLoader(char_input_file1)
ls_sort_split = PDBchain_sort_split(ls_FileLines_noHeader)
with open(char_output_dir+"PDB_list.txt", 'w') as file_FinalOutput:
file_FinalOutput.writelines(ls_sort_split)
#BackBone
if __name__ == "__main__":
main()
자유롭게 변형해도 좋다.
dw_pdb.py가 ';'으로 구분을 PDBchain의 문자를 구분 하길래 강의에서는 " "(space)로 구분되게 list.txt를 보여주었지만 위의 code는 ';'로 구분되는 결과 파일이 나오도록 설정했다.
의문
error message
*하나하나 잘 다운 받아 지다가 갑자기 404 error를 띄운다. 즉, page not found인데,
*PDBchain이 없는 경우도 있기 때문에 그것을 exception처리를 이미 dw_pdb.py에서 했을텐데...
*그냥 인터넷 연결 오류인가?
#추가된 내용
*2023.09.14_08:04분 추가.
exercise_pdb3.zip파일에 down_pdb.py와 list.txt모두 들어가 있었다.
아이고;;
#주의해 주세요.
*본 저자는 [2023] protein data bank 분석강의의 교수님, 강사님과 연관이 없습니다. 그러므로 덧글 답변이 틀릴 수 있습니다.
*본 저자는 강의 영상 저작권을 준수하며 강의를 무단 유출하지 않습니다.
*본 게시글은 개인적인 의견일 뿐이므로 반박시 반박이 옳습니다.