import analysis
import sys
import os
import getData
import json
import config
import segmentation


def main(configFile):
   with open(configFile,'r') as f:
      xsetup=json.load(f)
   db,fb=getData.connectDB(xsetup['network'])

   qfilter=config.getFilter(xsetup)
   
   rows=getData.getPatients(db,xsetup,qfilter)

   mode=['global','IVF']
   print('doPixelAnalysis...starting')
   for r in rows:
      segmentation.loadSegmentation(db,fb,r,xsetup)
      getData.downloadCenters(fb,r,xsetup)
      for m in mode:
         getData.downloadFitParFinal(fb,r,xsetup,m)

   pixelFitMode='IVF'
   for r in rows:
      code=config.getCode(r,xsetup)
      nc=segmentation.getNC(r,xsetup)
      files=[]
      for s2 in xsetup['sigma2']:
         files.extend(config.printPixelFitParFinalRowNames(r,xsetup,nc,s2,pixelFitMode))

      fullFiles=[getData.getLocalPath(r,xsetup,f) for f in files]
      print(fullFiles)
      filesPresent=[os.path.isfile(f) for f in fullFiles]
      print(filesPresent)
      #check if we need to run analysis
      if not all(filesPresent):
          analysis.doPixelAnalysisRow(db,r,xsetup)

      getData.copyToServer(fb,r,xsetup,files)
      getData.updateStatus(db,r,xsetup,'doPixelAnalysis')
      #
      #getData.uploadPixelFitParFinal(fb,r,xsetup,pixelFitMode)


if __name__=="__main__":
   main(sys.argv[1])