Source code for reconstruction.ecoli.scripts.update_biocyc_files

#! /usr/bin/env python

"""
Pulls the lastest versions of the raw data files that are sourced from
BioCyc/EcoCyc from their webservices server and updates the local versions of
the files under reconstruction/ecoli/flat.
"""

import argparse
import os
import requests  # type: ignore[import-untyped]
import time

from wholecell.utils.filepath import ROOT_PATH

BASE_API_URL = "https://websvc.biocyc.org/wc-get?type="
BASE_API_URL_PREVIEW = "https://brg-preview.ai.sri.com/wc-get?type="
BIOCYC_FILE_IDS = [
    "complexation_reactions",
    "dna_sites",
    "equilibrium_reactions",
    "genes",
    "metabolic_reactions",
    "metabolites",
    "proteins",
    "rnas",
    "transcription_units",
    "trna_charging_reactions",
]
FLAT_DIR = os.path.join(ROOT_PATH, "reconstruction", "ecoli", "flat")
OK_STATUS_CODE = 200


[docs] def update_biocyc_files(preview=False): file_id_to_text = {} if preview: base_url = BASE_API_URL_PREVIEW else: base_url = BASE_API_URL # Get files from BioCyc webservices for file_id in BIOCYC_FILE_IDS: response = requests.get(base_url + file_id) response.raise_for_status() file_id_to_text[file_id] = response.text time.sleep(1) # Write each file to FLAT_DIR for file_id, text in file_id_to_text.items(): with open(os.path.join(FLAT_DIR, file_id + ".tsv"), "w") as f: f.write(text)
[docs] def parse_args(): """ Parses command line arguments. Returns: argparse.Namespace object: parsed arguments and values """ parser = argparse.ArgumentParser( description="Script to import latest" "versions of EcoCyc-sourced flat files from EcoCyc servers" ) parser.add_argument( "--preview", action="store_true", help="Import files from the preview server." ) return parser.parse_args()
if __name__ == "__main__": args = parse_args() update_biocyc_files(preview=args.preview)