まさなみブログ

主にweb系開発の記事を適当に書いてます。

dbrp、uniprotのapiをつかってpythonでデータ取得

自分用メモ ちょっと修正

dbrp_data_get.py

import json
import os.path
import sys

import requests


# 引数に指定したゲノム情報のアクセッション番号を検索し、accessibilityAPIの値からfastaファイルを取得するスクリプト。
# python dbrp_get.py [input_list]
def main():
    args = sys.argv
    file_name = args[1]
    print(file_name)
    url = 'https://www.nite.go.jp/nbrc/dbrp/api/dataget'
    data_format = '.zip'
    params = {'data_id': file_name}
    response = requests.get(url, params=params)
    dict = response.json()
    data_body_str = dict['result']['data_body']
    data_body = json.loads(data_body_str)
    accessibility_api = data_body['@graph'][0]['DataDownload']['accessibilityAPI']

    url2 = 'https://www.nite.go.jp/nbrc/dbrp/api/fileget'
    params2 = {'file_id': accessibility_api}
    download_data = requests.get(url2, params=params2)

    if not os.path.exists('./data/dbrp/'):
        os.makedirs('./data/dbrp/')

    with open('./data/dbrp/' + file_name + data_format, 'wb') as f:
        f.write(download_data.content)

    print("finish!")


if __name__ == '__main__':
    main()

uniprot_data_get.py

import requests
import os.path
import sys

def main():
    # 引数に指定したアクセッション番号のリストを指定し、uniprotのAPIでデータを取得するスクリプト。
    # python uniprot_data_get.py [input_list]
    args = sys.argv
    list_name = args[1]
    base_url = 'https://www.uniprot.org/uniprot/'
    format = '.fasta'
    list = open(list_name, 'r')
    if not os.path.exists('./data/uniprot/'):
        os.makedirs('./data/uniprot/')
    lines = list.readlines()
    for line in lines:
        print(line)
        accession_id = line.rstrip('\n')
        url = base_url + accession_id + format
        response = requests.get(url)
        with open('./data/uniprot/' + accession_id + format, 'wb') as f:
            f.write(response.content)

    print("finish!")

if __name__ == '__main__':
    main()