def obj_func(obj_ws_lf, obj_ws_rf): (transform_lh, transform_rh) = form_transformation_matrix_loo.transform(args_tmp, obj_ws_lf, obj_ws_rf, align_data_lh, align_data_rh, args_tmp.nsubjs) obj_val_tmp = 0 for m in range(args_tmp.nsubjs): if args_tmp.align_algo in ['ha','ha_sm_retraction']: obj_val_tmp += np.linalg.norm(transform_lh[:, :, m].T.dot(align_data_lh[:, :, m]) - obj_ws_lf['G'].T, 'fro') obj_val_tmp += np.linalg.norm(transform_rh[:, :, m].T.dot(align_data_rh[:, :, m]) - obj_ws_rf['G'].T, 'fro') elif args_tmp.align_algo in ['ha_syn','pha_em','ha_syn_noagg']: obj_val_tmp += np.linalg.norm(align_data_lh[:, :, m] - transform_lh[:, :, m].dot(obj_ws_lf['G'].T), 'fro') obj_val_tmp += np.linalg.norm(align_data_rh[:, :, m] - transform_rh[:, :, m].dot(obj_ws_rf['G'].T), 'fro') return obj_val_tmp
# make sure right and left brain alignment are working at the same iterations if args.align_algo in ['pica','ppca']: new_niter = 10 # load transformation matrices if args.align_algo != 'noalign' : workspace = np.load(options['working_path']+args.align_algo+'__'+str(new_niter)+'.npz') workspace2 = np.load(options['working_path']+args.align_algo+'__'+str(new_niter)+'.npz') # load transformation matrices into transform_lrh for projecting testing data if args.loo == None: (transform, tmp) = form_transformation_matrix.transform(args, workspace, workspace2, nsubjs) else: (transform, tmp) = form_transformation_matrix_loo.transform(args, workspace, workspace2, align_data, copy.deepcopy(align_data), nsubjs) workspace.close() workspace2.close() else: new_niter = 10 (transform, tmp) = form_transformation_matrix_noalign.transform(args, nsubjs) # transformed mkdg data with learned transformation matrices transformed_data = np.zeros((args.nfeature , nTR_pred ,nsubjs)) for m in range(nsubjs): trfed_tmp = transform[:,:,m].T.dot(pred_data[:,:,m]) transformed_data[:,:,m] = stats.zscore( trfed_tmp.T ,axis=0, ddof=1).T #transformed_data[:,:,m] = trfed_tmp
# load transformation matrices if args.align_algo != 'noalign': workspace_lh = np.load(options['working_path'] + args.align_algo + '_lh_' + str(new_niter_lh) + '.npz') workspace_rh = np.load(options['working_path'] + args.align_algo + '_rh_' + str(new_niter_rh) + '.npz') # load transformation matrices into transform_lrh for projecting testing data if args.loo == None: (transform_lh, transform_rh) = form_transformation_matrix.transform( args, workspace_lh, workspace_rh, nsubjs) else: (transform_lh, transform_rh) = form_transformation_matrix_loo.transform( args, workspace_lh, workspace_rh, align_data_lh, align_data_rh, nsubjs) else: new_niter_lh = new_niter_rh = 10 (transform_lh, transform_rh) = form_transformation_matrix_noalign.transform( args, nsubjs) # transformed mkdg data with learned transformation matrices transformed_data = np.zeros((args.nfeature * 2, nTR_pred, nsubjs)) for m in range(nsubjs): trfed_lh_tmp = transform_lh[:, :, m].T.dot(pred_data_lh[:, :, m]) #np.savez_compressed(options['working_path']+args.align_algo+'_trfed_lh_'+str(new_niter_lh)+'.npz',trfed_lh = trfed_lh_tmp) trfed_rh_tmp = transform_rh[:, :, m].T.dot(pred_data_rh[:, :, m]) #np.savez_compressed(options['working_path']+args.align_algo+'_trfed_rh_'+str(new_niter_lh)+'.npz',trfed_rh = trfed_rh_tmp)
if args.align_algo in ['pica','ppca']: new_niter_lh = new_niter_rh = 10 # load transformation matrices if args.align_algo != 'noalign' : workspace_lh = np.load(options['working_path']+args.align_algo+'_lh_'+str(new_niter_lh)+'.npz') workspace_rh = np.load(options['working_path']+args.align_algo+'_rh_'+str(new_niter_rh)+'.npz') # load transformation matrices into transform_lrh for projecting testing data if args.loo == None: (transform_lh, transform_rh) = form_transformation_matrix.transform(args, workspace_lh, workspace_rh, nsubjs) else: (transform_lh, transform_rh) = form_transformation_matrix_loo.transform(args, workspace_lh, workspace_rh, align_data_lh, align_data_rh, nsubjs) else: new_niter_lh = new_niter_rh = 10 (transform_lh, transform_rh)=form_transformation_matrix_noalign.transform(args,nsubjs) # transformed mkdg data with learned transformation matrices transformed_data = np.zeros((args.nfeature*2 , nTR_pred ,nsubjs)) for m in range(nsubjs): trfed_lh_tmp = transform_lh[:,:,m].T.dot(pred_data_lh[:,:,m]) trfed_rh_tmp = transform_rh[:,:,m].T.dot(pred_data_rh[:,:,m]) transformed_data[:,:,m] = stats.zscore( np.vstack((trfed_lh_tmp,trfed_rh_tmp)).T ,axis=0, ddof=1).T # experiment if args.exptype == 'imgpred':