In [1]:
%pylab inline
from __future__ import print_function, division
import os
import os.path as osp
import matplotlib.pyplot as plt
from warnings import warn
import datetime, time
import glob as gb
from six import string_types
import argparse
import json
import time
import re
import numpy as np
import scipy.linalg as lin
import scipy.stats as sst
In [2]:
import importlib
from smpce_data_to_corr import get_params
import utils._utils as ucr
import utils.setup_filenames as suf
import correlation2results as c2r
#import tests.test_smpce_data_to_corr as tts
np.set_printoptions(precision=3)
ucr = reload(ucr)
suf = reload(suf)
c2r = reload(c2r)
In [3]:
param_dir = osp.abspath('.')
assert param_dir == '/home/jb/code/simpace/simpace'
params = get_params(param_dir)
basedir = '/home/jb/data/simpace/data/rename_files'
resdir = osp.join(basedir, params['layout']['res']['dir'])
assert osp.isdir(resdir)
fp_anals = gb.glob(osp.join(resdir,'*'))
fp_anals = [f for f in fp_anals if osp.isdir(f)]
ke_anals = [osp.basename(fp_anals[idx]) for idx in range(len(fp_anals))]
pat = r"(.*)_\d\d\d\d_\d\d\d\d\d\d$" #_daymonth_hourminsec
p = re.compile(pat)
ke_anals = [p.match(strin).group(1) for strin in ke_anals if p.match(strin)]
fp_anals = [fp for fp in fp_anals if p.match(fp)]
assert set(['gr_minvox5', 'no_gr_minvox5']).issubset(set(ke_anals))
analrange = range(len(ke_anals))
print("directories found: \n" + "\n".join(fp_anals))
print("keys for analyses are : ",ke_anals)
In [4]:
# find filenames for the different pipelines
mtx = params['layout']['res']['corr']
mtxdir = [osp.join(fp_anals[idx], mtx) for idx in analrange]
npz_anals = [gb.glob(osp.join(mtxdir[idx],"*"))[0] for idx in analrange]
print("\n".join(npz_anals))
In [5]:
# choose pipeline in results
idx_pipeline = 0
conds_arr = np.load(npz_anals[idx_pipeline])['conds_arr'][()]
print(osp.basename(npz_anals[idx_pipeline]))
pipeline = ke_anals[idx_pipeline]
print("pipeline is: ", pipeline)
print(conds_arr['high'].shape)
nb_roi = conds_arr['high'].shape[-1]
for cond in c2r.ordered_conds(): # [none_c, low_c, med_c, high_c]:
assert np.all(conds_arr[cond] <= 1.) and np.all(conds_arr[cond] >= -1.)
ordered_conds = c2r.ordered_conds
print(ordered_conds())
In [6]:
def smpce_mean_cond(cond_arr, cond):
"""
Estimates the bias of each condition
assumes that cond_arr['cond'] is (nb_of_sess, nb_roi, nb_roi)
"""
# two last dimension must be indentical
assert cond_arr[cond].shape[-1] == cond_arr[cond].shape[-2]
return cond_arr[cond].mean(axis=0)
def smpce_bias(cond_arr, ordered_conds):
"""
Estimates the bias of each condition
assumes that cond_arr['cond'] is (nb_of_sess, nb_roi, nb_roi)
"""
assert ordered_conds[0] == 'none'
estTrueC = smpce_mean_cond(cond_arr, 'none')
bias = {}
for ke in ordered_conds:
bias[ke] = smpce_mean_cond(cond_arr, ke) - estTrueC
return bias
def smpce_var(cond_arr, ordered_conds):
"""
Estimates the variance of each condition
assumes that cond_arr['cond'] is (nb_of_sess, nb_roi, nb_roi)
"""
assert ordered_conds[0] == 'none'
means = {}
vari = {}
for ke in ordered_conds:
means[ke] = smpce_mean_cond(cond_arr, ke)
for ke in ordered_conds:
Cm = cond_arr[ke]
vari[ke] = (Cm**2 - means[ke]).mean(axis=0)
return vari
In [7]:
var_cond = smpce_var(conds_arr, ordered_conds())
bias_cond = smpce_bias(conds_arr, ordered_conds())
var_cond.keys()
Out[7]:
In [8]:
#imgshowed = plt.imshow(smpce_mean_cond(conds_arr, 'none'),aspect='equal', interpolation='nearest')
imgshowed = plt.imshow(var_cond['med'],aspect='equal', interpolation='nearest')
imgshowed.set_cmap('spectral')
_ = plt.colorbar()
In [9]:
for ke in bias_cond.keys():
print(ke, ": ", lin.norm(bias_cond[ke]), lin.norm(var_cond[ke]))
In [ ]:
In [10]:
def print_bias_variance_from_npz(npz_anals):
"""
"""
for npz_anal in npz_anals:
print("\nfrom analysis :", npz_anal, "\n")
c_arr = np.load(npz_anal)['conds_arr'][()]
v_cond = smpce_var(c_arr, ordered_conds())
b_cond = smpce_bias(c_arr, ordered_conds())
for ke in bias_cond.keys():
print(ke, ": ", lin.norm(b_cond[ke]), lin.norm(v_cond[ke]))
In [11]:
del conds_arr
print_bias_variance_from_npz(npz_anals)
In [ ]: