본문 바로가기

파이썬

main.py(feat_config의 yaml파일)[get_yaml(config_file_path)]

반응형

코드가 어떤 방식으로

구동되는가에 대한 부분을 정리해보려 한다.

출처: benny

작년 11월에 benny가 만들어줬던 코드

config 파일을 사용해서 조금 폭 넓은 활용을 할 수 있게 도와줬다.

먼지 쌓여있는 나의 Linux Ubuntu 폴더에서 발견함.

main.py
config.yaml

원래는 누가 party에 올거같니?

welcome~ 반가워! 이런 코드였는데,,,


import os
import yaml

def get_yaml(config_file_path):
    with open("config.yaml") as handle:
        return yaml.load(handle, Loader=yaml.FullLoader)

class ProteinDownload:
    def __init__(self):
        self.config = get_yaml("config.yaml")

    def run(self):
        protein_id = input("What protein do you want?")
        print(self.config["WELCOME_STATEMENT"].format(name=protein_id))
        os.system(self.config["DOWNLOAD"]["PDB"].format(name=protein_id))

def main():
    download = ProteinDownload()
    download.run()

if __name__=="__main__":
    main()

[main.py]

 

config 파일에 있는 홈페이지 링크를 통해서

내가 원하는 protein의 PDB id를 알고있을 경우에

해당 protein의 구조를 download받아서 사용할 수 있게 각색해봤다. 

 

config.format()형태는 아예 사용하지 않았던 형태인데

정리해두고 다음 번에 한 번 사용해봐야겠다.

WELCOME_STATEMENT: "I will find {name} for you!"
 
DOWNLOAD:
  PDB: "wget https://files.rcsb.org/download/{name}.pdb"
  UNIPROT:  "wget https:..."

[config.yaml]

 

yaml 파일의 {name} 위치에 input으로 들어간

protein id가 위치하게되어 다운로드 받는 형태

python3 main.py

main을 구동했을 때 what protein do you want?라고 물어보고

input으로 받은 정보가 protein_id 변수에 저장된다.

wget: (리눅스) 인터넷에서 파일을 다운

protein_id =1aki

print(self.config["WELCOME_STATEMENT"])부분에 해당하는

I will find 1aki for you!가 프린트 된다.

 

이후, os.system으로 self.config["DOWNLOAD"]["PDB"]에 해당하는

rcsb에서 pdb를 다운로드 받는 링크를 활용해

1aki.pdb가 다운받아진다.

ls: (리눅스) 특정 디렉토리 내 파일 및 디렉토리를 나열

잘 받아졌다.

반응형