def evaluateFileAtThresholds(args):
    file,thresholds,dims,randOrPixel=args
    affTrue,affEst = loadAffs(file,dims)
    nExamples = (affTrue.size)/3
    if(randOrPixel=="rand"):
        pSqErr=-1
        nhood = np.eye(3)
        compTrue = connectedComponents(affTrue,nhood).astype('d',order='F')
    else:
        pSqErr=pixelSquareError(affTrue,affEst) #todo: make this inline

    err,tp,fp = (np.empty([1,len(thresholds)]) for i in range(3))

    for i in range(len(thresholds)):
        threshold = thresholds[i]
        if(randOrPixel=="rand"):
            err[0,i],tp[0,i],fp[0,i],pos,neg = randStatsForThreshold(compTrue,affEst,threshold)  # this might give an error for making pos, neg nan (if(~isnan(pos_)) pos=pos_; end)
            # print threshold,tp[0,i]
        else:
            err[0,i],tp[0,i],fp[0,i],pos,neg = pixelStatsForThreshold(affTrue,affEst,threshold) #todo: pos, neg can be taken out of the loop (put with pSqErr)

    return err,tp,fp,pos,neg,pSqErr,nExamples
sys.path.append('connectedComponents')
sys.path.append('watershed')
sys.path.append('randStats')
from randStats import randIndex
import numpy as np
from loadAffs import loadAffs
from connDefs import connectedComponents
from waterDefs import markerWatershed
from randStats import randIndex
import time

#read in data
t0 = time.clock()
dataRoot = '../testData/000'
dims = [73,73,73]
affTrue, affEst = loadAffs(dataRoot,dims)
affTrue = affTrue.astype(dtype='d',order='F')
nhood = np.eye(3)
thresh=.97
affEst = affEst.astype(dtype='d',order='F')
affEstThresh=(affEst>thresh).astype(dtype='d')

#call connected components
comp = connectedComponents(affEstThresh,nhood).astype(dtype='d',order='F')
compTrue = connectedComponents(affTrue,nhood).astype(dtype='d',order='F')

#set up data for watershed
nhood = -1*np.eye(3)
compE = np.zeros((73,73,73)).astype(dtype='d',order='F')
compT = np.zeros((73,73,73)).astype(dtype='d',order='F')
for x in range(73):