Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
rejB = ncl[andb([tt_table[ncl, 0] < 0,
seldict['varex'][ncl] > np.median(seldict['varex']), ncl > KRcut]) == 3]
rej = np.union1d(rej, rejB)
ncl = np.setdiff1d(ncl, rej)
for ii in range(20000):
db = DBSCAN(eps=.005 + ii * .005, min_samples=3).fit(fz.T)
# it would be great to have descriptive names, here
cond1 = db.labels_.max() > 1
cond2 = db.labels_.max() < len(nc) / 6
cond3 = np.intersect1d(rej, nc[db.labels_ == 0]).shape[0] == 0
cond4 = np.array(db.labels_ == -1, dtype=int).sum() / float(len(nc)) < .5
if cond1 and cond2 and cond3 and cond4:
epsmap.append([ii, dice(guessmask, db.labels_ == 0),
np.intersect1d(nc[db.labels_ == 0],
nc[seldict['Rhos'] > getelbow_mod(Rhos_sorted,
val=True)]).shape[0]])
lgr.debug('++ Found solution', ii, db.labels_)
db = None
epsmap = np.array(epsmap)
group0 = []
dbscanfailed = False
if len(epsmap) != 0:
# Select index that maximizes Dice with guessmask but first
# minimizes number of higher Rho components
ii = int(epsmap[np.argmax(epsmap[epsmap[:, 2] == np.min(epsmap[:, 2]), 1], 0), 0])
lgr.info('++ Component selection tuning: {:.05f}'.format(epsmap[:, 1].max()))
db = DBSCAN(eps=.005+ii*.005, min_samples=3).fit(fz.T)
ncl = nc[db.labels_ == 0]
model F-statistic maps.
"""
comptable['countsigFR2'] = F_R2_clmaps.sum(axis=0)
comptable['countsigFS0'] = F_S0_clmaps.sum(axis=0)
"""
Generate Dice values for R2 and S0 models
- dice_FR2: Dice value of cluster-extent thresholded maps of R2-model betas
and F-statistics.
- dice_FS0: Dice value of cluster-extent thresholded maps of S0-model betas
and F-statistics.
"""
comptable['dice_FR2'] = np.zeros(all_comps.shape[0])
comptable['dice_FS0'] = np.zeros(all_comps.shape[0])
for i_comp in acc:
comptable.loc[i_comp, 'dice_FR2'] = utils.dice(Br_R2_clmaps[:, i_comp],
F_R2_clmaps[:, i_comp])
comptable.loc[i_comp, 'dice_FS0'] = utils.dice(Br_S0_clmaps[:, i_comp],
F_S0_clmaps[:, i_comp])
comptable.loc[np.isnan(comptable['dice_FR2']), 'dice_FR2'] = 0
comptable.loc[np.isnan(comptable['dice_FS0']), 'dice_FS0'] = 0
"""
Generate three metrics of component noise:
- countnoise: Number of "noise" voxels (voxels highly weighted for
component, but not from clusters)
- signal-noise_t: T-statistic for two-sample t-test of F-statistics from
"signal" voxels (voxels in clusters) against "noise" voxels (voxels not
in clusters) for R2 model.
- signal-noise_p: P-value from t-test.
"""
rej = sorted(np.setdiff1d(ncl, acc))
return acc, rej, midk, [] # Add string for ign
"""
Do some tallies for no. of significant voxels
"""
countsigFS0 = seldict['F_S0_clmaps'].sum(0)
countsigFR2 = seldict['F_S0_clmaps'].sum(0)
countnoise = np.zeros(len(nc))
"""
Make table of dice values
"""
dice_tbl = np.zeros([nc.shape[0], 2])
for ii in ncl:
dice_FR2 = dice(unmask(seldict['Br_clmaps_R2'][:, ii], mask)[t2s != 0],
seldict['F_R2_clmaps'][:, ii])
dice_FS0 = dice(unmask(seldict['Br_clmaps_R2'][:, ii], mask)[t2s != 0],
seldict['F_S0_clmaps'][:, ii])
dice_tbl[ii, :] = [dice_FR2, dice_FS0] # step 3a here and above
dice_tbl[np.isnan(dice_tbl)] = 0
"""
Make table of noise gain
"""
tt_table = np.zeros([len(nc), 4])
counts_FR2_Z = np.zeros([len(nc), 2])
for ii in nc:
comp_noise_sel = andb([np.abs(seldict['Z_maps'][:, ii]) > 1.95,
seldict['Z_clmaps'][:, ii] == 0]) == 2
countnoise[ii] = np.array(comp_noise_sel, dtype=np.int).sum()
noise_FR2_Z = np.log10(np.unique(seldict['F_R2_maps'][unmask(comp_noise_sel,
"""
Do some tallies for no. of significant voxels
"""
countsigFS0 = seldict['F_S0_clmaps'].sum(0)
countsigFR2 = seldict['F_S0_clmaps'].sum(0)
countnoise = np.zeros(len(nc))
"""
Make table of dice values
"""
dice_tbl = np.zeros([nc.shape[0], 2])
for ii in ncl:
dice_FR2 = dice(unmask(seldict['Br_clmaps_R2'][:, ii], mask)[t2s != 0],
seldict['F_R2_clmaps'][:, ii])
dice_FS0 = dice(unmask(seldict['Br_clmaps_R2'][:, ii], mask)[t2s != 0],
seldict['F_S0_clmaps'][:, ii])
dice_tbl[ii, :] = [dice_FR2, dice_FS0] # step 3a here and above
dice_tbl[np.isnan(dice_tbl)] = 0
"""
Make table of noise gain
"""
tt_table = np.zeros([len(nc), 4])
counts_FR2_Z = np.zeros([len(nc), 2])
for ii in nc:
comp_noise_sel = andb([np.abs(seldict['Z_maps'][:, ii]) > 1.95,
seldict['Z_clmaps'][:, ii] == 0]) == 2
countnoise[ii] = np.array(comp_noise_sel, dtype=np.int).sum()
noise_FR2_Z = np.log10(np.unique(seldict['F_R2_maps'][unmask(comp_noise_sel,
mask)[t2s != 0], ii]))
signal_FR2_Z = np.log10(np.unique(seldict['F_R2_maps'][unmask(seldict['Z_clmaps'][:, ii],
comptable['countsigFR2'] = F_R2_clmaps.sum(axis=0)
comptable['countsigFS0'] = F_S0_clmaps.sum(axis=0)
"""
Generate Dice values for R2 and S0 models
- dice_FR2: Dice value of cluster-extent thresholded maps of R2-model betas
and F-statistics.
- dice_FS0: Dice value of cluster-extent thresholded maps of S0-model betas
and F-statistics.
"""
comptable['dice_FR2'] = np.zeros(comptable.shape[0])
comptable['dice_FS0'] = np.zeros(comptable.shape[0])
for i_comp in comptable.index:
comptable.loc[i_comp, 'dice_FR2'] = utils.dice(Br_R2_clmaps[:, i_comp],
F_R2_clmaps[:, i_comp])
comptable.loc[i_comp, 'dice_FS0'] = utils.dice(Br_S0_clmaps[:, i_comp],
F_S0_clmaps[:, i_comp])
comptable.loc[np.isnan(comptable['dice_FR2']), 'dice_FR2'] = 0
comptable.loc[np.isnan(comptable['dice_FS0']), 'dice_FS0'] = 0
"""
Generate three metrics of component noise:
- countnoise: Number of "noise" voxels (voxels highly weighted for
component, but not from clusters)
- signal-noise_t: T-statistic for two-sample t-test of F-statistics from
"signal" voxels (voxels in clusters) against "noise" voxels (voxels not
in clusters) for R2 model.
- signal-noise_p: P-value from t-test.
"""
comptable['countnoise'] = 0
comptable['signal-noise_t'] = 0