|
import numpy as np |
|
import pickle |
|
|
|
import argparse |
|
parser = argparse.ArgumentParser(description='Argument Parser') |
|
parser.add_argument("-sub", "--sub",help="Subject Number",default=1) |
|
args = parser.parse_args() |
|
sub=int(args.sub) |
|
assert sub in [1,2,5,7] |
|
|
|
|
|
|
|
with open('data/regression_weights/subj{:02d}/vdvae_regression_weights.pkl'.format(sub),"rb") as f: |
|
datadict = pickle.load(f) |
|
reg_w = datadict['weight'] |
|
reg_b = datadict['bias'] |
|
|
|
roi_dir = 'data/processed_data/subj{:02d}/roi'.format(sub) |
|
num_rois = 13 |
|
roi_act=np.zeros((num_rois,reg_w.shape[1])).astype(np.float32) |
|
roi_act[0] = np.load("{}/floc-faces.npy".format(roi_dir)) |
|
roi_act[1] = np.load("{}/floc-words.npy".format(roi_dir)) |
|
roi_act[2] = np.load("{}/floc-places.npy".format(roi_dir)) |
|
roi_act[3] = np.load("{}/floc-bodies.npy".format(roi_dir)) |
|
roi_act[4] = np.load("{}/V1.npy".format(roi_dir)) |
|
roi_act[5] = np.load("{}/V2.npy".format(roi_dir)) |
|
roi_act[6] = np.load("{}/V3.npy".format(roi_dir)) |
|
roi_act[7] = np.load("{}/V4.npy".format(roi_dir)) |
|
roi_act[8] = np.load("{}/ecc05.npy".format(roi_dir)) |
|
roi_act[9] = np.load("{}/ecc10.npy".format(roi_dir)) |
|
roi_act[10] = np.load("{}/ecc20.npy".format(roi_dir)) |
|
roi_act[11] = np.load("{}/ecc40.npy".format(roi_dir)) |
|
roi_act[12] = np.load("{}/ecc40p.npy".format(roi_dir)) |
|
|
|
|
|
roi_act[roi_act>0]=1 |
|
roi_act[roi_act<0]=0 |
|
|
|
|
|
|
|
nsd_features = np.load('data/extracted_features/subj{:02d}/nsd_vdvae_features_31l.npz'.format(sub)) |
|
train_latents = nsd_features['train_latents'] |
|
|
|
pred_vae = (roi_act @ reg_w.T) |
|
pred_vae = pred_vae / (np.linalg.norm(pred_vae,axis=1).reshape((num_rois,1)) + 1e-8) |
|
pred_vae = pred_vae * 50 + reg_b |
|
|
|
pred_vae = (pred_vae - np.mean(pred_vae,axis=0)) / np.std(pred_vae,axis=0) |
|
|
|
pred_vae = pred_vae * np.std(train_latents,axis=0) + np.mean(train_latents,axis=0) |
|
pred_vae = pred_vae / np.linalg.norm(pred_vae,axis=1).reshape((num_rois,1)) |
|
pred_vae = pred_vae * 80 |
|
np.save('data/predicted_features/subj{:02d}/nsd_vdvae_nsdgeneral_roi_sub{}_31l_alpha50k.npy'.format(sub,sub),pred_vae) |
|
|
|
|
|
|
|
with open('data/regression_weights/subj{:02d}/cliptext_regression_weights.pkl'.format(sub),"rb") as f: |
|
datadict = pickle.load(f) |
|
reg_w = datadict['weight'] |
|
reg_b = datadict['bias'] |
|
|
|
pred_clipt = np.zeros((num_rois,reg_w.shape[0],reg_w.shape[1])).astype(np.float32) |
|
for j in range(reg_w.shape[0]): |
|
pred_clipt[:,j] = (roi_act @ reg_w[j].T) |
|
|
|
pred_clipt = pred_clipt / (np.linalg.norm(pred_clipt,axis=(1,2)).reshape((num_rois,1,1)) + 1e-8) |
|
pred_clipt = pred_clipt * 9 + reg_b |
|
|
|
np.save('data/predicted_features/subj{:02d}/nsd_cliptext_roi_nsdgeneral.npy'.format(sub),pred_clipt) |
|
|
|
|
|
|
|
with open('data/regression_weights/subj{:02d}/clipvision_regression_weights.pkl'.format(sub),"rb") as f: |
|
datadict = pickle.load(f) |
|
reg_w = datadict['weight'] |
|
reg_b = datadict['bias'] |
|
|
|
pred_clipv = np.zeros((num_rois,reg_w.shape[0],reg_w.shape[1])).astype(np.float32) |
|
for j in range(reg_w.shape[0]): |
|
pred_clipv[:,j] = (roi_act @ reg_w[j].T) |
|
|
|
pred_clipv = pred_clipv / (np.linalg.norm(pred_clipv,axis=(1,2)).reshape((num_rois,1,1)) + 1e-8) |
|
pred_clipv = pred_clipv * 15 + reg_b |
|
|
|
np.save('data/predicted_features/subj{:02d}/nsd_clipvision_roi_nsdgeneral.npy'.format(sub),pred_clipv) |
|
|