visArchis_seq.py 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. Created on Thu May 28 07:55:23 2020
  5. @author: p277634
  6. """
  7. import numpy as np
  8. import matplotlib.pyplot as pl
  9. from itertools import combinations
  10. import scipy.io as sio
  11. import copy
  12. class BaseData():
  13. def __init__(self,dataIni, stages):
  14. self.nroi = 68
  15. self.d = None
  16. self.nStg = len(stages)
  17. # self.stgIx = stages-1
  18. self.sizePop = np.load(dataIni, allow_pickle=True)['sizeP'].item()
  19. self.pMig = np.load(dataIni, allow_pickle=True)['pMig'].item()
  20. self.nIsla = np.load(dataIni, allow_pickle=True)['nIsla'].item()
  21. class LoadData():
  22. def __init__(self):
  23. self.pathOptData = './data/'
  24. self.velocity = 5
  25. self.nameModel = 'S1_StgSequence_allPu1000_wE_P030_optIni_v' + str(self.velocity)
  26. self.nameEnding = '_fixGL_Stg'
  27. self.stages = [0] # list with stages indexes
  28. self.var2logIx = {'pulse':[0],'order':[1,2],'fit':[3,5,6],'fc':[4],'env':[7,8,9]}
  29. def getBestModel(self):
  30. dataIni = self.pathOptData + self.nameModel + str(self.stages[0]) + self.nameEnding + '.npz'
  31. m = BaseData(dataIni, self.stages)
  32. dataread = self.pathOptData + self.nameModel + self.nameEnding + 'trialZ.npz'
  33. m.z = np.load(dataread, allow_pickle=True)['sim_z']
  34. m.logs = np.load(dataread, allow_pickle=True)['sim_log']
  35. print('files: ', np.load(dataread, allow_pickle=True).files)
  36. # m.edgePulse = np.load(dataread, allow_pickle=True)['edgePulse']
  37. return m
  38. def getPulses(self):
  39. dataIni = self.pathOptData + self.nameModel + str(self.stages[0]) + self.nameEnding + '.npz'
  40. pulse = BaseData(dataIni, self.stages)
  41. pulse.d, pulse.ener = [[None]*pulse.nStg ]*pulse.nIsla, [[None]*pulse.nStg ]*pulse.nIsla
  42. for iXstg, stage in enumerate(self.stages):
  43. dataread = self.pathOptData + self.nameModel + str(stage) + self.nameEnding + '.npz'
  44. dataLog = np.load(dataread, allow_pickle=True)['logsUDP']
  45. for iXisla, isla in enumerate(dataLog):
  46. pulse_ = np.array([log_[0] for log_ in isla])#.astype(np.float32)
  47. # pulse.ener[iXisla][iXstg] = np.sum(np.abs(pulse_), axis=1)
  48. pulse.d[iXisla][iXstg] = pulse_
  49. return pulse
  50. def getFitness(self):
  51. dataIni = self.pathOptData + self.nameModel + str(self.stages[0]) + self.nameEnding + '.npz'
  52. fit = BaseData(dataIni, self.stages)
  53. fit.cost, fit.iXsort = [[None]*fit.nStg ]*fit.nIsla, [[None]*fit.nStg ]*fit.nIsla
  54. fit.raw, fit.renv, fit.sCor = [[None]*fit.nStg ]*fit.nIsla, [[None]*fit.nStg ]*fit.nIsla, [[None]*fit.nStg ]*fit.nIsla
  55. for iXstg, stage in enumerate(self.stages):
  56. dataread = self.pathOptData + self.nameModel + str(stage) + self.nameEnding + '.npz'
  57. dataLog = np.load(dataread, allow_pickle=True)['logsUDP']
  58. for iXisla, isla in enumerate(dataLog):
  59. # fit.raw[iXisla][iXstg] = np.array([log_[3] for log_ in isla]).astype(np.float32)
  60. fitCost_ = np.array([log_[5] for log_ in isla])#.astype(np.float32)
  61. fit.cost[iXisla][iXstg] = fitCost_
  62. # fit.iXsort[iXisla][iXstg]= np.argsort(fitCost_)
  63. fit.sCor[iXisla][iXstg] = np.array([log_[6] for log_ in isla])
  64. fit.renv[iXisla][iXstg] = np.array([log_[9] for log_ in isla])
  65. return fit
  66. def getPLI(self):
  67. dataIni = self.pathOptData + self.nameModel + str(self.stages[0]) + self.nameEnding + '.npz'
  68. g = BaseData(dataIni, self.stages)
  69. pli = [[None]*g.nStg ]*g.nIsla
  70. for iXstg, stage in enumerate(self.stages):
  71. dataread = self.pathOptData + self.nameModel + str(stage) + self.nameEnding + '.npz'
  72. dataLog = np.load(dataread, allow_pickle=True)['logsUDP']
  73. for iXisla, isla in enumerate(dataLog):
  74. # fit.raw[iXisla][iXstg] = np.array([log_[3] for log_ in isla]).astype(np.float32)
  75. pli[iXisla][iXstg] = np.array([log_[4] for log_ in isla])
  76. return pli
  77. def getEnvelopes(self):
  78. dataIni = self.pathOptData + self.nameModel + str(self.stages[0]) + self.nameEnding + '.npz'
  79. env = BaseData(dataIni, self.stages)
  80. env.mStg = [[None]*env.nStg ]*env.nIsla
  81. env.mBu, env.relOn = [[None]*env.nStg ]*env.nIsla, [[None]*env.nStg ]*env.nIsla
  82. for iXstg, stage in enumerate(self.stages):
  83. dataread = self.pathOptData + self.nameModel + str(stage) + self.nameEnding + '.npz'
  84. dataLog = np.load(dataread, allow_pickle=True)['logsUDP']
  85. for iXisla, isla in enumerate(dataLog):
  86. env.mStg[iXisla][iXstg] = np.array([log_[7] for log_ in isla]).astype(np.float32)
  87. env.mBu[iXisla][iXstg] = np.array([log_[8] for log_ in isla]).astype(np.float32)
  88. env.relOn[iXisla][iXstg] = np.array([log_[9] for log_ in isla]).astype(np.float32)
  89. return env
  90. def getOrders(self):
  91. dataIni = self.pathOptData + self.nameModel + str(self.stages[0]) + self.nameEnding + '.npz'
  92. sync = BaseData(dataIni, self.stages)
  93. sync.g, sync.l = [[None]*sync.nStg ]*sync.nIsla, [[None]*sync.nStg ]*sync.nIsla
  94. sync.metaL, sync.metaG, sync.metaLm = [[None]*sync.nStg ]*sync.nIsla, [[None]*sync.nStg ]*sync.nIsla, [[None]*sync.nStg ]*sync.nIsla
  95. for iXstg, stage in enumerate(self.stages):
  96. dataread = self.pathOptData + self.nameModel + str(stage) + self.nameEnding + '.npz'
  97. dataLog = np.load(dataread, allow_pickle=True)['logsUDP']
  98. for iXisla, isla in enumerate(dataLog):
  99. ord_ = np.array([log_[1] for log_ in isla]).astype(np.float32)
  100. sync.g[iXisla][iXstg] = ord_[:,0]
  101. sync.l[iXisla][iXstg] = ord_[:,1]
  102. sync.metaG[iXisla][iXstg] = ord_[:,2]
  103. metaL_ = np.array([log_[2] for log_ in isla]).astype(np.float32)
  104. sync.metaL[iXisla][iXstg] = metaL_
  105. sync.metaLm[iXisla][iXstg] = np.mean(metaL_, axis=1)
  106. return sync