| import glob |
| import json |
| import random |
|
|
| import numpy as np |
| import pandas as pd |
|
|
|
|
| def softmax(x, T): |
| return np.exp(x / T) / np.sum(np.exp(x / T), -1, keepdims=True) |
|
|
|
|
| def parse_pssm(path): |
| data = pd.read_csv(path, skiprows=2) |
| floats_list_list = [] |
| for i in range(data.values.shape[0]): |
| str1 = data.values[i][0][4:] |
| floats_list = [] |
| for item in str1.split(): |
| floats_list.append(float(item)) |
| floats_list_list.append(floats_list) |
| np_lines = np.array(floats_list_list) |
| return np_lines |
|
|
|
|
| np_lines = parse_pssm( |
| "/home/swang523/RLcage/capsid/monomersfordesign/8-16-21/pssm_rainity_final_8-16-21_int/build_0.2089_0.98_0.4653_19_2.00_0.005745.pssm" |
| ) |
|
|
| mpnn_alphabet = "ACDEFGHIKLMNPQRSTVWYX" |
| input_alphabet = "ARNDCQEGHILKMFPSTWYV" |
|
|
| permutation_matrix = np.zeros([20, 21]) |
| for i in range(20): |
| letter1 = input_alphabet[i] |
| for j in range(21): |
| letter2 = mpnn_alphabet[j] |
| if letter1 == letter2: |
| permutation_matrix[i, j] = 1.0 |
|
|
| pssm_log_odds = np_lines[:, :20] @ permutation_matrix |
| pssm_probs = np_lines[:, 20:40] @ permutation_matrix |
|
|
| X_mask = np.concatenate([np.zeros([1, 20]), np.ones([1, 1])], -1) |
|
|
|
|
| def softmax(x, T): |
| return np.exp(x / T) / np.sum(np.exp(x / T), -1, keepdims=True) |
|
|
|
|
| |
| with open("/home/justas/projects/cages/parsed/test.jsonl", "r") as json_file: |
| json_list = list(json_file) |
|
|
| my_dict = {} |
| for json_str in json_list: |
| result = json.loads(json_str) |
| all_chain_list = [item[-1:] for item in list(result) if item[:9] == "seq_chain"] |
| pssm_dict = {} |
| for chain in all_chain_list: |
| pssm_dict[chain] = {} |
| pssm_dict[chain]["pssm_coef"] = ( |
| np.ones(len(result["seq_chain_A"])) |
| ).tolist() |
| pssm_dict[chain]["pssm_bias"] = ( |
| softmax(pssm_log_odds - X_mask * 1e8, 1.0) |
| ).tolist() |
| pssm_dict[chain]["pssm_log_odds"] = (pssm_log_odds).tolist() |
| my_dict[result["name"]] = pssm_dict |
|
|
| |
| with open("/home/justas/projects/lab_github/mpnn/data/pssm_dict.jsonl", "w") as f: |
| f.write(json.dumps(my_dict) + "\n") |
|
|