VenusREM / model /data /get_substitutions.py
wuxing0105's picture
Upload folder using huggingface_hub (part 8)
feb41b4 verified
Raw
History Blame Contribute Delete
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)