Download model/data/get_substitutions.py from OneScience-Group/VenusREM: direct link, hf CLI and curl.
- Browser
- Download file 2.27 kB
-
https://huggingface.co/OneScience-Group/VenusREM/resolve/main/model/data/get_substitutions.py
- Command line
-
hf download hf://OneScience-Group/VenusREM/model/data/get_substitutions.py
-
curl -L -o get_substitutions.py https://huggingface.co/OneScience-Group/VenusREM/resolve/main/model/data/get_substitutions.py
2.27 kB
| import argparse | |
| import os | |
| import pandas as pd | |
| from tqdm import tqdm | |
| from utils import load_coords | |
| if __name__ == "__main__": | |
| parser = argparse.ArgumentParser(description='make single mutant csv') | |
| parser.add_argument("--fasta_dir", type=str, default=None, required=True) | |
| parser.add_argument("--output_dir", type=str, default=None) | |
| parser.add_argument("--pdb_file", type=str, default=None) | |
| parser.add_argument("--out_file", type=str, default=None) | |
| parser.add_argument("--start", type=int, default=-1) | |
| parser.add_argument("--end", type=int, default=int(1e6)) | |
| args = parser.parse_args() | |
| one_letter = { | |
| 'VAL':'V', 'ILE':'I', 'LEU':'L', 'GLU':'E', 'GLN':'Q', | |
| 'ASP':'D', 'ASN':'N', 'HIS':'H', 'TRP':'W', 'PHE':'F', 'TYR':'Y', | |
| 'ARG':'R', 'LYS':'K', 'SER':'S', 'THR':'T', 'MET':'M', 'ALA':'A', | |
| 'GLY':'G', 'PRO':'P', 'CYS':'C' | |
| } | |
| AA = list(one_letter.values()) | |
| if args.fasta_dir is not None: | |
| proteins = os.listdir(args.fasta_dir) | |
| for p in tqdm(proteins): | |
| protein_name = p.split(".")[0] | |
| seq = open(f"{args.fasta_dir}/{p}").readlines()[1].strip() | |
| data = {"mutant":[], "DMS_score":[]} | |
| for idx, s in tqdm(enumerate(seq)): | |
| if idx + 1 < args.start or idx + 1 > args.end: | |
| continue | |
| for a in AA: | |
| if a == s: | |
| continue | |
| data["mutant"].append(f"{s}{idx+1}{a}") | |
| data["DMS_score"].append(0) | |
| pd.DataFrame(data).to_csv(f"{args.output_dir}/{protein_name}.csv", index=False) | |
| if args.pdb_file is not None: | |
| output_dir = os.path.dirname(args.out_file) | |
| os.makedirs(output_dir, exist_ok=True) | |
| _, seq = load_coords(args.pdb_file, "A") | |
| data = {"mutant":[], "DMS_score":[]} | |
| for idx, s in tqdm(enumerate(seq)): | |
| if idx + 1 < args.start or idx + 1 > args.end: | |
| continue | |
| for a in AA: | |
| if a == s: | |
| continue | |
| data["mutant"].append(f"{s}{idx+1}{a}") | |
| data["DMS_score"].append(0) | |
| pd.DataFrame(data).to_csv(args.out_file, index=False) |