123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- """
- Created on Thu May 28 07:55:23 2020
- @author: p277634
- """
- import numpy as np
- import matplotlib.pyplot as pl
- from itertools import combinations
- import scipy.io as sio
- import copy
- class BaseData():
- def __init__(self,dataIni, stages):
- self.nroi = 68
- self.d = None
- self.nStg = len(stages)
- # self.stgIx = stages-1
- self.sizePop = np.load(dataIni, allow_pickle=True)['sizeP'].item()
- self.pMig = np.load(dataIni, allow_pickle=True)['pMig'].item()
- self.nIsla = np.load(dataIni, allow_pickle=True)['nIsla'].item()
-
- class LoadData():
- def __init__(self):
- self.pathOptData = './data/'
- self.velocity = 5
- self.nameModel = 'S1_StgSequence_allPu1000_wE_P030_optIni_v' + str(self.velocity)
- self.nameEnding = '_fixGL_Stg'
- self.stages = [0] # list with stages indexes
- self.var2logIx = {'pulse':[0],'order':[1,2],'fit':[3,5,6],'fc':[4],'env':[7,8,9]}
-
- def getBestModel(self):
- dataIni = self.pathOptData + self.nameModel + str(self.stages[0]) + self.nameEnding + '.npz'
- m = BaseData(dataIni, self.stages)
- dataread = self.pathOptData + self.nameModel + self.nameEnding + 'trialZ.npz'
- m.z = np.load(dataread, allow_pickle=True)['sim_z']
- m.logs = np.load(dataread, allow_pickle=True)['sim_log']
- print('files: ', np.load(dataread, allow_pickle=True).files)
- # m.edgePulse = np.load(dataread, allow_pickle=True)['edgePulse']
- return m
-
- def getPulses(self):
- dataIni = self.pathOptData + self.nameModel + str(self.stages[0]) + self.nameEnding + '.npz'
- pulse = BaseData(dataIni, self.stages)
- pulse.d, pulse.ener = [[None]*pulse.nStg ]*pulse.nIsla, [[None]*pulse.nStg ]*pulse.nIsla
- for iXstg, stage in enumerate(self.stages):
- dataread = self.pathOptData + self.nameModel + str(stage) + self.nameEnding + '.npz'
- dataLog = np.load(dataread, allow_pickle=True)['logsUDP']
- for iXisla, isla in enumerate(dataLog):
- pulse_ = np.array([log_[0] for log_ in isla])#.astype(np.float32)
- # pulse.ener[iXisla][iXstg] = np.sum(np.abs(pulse_), axis=1)
- pulse.d[iXisla][iXstg] = pulse_
- return pulse
-
- def getFitness(self):
- dataIni = self.pathOptData + self.nameModel + str(self.stages[0]) + self.nameEnding + '.npz'
- fit = BaseData(dataIni, self.stages)
- fit.cost, fit.iXsort = [[None]*fit.nStg ]*fit.nIsla, [[None]*fit.nStg ]*fit.nIsla
- fit.raw, fit.renv, fit.sCor = [[None]*fit.nStg ]*fit.nIsla, [[None]*fit.nStg ]*fit.nIsla, [[None]*fit.nStg ]*fit.nIsla
- for iXstg, stage in enumerate(self.stages):
- dataread = self.pathOptData + self.nameModel + str(stage) + self.nameEnding + '.npz'
- dataLog = np.load(dataread, allow_pickle=True)['logsUDP']
- for iXisla, isla in enumerate(dataLog):
- # fit.raw[iXisla][iXstg] = np.array([log_[3] for log_ in isla]).astype(np.float32)
- fitCost_ = np.array([log_[5] for log_ in isla])#.astype(np.float32)
- fit.cost[iXisla][iXstg] = fitCost_
- # fit.iXsort[iXisla][iXstg]= np.argsort(fitCost_)
- fit.sCor[iXisla][iXstg] = np.array([log_[6] for log_ in isla])
- fit.renv[iXisla][iXstg] = np.array([log_[9] for log_ in isla])
- return fit
-
- def getPLI(self):
- dataIni = self.pathOptData + self.nameModel + str(self.stages[0]) + self.nameEnding + '.npz'
- g = BaseData(dataIni, self.stages)
- pli = [[None]*g.nStg ]*g.nIsla
- for iXstg, stage in enumerate(self.stages):
- dataread = self.pathOptData + self.nameModel + str(stage) + self.nameEnding + '.npz'
- dataLog = np.load(dataread, allow_pickle=True)['logsUDP']
- for iXisla, isla in enumerate(dataLog):
- # fit.raw[iXisla][iXstg] = np.array([log_[3] for log_ in isla]).astype(np.float32)
- pli[iXisla][iXstg] = np.array([log_[4] for log_ in isla])
- return pli
-
- def getEnvelopes(self):
- dataIni = self.pathOptData + self.nameModel + str(self.stages[0]) + self.nameEnding + '.npz'
- env = BaseData(dataIni, self.stages)
- env.mStg = [[None]*env.nStg ]*env.nIsla
- env.mBu, env.relOn = [[None]*env.nStg ]*env.nIsla, [[None]*env.nStg ]*env.nIsla
- for iXstg, stage in enumerate(self.stages):
- dataread = self.pathOptData + self.nameModel + str(stage) + self.nameEnding + '.npz'
- dataLog = np.load(dataread, allow_pickle=True)['logsUDP']
- for iXisla, isla in enumerate(dataLog):
- env.mStg[iXisla][iXstg] = np.array([log_[7] for log_ in isla]).astype(np.float32)
- env.mBu[iXisla][iXstg] = np.array([log_[8] for log_ in isla]).astype(np.float32)
- env.relOn[iXisla][iXstg] = np.array([log_[9] for log_ in isla]).astype(np.float32)
- return env
-
- def getOrders(self):
- dataIni = self.pathOptData + self.nameModel + str(self.stages[0]) + self.nameEnding + '.npz'
- sync = BaseData(dataIni, self.stages)
- sync.g, sync.l = [[None]*sync.nStg ]*sync.nIsla, [[None]*sync.nStg ]*sync.nIsla
- sync.metaL, sync.metaG, sync.metaLm = [[None]*sync.nStg ]*sync.nIsla, [[None]*sync.nStg ]*sync.nIsla, [[None]*sync.nStg ]*sync.nIsla
- for iXstg, stage in enumerate(self.stages):
- dataread = self.pathOptData + self.nameModel + str(stage) + self.nameEnding + '.npz'
- dataLog = np.load(dataread, allow_pickle=True)['logsUDP']
- for iXisla, isla in enumerate(dataLog):
- ord_ = np.array([log_[1] for log_ in isla]).astype(np.float32)
- sync.g[iXisla][iXstg] = ord_[:,0]
- sync.l[iXisla][iXstg] = ord_[:,1]
- sync.metaG[iXisla][iXstg] = ord_[:,2]
- metaL_ = np.array([log_[2] for log_ in isla]).astype(np.float32)
- sync.metaL[iXisla][iXstg] = metaL_
- sync.metaLm[iXisla][iXstg] = np.mean(metaL_, axis=1)
- return sync
-
|